-
Notifications
You must be signed in to change notification settings - Fork 3.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cpp: std::call_once requires linking to pthreads (on Linux) #3708
Labels
Comments
You are a life-saver |
Krzmbrzl
added a commit
to Krzmbrzl/antlr4
that referenced
this issue
Jul 18, 2022
As detailed in antlr#3708, it is necessary to link against the (p)threads library in order to be able to use std::call_once without producing linker errors. Since this function is frequently used in ANTLR's cpp version, this commit ensures that the respective library is always linked against in order to avoid this error, even if downstream users are not explicitly linking against an appropriate threads library. Fixes antlr#3708 Signed-off-by: Robert Adam <dev@robert-adam.de>
Since this appears to affect multiple users and nobody seems to want to answer my questions here, I went ahead and created a PR as I see fit: #3794 |
Krzmbrzl
added a commit
to Krzmbrzl/antlr4
that referenced
this issue
Aug 11, 2022
As detailed in antlr#3708, it is necessary to link against the (p)threads library in order to be able to use std::call_once without producing linker errors. Since this function is frequently used in ANTLR's cpp version, this commit ensures that the respective library is always linked against in order to avoid this error, even if downstream users are not explicitly linking against an appropriate threads library. Fixes antlr#3708 Signed-off-by: Robert Adam <dev@robert-adam.de>
Krzmbrzl
added a commit
to Krzmbrzl/antlr4
that referenced
this issue
Aug 28, 2022
As detailed in antlr#3708, it is necessary to link against the (p)threads library in order to be able to use std::call_once without producing linker errors. Since this function is frequently used in ANTLR's cpp version, this commit ensures that the respective library is always linked against in order to avoid this error, even if downstream users are not explicitly linking against an appropriate threads library. Fixes antlr#3708 Signed-off-by: Robert Adam <dev@robert-adam.de> Co-authored-by: Bryan Tan <Technius@users.noreply.github.com>
Krzmbrzl
added a commit
to Krzmbrzl/antlr4
that referenced
this issue
Aug 28, 2022
As detailed in antlr#3708, it is necessary to link against the (p)threads library in order to be able to use std::call_once without producing linker errors. Since this function is frequently used in ANTLR's cpp version, this commit ensures that the respective library is always linked against in order to avoid this error, even if downstream users are not explicitly linking against an appropriate threads library. Fixes antlr#3708 Signed-off-by: Robert Adam <dev@robert-adam.de> Co-authored-by: Bryan Tan <Technius@users.noreply.github.com>
ericvergnaud
pushed a commit
to ericvergnaud/antlr4
that referenced
this issue
Sep 9, 2022
As detailed in antlr#3708, it is necessary to link against the (p)threads library in order to be able to use std::call_once without producing linker errors. Since this function is frequently used in ANTLR's cpp version, this commit ensures that the respective library is always linked against in order to avoid this error, even if downstream users are not explicitly linking against an appropriate threads library. Fixes antlr#3708 Signed-off-by: Robert Adam <dev@robert-adam.de> Co-authored-by: Bryan Tan <Technius@users.noreply.github.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr>
parrt
added a commit
that referenced
this issue
Dec 21, 2022
* Fix CMake syntax for variable expansion When using variables to compare (like in if clause) the variable shouldn't be quoted. More details can be found at the link below: https://cmake.org/cmake/help/latest/command/if.html#variable-expansion Signed-off-by: HS <hs@apotell.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * initial commit Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * renamed for clarity Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * renamed for clarity Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * able to locate antlr4 runtime using ts-node, missing types Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * progressing Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * able to 'run' a test. It fails but it compiles and resolves! Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * reflect refactored runtime Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * able to run RecursiveLexerRuleRefWithWildcardPlus_1 test locally Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * passes LexerExec tests in IntelliJ Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * make ATN private Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * ignore same tests as JavaScript Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * compiles Parser and Lexer bu local run fails Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * ParserExec.TokenOffset test successful in IntelliJ ! Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Progressing, passing 131 of 348 tests Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * pass 327 tests out of 348 Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * more successful tests Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * 333 successful tests out of 348 Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * all tests pass except 7 caused by #3868 Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * update getting-started doc Signed-off-by: nicksxs <nicksxs@hotmail.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * add blank github action file for hosted CI Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * update getting started document to say java 11 Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Revert "update getting started document to say java 11" This reverts commit 1df58f7. Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * add C# book code links Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Add Jim/Ken to readme Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Update Swift Package to support static library Add static library distribution in SPM Signed-off-by: Hell_Ghost <dev.hellghost@gmail.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Update Package.swift Signed-off-by: Hell_Ghost dev.hellghost@gmail.com Signed-off-by: Hell_Ghost <dev.hellghost@gmail.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Add caching support for maven & dependencies. Also, include caching for cpp builds using actions/ccache. Builds are more reliable (avoids the archive.apache server which intermittently reports timeouts) and also significantly improves the overall builds times (down from 46 mins to 28 mins). The slowest part of the build now is the Windows+cpp builds because there is no reliable cache implementation yet. MacOS+cpp (65% cache hit) is also relatively slow compared to Ubuntu+cpp (99% cache hit). Signed-off-by: HS <hs@apotell.com> Signed-off-by: Terence Parr <parrt@antlr.org> # Conflicts: # .github/workflows/hosted.yml Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * use snap to install go 1.19 Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * grr...install snap Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * ugh. start snap Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * ugh. start snap Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * ugh. cant get snap to install go Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * try downloading golang with curl Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Issue #3823: Temporarily disable a few tests on CI The tests are currently failing. The underlying issues have been fixed on dev and so the builds will be turned back with the next release. Signed-off-by: HS <hs@apotell.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * update actions status badge Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * update getting started document to say java 11 Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Revert "update getting started document to say java 11" This reverts commit 3591ee0. Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * update getting-started doc Signed-off-by: nicksxs <nicksxs@hotmail.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * make getValue visible to external profiler tools. Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Fix #3508: Document the $parser attribute and its use in target-agnostic grammars. Signed-off-by: Ross Patterson <ross.patterson@gmail.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Add accessor to IntervalSet for intervals Signed-off-by: James Taylor <jamestaylor@apache.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Remove libuuid dependency from C++ runtime libuuid and its headers are not referenced anywhere, so remove it. Signed-off-by: Bryan Tan <bryantan@technius.net> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Add `@SuppressWarnings("CheckReturnValue")` to prevent error_prone lib errors. Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * fix: Fixes for #3718 o Implement collections with generics to solve hash collisions o Fix type casting in LL start parser simulation optimization o General minor tidy ups Acknowledgements to @kaby76 for help with tracing errors Signed-off-by: Jim.Idle <jimi@gatherstars.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * fix: #3718 Revert accidental keyboard error in Java target Signed-off-by: Jim.Idle <jimi@gatherstars.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * fix: #3718 Correct DFAState index in Lexer ATN Simulator Signed-off-by: Jim.Idle <jimi@gatherstars.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * fix: #3718 Fix go runtime test runners With older versions of go, there was no good way to tell the compiler to use your local development copy of a particular package instead of the one installed in GOPATH/src/... However, we are now using modules, which allows us to tell the compiler that instead of a module downloaded to GOPATH/pkg, to use a local copy on disk. Hence this change removes the need to copy the whole of the go installation to a tempoorary location, then put the antlr go runtime in to the go installation as if it was part of the compiler. Hence the execution time for the go tests is now faster than before. This works because when the generated code is placed in the temporary location, we create a go.mod file for it, tell the module to replace the online module for the go runtime with the local copy on disk, then ro a go mod tidy to add the dependencies from the code (which avoids network access, so it is instant), which adds the ANTLR dependency itself (which is then replaced at compile time). All go runtime tests now pass. Signed-off-by: Jim.Idle <jimi@gatherstars.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Rm remote github actions; hosted seems to work Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * install golang with curl; go was missing from dev Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * fix: Rework of all Hash() and Equals() methods - implement generic collections - Implement new collections using generics that implement the functionality required by the Java runtime in a more idiomatic Go way. - Fix Hash() and Equals() for all objects in the runtime - Fix getConflictingAlts so that it behaves the same way as Java, using a new generic collection - Replaces the use of the array2DHashSet, which was causing unneeded memory allocations. Replaced with generic collection that allocates minimally (though, I think I can improve on that with a little analysis). Jim Idle - jimi@idle.ws Signed-off-by: Jim.Idle <jimi@gatherstars.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * fix: #3718 Correct DFAState index in Lexer ATN Simulator Signed-off-by: Jim.Idle <jimi@gatherstars.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * feat: Reduce initial memory allocations for collections - Many small collections are created at runtime, the default allocation for maps, even though small, still requires memory. Specifying a very small initial allocation prevents unnecesary allocations and has no measurable effect on performance. A small incremental change. Signed-off-by: Jim.Idle <jimi@gatherstars.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * fix: #3758 Allow for string being a keyword and fix go template to use escapedName - The go template was ignoring the use of escapedName in many places and was not consistenet with the Java version. - Added 'string' to the list of reserved words for the Go target Signed-off-by: Jim.Idle <jimi@gatherstars.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * fix: #3758 Add go.sum to the repo Signed-off-by: Jim.Idle <jimi@gatherstars.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * fix: #3758 Ensure that standard runtime extensions are included in go.mod Signed-off-by: Jim.Idle <jimi@gatherstars.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * fix: #2826 Go template is incorrect for dynamic scopes closes #2826 obviates PR #3101 Signed-off-by: Jim.Idle <jimi@gatherstars.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * fix: #2016 - Generate correct iGo code for lists in a grammar, such as `label+=arg+` Signed-off-by: Jim.Idle <jimi@gatherstars.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * feat: Bump poms to use 4.11 Snapshot Signed-off-by: Jim.Idle <jimi@gatherstars.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * turn off Golang test at circleci for now Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Replace smart-quote with single-quote in code examples Signed-off-by: Tim McCormack <cortex@brainonfire.net> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Augment error message during testing to include full cause of problem. Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Augment error message during testing to include full cause of problem. (round 2 to avoid null ptr) Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Cpp: Link to threads library As detailed in #3708, it is necessary to link against the (p)threads library in order to be able to use std::call_once without producing linker errors. Since this function is frequently used in ANTLR's cpp version, this commit ensures that the respective library is always linked against in order to avoid this error, even if downstream users are not explicitly linking against an appropriate threads library. Fixes #3708 Signed-off-by: Robert Adam <dev@robert-adam.de> Co-authored-by: Bryan Tan <Technius@users.noreply.github.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * add test for #2016 and fix java. Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * ensure all targets have the appropriate argument list for the template causing the problem. Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Fix other targets Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * fix format Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * add check that $args is a list Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * change made by @lingyv-li to fix bug in DART exposed by this test. Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * fix AssertIsList in multiple targets. Go doesn't pass test and has no AssertIsList so I'm dropping that test from the Go test suite. How did a comment to the C++ runnerFor my future reference as to how to build things from the command line. Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * C++ gets an exception with this test so I'm turning it off. See #3845 Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * feat: #3840 Move Go to version v4.11.0 Signed-off-by: Jim.Idle <jimi@gatherstars.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * feat: #3840 Create the v4 version of the Go runtime Signed-off-by: Jim.Idle <jimi@gatherstars.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * feat: Create the v4 runtime layout for the Go runtime, ready for release tagging Note that the vast majority of the changes here are just copying the runtime file in to the /v4 subdirectory so that we can support legacy projects that use GOPATH only, as well as users that can use go modules. At a later release, we will delete the default path, and move the v4 subdirectory back to the top level. But, we cannot do that on this release. Signed-off-by: Jim.Idle <jimi@gatherstars.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Reenable go tests on CircleCI Signed-off-by: Ivan Kochurkin <kvanttt@gmail.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Fold constants in generated code for all runtimes Go: getInlineTestSetWordSize 32 -> 64 Dart: get rid of BigInt Swift: optimize TestSetInline Python: fixes #3698 JavaScript: fixes #3699 Signed-off-by: Ivan Kochurkin <kvanttt@gmail.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Use int literals instead of refs for Python and JavaScript Update getMultiTokenAlternativeDescriptor test fixes #3703 Signed-off-by: Ivan Kochurkin <kvanttt@gmail.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * update release doc for Go version numbers Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * fix: #2016 Fix Go template list reference, go runtime and got test template for list labels Signed-off-by: Jim.Idle <jimi@gatherstars.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * feat: Add a deprecation message to the existing v1 module Signed-off-by: Jim.Idle <jimi@gatherstars.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Split tool and runtime tests for GitHub workflow Build only necessary modules for tests Signed-off-by: Ivan Kochurkin <kvanttt@gmail.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Remove not used methods from FileUtils (runtime tests) Signed-off-by: Ivan Kochurkin <kvanttt@gmail.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Update dependencies of antlr4-maven-plugin Signed-off-by: Ivan Kochurkin <kvanttt@gmail.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Update jUnit: 5.8.2 -> 5.9.0 Signed-off-by: Ivan Kochurkin <kvanttt@gmail.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Fixes #3733; update ST4 so it uses proper ANTLR 3 Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * tweak doc Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Set to 4.11.0 not 4.11 in poms Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * [maven-release-plugin] prepare release 4.11.0 Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * [maven-release-plugin] prepare for next development iteration Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Damn. java target said 4.10.2 not 4.11.0 Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * roll back to 4.11.0; made mistake Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * roll back to 4.11.0; made mistake Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * [maven-release-plugin] prepare release antlr4-master-4.11.0 Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * [maven-release-plugin] prepare for next development iteration Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * use build and twine to publish source and wheel Signed-off-by: Qijia Liu <liumeo@pku.edu.cn> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * tweak doc Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * tweak c++ build script to make Mac binaries with cmake/make Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * tweak release doc Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * tweak code / doc related to bad previous release Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * [maven-release-plugin] prepare release 4.11.1 Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * [maven-release-plugin] prepare for next development iteration Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * clean up deploy c++ source script Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * cleanup code generation Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * don't initialize default param values twice Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * add missing field Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * update codegen template for 4.11.1 Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * support new param: Parser Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * fix template for 4.11 Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * default export Listener and Visitor Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * also default export parser and lexer Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * all tests pass except 7 caused by #3868 Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * fix issues Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * make it easy to break Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * fix #3868 Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * ALL TESTS PASS!!!! Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * cross fingers with CI Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * try fixing broken go tests Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Try fix typescript CI Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * disable cpp for now Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * fix broken config Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * try fix macos gh build Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * improve speed by caching node_modules Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * no longer using ts-node Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * fix all tsc warnings Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * try fix MacOS CI Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * CI errors seem random, reactivate ubuntu Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Disable node_modules caching, which seems to randomly fail in CI Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * don't delete symlink contents on windows (java bug with is SymbolicLink ?) Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * fix broken windows CI Signed-off-by: ERIC-WINDOWS\ericv <eric.vergnaud@wanadoo.fr> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * verify windows ci Signed-off-by: ERIC-WINDOWS\ericv <eric.vergnaud@wanadoo.fr> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * Revert "verify windows ci" This reverts commit 770d821. Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * reinstate full CI Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * manually merged * manually merge * fix merge * fix broken template * add template for invoking context list * fix typo * fix test templates * Add code of conduct but with a different name since I do not like that name Signed-off-by: Terence Parr <parrt@antlr.org> * Update C# release instructions * Tweak code of conduct Signed-off-by: Terence Parr <parrt@antlr.org> * Bring back the Package.swift in the project's root Signed-off-by: Nikolay Edigaryev <edigaryev@gmail.com> * swift-target.md: fix SPM installation instructions Signed-off-by: Nikolay Edigaryev <edigaryev@gmail.com> * the scope (parser or lexer) in @parser::header was dropped, so keep track of it and only include @Header in Listener and Visitor code Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> * drop workaround in favor of #3878 * drop cache usage since it fails in CI * #3878 was missing some scenarios * fix issue when deleting test folder * fix warnings * drop duplicate behavior * drop alien 'abstractRecognizer' property * drop alien property 'channels' * fix various codegen issues * change import * restore js extensions, see microsoft/TypeScript#50501 * use consistent inheritance * more API * more API stuff * fix typo * fix typescript exports * use ts-node to run typescript tests * webpack runtime before linking * fix exec paths on windows Signed-off-by: ERIC-WINDOWS\ericv <eric.vergnaud@wanadoo.fr> * fix failing tests * fix a few import issues * merge typescript-target with latest dev * runs Java and JavaScript tests after merging typescript-target * merge test template * skip unsupported test * fix template prototype * fix missing merge * bump typescript beta version after rebase * update docs * rollback unwanted changes Signed-off-by: HS <hs@apotell.com> Signed-off-by: Eric Vergnaud <eric.vergnaud@wanadoo.fr> Signed-off-by: nicksxs <nicksxs@hotmail.com> Signed-off-by: Terence Parr <parrt@antlr.org> Signed-off-by: Hell_Ghost <dev.hellghost@gmail.com> Signed-off-by: Hell_Ghost dev.hellghost@gmail.com Signed-off-by: Ross Patterson <ross.patterson@gmail.com> Signed-off-by: James Taylor <jamestaylor@apache.org> Signed-off-by: Bryan Tan <bryantan@technius.net> Signed-off-by: Jim.Idle <jimi@gatherstars.com> Signed-off-by: Tim McCormack <cortex@brainonfire.net> Signed-off-by: Ivan Kochurkin <kvanttt@gmail.com> Signed-off-by: Qijia Liu <liumeo@pku.edu.cn> Signed-off-by: ERIC-WINDOWS\ericv <eric.vergnaud@wanadoo.fr> Signed-off-by: Nikolay Edigaryev <edigaryev@gmail.com> Co-authored-by: HS <hs@apotell.com> Co-authored-by: nicksxs <nicksxs@hotmail.com> Co-authored-by: Terence Parr <parrt@antlr.org> Co-authored-by: Hell_Ghost <dev.hellghost@gmail.com> Co-authored-by: Ross Patterson <ross.patterson@gmail.com> Co-authored-by: James Taylor <jamestaylor@apache.org> Co-authored-by: Bryan Tan <bryantan@technius.net> Co-authored-by: Jim.Idle <jimi@gatherstars.com> Co-authored-by: Tim McCormack <cortex@brainonfire.net> Co-authored-by: Robert Adam <dev@robert-adam.de> Co-authored-by: Bryan Tan <Technius@users.noreply.github.com> Co-authored-by: Ivan Kochurkin <kvanttt@gmail.com> Co-authored-by: Qijia Liu <liumeo@pku.edu.cn> Co-authored-by: Nikolay Edigaryev <edigaryev@gmail.com>
ArthurSonzogni
added a commit
to ArthurSonzogni/antlr4
that referenced
this issue
Jan 22, 2023
ANTLR doesn't use threads, and it used not to depend on pthread library either. It changed recently in 2022: antlr#3708 The patch linked against pthread, because the GNU libstdc++ used to depend on it in their implementation of `std::call_once`. By the way, the libstdc++ stopped it in 2020: https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=93e79ed391b9c636f087e6eb7e70f14963cd10ad So this is not more needed. I would like to stop depending on pthread. I am using ANTLR in C++ WebAssembly for the website: https://arthursonzogni.com/Diagon/ It doesn't compile with emscripten anymore, because by default pthread is not enabled. It could be enabled, but it would force me to deploy cross-origin-isolation: https://web.dev/cross-origin-isolation-guide/ Solutions: 1. Stop linking against pthread, because the libstdc++ stopped depending on it for std::call_once. 2. Implement std::call_once ourself using std::atomic_flag 3. Implement std::call_once ourself using a boolean flag, assuming we don't need to support threads. I chose to do (2) in this patch.
ArthurSonzogni
added a commit
to ArthurSonzogni/antlr4
that referenced
this issue
Jan 22, 2023
ANTLR doesn't use threads, and it used not to depend on pthread library either. It changed recently in 2022: antlr#3708 The patch linked against pthread, because the GNU libstdc++ used to depend on it in their implementation of `std::call_once`. By the way, the libstdc++ stopped it in 2020: https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=93e79ed391b9c636f087e6eb7e70f14963cd10ad So this is not more needed. I would like to stop depending on pthread. I am using ANTLR in C++ WebAssembly for the website: https://arthursonzogni.com/Diagon/ It doesn't compile with emscripten anymore, because by default pthread is not enabled. It could be enabled, but it would force me to deploy cross-origin-isolation: https://web.dev/cross-origin-isolation-guide/ Solutions: 1. Stop linking against pthread, because the libstdc++ stopped depending on it for std::call_once. 2. Implement std::call_once ourself using std::atomic_flag 3. Implement std::call_once ourself using a boolean flag, assuming we don't need to support threads. I chose to do (2) in this patch. Signed-off-by: Arthur Sonzogni<sonzogniarthur@gmail.com>
ArthurSonzogni
added a commit
to ArthurSonzogni/antlr4
that referenced
this issue
Jan 22, 2023
ANTLR doesn't use threads, and it used not to depend on pthread library either. It changed recently in 2022: antlr#3708 The patch linked against pthread, because the GNU libstdc++ used to depend on it in their implementation of `std::call_once`. By the way, the libstdc++ stopped it in 2020: https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=93e79ed391b9c636f087e6eb7e70f14963cd10ad So this is not more needed. I would like to stop depending on pthread. I am using ANTLR in C++ WebAssembly for the website: https://arthursonzogni.com/Diagon/ It doesn't compile with emscripten anymore, because by default pthread is not enabled. It could be enabled, but it would force me to deploy cross-origin-isolation: https://web.dev/cross-origin-isolation-guide/ Solutions: 1. Stop linking against pthread, because the libstdc++ stopped depending on it for std::call_once. 2. Implement std::call_once ourself using std::atomic_flag 3. Implement std::call_once ourself using a boolean flag, assuming we don't need to support threads. I chose to do (2) in this patch. Signed-off-by: ArthurSonzogni <sonzogniarthur@gmail.com>
ArthurSonzogni
added a commit
to ArthurSonzogni/antlr4
that referenced
this issue
Jan 22, 2023
ANTLR doesn't use threads, and it used not to depend on pthread library either. It changed recently in 2022: antlr#3708 The patch linked against pthread, because the GNU libstdc++ used to depend on it in their implementation of `std::call_once`. By the way, the libstdc++ stopped it in 2020: https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=93e79ed391b9c636f087e6eb7e70f14963cd10ad So this is not more needed. I would like to stop depending on pthread. I am using ANTLR in C++ WebAssembly for the website: https://arthursonzogni.com/Diagon/ It doesn't compile with emscripten anymore, because by default pthread is not enabled. It could be enabled, but it would force me to deploy cross-origin-isolation: https://web.dev/cross-origin-isolation-guide/ Solutions: 1. Stop linking against pthread, because the libstdc++ stopped depending on it for std::call_once. 2. Implement std::call_once ourself using std::atomic_flag 3. Implement std::call_once ourself using a boolean flag, assuming we don't need to support threads. I chose to do (2) in this patch. Signed-off-by: ArthurSonzogni <sonzogniarthur@gmail.com>
ArthurSonzogni
added a commit
to ArthurSonzogni/antlr4
that referenced
this issue
Jan 28, 2023
ANTLR doesn't use threads, and it used not to depend on pthread library either. It changed recently in 2022: antlr#3708 The patch linked against pthread, because the GNU libstdc++ used to depend on it in their implementation of `std::call_once`. By the way, the libstdc++ stopped it in 2020: https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=93e79ed391b9c636f087e6eb7e70f14963cd10ad So this is not more needed. I would like to stop depending on pthread. I am using ANTLR in C++ WebAssembly for the website: https://arthursonzogni.com/Diagon/ It doesn't compile with emscripten anymore, because by default pthread is not enabled. It could be enabled, but it would force me to deploy cross-origin-isolation: https://web.dev/cross-origin-isolation-guide/ Solutions: 1. Stop linking against pthread, because the libstdc++ stopped depending on it for std::call_once. 2. Implement std::call_once ourself using std::atomic_flag 3. Implement std::call_once ourself using a boolean flag, assuming we don't need to support threads. I chose to do (2) in this patch. Signed-off-by: ArthurSonzogni <sonzogniarthur@gmail.com>
parrt
pushed a commit
that referenced
this issue
Feb 19, 2023
ANTLR doesn't use threads, and it used not to depend on pthread library either. It changed recently in 2022: #3708 The patch linked against pthread, because the GNU libstdc++ used to depend on it in their implementation of `std::call_once`. By the way, the libstdc++ stopped it in 2020: https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=93e79ed391b9c636f087e6eb7e70f14963cd10ad So this is not more needed. I would like to stop depending on pthread. I am using ANTLR in C++ WebAssembly for the website: https://arthursonzogni.com/Diagon/ It doesn't compile with emscripten anymore, because by default pthread is not enabled. It could be enabled, but it would force me to deploy cross-origin-isolation: https://web.dev/cross-origin-isolation-guide/ Solutions: 1. Stop linking against pthread, because the libstdc++ stopped depending on it for std::call_once. 2. Implement std::call_once ourself using std::atomic_flag 3. Implement std::call_once ourself using a boolean flag, assuming we don't need to support threads. I chose to do (2) in this patch. Signed-off-by: ArthurSonzogni <sonzogniarthur@gmail.com>
ArthurSonzogni
added a commit
to ArthurSonzogni/antlr4
that referenced
this issue
May 13, 2023
ANTLR doesn't use threads, and it used not to depend on pthread library either. It changed recently in 2022: antlr#3708 The patch linked against pthread, because the GNU libstdc++ used to depend on it in their implementation of `std::call_once`. By the way, the libstdc++ stopped it in 2020: https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=93e79ed391b9c636f087e6eb7e70f14963cd10ad So this is not more needed. I would like to stop depending on pthread. I am using ANTLR in C++ WebAssembly for the website: https://arthursonzogni.com/Diagon/ It doesn't compile with emscripten anymore, because by default pthread is not enabled. It could be enabled, but it would force me to deploy cross-origin-isolation: https://web.dev/cross-origin-isolation-guide/ Solutions: 1. Stop linking against pthread, because the libstdc++ stopped depending on it for std::call_once. 2. Implement std::call_once ourself using std::atomic_flag 3. Implement std::call_once ourself using a boolean flag, assuming we don't need to support threads. I chose to do (2) in this patch. Signed-off-by: ArthurSonzogni <sonzogniarthur@gmail.com>
ArthurSonzogni
added a commit
to ArthurSonzogni/antlr4
that referenced
this issue
May 16, 2023
ANTLR doesn't use threads, and it used not to depend on pthread library either. It changed recently in 2022: antlr#3708 The patch linked against pthread, because the GNU libstdc++ used to depend on it in their implementation of `std::call_once`. By the way, the libstdc++ stopped it in 2020: https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=93e79ed391b9c636f087e6eb7e70f14963cd10ad So this is not more needed. I would like to stop depending on pthread. I am using ANTLR in C++ WebAssembly for the website: https://arthursonzogni.com/Diagon/ It doesn't compile with emscripten anymore, because by default pthread is not enabled. It could be enabled, but it would force me to deploy cross-origin-isolation: https://web.dev/cross-origin-isolation-guide/ Solutions: 1. Stop linking against pthread, because the libstdc++ stopped depending on it for std::call_once. 2. Implement std::call_once ourself using std::atomic_flag 3. Implement std::call_once ourself using a boolean flag, assuming we don't need to support threads. I chose to do (2) in this patch. Signed-off-by: ArthurSonzogni <sonzogniarthur@gmail.com>
ArthurSonzogni
added a commit
to ArthurSonzogni/antlr4
that referenced
this issue
May 16, 2023
ANTLR doesn't use threads, and it used not to depend on pthread library either. It changed recently in 2022: antlr#3708 The patch linked against pthread, because the GNU libstdc++ used to depend on it in their implementation of `std::call_once`. By the way, the libstdc++ stopped it in 2020: https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=93e79ed391b9c636f087e6eb7e70f14963cd10ad So this is not more needed. I would like to stop depending on pthread. I am using ANTLR in C++ WebAssembly for the website: https://arthursonzogni.com/Diagon/ It doesn't compile with emscripten anymore, because by default pthread is not enabled. It could be enabled, but it would force me to deploy cross-origin-isolation: https://web.dev/cross-origin-isolation-guide/ Solutions: 1. Stop linking against pthread, because the libstdc++ stopped depending on it for std::call_once. 2. Implement std::call_once ourself using std::atomic_flag 3. Implement std::call_once ourself using a boolean flag, assuming we don't need to support threads. I chose to do (2) in this patch. Signed-off-by: ArthurSonzogni <sonzogniarthur@gmail.com>
ArthurSonzogni
added a commit
to ArthurSonzogni/antlr4
that referenced
this issue
May 16, 2023
ANTLR doesn't use threads, and it used not to depend on pthread library either. It changed recently in 2022: antlr#3708 The patch linked against pthread, because the GNU libstdc++ used to depend on it in their implementation of `std::call_once`. By the way, the libstdc++ stopped it in 2020: https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=93e79ed391b9c636f087e6eb7e70f14963cd10ad So this is not more needed. I would like to stop depending on pthread. I am using ANTLR in C++ WebAssembly for the website: https://arthursonzogni.com/Diagon/ It doesn't compile with emscripten anymore, because by default pthread is not enabled. It could be enabled, but it would force me to deploy cross-origin-isolation: https://web.dev/cross-origin-isolation-guide/ Solutions: 1. Stop linking against pthread, because the libstdc++ stopped depending on it for std::call_once. 2. Implement std::call_once ourself using std::atomic_flag 3. Implement std::call_once ourself using a boolean flag, assuming we don't need to support threads. I chose to do (2) in this patch. Signed-off-by: ArthurSonzogni <sonzogniarthur@gmail.com>
ArthurSonzogni
added a commit
to ArthurSonzogni/antlr4
that referenced
this issue
May 16, 2023
ANTLR doesn't use threads, and it used not to depend on pthread library either. It changed recently in 2022: antlr#3708 The patch linked against pthread, because the GNU libstdc++ used to depend on it in their implementation of `std::call_once`. By the way, the libstdc++ stopped it in 2020: https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=93e79ed391b9c636f087e6eb7e70f14963cd10ad So this is not more needed. I would like to stop depending on pthread. I am using ANTLR in C++ WebAssembly for the website: https://arthursonzogni.com/Diagon/ It doesn't compile with emscripten anymore, because by default pthread is not enabled. It could be enabled, but it would force me to deploy cross-origin-isolation: https://web.dev/cross-origin-isolation-guide/ Solutions: 1. Stop linking against pthread, because the libstdc++ stopped depending on it for std::call_once. 2. Implement std::call_once ourself using std::atomic_flag 3. Implement std::call_once ourself using a boolean flag, assuming we don't need to support threads. I chose to do (2) in this patch. Signed-off-by: ArthurSonzogni <sonzogniarthur@gmail.com>
ArthurSonzogni
added a commit
to ArthurSonzogni/antlr4
that referenced
this issue
May 16, 2023
ANTLR doesn't use threads, and it used not to depend on pthread library either. It changed recently in 2022: antlr#3708 The patch linked against pthread, because the GNU libstdc++ used to depend on it in their implementation of `std::call_once`. By the way, the libstdc++ stopped it in 2020: https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=93e79ed391b9c636f087e6eb7e70f14963cd10ad So this is not more needed. I would like to stop depending on pthread. I am using ANTLR in C++ WebAssembly for the website: https://arthursonzogni.com/Diagon/ It doesn't compile with emscripten anymore, because by default pthread is not enabled. It could be enabled, but it would force me to deploy cross-origin-isolation: https://web.dev/cross-origin-isolation-guide/ Solutions: 1. Stop linking against pthread, because the libstdc++ stopped depending on it for std::call_once. 2. Implement std::call_once ourself using std::atomic_flag 3. Implement std::call_once ourself using a boolean flag, assuming we don't need to support threads. I chose to do (2) in this patch. Signed-off-by: ArthurSonzogni <sonzogniarthur@gmail.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
When using the C++ target, the generated lexer will use a call to
std::call_once
in itsinitialize
method. However, without further action, this will throwstd::runtime_error
with the messageUnknown error -1
.Thanks to https://stackoverflow.com/questions/51584960/stdcall-once-throws-stdsystem-error-unknown-error-1, I figured out that it is necessary to link against pthreads, since
std::call_once
requires a function from it that is not found otherwise (triggering the error).The following cmake snippet is enough to accomplish this:
Now, I think that this dependency should be resolved on ANTLR's side such that for any downstream user it is enough to just link against the ANTLR runtime and thanks to cmake's magic the dependency will propagate. Thus, my suggestion would be to link ANTLR's C++ runtime against pthreads using above snippet.
At this point, I am not sure whether on other platforms other libraries might be required in order for this to work. Does someone have experience with C++ ANTLR on macOS and Windows?
EDIT: Based on the docs it seems that above cmake snippet is actually cross-platform and not pthread-specific, so maybe we don't have to pay any special attention here?
The text was updated successfully, but these errors were encountered: