Home | History | Annotate | Download | only in brotli
      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