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