| OS := $(shell uname) | |
| LIBSOURCES = $(wildcard c/common/*.c) $(wildcard c/dec/*.c) \ | |
| $(wildcard c/enc/*.c) | |
| SOURCES = $(LIBSOURCES) c/tools/brotli.c | |
| BINDIR = bin | |
| OBJDIR = $(BINDIR)/obj | |
| LIBOBJECTS = $(addprefix $(OBJDIR)/, $(LIBSOURCES:.c=.o)) | |
| OBJECTS = $(addprefix $(OBJDIR)/, $(SOURCES:.c=.o)) | |
| LIB_A = libbrotli.a | |
| EXECUTABLE = brotli | |
| DIRS = $(OBJDIR)/c/common $(OBJDIR)/c/dec $(OBJDIR)/c/enc \ | |
| $(OBJDIR)/c/tools $(BINDIR)/tmp | |
| CFLAGS += -O2 | |
| ifeq ($(os), Darwin) | |
| CPPFLAGS += -DOS_MACOSX | |
| endif | |
| ifneq ($(strip $(CROSS_COMPILE)), ) | |
| CC=$(CROSS_COMPILE)-gcc | |
| ARCH=$(firstword $(subst -, ,$(CROSS_COMPILE))) | |
| BROTLI_WRAPPER="qemu-$(ARCH) -L /usr/$(CROSS_COMPILE)" | |
| endif | |
| # The arm-linux-gnueabi compiler defaults to Armv5. Since we only support Armv7 | |
| # and beyond, we need to select Armv7 explicitly with march. | |
| ifeq ($(ARCH), arm) | |
| CFLAGS += -march=armv7-a -mfloat-abi=hard -mfpu=neon | |
| endif | |
| all: test | |
| @: | |
| .PHONY: all clean test | |
| $(DIRS): | |
| mkdir -p $@ | |
| $(EXECUTABLE): $(OBJECTS) | |
| $(CC) $(LDFLAGS) $(OBJECTS) -lm -o $(BINDIR)/$(EXECUTABLE) | |
| lib: $(LIBOBJECTS) | |
| rm -f $(LIB_A) | |
| ar -crs $(LIB_A) $(LIBOBJECTS) | |
| test: $(EXECUTABLE) | |
| tests/compatibility_test.sh $(BROTLI_WRAPPER) | |
| tests/roundtrip_test.sh $(BROTLI_WRAPPER) | |
| clean: | |
| rm -rf $(BINDIR) $(LIB_A) | |
| .SECONDEXPANSION: | |
| $(OBJECTS): $$(patsubst %.o,%.c,$$(patsubst $$(OBJDIR)/%,%,$$@)) | $(DIRS) | |
| $(CC) $(CFLAGS) $(CPPFLAGS) -Ic/include \ | |
| -c $(patsubst %.o,%.c,$(patsubst $(OBJDIR)/%,%,$@)) -o $@ |