From 513a563c5ed4a205679c4beb6b0f306efb7d53b6 Mon Sep 17 00:00:00 2001 From: Witold Filipczyk Date: Wed, 7 Jan 2026 10:15:35 +0100 Subject: [PATCH 1/2] Added libonly option to meson I wanted only library for djgpp. Compiler installed from rpm packages. Here is the build script: // mes.sh rm -rf /tmp/builddir_qjs PREFIX=/opt/qjs DESTDIR=$HOME/qjs LIBRARY_PATH="$PREFIX/lib" \ PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig" \ C_INCLUDE_PATH="$PREFIX/include" \ CFLAGS="-O2 -I$PREFIX/include" \ CXXFLAGS="-O2 -I$PREFIX/include" \ LDFLAGS="-L$PREFIX/lib" \ meson setup /tmp/builddir_qjs --cross-file cross/linux-djgpp.ini \ -Dprefix=$PREFIX \ -Dexamples=disabled \ -Dlibc=false \ -Dtests=disabled \ -Dlibonly=true || exit 1 meson compile -C /tmp/builddir_qjs || exit 2 mkdir -p $DESTDIR meson install -C /tmp/builddir_qjs --destdir $DESTDIR || exit 3 // linux-djgpp.ini [binaries] c = ['/usr/bin/i586-pc-msdosdjgpp-gcc', '-Wno-incompatible-pointer-types'] cpp = '/usr/bin/i586-pc-msdosdjgpp-g++' objc = '/usr/bin/i586-pc-msdosdjgpp-gcc' ar = '/usr/bin/i586-pc-msdosdjgpp-ar' pkg-config = '/usr/bin/pkg-config' strip = '/usr/bin/i586-pc-msdosdjgpp-strip' exe_wrapper = '/bin/true' ld = '/usr/bin/i586-pc-msdosdjgpp-ld' cmake = '/usr/bin/cmake' [properties] root = '/usr/i586-pc-msdosdjgpp' need_exe_wrapper = false [host_machine] system = 'dos' cpu_family = 'x86' cpu = 'i586' endian = 'little' [cmake] CMAKE_BUILD_WITH_INSTALL_RPATH = 'ON' CMAKE_FIND_ROOT_PATH_MODE_PROGRAM = 'NEVER' CMAKE_FIND_ROOT_PATH_MODE_LIBRARY = 'ONLY' CMAKE_FIND_ROOT_PATH_MODE_INCLUDE = 'ONLY' CMAKE_FIND_ROOT_PATH_MODE_PACKAGE = 'ONLY' --- meson.build | 69 ++++++++++++++++++++++++++++------------------- meson_options.txt | 1 + 2 files changed, 43 insertions(+), 27 deletions(-) diff --git a/meson.build b/meson.build index cf79060bc..4f610bc0d 100644 --- a/meson.build +++ b/meson.build @@ -129,8 +129,10 @@ qjs_sys_deps = [] m_dep = cc.find_library('m', required: false) qjs_sys_deps += m_dep -qjs_sys_deps += dependency('threads', required: false) -qjs_sys_deps += dependency('dl', required: false) +if host_system != 'dos' + qjs_sys_deps += dependency('threads', required: false) + qjs_sys_deps += dependency('dl', required: false) +endif qjs_srcs = files( 'cutils.c', @@ -143,6 +145,7 @@ qjs_hdrs = files( 'quickjs.h', ) +lib_only = get_option('libonly') qjs_libc = get_option('libc') qjs_libc_srcs = files('quickjs-libc.c') qjs_libc_hdrs = files('quickjs-libc.h') @@ -163,14 +166,19 @@ if not qjs_parser qjs_c_args += ['-DQJS_DISABLE_PARSER'] endif -qjs_libc_lib = static_library( - 'quickjs-libc', - qjs_libc_srcs, +if not qjs_libc + qjs_libc_lib = [] +else + qjs_libc_lib = static_library( + 'quickjs-libc', + qjs_libc_srcs, - dependencies: qjs_sys_deps, - c_args: qjs_c_args, - gnu_symbol_visibility: 'hidden', -) + dependencies: qjs_sys_deps, + c_args: qjs_c_args, + gnu_symbol_visibility: 'hidden', + build_by_default: false, + ) +endif qjs_lib = library( 'qjs', @@ -269,16 +277,19 @@ endif qjsc_srcs = files( 'qjsc.c', ) -qjsc_exe = executable( - 'qjsc', - qjsc_srcs, - - c_args: qjs_c_args, - link_with: qjs_libc ? [] : qjs_libc_lib, - dependencies: qjs_dep, +if lib_only + qjsc_exe = '/bin/true' +else + qjsc_exe = executable( + 'qjsc', + qjsc_srcs, - install: true, -) + c_args: qjs_c_args, + link_with: qjs_libc ? [] : qjs_libc_lib, + dependencies: qjs_dep, + install: true, + ) +endif mimalloc_dep = [] mimalloc_sys_dep = dependency('mimalloc', required: get_option('cli_mimalloc')) @@ -295,17 +306,21 @@ qjs_exe_srcs = files( 'gen/standalone.c', 'qjs.c', ) -qjs_exe = executable( - 'qjs', - qjs_exe_srcs, +if lib_only + qjs_exe = '/bin/true' +else + qjs_exe = executable( + 'qjs', + qjs_exe_srcs, - c_args: qjs_c_args, - link_with: qjs_libc ? [] : qjs_libc_lib, - dependencies: [qjs_dep, mimalloc_dep], - export_dynamic: true, + c_args: qjs_c_args, + link_with: qjs_libc ? [] : qjs_libc_lib, + dependencies: [qjs_dep, mimalloc_dep], + export_dynamic: true, - install: true, -) + install: true, + ) +endif if meson.is_cross_build() mimalloc_native_dep = [] diff --git a/meson_options.txt b/meson_options.txt index 20e661e1a..1b24c2a33 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -4,3 +4,4 @@ option('libc', type: 'boolean', value: false, description: 'build qjs standard l option('cli_mimalloc', type: 'feature', value: 'disabled', description: 'build qjs cli with mimalloc') option('docdir', type: 'string', description: 'documentation directory') option('parser', type: 'boolean', value: true, description: 'Enable JS source code parser') +option('libonly', type: 'boolean', value: false, description: 'Build qjs library only') From b0d7959fe16eb5bdfec25c1a95c1c876228fc894 Mon Sep 17 00:00:00 2001 From: Witold Filipczyk Date: Wed, 7 Jan 2026 12:29:56 +0100 Subject: [PATCH 2/2] Try to fix CI --- meson.build | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/meson.build b/meson.build index 4f610bc0d..5bdb9ad36 100644 --- a/meson.build +++ b/meson.build @@ -166,19 +166,15 @@ if not qjs_parser qjs_c_args += ['-DQJS_DISABLE_PARSER'] endif -if not qjs_libc - qjs_libc_lib = [] -else - qjs_libc_lib = static_library( - 'quickjs-libc', - qjs_libc_srcs, +qjs_libc_lib = static_library( + 'quickjs-libc', + qjs_libc_srcs, - dependencies: qjs_sys_deps, - c_args: qjs_c_args, - gnu_symbol_visibility: 'hidden', - build_by_default: false, - ) -endif + dependencies: qjs_sys_deps, + c_args: qjs_c_args, + gnu_symbol_visibility: 'hidden', + build_by_default: false, +) qjs_lib = library( 'qjs',