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 5169ef3
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 19 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
35 changes: 18 additions & 17 deletions build/meson/tests/meson.build
Expand Up @@ -33,56 +33,59 @@ testcommon_sources = [join_paths(zstd_rootdir, 'programs/datagen.c'),
join_paths(zstd_rootdir, 'programs/util.c'),
join_paths(zstd_rootdir, 'programs/timefn.c'),
join_paths(zstd_rootdir, 'programs/benchfn.c'),
join_paths(zstd_rootdir, 'programs/benchzstd.c')]
join_paths(zstd_rootdir, 'programs/benchzstd.c'),
# needed due to use of private symbol + -fvisibility=hidden
join_paths(zstd_rootdir, 'lib/common/xxhash.c')]

testcommon = static_library('testcommon',
testcommon_sources)
testcommon_sources,
objects: libzstd.extract_all_objects(recursive: false),
include_directories: libzstd_includes)

testcommon_dep = declare_dependency(link_with: testcommon,
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 +114,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 +125,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 5169ef3

Please sign in to comment.