all:: DOXYGEN = doxygen prefix=/usr/local CFLAGS = -g -O2 -Wall OS = unix BASIC_CFLAGS := -Isrc BASIC_CFLAGS += -fvisibility=hidden ALL_CFLAGS = $(CFLAGS) $(BASIC_CFLAGS) SRC_C = $(wildcard src/*.c) OBJS = $(patsubst %.c,%.o,$(SRC_C)) HDRS = $(wildcard src/*.h) PUBLIC_HEADERS = $(wildcard src/git/*.h) HDRS += $(PUBLIC_HEADERS) GIT_LIB = libgit2.a TEST_OBJ = $(patsubst %.c,%.o,\ $(wildcard tests/t[0-9][0-9][0-9][0-9]-*.c)) TEST_EXE = $(patsubst %.o,%.exe,$(TEST_OBJ)) TEST_RUN = $(patsubst %.exe,%.run,$(TEST_EXE)) all:: $(GIT_LIB) clean: rm -f $(GIT_LIB) rm -f src/*.o rm -f tests/*.o tests/*.exe tests/*.toc rm -rf trash-*.exe rm -rf apidocs apidocs: $(DOXYGEN) api.doxygen cp CONVENTIONS apidocs/ test: $(TEST_RUN) sparse: cgcc -no-compile $(ALL_CFLAGS) $(SPARSE_FLAGS) $(SRC_C) install-headers: $(PUBLIC_HEADERS) @mkdir -p /tmp/gitinc/git @for i in $^; do cat .HEADER $$i > /tmp/gitinc/$${i##src/}; done install: $(GIT_LIB) $(PUBLIC_HEADERS) libgit2.pc @mkdir -p $(prefix)/include/git @for i in $(PUBLIC_HEADERS); do \ cat .HEADER $$i > $(prefix)/include/$${i##src/}; \ done @mkdir -p $(prefix)/lib @cp -f $(GIT_LIB) $(prefix)/lib/libgit2.a @mkdir -p $(prefix)/lib/pkgconfig @cp -f libgit2.pc $(prefix)/lib/pkgconfig/libgit2.pc uninstall: @rm -f $(prefix)/lib/libgit2.a @rm -f $(prefix)/lib/pkgconfig/libgit2.pc @for i in $(PUBLIC_HEADERS); do \ rm -f $(prefix)/include/$${i##src/}; \ done @rmdir $(prefix)/include/git .c.o: $(CC) $(ALL_CFLAGS) -c $< -o $@ $(OBJS): $(HDRS) $(GIT_LIB): $(OBJS) rm -f $(LIB) $(AR) cr $(GIT_LIB) $(OBJS) T_HDR = tests/test_lib.h T_LIB = tests/test_lib.o T_MAIN_C = tests/test_main.c $(T_LIB): $(T_HDR) $(HDRS) $(TEST_OBJ): $(T_HDR) $(HDRS) $(patsubst %.exe,%.toc,$(TEST_EXE)): tests/%.toc: tests/%.c grep BEGIN_TEST $< >$@+ mv $@+ $@ $(TEST_OBJ): tests/%.o: tests/%.c $(CC) $(ALL_CFLAGS) -c $< -o $@ $(patsubst %.exe,%_main.o,$(TEST_EXE)): tests/%_main.o: $(HDRS) $(patsubst %.exe,%_main.o,$(TEST_EXE)): tests/%_main.o: $(T_MAIN_C) $(patsubst %.exe,%_main.o,$(TEST_EXE)): tests/%_main.o: tests/%.toc $(CC) -Isrc -I. '-DTEST_TOC="$<"' \ -c $(T_MAIN_C) \ -o $@ $(TEST_EXE): tests/%.exe: $(T_LIB) $(GIT_LIB) $(TEST_EXE): tests/%.exe: tests/%.o tests/%_main.o $(CC) -o $@ \ $(patsubst %.exe,%_main.o,$@) \ $(patsubst %.exe,%.o,$@) \ $(T_LIB) -L. -lgit2 -lz -lcrypto $(TEST_RUN): tests/%.run: tests/%.exe @t=trash-$( $@ .PHONY: all .PHONY: clean .PHONY: test $(TEST_RUN) .PHONY: apidocs .PHONY: install-headers .PHONY: install uninstall .PHONY: sparse