diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2019-02-27 00:48:12 +0300 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2019-02-27 00:53:05 +0300 |
commit | 4199c59c4ceb53f00f87b6d8a4eaa45db78358cf (patch) | |
tree | c31cd5dad7ebb7e5d407d5ac965dcf93cef16727 /tests/tests.am | |
parent | d11b6dc29ebe5f412dd49a066ac637d908353452 (diff) | |
download | bdwgc-4199c59c4ceb53f00f87b6d8a4eaa45db78358cf.tar.gz |
Fix 'duplicate symbol' error for tests using multiple static libs (OS X)
Issue #263 (bdwgc).
If configured with --enable-static, libtool passes libgc.a to gcc
twice (with a relative path and with an absolute one) when linking
tests that depend on libcord.a, libgccpp.a or libstaticrootslib_test.a
which, in turn, depends on libgc.a. Double specification of libgc.a
seems to confuse ld tool of MacOS 10.14.
The workaround is to omit libgc.la in *_LDADD specification of the
mentioned tests when the shared libraries are not requested, at least.
* configure.ac (ENABLE_SHARED): New AM_CONDITIONAL.
* cord/cord.am (cordtest_LDADD): Do not add libgc.la unless
ENABLE_SHARED; add comment.
* tests/tests.am (staticrootstest_LDADD): Likewise.
* tests/tests.am [CPLUSPLUS && !AVOID_CPP_LIB] (test_cpp_LDADD):
Likewise.
Diffstat (limited to 'tests/tests.am')
-rw-r--r-- | tests/tests.am | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/tests/tests.am b/tests/tests.am index 19046e0c..93f4b27d 100644 --- a/tests/tests.am +++ b/tests/tests.am @@ -50,8 +50,8 @@ TESTS += staticrootstest$(EXEEXT) check_PROGRAMS += staticrootstest staticrootstest_SOURCES = tests/staticrootstest.c staticrootstest_CFLAGS = -DSTATICROOTSLIB2 -staticrootstest_LDADD = $(test_ldadd) libstaticrootslib_test.la \ - libstaticrootslib2_test.la +staticrootstest_LDADD = $(nodist_libgc_la_OBJECTS) $(EXTRA_TEST_LIBS) \ + libstaticrootslib_test.la libstaticrootslib2_test.la check_LTLIBRARIES += libstaticrootslib_test.la libstaticrootslib2_test.la libstaticrootslib_test_la_SOURCES = tests/staticrootslib.c libstaticrootslib_test_la_LIBADD = $(test_ldadd) @@ -61,6 +61,9 @@ libstaticrootslib2_test_la_SOURCES = tests/staticrootslib.c libstaticrootslib2_test_la_LIBADD = $(test_ldadd) libstaticrootslib2_test_la_CFLAGS = -DSTATICROOTSLIB2 libstaticrootslib2_test_la_LDFLAGS = -no-undefined -rpath /nowhere +if ENABLE_SHARED +staticrootstest_LDADD += $(top_builddir)/libgc.la +endif if KEEP_BACK_PTRS TESTS += tracetest$(EXEEXT) @@ -106,7 +109,13 @@ test_cpp_SOURCES = tests/test_cpp.cc if AVOID_CPP_LIB test_cpp_LDADD = gc_cpp.o $(test_ldadd) $(CXXLIBS) else -test_cpp_LDADD = libgccpp.la $(test_ldadd) $(CXXLIBS) +test_cpp_LDADD = libgccpp.la $(nodist_libgc_la_OBJECTS) \ + $(EXTRA_TEST_LIBS) $(CXXLIBS) +## In case of static libraries build, libgc.a is already referenced in +## dependency_libs attribute of libgccpp.la file. +if ENABLE_SHARED +test_cpp_LDADD += $(top_builddir)/libgc.la +endif endif endif |