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 c7b8133
Show file tree
Hide file tree
Showing 4 changed files with 20 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
31 changes: 15 additions & 16 deletions build/meson/tests/meson.build
Expand Up @@ -34,55 +34,56 @@ 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,
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 +112,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 +123,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 c7b8133

Please sign in to comment.