-
Notifications
You must be signed in to change notification settings - Fork 234
meson.build fixes #1225
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
base: master
Are you sure you want to change the base?
meson.build fixes #1225
Conversation
|
As far as I'm aware, the CI failures are not caused by these changes |
|
Ping. Any updates? |
82ecdd0 to
3aec58b
Compare
|
I've triggered the CI again. IIRC the failures were directly related to this change, but let's see. |
|
I'm fine with this change. @saghul? edit: cross-wired |
|
I've been going through CI and stumbled upon this: https://github.com/quickjs-ng/quickjs/actions/runs/19475324220/job/55744866380?pr=1225#step:7:42 |
|
I can reproduce the failure on my machine too (albeit with clang only). |
|
https://github.com/google/sanitizers/wiki/AddressSanitizer#faq:
|
|
Meson option |
|
Passing |
3aec58b to
7b63c89
Compare
|
Should fix the CI. |
|
Yeah so as I said, the meson CI needs updating now to statically link by default. |
|
Would you like to me to do the CI update (including the fix for the failing CI for this PR) in this PR or separately? |
In this PR please, we like to avoid merging failing PRs. |
Your release CI builds QuickJS-NG with CMake so this PR shouldn't affect that. |
|
Apparently, for MSVC CI, we're hitting mesonbuild/meson#13892. Will add a commit forcing MSVC-based builds to use static libs. |
|
@BalkanMadman ping, seems this was close to done? |
7b63c89 to
6cd329f
Compare
|
Hello! Sorry for the delay, could you please try running the CI again? The two new commits should fix two issues in building QuickJS-NG shared. |
5b8d06a to
0cf1f7f
Compare
|
Okay, I also need to guard all the dll{export,import} shenanigans if we're building static libqjs🔥🔥🔥 Because obviously just exporting symbols isn't enough and on Windows you need separate exports for DLLs and static libs👍 |
|
Not sure I get the unconditional define in quickjs.c. Shouldn't it be set by Meson depending on the build type? |
0cf1f7f to
d0fe4c0
Compare
|
Looks like there are conflicts, can you rebase? |
d0fe4c0 to
704fed0
Compare
704fed0 to
bbb6297
Compare
|
Oh, yeah, give me a sec. After the rebase, could you please do the CI? I'm not sure whether |
bbb6297 to
e500cbc
Compare
|
Okay, should be good |
|
084788f is not really complete or correct but I want to see whether the method even works. |
|
It seems that to support both static and shared libqjs on Windows, we can avoid specifying Could you please restart the CI? |
d1b42b0 to
9b3883e
Compare
|
Okay, let's try it again. Could you please re-run the CI? |
|
Oh wait |
9b3883e to
19e0492
Compare
|
Okay, should be good for an another CI run |
Functions declared by cutils.h are used by most of the source files in the project. However, they are not part of libqjs API and, thus, the functions are not marked as API. Apart from the fact that cutils do not belong in libqjs, since they do not constitute a public API and are just helpers, they break shared qjs.dll builds on Windows where DLLs must explicitly mark their interfaces. As cutils.h does not mark its functions with JS_EXTERN or alike, the Windows linker is unable to resolve references to the cutils functions. This commit makes cutils a separate static library, which is linked with the dependent executables/libraries. Signed-off-by: Zurab Kvachadze <[email protected]>
Since the macros like JS_EXTERN are used in more than one place, it is quite reasonable and helpful to declare them in one place. This commit, in addition to moving the macro definitions into the new header quickjs-ng-util.h, also plumbs Windows support for the newly introduced QUICKJS_NG_API and QUICKJS_NG_FORCE_INLINE. The new header is installed with quickjs.h, since the latter depends on the former. Signed-off-by: Zurab Kvachadze <[email protected]>
Clang cannot handle building shared libraries with sanitizers and -Wl,--no-undefined (set by default unless explicitly disabled with -Db_lundef=false). This commit prefixes CI in case shared libraries are built with sanitisers. Signed-off-by: Zurab Kvachadze <[email protected]>
During the build, the default library can be overridden via the -Ddefault_library=type flag. Presetting this key in meson.build makes life harder for distributions which almost always want to build shared libraries. Those requiring static libraries can always force that via the aforementioned flag. Signed-off-by: Zurab Kvachadze <[email protected]>
19e0492 to
b15601d
Compare
|
Now, we pass the qjs defines to cutils too. Please, give the CI one more go. |
Hello!
We've been packaging QuickJS-ng in Gentoo and we've found meson to be the most versatile amongst the added build systems. Huge thanks for taking care of QuickJS and implementing modern build systems -- it makes the life of us, packagers, much much easier.
This PR bundles two simple fixes for meson.build