xref: /aosp_15_r20/external/xz-embedded/userspace/Makefile (revision d2c16535d139cb185e89120452531bba6b36d3c6)
1# SPDX-License-Identifier: 0BSD
2#
3# Author: Lasse Collin <[email protected]>
4
5# In 2022, Linux finally moved forward from -std=gnu89 and switched
6# to -std=gnu11. In practice quite a few C99/C11 features were used
7# for decades that were extensions in GNU-C89.
8#
9# Use the option -Wdeclaration-after-statement for historical reasons
10# for now.
11CC = gcc -std=gnu11
12BCJ_CPPFLAGS = -DXZ_DEC_X86 -DXZ_DEC_ARM -DXZ_DEC_ARMTHUMB -DXZ_DEC_ARM64 \
13		-DXZ_DEC_RISCV -DXZ_DEC_POWERPC -DXZ_DEC_IA64 -DXZ_DEC_SPARC
14CPPFLAGS = -DXZ_USE_CRC64 -DXZ_DEC_ANY_CHECK -DXZ_DEC_CONCATENATED
15CFLAGS = -ggdb3 -O2 -pedantic -Wall -Wextra -Wdeclaration-after-statement
16RM = rm -f
17VPATH = ../linux/include/linux ../linux/lib/xz
18COMMON_SRCS = xz_crc32.c xz_crc64.c xz_dec_stream.c xz_dec_lzma2.c xz_dec_bcj.c
19COMMON_OBJS = $(COMMON_SRCS:.c=.o)
20XZMINIDEC_OBJS = xzminidec.o
21BYTETEST_OBJS = bytetest.o
22BUFTEST_OBJS = buftest.o
23BOOTTEST_OBJS = boottest.o
24XZ_HEADERS = xz.h xz_private.h xz_stream.h xz_lzma2.h xz_config.h
25PROGRAMS = xzminidec bytetest buftest boottest
26
27ALL_CPPFLAGS = -I../linux/include/linux -I. $(BCJ_CPPFLAGS) $(CPPFLAGS)
28
29all: $(PROGRAMS)
30
31%.o: %.c $(XZ_HEADERS)
32	$(CC) $(ALL_CPPFLAGS) $(CFLAGS) -c -o $@ $<
33
34xzminidec: $(COMMON_OBJS) $(XZMINIDEC_OBJS)
35	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(COMMON_OBJS) $(XZMINIDEC_OBJS)
36
37bytetest: $(COMMON_OBJS) $(BYTETEST_OBJS)
38	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(COMMON_OBJS) $(BYTETEST_OBJS)
39
40buftest: $(COMMON_OBJS) $(BUFTEST_OBJS)
41	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(COMMON_OBJS) $(BUFTEST_OBJS)
42
43boottest: $(BOOTTEST_OBJS) $(COMMON_SRCS)
44	$(CC) $(ALL_CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $(BOOTTEST_OBJS)
45
46.PHONY: clean
47clean:
48	-$(RM) $(COMMON_OBJS) $(XZMINIDEC_OBJS) $(BYTETEST_OBJS) \
49		$(BUFTEST_OBJS) $(BOOTTEST_OBJS) $(PROGRAMS)
50