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 | .PHONY: libzstd |
12 | libzstd: |
13 | rm -rf linux |
14 | mkdir -p linux |
15 | mkdir -p linux/include/linux |
16 | mkdir -p linux/lib/zstd |
17 | ../freestanding_lib/freestanding.py \ |
18 | --source-lib ../../lib \ |
19 | --output-lib linux/lib/zstd \ |
20 | --xxhash '<linux/xxhash.h>' \ |
21 | --xxh64-state 'struct xxh64_state' \ |
22 | --xxh64-prefix 'xxh64' \ |
23 | --rewrite-include '<limits\.h>=<linux/limits.h>' \ |
24 | --rewrite-include '<stddef\.h>=<linux/types.h>' \ |
25 | --rewrite-include '"\.\./zstd.h"=<linux/zstd.h>' \ |
26 | --rewrite-include '"(\.\./)?zstd_errors.h"=<linux/zstd_errors.h>' \ |
27 | --sed 's,/\*\*\*,/* *,g' \ |
28 | --sed 's,/\*\*,/*,g' \ |
29 | --spdx \ |
30 | -DZSTD_NO_INTRINSICS \ |
31 | -DZSTD_NO_UNUSED_FUNCTIONS \ |
32 | -DZSTD_LEGACY_SUPPORT=0 \ |
33 | -DZSTD_STATIC_LINKING_ONLY \ |
34 | -DFSE_STATIC_LINKING_ONLY \ |
35 | -DXXH_STATIC_LINKING_ONLY \ |
36 | -D__GNUC__ \ |
37 | -D__linux__=1 \ |
38 | -DSTATIC_BMI2=0 \ |
39 | -DZSTD_ADDRESS_SANITIZER=0 \ |
40 | -DZSTD_MEMORY_SANITIZER=0 \ |
41 | -DZSTD_DATAFLOW_SANITIZER=0 \ |
42 | -DZSTD_COMPRESS_HEAPMODE=1 \ |
43 | -UNO_PREFETCH \ |
44 | -U__cplusplus \ |
45 | -UZSTD_DLL_EXPORT \ |
46 | -UZSTD_DLL_IMPORT \ |
47 | -U__ICCARM__ \ |
48 | -UZSTD_MULTITHREAD \ |
49 | -U_MSC_VER \ |
50 | -U_WIN32 \ |
51 | -RZSTDLIB_VISIBLE= \ |
52 | -RZSTDERRORLIB_VISIBLE= \ |
53 | -RZSTD_FALLTHROUGH=fallthrough \ |
54 | -DZSTD_HAVE_WEAK_SYMBOLS=0 \ |
55 | -DZSTD_TRACE=0 \ |
56 | -DZSTD_NO_TRACE \ |
57 | -DZSTD_DISABLE_ASM \ |
58 | -DZSTD_LINUX_KERNEL |
59 | rm linux/lib/zstd/decompress/huf_decompress_amd64.S |
60 | mv linux/lib/zstd/zstd.h linux/include/linux/zstd_lib.h |
61 | mv linux/lib/zstd/zstd_errors.h linux/include/linux/ |
62 | cp linux_zstd.h linux/include/linux/zstd.h |
63 | cp zstd_common_module.c linux/lib/zstd |
64 | cp zstd_compress_module.c linux/lib/zstd |
65 | cp zstd_decompress_module.c linux/lib/zstd |
66 | cp decompress_sources.h linux/lib/zstd |
67 | cp linux.mk linux/lib/zstd/Makefile |
68 | |
69 | LINUX ?= $(HOME)/repos/linux |
70 | |
71 | .PHONY: import |
72 | import: libzstd |
73 | rm -f $(LINUX)/include/linux/zstd.h |
74 | rm -f $(LINUX)/include/linux/zstd_errors.h |
75 | rm -rf $(LINUX)/lib/zstd |
76 | cp linux/include/linux/zstd.h $(LINUX)/include/linux |
77 | cp linux/include/linux/zstd_lib.h $(LINUX)/include/linux |
78 | cp linux/include/linux/zstd_errors.h $(LINUX)/include/linux |
79 | cp -r linux/lib/zstd $(LINUX)/lib |
80 | |
81 | import-upstream: |
82 | rm -rf $(LINUX)/lib/zstd |
83 | mkdir $(LINUX)/lib/zstd |
84 | cp ../../lib/zstd.h $(LINUX)/include/linux/zstd_lib.h |
85 | cp -r ../../lib/common $(LINUX)/lib/zstd |
86 | cp -r ../../lib/compress $(LINUX)/lib/zstd |
87 | cp -r ../../lib/decompress $(LINUX)/lib/zstd |
88 | mv $(LINUX)/lib/zstd/zstd_errors.h $(LINUX)/include/linux |
89 | rm $(LINUX)/lib/zstd/common/threading.* |
90 | rm $(LINUX)/lib/zstd/common/pool.* |
91 | rm $(LINUX)/lib/zstd/common/xxhash.* |
92 | rm $(LINUX)/lib/zstd/compress/zstdmt_* |
93 | |
94 | DEBUGFLAGS= -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \ |
95 | -Wstrict-aliasing=1 -Wswitch-enum -Wdeclaration-after-statement \ |
96 | -Wstrict-prototypes -Wundef -Wpointer-arith \ |
97 | -Wvla -Wformat=2 -Winit-self -Wfloat-equal -Wwrite-strings \ |
98 | -Wredundant-decls -Wmissing-prototypes -Wc++-compat \ |
99 | -Wimplicit-fallthrough |
100 | |
101 | .PHONY: test |
102 | test: libzstd |
103 | $(MAKE) -C test run-test CFLAGS="-O3 $(CFLAGS) $(DEBUGFLAGS) -Werror" -j |
104 | |
105 | .PHONY: clean |
106 | clean: |
107 | $(RM) -rf linux |
108 | $(MAKE) -C test clean |