meson: set the symbol visibility of the shared library to hidden
This matches the Makefile build. Due to one private xxhash symbol in use by the program, it recompiles a private copy of xxhash. Due to the test binaries making extensive (?) use of private symbols, it doesn't even attempt to link to shared libzstd, and instead, all of the original object files are added to libtestcommon itself for private linkage. This, too, matches the Makefile build. Ref. #2261
This commit is contained in:
4 files changed
+21
-18
No files matched your search
@@ -108,6 +108,7 @@ libzstd = library('zstd',
|
|||||||
libzstd_sources,
|
libzstd_sources,
|
||||||
include_directories: libzstd_includes,
|
include_directories: libzstd_includes,
|
||||||
c_args: libzstd_c_args,
|
c_args: libzstd_c_args,
|
||||||
|
gnu_symbol_visibility: 'hidden',
|
||||||
dependencies: libzstd_deps,
|
dependencies: libzstd_deps,
|
||||||
install: true,
|
install: true,
|
||||||
version: zstd_libversion)
|
version: zstd_libversion)
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ project('zstd',
|
|||||||
#'werror=true'
|
#'werror=true'
|
||||||
],
|
],
|
||||||
version: 'DUMMY',
|
version: 'DUMMY',
|
||||||
meson_version: '>=0.47.0')
|
meson_version: '>=0.48.0')
|
||||||
|
|
||||||
cc = meson.get_compiler('c')
|
cc = meson.get_compiler('c')
|
||||||
cxx = meson.get_compiler('cpp')
|
cxx = meson.get_compiler('cpp')
|
||||||
|
|||||||
@@ -18,7 +18,9 @@ zstd_programs_sources = [join_paths(zstd_rootdir, 'programs/zstdcli.c'),
|
|||||||
join_paths(zstd_rootdir, 'programs/benchzstd.c'),
|
join_paths(zstd_rootdir, 'programs/benchzstd.c'),
|
||||||
join_paths(zstd_rootdir, 'programs/datagen.c'),
|
join_paths(zstd_rootdir, 'programs/datagen.c'),
|
||||||
join_paths(zstd_rootdir, 'programs/dibio.c'),
|
join_paths(zstd_rootdir, 'programs/dibio.c'),
|
||||||
join_paths(zstd_rootdir, 'programs/zstdcli_trace.c')]
|
join_paths(zstd_rootdir, 'programs/zstdcli_trace.c'),
|
||||||
|
# needed due to use of private symbol + -fvisibility=hidden
|
||||||
|
join_paths(zstd_rootdir, 'lib/common/xxhash.c')]
|
||||||
|
|
||||||
zstd_c_args = libzstd_debug_cflags
|
zstd_c_args = libzstd_debug_cflags
|
||||||
if use_multi_thread
|
if use_multi_thread
|
||||||
|
|||||||
@@ -34,32 +34,36 @@ testcommon_sources = [join_paths(zstd_rootdir, 'programs/datagen.c'),
|
|||||||
join_paths(zstd_rootdir, 'programs/timefn.c'),
|
join_paths(zstd_rootdir, 'programs/timefn.c'),
|
||||||
join_paths(zstd_rootdir, 'programs/benchfn.c'),
|
join_paths(zstd_rootdir, 'programs/benchfn.c'),
|
||||||
join_paths(zstd_rootdir, 'programs/benchzstd.c')]
|
join_paths(zstd_rootdir, 'programs/benchzstd.c')]
|
||||||
|
|
||||||
testcommon = static_library('testcommon',
|
testcommon = static_library('testcommon',
|
||||||
testcommon_sources)
|
testcommon_sources,
|
||||||
|
# needed due to use of private symbol + -fvisibility=hidden
|
||||||
|
objects: libzstd.extract_all_objects(recursive: false))
|
||||||
|
|
||||||
|
testcommon_dep = declare_dependency(link_with: testcommon,
|
||||||
|
dependencies: libzstd_deps,
|
||||||
|
include_directories: libzstd_includes)
|
||||||
|
|
||||||
datagen_sources = [join_paths(zstd_rootdir, 'tests/datagencli.c')]
|
datagen_sources = [join_paths(zstd_rootdir, 'tests/datagencli.c')]
|
||||||
datagen = executable('datagen',
|
datagen = executable('datagen',
|
||||||
datagen_sources,
|
datagen_sources,
|
||||||
c_args: [ '-DNDEBUG' ],
|
c_args: [ '-DNDEBUG' ],
|
||||||
include_directories: test_includes,
|
include_directories: test_includes,
|
||||||
dependencies: libzstd_dep,
|
dependencies: testcommon_dep,
|
||||||
link_with: testcommon,
|
|
||||||
install: false)
|
install: false)
|
||||||
|
|
||||||
fullbench_sources = [join_paths(zstd_rootdir, 'tests/fullbench.c')]
|
fullbench_sources = [join_paths(zstd_rootdir, 'tests/fullbench.c')]
|
||||||
fullbench = executable('fullbench',
|
fullbench = executable('fullbench',
|
||||||
fullbench_sources,
|
fullbench_sources,
|
||||||
include_directories: test_includes,
|
include_directories: test_includes,
|
||||||
dependencies: libzstd_dep,
|
dependencies: testcommon_dep,
|
||||||
link_with: testcommon,
|
|
||||||
install: false)
|
install: false)
|
||||||
|
|
||||||
fuzzer_sources = [join_paths(zstd_rootdir, 'tests/fuzzer.c')]
|
fuzzer_sources = [join_paths(zstd_rootdir, 'tests/fuzzer.c')]
|
||||||
fuzzer = executable('fuzzer',
|
fuzzer = executable('fuzzer',
|
||||||
fuzzer_sources,
|
fuzzer_sources,
|
||||||
include_directories: test_includes,
|
include_directories: test_includes,
|
||||||
dependencies: [ libzstd_dep, thread_dep ],
|
dependencies: [ testcommon_dep, thread_dep ],
|
||||||
link_with: testcommon,
|
|
||||||
install: false)
|
install: false)
|
||||||
|
|
||||||
zstreamtest_sources = [join_paths(zstd_rootdir, 'tests/seqgen.c'),
|
zstreamtest_sources = [join_paths(zstd_rootdir, 'tests/seqgen.c'),
|
||||||
@@ -67,22 +71,20 @@ zstreamtest_sources = [join_paths(zstd_rootdir, 'tests/seqgen.c'),
|
|||||||
zstreamtest = executable('zstreamtest',
|
zstreamtest = executable('zstreamtest',
|
||||||
zstreamtest_sources,
|
zstreamtest_sources,
|
||||||
include_directories: test_includes,
|
include_directories: test_includes,
|
||||||
dependencies: libzstd_dep,
|
dependencies: testcommon_dep,
|
||||||
link_with: testcommon,
|
|
||||||
install: false)
|
install: false)
|
||||||
|
|
||||||
paramgrill_sources = [join_paths(zstd_rootdir, 'tests/paramgrill.c')]
|
paramgrill_sources = [join_paths(zstd_rootdir, 'tests/paramgrill.c')]
|
||||||
paramgrill = executable('paramgrill',
|
paramgrill = executable('paramgrill',
|
||||||
paramgrill_sources,
|
paramgrill_sources,
|
||||||
include_directories: test_includes,
|
include_directories: test_includes,
|
||||||
dependencies: [ libzstd_dep, libm_dep ],
|
dependencies: [ testcommon_dep, libm_dep ],
|
||||||
link_with: testcommon,
|
|
||||||
install: false)
|
install: false)
|
||||||
|
|
||||||
roundTripCrash_sources = [join_paths(zstd_rootdir, 'tests/roundTripCrash.c')]
|
roundTripCrash_sources = [join_paths(zstd_rootdir, 'tests/roundTripCrash.c')]
|
||||||
roundTripCrash = executable('roundTripCrash',
|
roundTripCrash = executable('roundTripCrash',
|
||||||
roundTripCrash_sources,
|
roundTripCrash_sources,
|
||||||
dependencies: [ libzstd_dep ],
|
dependencies: [ testcommon_dep ],
|
||||||
install: false)
|
install: false)
|
||||||
|
|
||||||
longmatch_sources = [join_paths(zstd_rootdir, 'tests/longmatch.c')]
|
longmatch_sources = [join_paths(zstd_rootdir, 'tests/longmatch.c')]
|
||||||
@@ -111,8 +113,7 @@ decodecorpus_sources = [join_paths(zstd_rootdir, 'tests/decodecorpus.c')]
|
|||||||
decodecorpus = executable('decodecorpus',
|
decodecorpus = executable('decodecorpus',
|
||||||
decodecorpus_sources,
|
decodecorpus_sources,
|
||||||
include_directories: test_includes,
|
include_directories: test_includes,
|
||||||
dependencies: [ libzstd_dep, libm_dep ],
|
dependencies: [ testcommon_dep, libm_dep ],
|
||||||
link_with: testcommon,
|
|
||||||
install: false)
|
install: false)
|
||||||
|
|
||||||
poolTests_sources = [join_paths(zstd_rootdir, 'tests/poolTests.c'),
|
poolTests_sources = [join_paths(zstd_rootdir, 'tests/poolTests.c'),
|
||||||
@@ -123,8 +124,7 @@ poolTests_sources = [join_paths(zstd_rootdir, 'tests/poolTests.c'),
|
|||||||
poolTests = executable('poolTests',
|
poolTests = executable('poolTests',
|
||||||
poolTests_sources,
|
poolTests_sources,
|
||||||
include_directories: test_includes,
|
include_directories: test_includes,
|
||||||
dependencies: [ libzstd_dep, thread_dep ],
|
dependencies: [ testcommon_dep, thread_dep ],
|
||||||
link_with: testcommon,
|
|
||||||
install: false)
|
install: false)
|
||||||
|
|
||||||
checkTag_sources = [join_paths(zstd_rootdir, 'tests/checkTag.c')]
|
checkTag_sources = [join_paths(zstd_rootdir, 'tests/checkTag.c')]
|
||||||
|
|||||||
Reference in new issue
Block a user