xref: /aosp_15_r20/external/zstd/contrib/linux-kernel/Makefile (revision 01826a4963a0d8a59bc3812d29bdf0fb76416722)
1*01826a49SYabin Cui# ################################################################
2*01826a49SYabin Cui# Copyright (c) Meta Platforms, Inc. and affiliates.
3*01826a49SYabin Cui# All rights reserved.
4*01826a49SYabin Cui#
5*01826a49SYabin Cui# This source code is licensed under both the BSD-style license (found in the
6*01826a49SYabin Cui# LICENSE file in the root directory of this source tree) and the GPLv2 (found
7*01826a49SYabin Cui# in the COPYING file in the root directory of this source tree).
8*01826a49SYabin Cui# You may select, at your option, one of the above-listed licenses.
9*01826a49SYabin Cui# ################################################################
10*01826a49SYabin Cui
11*01826a49SYabin Cui.PHONY: libzstd
12*01826a49SYabin Cuilibzstd:
13*01826a49SYabin Cui	rm -rf linux
14*01826a49SYabin Cui	mkdir -p linux
15*01826a49SYabin Cui	mkdir -p linux/include/linux
16*01826a49SYabin Cui	mkdir -p linux/lib/zstd
17*01826a49SYabin Cui	../freestanding_lib/freestanding.py \
18*01826a49SYabin Cui		--source-lib ../../lib \
19*01826a49SYabin Cui		--output-lib linux/lib/zstd \
20*01826a49SYabin Cui		--xxhash '<linux/xxhash.h>' \
21*01826a49SYabin Cui		--xxh64-state 'struct xxh64_state' \
22*01826a49SYabin Cui		--xxh64-prefix 'xxh64' \
23*01826a49SYabin Cui		--rewrite-include '<limits\.h>=<linux/limits.h>' \
24*01826a49SYabin Cui		--rewrite-include '<stddef\.h>=<linux/types.h>' \
25*01826a49SYabin Cui		--rewrite-include '"\.\./zstd.h"=<linux/zstd.h>' \
26*01826a49SYabin Cui		--rewrite-include '"(\.\./)?zstd_errors.h"=<linux/zstd_errors.h>' \
27*01826a49SYabin Cui		--sed 's,/\*\*\*,/* *,g' \
28*01826a49SYabin Cui		--sed 's,/\*\*,/*,g' \
29*01826a49SYabin Cui		--spdx \
30*01826a49SYabin Cui		-DZSTD_NO_INTRINSICS \
31*01826a49SYabin Cui		-DZSTD_NO_UNUSED_FUNCTIONS \
32*01826a49SYabin Cui		-DZSTD_LEGACY_SUPPORT=0 \
33*01826a49SYabin Cui		-DZSTD_STATIC_LINKING_ONLY \
34*01826a49SYabin Cui		-DFSE_STATIC_LINKING_ONLY \
35*01826a49SYabin Cui		-DXXH_STATIC_LINKING_ONLY \
36*01826a49SYabin Cui		-D__GNUC__ \
37*01826a49SYabin Cui		-D__linux__=1 \
38*01826a49SYabin Cui		-DSTATIC_BMI2=0 \
39*01826a49SYabin Cui		-DZSTD_ADDRESS_SANITIZER=0 \
40*01826a49SYabin Cui		-DZSTD_MEMORY_SANITIZER=0 \
41*01826a49SYabin Cui		-DZSTD_DATAFLOW_SANITIZER=0 \
42*01826a49SYabin Cui		-DZSTD_COMPRESS_HEAPMODE=1 \
43*01826a49SYabin Cui		-UNO_PREFETCH \
44*01826a49SYabin Cui		-U__cplusplus \
45*01826a49SYabin Cui		-UZSTD_DLL_EXPORT \
46*01826a49SYabin Cui		-UZSTD_DLL_IMPORT \
47*01826a49SYabin Cui		-U__ICCARM__ \
48*01826a49SYabin Cui		-UZSTD_MULTITHREAD \
49*01826a49SYabin Cui		-U_MSC_VER \
50*01826a49SYabin Cui		-U_WIN32 \
51*01826a49SYabin Cui		-RZSTDLIB_VISIBLE= \
52*01826a49SYabin Cui		-RZSTDERRORLIB_VISIBLE= \
53*01826a49SYabin Cui		-RZSTD_FALLTHROUGH=fallthrough \
54*01826a49SYabin Cui		-DZSTD_HAVE_WEAK_SYMBOLS=0 \
55*01826a49SYabin Cui		-DZSTD_TRACE=0 \
56*01826a49SYabin Cui		-DZSTD_NO_TRACE \
57*01826a49SYabin Cui		-DZSTD_DISABLE_ASM \
58*01826a49SYabin Cui		-DZSTD_LINUX_KERNEL
59*01826a49SYabin Cui	rm linux/lib/zstd/decompress/huf_decompress_amd64.S
60*01826a49SYabin Cui	mv linux/lib/zstd/zstd.h linux/include/linux/zstd_lib.h
61*01826a49SYabin Cui	mv linux/lib/zstd/zstd_errors.h linux/include/linux/
62*01826a49SYabin Cui	cp linux_zstd.h linux/include/linux/zstd.h
63*01826a49SYabin Cui	cp zstd_common_module.c linux/lib/zstd
64*01826a49SYabin Cui	cp zstd_compress_module.c linux/lib/zstd
65*01826a49SYabin Cui	cp zstd_decompress_module.c linux/lib/zstd
66*01826a49SYabin Cui	cp decompress_sources.h linux/lib/zstd
67*01826a49SYabin Cui	cp linux.mk linux/lib/zstd/Makefile
68*01826a49SYabin Cui
69*01826a49SYabin CuiLINUX ?= $(HOME)/repos/linux
70*01826a49SYabin Cui
71*01826a49SYabin Cui.PHONY: import
72*01826a49SYabin Cuiimport: libzstd
73*01826a49SYabin Cui	rm -f $(LINUX)/include/linux/zstd.h
74*01826a49SYabin Cui	rm -f $(LINUX)/include/linux/zstd_errors.h
75*01826a49SYabin Cui	rm -rf $(LINUX)/lib/zstd
76*01826a49SYabin Cui	cp linux/include/linux/zstd.h $(LINUX)/include/linux
77*01826a49SYabin Cui	cp linux/include/linux/zstd_lib.h $(LINUX)/include/linux
78*01826a49SYabin Cui	cp linux/include/linux/zstd_errors.h $(LINUX)/include/linux
79*01826a49SYabin Cui	cp -r linux/lib/zstd $(LINUX)/lib
80*01826a49SYabin Cui
81*01826a49SYabin Cuiimport-upstream:
82*01826a49SYabin Cui	rm -rf $(LINUX)/lib/zstd
83*01826a49SYabin Cui	mkdir $(LINUX)/lib/zstd
84*01826a49SYabin Cui	cp ../../lib/zstd.h $(LINUX)/include/linux/zstd_lib.h
85*01826a49SYabin Cui	cp -r ../../lib/common $(LINUX)/lib/zstd
86*01826a49SYabin Cui	cp -r ../../lib/compress $(LINUX)/lib/zstd
87*01826a49SYabin Cui	cp -r ../../lib/decompress $(LINUX)/lib/zstd
88*01826a49SYabin Cui	mv $(LINUX)/lib/zstd/zstd_errors.h $(LINUX)/include/linux
89*01826a49SYabin Cui	rm $(LINUX)/lib/zstd/common/threading.*
90*01826a49SYabin Cui	rm $(LINUX)/lib/zstd/common/pool.*
91*01826a49SYabin Cui	rm $(LINUX)/lib/zstd/common/xxhash.*
92*01826a49SYabin Cui	rm $(LINUX)/lib/zstd/compress/zstdmt_*
93*01826a49SYabin Cui
94*01826a49SYabin CuiDEBUGFLAGS= -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
95*01826a49SYabin Cui            -Wstrict-aliasing=1 -Wswitch-enum -Wdeclaration-after-statement \
96*01826a49SYabin Cui            -Wstrict-prototypes -Wundef -Wpointer-arith \
97*01826a49SYabin Cui            -Wvla -Wformat=2 -Winit-self -Wfloat-equal -Wwrite-strings \
98*01826a49SYabin Cui            -Wredundant-decls -Wmissing-prototypes -Wc++-compat \
99*01826a49SYabin Cui	    -Wimplicit-fallthrough
100*01826a49SYabin Cui
101*01826a49SYabin Cui.PHONY: test
102*01826a49SYabin Cuitest: libzstd
103*01826a49SYabin Cui	$(MAKE) -C test run-test CFLAGS="-O3 $(CFLAGS) $(DEBUGFLAGS) -Werror" -j
104*01826a49SYabin Cui
105*01826a49SYabin Cui.PHONY: clean
106*01826a49SYabin Cuiclean:
107*01826a49SYabin Cui	$(RM) -rf linux
108*01826a49SYabin Cui	$(MAKE) -C test clean
109