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