Evgenii Kliuchnikov | 52ff817 | 2016-06-24 15:32:51 +0200 | [diff] [blame] | 1 | OS := $(shell uname) |
Eugene Kliuchnikov | 03739d2 | 2017-05-29 17:55:14 +0200 | [diff] [blame] | 2 | LIBSOURCES = $(wildcard c/common/*.c) $(wildcard c/dec/*.c) \ |
| 3 | $(wildcard c/enc/*.c) |
| 4 | SOURCES = $(LIBSOURCES) c/tools/brotli.c |
Evgenii Kliuchnikov | 52ff817 | 2016-06-24 15:32:51 +0200 | [diff] [blame] | 5 | BINDIR = bin |
| 6 | OBJDIR = $(BINDIR)/obj |
chad-iris | 8529bfa | 2016-07-06 10:09:04 -0700 | [diff] [blame] | 7 | LIBOBJECTS = $(addprefix $(OBJDIR)/, $(LIBSOURCES:.c=.o)) |
Evgenii Kliuchnikov | 52ff817 | 2016-06-24 15:32:51 +0200 | [diff] [blame] | 8 | OBJECTS = $(addprefix $(OBJDIR)/, $(SOURCES:.c=.o)) |
chad-iris | 8529bfa | 2016-07-06 10:09:04 -0700 | [diff] [blame] | 9 | LIB_A = libbrotli.a |
Eugene Kliuchnikov | 03739d2 | 2017-05-29 17:55:14 +0200 | [diff] [blame] | 10 | EXECUTABLE = brotli |
Eugene Kliuchnikov | 6ece1d8 | 2017-04-23 14:07:08 +0200 | [diff] [blame] | 11 | DIRS = $(OBJDIR)/c/common $(OBJDIR)/c/dec $(OBJDIR)/c/enc \ |
| 12 | $(OBJDIR)/c/tools $(BINDIR)/tmp |
Evgenii Kliuchnikov | 52ff817 | 2016-06-24 15:32:51 +0200 | [diff] [blame] | 13 | CFLAGS += -O2 |
| 14 | ifeq ($(os), Darwin) |
| 15 | CPPFLAGS += -DOS_MACOSX |
| 16 | endif |
Eugene Kliuchnikov | 378485b | 2016-06-16 10:52:57 +0200 | [diff] [blame] | 17 | |
Evgenii Kliuchnikov | 52ff817 | 2016-06-24 15:32:51 +0200 | [diff] [blame] | 18 | all: test |
| 19 | @: |
Eugene Kliuchnikov | 378485b | 2016-06-16 10:52:57 +0200 | [diff] [blame] | 20 | |
Evgenii Kliuchnikov | 52ff817 | 2016-06-24 15:32:51 +0200 | [diff] [blame] | 21 | .PHONY: all clean test |
Eugene Kliuchnikov | 378485b | 2016-06-16 10:52:57 +0200 | [diff] [blame] | 22 | |
Evgenii Kliuchnikov | 52ff817 | 2016-06-24 15:32:51 +0200 | [diff] [blame] | 23 | $(DIRS): |
| 24 | mkdir -p $@ |
Eugene Kliuchnikov | 378485b | 2016-06-16 10:52:57 +0200 | [diff] [blame] | 25 | |
Evgenii Kliuchnikov | 52ff817 | 2016-06-24 15:32:51 +0200 | [diff] [blame] | 26 | $(EXECUTABLE): $(OBJECTS) |
Eugene Kliuchnikov | e9b278a | 2016-10-31 14:33:59 +0100 | [diff] [blame] | 27 | $(CC) $(LDFLAGS) $(OBJECTS) -lm -o $(BINDIR)/$(EXECUTABLE) |
Evgenii Kliuchnikov | 52ff817 | 2016-06-24 15:32:51 +0200 | [diff] [blame] | 28 | |
chad-iris | 8529bfa | 2016-07-06 10:09:04 -0700 | [diff] [blame] | 29 | lib: $(LIBOBJECTS) |
| 30 | rm -f $(LIB_A) |
| 31 | ar -crs $(LIB_A) $(LIBOBJECTS) |
| 32 | |
Evgenii Kliuchnikov | 52ff817 | 2016-06-24 15:32:51 +0200 | [diff] [blame] | 33 | test: $(EXECUTABLE) |
| 34 | tests/compatibility_test.sh |
| 35 | tests/roundtrip_test.sh |
| 36 | |
| 37 | clean: |
chad-iris | 8529bfa | 2016-07-06 10:09:04 -0700 | [diff] [blame] | 38 | rm -rf $(BINDIR) $(LIB_A) |
Eugene Kliuchnikov | dd8fa3e | 2016-09-22 11:32:23 +0200 | [diff] [blame] | 39 | |
| 40 | .SECONDEXPANSION: |
| 41 | $(OBJECTS): $$(patsubst %.o,%.c,$$(patsubst $$(OBJDIR)/%,%,$$@)) | $(DIRS) |
Eugene Kliuchnikov | 6ece1d8 | 2017-04-23 14:07:08 +0200 | [diff] [blame] | 42 | $(CC) $(CFLAGS) $(CPPFLAGS) -Ic/include \ |
Eugene Kliuchnikov | dd8fa3e | 2016-09-22 11:32:23 +0200 | [diff] [blame] | 43 | -c $(patsubst %.o,%.c,$(patsubst $(OBJDIR)/%,%,$@)) -o $@ |