648db22b |
1 | # ################################################################ |
2 | # Copyright (c) Meta Platforms, Inc. and affiliates. |
3 | # All rights reserved. |
4 | # |
5 | # This source code is licensed under both the BSD-style license (found in the |
6 | # LICENSE file in the root directory of this source tree) and the GPLv2 (found |
7 | # in the COPYING file in the root directory of this source tree). |
8 | # You may select, at your option, one of the above-listed licenses. |
9 | # ################################################################ |
10 | |
11 | # verbose mode (print commands) on V=1 or VERBOSE=1 |
12 | Q = $(if $(filter 1,$(V) $(VERBOSE)),,@) |
13 | |
14 | PRGDIR = programs |
15 | ZSTDDIR = lib |
16 | BUILDIR = build |
17 | ZWRAPDIR = zlibWrapper |
18 | TESTDIR = tests |
19 | FUZZDIR = $(TESTDIR)/fuzz |
20 | |
21 | # Define nul output |
22 | VOID = /dev/null |
23 | |
24 | # When cross-compiling from linux to windows, you might |
25 | # need to specify this as "Windows." Fedora build fails |
26 | # without it. |
27 | # |
28 | # Note: mingw-w64 build from linux to windows does not |
29 | # fail on other tested distros (ubuntu, debian) even |
30 | # without manually specifying the TARGET_SYSTEM. |
31 | TARGET_SYSTEM ?= $(OS) |
32 | CP ?= cp |
33 | |
34 | ifneq (,$(filter Windows%,$(TARGET_SYSTEM))) |
35 | EXT =.exe |
36 | else |
37 | EXT = |
38 | endif |
39 | |
40 | ## default: Build lib-release and zstd-release |
41 | .PHONY: default |
42 | default: lib-release zstd-release |
43 | |
44 | .PHONY: all |
45 | all: allmost examples manual contrib |
46 | |
47 | .PHONY: allmost |
48 | allmost: allzstd zlibwrapper |
49 | |
50 | # skip zwrapper, can't build that on alternate architectures without the proper zlib installed |
51 | .PHONY: allzstd |
52 | allzstd: lib |
53 | $(Q)$(MAKE) -C $(PRGDIR) all |
54 | $(Q)$(MAKE) -C $(TESTDIR) all |
55 | |
56 | .PHONY: all32 |
57 | all32: |
58 | $(MAKE) -C $(PRGDIR) zstd32 |
59 | $(MAKE) -C $(TESTDIR) all32 |
60 | |
61 | .PHONY: lib lib-release lib-mt lib-nomt |
62 | lib lib-release lib-mt lib-nomt: |
63 | $(Q)$(MAKE) -C $(ZSTDDIR) $@ |
64 | |
65 | .PHONY: zstd zstd-release |
66 | zstd zstd-release: |
67 | $(Q)$(MAKE) -C $(PRGDIR) $@ |
68 | $(Q)ln -sf $(PRGDIR)/zstd$(EXT) zstd$(EXT) |
69 | |
70 | .PHONY: zstdmt |
71 | zstdmt: |
72 | $(Q)$(MAKE) -C $(PRGDIR) $@ |
73 | $(Q)$(CP) $(PRGDIR)/zstd$(EXT) ./zstdmt$(EXT) |
74 | |
75 | .PHONY: zlibwrapper |
76 | zlibwrapper: lib |
77 | $(MAKE) -C $(ZWRAPDIR) all |
78 | |
79 | ## test: run long-duration tests |
80 | .PHONY: test |
81 | DEBUGLEVEL ?= 1 |
82 | test: MOREFLAGS += -g -Werror |
83 | test: |
84 | DEBUGLEVEL=$(DEBUGLEVEL) MOREFLAGS="$(MOREFLAGS)" $(MAKE) -j -C $(PRGDIR) allVariants |
85 | $(MAKE) -C $(TESTDIR) $@ |
86 | ZSTD=../../programs/zstd $(MAKE) -C doc/educational_decoder $@ |
87 | |
88 | ## shortest: same as `make check` |
89 | .PHONY: shortest |
90 | shortest: |
91 | $(Q)$(MAKE) -C $(TESTDIR) $@ |
92 | |
93 | ## check: run basic tests for `zstd` cli |
94 | .PHONY: check |
95 | check: shortest |
96 | |
97 | .PHONY: automated_benchmarking |
98 | automated_benchmarking: |
99 | $(MAKE) -C $(TESTDIR) $@ |
100 | |
101 | .PHONY: benchmarking |
102 | benchmarking: automated_benchmarking |
103 | |
104 | ## examples: build all examples in `examples/` directory |
105 | .PHONY: examples |
106 | examples: lib |
107 | $(MAKE) -C examples all |
108 | |
109 | ## manual: generate API documentation in html format |
110 | .PHONY: manual |
111 | manual: |
112 | $(MAKE) -C contrib/gen_html $@ |
113 | |
114 | ## man: generate man page |
115 | .PHONY: man |
116 | man: |
117 | $(MAKE) -C programs $@ |
118 | |
119 | ## contrib: build all supported projects in `/contrib` directory |
120 | .PHONY: contrib |
121 | contrib: lib |
122 | $(MAKE) -C contrib/pzstd all |
123 | $(MAKE) -C contrib/seekable_format/examples all |
124 | $(MAKE) -C contrib/seekable_format/tests test |
125 | $(MAKE) -C contrib/largeNbDicts all |
126 | $(MAKE) -C contrib/externalSequenceProducer all |
127 | cd build/single_file_libs/ ; ./build_decoder_test.sh |
128 | cd build/single_file_libs/ ; ./build_library_test.sh |
129 | |
130 | .PHONY: cleanTabs |
131 | cleanTabs: |
132 | cd contrib; ./cleanTabs |
133 | |
134 | .PHONY: clean |
135 | clean: |
136 | $(Q)$(MAKE) -C $(ZSTDDIR) $@ > $(VOID) |
137 | $(Q)$(MAKE) -C $(PRGDIR) $@ > $(VOID) |
138 | $(Q)$(MAKE) -C $(TESTDIR) $@ > $(VOID) |
139 | $(Q)$(MAKE) -C $(ZWRAPDIR) $@ > $(VOID) |
140 | $(Q)$(MAKE) -C examples/ $@ > $(VOID) |
141 | $(Q)$(MAKE) -C contrib/gen_html $@ > $(VOID) |
142 | $(Q)$(MAKE) -C contrib/pzstd $@ > $(VOID) |
143 | $(Q)$(MAKE) -C contrib/seekable_format/examples $@ > $(VOID) |
144 | $(Q)$(MAKE) -C contrib/seekable_format/tests $@ > $(VOID) |
145 | $(Q)$(MAKE) -C contrib/largeNbDicts $@ > $(VOID) |
146 | $(Q)$(MAKE) -C contrib/externalSequenceProducer $@ > $(VOID) |
147 | $(Q)$(RM) zstd$(EXT) zstdmt$(EXT) tmp* |
148 | $(Q)$(RM) -r lz4 |
149 | @echo Cleaning completed |
150 | |
151 | #------------------------------------------------------------------------------ |
152 | # make install is validated only for Linux, macOS, Hurd and some BSD targets |
153 | #------------------------------------------------------------------------------ |
154 | ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD DragonFly NetBSD MSYS_NT Haiku AIX)) |
155 | |
156 | HOST_OS = POSIX |
157 | |
158 | MKDIR ?= mkdir -p |
159 | |
160 | HAVE_COLORNEVER = $(shell echo a | egrep --color=never a > /dev/null 2> /dev/null && echo 1 || echo 0) |
161 | EGREP_OPTIONS ?= |
162 | ifeq ($(HAVE_COLORNEVER), 1) |
163 | EGREP_OPTIONS += --color=never |
164 | endif |
165 | EGREP = egrep $(EGREP_OPTIONS) |
166 | |
167 | # Print a two column output of targets and their description. To add a target description, put a |
168 | # comment in the Makefile with the format "## <TARGET>: <DESCRIPTION>". For example: |
169 | # |
170 | ## list: Print all targets and their descriptions (if provided) |
171 | .PHONY: list |
172 | list: |
173 | $(Q)TARGETS=$$($(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null \ |
174 | | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' \ |
175 | | $(EGREP) -v -e '^[^[:alnum:]]' | sort); \ |
176 | { \ |
177 | printf "Target Name\tDescription\n"; \ |
178 | printf "%0.s-" {1..16}; printf "\t"; printf "%0.s-" {1..40}; printf "\n"; \ |
179 | for target in $$TARGETS; do \ |
180 | line=$$($(EGREP) "^##[[:space:]]+$$target:" $(lastword $(MAKEFILE_LIST))); \ |
181 | description=$$(echo $$line | awk '{i=index($$0,":"); print substr($$0,i+1)}' | xargs); \ |
182 | printf "$$target\t$$description\n"; \ |
183 | done \ |
184 | } | column -t -s $$'\t' |
185 | |
186 | .PHONY: install armtest usan asan uasan msan asan32 |
187 | install: |
188 | $(Q)$(MAKE) -C $(ZSTDDIR) $@ |
189 | $(Q)$(MAKE) -C $(PRGDIR) $@ |
190 | |
191 | .PHONY: uninstall |
192 | uninstall: |
193 | $(Q)$(MAKE) -C $(ZSTDDIR) $@ |
194 | $(Q)$(MAKE) -C $(PRGDIR) $@ |
195 | |
196 | .PHONY: travis-install |
197 | travis-install: |
198 | $(MAKE) install PREFIX=~/install_test_dir |
199 | |
200 | .PHONY: gcc5build gcc6build gcc7build clangbuild m32build armbuild aarch64build ppcbuild ppc64build |
201 | gcc5build: clean |
202 | gcc-5 -v |
203 | CC=gcc-5 $(MAKE) all MOREFLAGS="-Werror $(MOREFLAGS)" |
204 | |
205 | gcc6build: clean |
206 | gcc-6 -v |
207 | CC=gcc-6 $(MAKE) all MOREFLAGS="-Werror $(MOREFLAGS)" |
208 | |
209 | gcc7build: clean |
210 | gcc-7 -v |
211 | CC=gcc-7 $(MAKE) all MOREFLAGS="-Werror $(MOREFLAGS)" |
212 | |
213 | clangbuild: clean |
214 | clang -v |
215 | CXX=clang++ CC=clang CFLAGS="-Werror -Wconversion -Wno-sign-conversion -Wdocumentation" $(MAKE) all |
216 | |
217 | m32build: clean |
218 | gcc -v |
219 | $(MAKE) all32 |
220 | |
221 | armbuild: clean |
222 | CC=arm-linux-gnueabi-gcc CFLAGS="-Werror" $(MAKE) allzstd |
223 | |
224 | aarch64build: clean |
225 | CC=aarch64-linux-gnu-gcc CFLAGS="-Werror -O0" $(MAKE) allzstd |
226 | |
227 | ppcbuild: clean |
228 | CC=powerpc-linux-gnu-gcc CFLAGS="-m32 -Wno-attributes -Werror" $(MAKE) -j allzstd |
229 | |
230 | ppc64build: clean |
231 | CC=powerpc-linux-gnu-gcc CFLAGS="-m64 -Werror" $(MAKE) -j allzstd |
232 | |
233 | .PHONY: armfuzz aarch64fuzz ppcfuzz ppc64fuzz |
234 | armfuzz: clean |
235 | CC=arm-linux-gnueabi-gcc QEMU_SYS=qemu-arm-static MOREFLAGS="-static $(MOREFLAGS)" FUZZER_FLAGS="--no-big-tests $(FUZZER_FLAGS)" $(MAKE) -C $(TESTDIR) fuzztest |
236 | |
237 | aarch64fuzz: clean |
238 | ld -v |
239 | CC=aarch64-linux-gnu-gcc QEMU_SYS=qemu-aarch64-static MOREFLAGS="-static $(MOREFLAGS)" FUZZER_FLAGS="--no-big-tests $(FUZZER_FLAGS)" $(MAKE) -C $(TESTDIR) fuzztest |
240 | |
241 | ppcfuzz: clean |
242 | CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc-static MOREFLAGS="-static $(MOREFLAGS)" FUZZER_FLAGS="--no-big-tests $(FUZZER_FLAGS)" $(MAKE) -C $(TESTDIR) fuzztest |
243 | |
244 | ppc64fuzz: clean |
245 | CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc64-static MOREFLAGS="-m64 -static $(MOREFLAGS)" FUZZER_FLAGS="--no-big-tests $(FUZZER_FLAGS)" $(MAKE) -C $(TESTDIR) fuzztest |
246 | |
247 | .PHONY: cxxtest gcc5test gcc6test armtest aarch64test ppctest ppc64test |
248 | cxxtest: CXXFLAGS += -Wall -Wextra -Wundef -Wshadow -Wcast-align -Werror |
249 | cxxtest: clean |
250 | $(MAKE) -C $(PRGDIR) all CC="$(CXX) -Wno-deprecated" CFLAGS="$(CXXFLAGS)" # adding -Wno-deprecated to avoid clang++ warning on dealing with C files directly |
251 | |
252 | gcc5test: clean |
253 | gcc-5 -v |
254 | $(MAKE) all CC=gcc-5 MOREFLAGS="-Werror $(MOREFLAGS)" |
255 | |
256 | gcc6test: clean |
257 | gcc-6 -v |
258 | $(MAKE) all CC=gcc-6 MOREFLAGS="-Werror $(MOREFLAGS)" |
259 | |
260 | armtest: clean |
261 | $(MAKE) -C $(TESTDIR) datagen # use native, faster |
262 | $(MAKE) -C $(TESTDIR) test CC=arm-linux-gnueabi-gcc QEMU_SYS=qemu-arm-static ZSTDRTTEST= MOREFLAGS="-Werror -static $(MOREFLAGS)" FUZZER_FLAGS="--no-big-tests $(FUZZER_FLAGS)" |
263 | |
264 | aarch64test: |
265 | $(MAKE) -C $(TESTDIR) datagen # use native, faster |
266 | $(MAKE) -C $(TESTDIR) test CC=aarch64-linux-gnu-gcc QEMU_SYS=qemu-aarch64-static ZSTDRTTEST= MOREFLAGS="-Werror -static $(MOREFLAGS)" FUZZER_FLAGS="--no-big-tests $(FUZZER_FLAGS)" |
267 | |
268 | ppctest: clean |
269 | $(MAKE) -C $(TESTDIR) datagen # use native, faster |
270 | $(MAKE) -C $(TESTDIR) test CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc-static ZSTDRTTEST= MOREFLAGS="-Werror -Wno-attributes -static $(MOREFLAGS)" FUZZER_FLAGS="--no-big-tests $(FUZZER_FLAGS)" |
271 | |
272 | ppc64test: clean |
273 | $(MAKE) -C $(TESTDIR) datagen # use native, faster |
274 | $(MAKE) -C $(TESTDIR) test CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc64-static ZSTDRTTEST= MOREFLAGS="-m64 -static $(MOREFLAGS)" FUZZER_FLAGS="--no-big-tests $(FUZZER_FLAGS)" |
275 | |
276 | .PHONY: arm-ppc-compilation |
277 | arm-ppc-compilation: |
278 | $(MAKE) -C $(PRGDIR) clean zstd CC=arm-linux-gnueabi-gcc QEMU_SYS=qemu-arm-static ZSTDRTTEST= MOREFLAGS="-Werror -static $(MOREFLAGS)" |
279 | $(MAKE) -C $(PRGDIR) clean zstd CC=aarch64-linux-gnu-gcc QEMU_SYS=qemu-aarch64-static ZSTDRTTEST= MOREFLAGS="-Werror -static $(MOREFLAGS)" |
280 | $(MAKE) -C $(PRGDIR) clean zstd CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc-static ZSTDRTTEST= MOREFLAGS="-Werror -Wno-attributes -static $(MOREFLAGS)" |
281 | $(MAKE) -C $(PRGDIR) clean zstd CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc64-static ZSTDRTTEST= MOREFLAGS="-m64 -static $(MOREFLAGS)" |
282 | |
283 | regressiontest: |
284 | $(MAKE) -C $(FUZZDIR) regressiontest |
285 | |
286 | uasanregressiontest: |
287 | $(MAKE) -C $(FUZZDIR) regressiontest CC=clang CXX=clang++ CFLAGS="-O3 -fsanitize=address,undefined" CXXFLAGS="-O3 -fsanitize=address,undefined" |
288 | |
289 | msanregressiontest: |
290 | $(MAKE) -C $(FUZZDIR) regressiontest CC=clang CXX=clang++ CFLAGS="-O3 -fsanitize=memory" CXXFLAGS="-O3 -fsanitize=memory" |
291 | |
292 | update_regressionResults : REGRESS_RESULTS_DIR := /tmp/regress_results_dir/ |
293 | update_regressionResults: |
294 | $(MAKE) -C programs zstd |
295 | $(MAKE) -C tests/regression test |
296 | $(RM) -rf $(REGRESS_RESULTS_DIR) |
297 | $(MKDIR) $(REGRESS_RESULTS_DIR) |
298 | ./tests/regression/test \ |
299 | --cache tests/regression/cache \ |
300 | --output $(REGRESS_RESULTS_DIR)/results.csv \ |
301 | --zstd programs/zstd |
302 | echo "Showing results differences" |
303 | ! diff tests/regression/results.csv $(REGRESS_RESULTS_DIR)/results.csv |
304 | echo "Updating results.csv" |
305 | $(CP) $(REGRESS_RESULTS_DIR)/results.csv tests/regression/results.csv |
306 | |
307 | |
308 | # run UBsan with -fsanitize-recover=pointer-overflow |
309 | # this only works with recent compilers such as gcc 8+ |
310 | usan: clean |
311 | $(MAKE) test CC=clang MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize-recover=pointer-overflow -fsanitize=undefined -Werror $(MOREFLAGS)" |
312 | |
313 | asan: clean |
314 | $(MAKE) test CC=clang MOREFLAGS="-g -fsanitize=address -Werror $(MOREFLAGS)" |
315 | |
316 | asan-%: clean |
317 | LDFLAGS=-fuse-ld=gold MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize=address -Werror $(MOREFLAGS)" $(MAKE) -C $(TESTDIR) $* |
318 | |
319 | msan: clean |
320 | $(MAKE) test CC=clang MOREFLAGS="-g -fsanitize=memory -fno-omit-frame-pointer -Werror $(MOREFLAGS)" HAVE_LZMA=0 # datagen.c fails this test for no obvious reason |
321 | |
322 | msan-%: clean |
323 | LDFLAGS=-fuse-ld=gold MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize=memory -fno-omit-frame-pointer -Werror $(MOREFLAGS)" FUZZER_FLAGS="--no-big-tests $(FUZZER_FLAGS)" $(MAKE) -C $(TESTDIR) HAVE_LZMA=0 $* |
324 | |
325 | asan32: clean |
326 | $(MAKE) -C $(TESTDIR) test32 CC=clang MOREFLAGS="-g -fsanitize=address $(MOREFLAGS)" |
327 | |
328 | uasan: clean |
329 | $(MAKE) test CC=clang MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize-recover=pointer-overflow -fsanitize=address,undefined -Werror $(MOREFLAGS)" |
330 | |
331 | uasan-%: clean |
332 | LDFLAGS=-fuse-ld=gold MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize-recover=pointer-overflow -fsanitize=address,undefined -Werror $(MOREFLAGS)" $(MAKE) -C $(TESTDIR) $* |
333 | |
334 | tsan-%: clean |
335 | LDFLAGS=-fuse-ld=gold MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize=thread -Werror $(MOREFLAGS)" $(MAKE) -C $(TESTDIR) $* FUZZER_FLAGS="--no-big-tests $(FUZZER_FLAGS)" |
336 | |
337 | .PHONY: apt-install |
338 | apt-install: |
339 | # TODO: uncomment once issue 3011 is resolved and remove hack from Github Actions .yml |
340 | # sudo apt-get update |
341 | sudo apt-get -yq --no-install-suggests --no-install-recommends --force-yes install $(APT_PACKAGES) |
342 | |
343 | .PHONY: apt-add-repo |
344 | apt-add-repo: |
345 | sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test |
346 | sudo apt-get update -y -qq |
347 | |
348 | .PHONY: ppcinstall arminstall valgrindinstall libc6install gcc6install gcc7install gcc8install gpp6install clang38install lz4install |
349 | ppcinstall: |
350 | APT_PACKAGES="qemu-system-ppc qemu-user-static gcc-powerpc-linux-gnu" $(MAKE) apt-install |
351 | |
352 | arminstall: |
353 | APT_PACKAGES="qemu-system-arm qemu-user-static gcc-arm-linux-gnueabi libc6-dev-armel-cross gcc-aarch64-linux-gnu libc6-dev-arm64-cross" $(MAKE) apt-install |
354 | |
355 | valgrindinstall: |
356 | APT_PACKAGES="valgrind" $(MAKE) apt-install |
357 | |
358 | libc6install: |
359 | APT_PACKAGES="libc6-dev-i386 gcc-multilib" $(MAKE) apt-install |
360 | |
361 | gcc6install: apt-add-repo |
362 | APT_PACKAGES="libc6-dev-i386 gcc-multilib gcc-6 gcc-6-multilib" $(MAKE) apt-install |
363 | |
364 | gcc7install: apt-add-repo |
365 | APT_PACKAGES="libc6-dev-i386 gcc-multilib gcc-7 gcc-7-multilib" $(MAKE) apt-install |
366 | |
367 | gcc8install: apt-add-repo |
368 | APT_PACKAGES="libc6-dev-i386 gcc-multilib gcc-8 gcc-8-multilib" $(MAKE) apt-install |
369 | |
370 | gpp6install: apt-add-repo |
371 | APT_PACKAGES="libc6-dev-i386 g++-multilib gcc-6 g++-6 g++-6-multilib" $(MAKE) apt-install |
372 | |
373 | clang38install: |
374 | APT_PACKAGES="clang-3.8" $(MAKE) apt-install |
375 | |
376 | # Ubuntu 14.04 ships a too-old lz4 |
377 | lz4install: |
378 | [ -e lz4 ] || git clone https://github.com/lz4/lz4 && sudo $(MAKE) -C lz4 install |
379 | |
380 | endif |
381 | |
382 | |
383 | CMAKE_PARAMS = -DZSTD_BUILD_CONTRIB:BOOL=ON -DZSTD_BUILD_STATIC:BOOL=ON -DZSTD_BUILD_TESTS:BOOL=ON -DZSTD_ZLIB_SUPPORT:BOOL=ON -DZSTD_LZMA_SUPPORT:BOOL=ON -DCMAKE_BUILD_TYPE=Release |
384 | |
385 | ifneq (,$(filter MSYS%,$(shell uname))) |
386 | HOST_OS = MSYS |
387 | CMAKE_PARAMS = -G"MSYS Makefiles" -DCMAKE_BUILD_TYPE=Debug -DZSTD_MULTITHREAD_SUPPORT:BOOL=OFF -DZSTD_BUILD_STATIC:BOOL=ON -DZSTD_BUILD_TESTS:BOOL=ON |
388 | endif |
389 | |
390 | #------------------------------------------------------------------------ |
391 | # target specific tests |
392 | #------------------------------------------------------------------------ |
393 | ifneq (,$(filter $(HOST_OS),MSYS POSIX)) |
394 | .PHONY: cmakebuild c89build gnu90build c99build gnu99build c11build bmix64build bmix32build bmi32build staticAnalyze |
395 | cmakebuild: |
396 | cmake --version |
397 | $(RM) -r $(BUILDIR)/cmake/build |
398 | $(MKDIR) $(BUILDIR)/cmake/build |
399 | cd $(BUILDIR)/cmake/build; cmake -DCMAKE_INSTALL_PREFIX:PATH=~/install_test_dir $(CMAKE_PARAMS) .. |
400 | $(MAKE) -C $(BUILDIR)/cmake/build -j4; |
401 | $(MAKE) -C $(BUILDIR)/cmake/build install; |
402 | $(MAKE) -C $(BUILDIR)/cmake/build uninstall; |
403 | cd $(BUILDIR)/cmake/build; ctest -V -L Medium |
404 | |
405 | c89build: clean |
406 | $(CC) -v |
407 | CFLAGS="-std=c89 -Werror -Wno-attributes -Wpedantic -Wno-long-long -Wno-variadic-macros -O0" $(MAKE) lib zstd |
408 | |
409 | gnu90build: clean |
410 | $(CC) -v |
411 | CFLAGS="-std=gnu90 -Werror -O0" $(MAKE) allmost |
412 | |
413 | c99build: clean |
414 | $(CC) -v |
415 | CFLAGS="-std=c99 -Werror -O0" $(MAKE) allmost |
416 | |
417 | gnu99build: clean |
418 | $(CC) -v |
419 | CFLAGS="-std=gnu99 -Werror -O0" $(MAKE) allmost |
420 | |
421 | c11build: clean |
422 | $(CC) -v |
423 | CFLAGS="-std=c11 -Werror -O0" $(MAKE) allmost |
424 | |
425 | bmix64build: clean |
426 | $(CC) -v |
427 | CFLAGS="-O3 -mbmi -Werror" $(MAKE) -C $(TESTDIR) test |
428 | |
429 | bmix32build: clean |
430 | $(CC) -v |
431 | CFLAGS="-O3 -mbmi -mx32 -Werror" $(MAKE) -C $(TESTDIR) test |
432 | |
433 | bmi32build: clean |
434 | $(CC) -v |
435 | CFLAGS="-O3 -mbmi -m32 -Werror" $(MAKE) -C $(TESTDIR) test |
436 | |
437 | # static analyzer test uses clang's scan-build |
438 | # does not analyze zlibWrapper, due to detected issues in zlib source code |
439 | staticAnalyze: SCANBUILD ?= scan-build |
440 | staticAnalyze: |
441 | $(CC) -v |
442 | CC=$(CC) CPPFLAGS=-g $(SCANBUILD) --status-bugs -v $(MAKE) zstd |
443 | endif |