1 OS := $(shell uname) 2 LIBSOURCES = $(wildcard c/common/*.c) $(wildcard c/dec/*.c) \ 3 $(wildcard c/enc/*.c) 4 SOURCES = $(LIBSOURCES) c/tools/brotli.c 5 BINDIR = bin 6 OBJDIR = $(BINDIR)/obj 7 LIBOBJECTS = $(addprefix $(OBJDIR)/, $(LIBSOURCES:.c=.o)) 8 OBJECTS = $(addprefix $(OBJDIR)/, $(SOURCES:.c=.o)) 9 LIB_A = libbrotli.a 10 EXECUTABLE = brotli 11 DIRS = $(OBJDIR)/c/common $(OBJDIR)/c/dec $(OBJDIR)/c/enc \ 12 $(OBJDIR)/c/tools $(BINDIR)/tmp 13 CFLAGS += -O2 14 ifeq ($(os), Darwin) 15 CPPFLAGS += -DOS_MACOSX 16 endif 17 18 all: test 19 @: 20 21 .PHONY: all clean test 22 23 $(DIRS): 24 mkdir -p $@ 25 26 $(EXECUTABLE): $(OBJECTS) 27 $(CC) $(LDFLAGS) $(OBJECTS) -lm -o $(BINDIR)/$(EXECUTABLE) 28 29 lib: $(LIBOBJECTS) 30 rm -f $(LIB_A) 31 ar -crs $(LIB_A) $(LIBOBJECTS) 32 33 test: $(EXECUTABLE) 34 tests/compatibility_test.sh 35 tests/roundtrip_test.sh 36 37 clean: 38 rm -rf $(BINDIR) $(LIB_A) 39 40 .SECONDEXPANSION: 41 $(OBJECTS): $$(patsubst %.o,%.c,$$(patsubst $$(OBJDIR)/%,%,$$@)) | $(DIRS) 42 $(CC) $(CFLAGS) $(CPPFLAGS) -Ic/include \ 43 -c $(patsubst %.o,%.c,$(patsubst $(OBJDIR)/%,%,$@)) -o $@ 44