]> git.ipfire.org Git - thirdparty/json-c.git/commitdiff
meson: use static library for tests
authorRosen Penev <rosenp@gmail.com>
Thu, 5 Feb 2026 21:30:45 +0000 (13:30 -0800)
committerRosen Penev <rosenp@gmail.com>
Thu, 5 Feb 2026 21:46:00 +0000 (13:46 -0800)
Needed as tests use private APIs that are not exported.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
meson.build
tests/meson.build

index ece6167fa49b47cf7b15779231836fa4cd0354b3..39e9956ac80fc5327b76ebb066e52d8612200cc4 100644 (file)
@@ -225,6 +225,12 @@ endif
 
 add_project_arguments(cc.get_supported_arguments('-Wno-unused-parameter'), language : 'c')
 
+sym = cc.get_supported_link_arguments(
+  '-Wl,--version-script,@0@/json-c.sym'.format(
+    meson.current_source_dir(),
+  ),
+)
+
 # Source files
 sources = files(
   'arraylist.c', 'debug.c', 'json_c_version.c', 'json_object.c',
@@ -249,6 +255,7 @@ libjson = library('json-c',
   include_directories: inc,
   dependencies: bsd_dep,
   install: true,
+  link_args: sym,
   version: '5.4.0',
   soversion: '5',
 )
index 9580e4b46d0f6841b601e1eb5c5fc80a6c32e43e..50c3b03d00c420d998a434474d25e235fb4bd5d9 100644 (file)
@@ -1,5 +1,16 @@
-test_includes = include_directories('.')
-test_deps = [jsonc_dep]
+#This hack is needed for Windows tests
+test_lib = static_library(
+  'jsonctest',
+  objects: libjson.extract_all_objects(
+    recursive: false,
+  ),
+  install: false,
+)
+
+test_deps = declare_dependency(
+  include_directories: '..',
+  link_with: test_lib,
+)
 
 # List of test sources and expected output files
 test_cases = [
@@ -53,7 +64,6 @@ foreach t : test_cases
   name = t[0]
   expected = t[1]
   exe = executable(name, name + '.c',
-    include_directories: test_includes,
     dependencies: test_deps
   )
 
@@ -62,4 +72,4 @@ foreach t : test_cases
     env: ['EXPECTED_FILE=' + meson.current_build_dir() / expected],
     workdir: testdir
   )
-endforeach
\ No newline at end of file
+endforeach