Skip to content

Commit

Permalink
meson: set the symbol visibility of the shared library to hidden
Browse files Browse the repository at this point in the history
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
  • Loading branch information
eli-schwartz committed Aug 10, 2021
1 parent d95a3f5 commit 9748608
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 18 deletions.
1 change: 1 addition & 0 deletions build/meson/lib/meson.build
Expand Up @@ -108,6 +108,7 @@ libzstd = library('zstd',
libzstd_sources,
include_directories: libzstd_includes,
c_args: libzstd_c_args,
gnu_symbol_visibility: 'hidden',
dependencies: libzstd_deps,
install: true,
version: zstd_libversion)
Expand Down
2 changes: 1 addition & 1 deletion build/meson/meson.build
Expand Up @@ -21,7 +21,7 @@ project('zstd',
#'werror=true'
],
version: 'DUMMY',
meson_version: '>=0.47.0')
meson_version: '>=0.48.0')

cc = meson.get_compiler('c')
cxx = meson.get_compiler('cpp')
Expand Down
4 changes: 3 additions & 1 deletion build/meson/programs/meson.build
Expand Up @@ -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/datagen.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
if use_multi_thread
Expand Down
32 changes: 16 additions & 16 deletions build/meson/tests/meson.build
Expand Up @@ -34,55 +34,57 @@ testcommon_sources = [join_paths(zstd_rootdir, 'programs/datagen.c'),
join_paths(zstd_rootdir, 'programs/timefn.c'),
join_paths(zstd_rootdir, 'programs/benchfn.c'),
join_paths(zstd_rootdir, 'programs/benchzstd.c')]

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 = executable('datagen',
datagen_sources,
c_args: [ '-DNDEBUG' ],
include_directories: test_includes,
dependencies: libzstd_dep,
link_with: testcommon,
dependencies: testcommon_dep,
install: false)

fullbench_sources = [join_paths(zstd_rootdir, 'tests/fullbench.c')]
fullbench = executable('fullbench',
fullbench_sources,
include_directories: test_includes,
dependencies: libzstd_dep,
link_with: testcommon,
dependencies: testcommon_dep,
install: false)

fuzzer_sources = [join_paths(zstd_rootdir, 'tests/fuzzer.c')]
fuzzer = executable('fuzzer',
fuzzer_sources,
include_directories: test_includes,
dependencies: [ libzstd_dep, thread_dep ],
link_with: testcommon,
dependencies: [ testcommon_dep, thread_dep ],
install: false)

zstreamtest_sources = [join_paths(zstd_rootdir, 'tests/seqgen.c'),
join_paths(zstd_rootdir, 'tests/zstreamtest.c')]
zstreamtest = executable('zstreamtest',
zstreamtest_sources,
include_directories: test_includes,
dependencies: libzstd_dep,
link_with: testcommon,
dependencies: testcommon_dep,
install: false)

paramgrill_sources = [join_paths(zstd_rootdir, 'tests/paramgrill.c')]
paramgrill = executable('paramgrill',
paramgrill_sources,
include_directories: test_includes,
dependencies: [ libzstd_dep, libm_dep ],
link_with: testcommon,
dependencies: [ testcommon_dep, libm_dep ],
install: false)

roundTripCrash_sources = [join_paths(zstd_rootdir, 'tests/roundTripCrash.c')]
roundTripCrash = executable('roundTripCrash',
roundTripCrash_sources,
dependencies: [ libzstd_dep ],
dependencies: [ testcommon_dep ],
install: false)

longmatch_sources = [join_paths(zstd_rootdir, 'tests/longmatch.c')]
Expand Down Expand Up @@ -111,8 +113,7 @@ decodecorpus_sources = [join_paths(zstd_rootdir, 'tests/decodecorpus.c')]
decodecorpus = executable('decodecorpus',
decodecorpus_sources,
include_directories: test_includes,
dependencies: [ libzstd_dep, libm_dep ],
link_with: testcommon,
dependencies: [ testcommon_dep, libm_dep ],
install: false)

poolTests_sources = [join_paths(zstd_rootdir, 'tests/poolTests.c'),
Expand All @@ -123,8 +124,7 @@ poolTests_sources = [join_paths(zstd_rootdir, 'tests/poolTests.c'),
poolTests = executable('poolTests',
poolTests_sources,
include_directories: test_includes,
dependencies: [ libzstd_dep, thread_dep ],
link_with: testcommon,
dependencies: [ testcommon_dep, thread_dep ],
install: false)

checkTag_sources = [join_paths(zstd_rootdir, 'tests/checkTag.c')]
Expand Down

0 comments on commit 9748608

Please sign in to comment.