fix #2045
When compiling `libzstd` in multithreading mode,
the `libzstd-mt` recipe would not include `-pthread`,
resulting in an underlinked dynamic library.
Added a test on Travis to check that the library is fully linked.
This makes it possible, in some future release,
to build a multi-threaded `libzstd` dynamic library by default
as it would no longer impact the build script of user programs.
# DEVNULLRIGHTS : will request sudo rights to test permissions on /dev/null
- DEVNULLRIGHTS=test make test
- - name: gcc-6 + gcc-7 compilation # ~ 3mn
+ - name: gcc-6 + gcc-7 + libzstdmt compilation # ~ 6mn
script:
- make gcc6install gcc7install
- CC=gcc-6 CFLAGS=-Werror make -j all
- make clean
- CC=gcc-7 CFLAGS=-Werror make -j all
+ - make clean
+ - LDFLAGS=-Wl,--no-undefined make -C lib libzstd-mt
- name: gcc-8 + ASan + UBSan + Test Zstd # ~6.5mn
script:
@echo compiling static library
@$(AR) $(ARFLAGS) $@ $^
-libzstd.a-mt: CPPFLAGS += -DZSTD_MULTITHREAD
-libzstd.a-mt: libzstd.a
-
ifneq (,$(filter Windows%,$(OS)))
LIBZSTD = dll\libzstd.dll
libzstd : $(LIBZSTD)
-libzstd-mt : CPPFLAGS += -DZSTD_MULTITHREAD
+lib : libzstd.a libzstd
+
+%-mt : CPPFLAGS += -DZSTD_MULTITHREAD
+%-mt : LDFLAGS += -pthread
+
libzstd-mt : libzstd
-lib: libzstd.a libzstd
+libzstd.a-mt: libzstd.a
-lib-mt: CPPFLAGS += -DZSTD_MULTITHREAD
-lib-mt: lib
+lib-mt : lib
-lib-release lib-release-mt: DEBUGFLAGS :=
+%-release : DEBUGFLAGS :=
lib-release: lib
-lib-release-mt: lib-mt
+lib-mt-release : lib-mt
# Special case : building library in single-thread mode _and_ without zstdmt_compress.c
ZSTDMT_FILES = compress/zstdmt_compress.c