Change test_main to run a single test case out of the suite
[libgit2.git] / Makefile
blob2cb057eeac11a10cd4864a66d8cf4b5210bbe308
1 all::
3 DOXYGEN = doxygen
5 CFLAGS = -g -O2 -Wall
6 OS = unix
8 BASIC_CFLAGS := -Iinclude
9 BASIC_CFLAGS += -DGIT__PRIVATE
10 BASIC_CFLAGS += -fvisibility=hidden
12 OBJS = $(patsubst %.c,%.o,$(wildcard src/*.c))
13 HDRS = $(wildcard include/git/*.h)
15 OBJS += src/os/$(OS).o
16 HDRS += include/git/config.h
17 HDRS += include/git/os/$(OS).h
19 GIT_LIB = libgit2.a
21 TEST_OBJ = $(patsubst %.c,%.o,\
22 $(wildcard tests/t[0-9][0-9][0-9][0-9]-*.c))
23 TEST_EXE = $(patsubst %.o,%.exe,$(TEST_OBJ))
24 TEST_RUN = $(patsubst %.exe,%.run,$(TEST_EXE))
26 all:: $(GIT_LIB)
28 clean:
29 rm -f $(GIT_LIB)
30 rm -f src/*.o
31 rm -f tests/*.o tests/*.exe tests/*.toc
32 rm -f include/git/config.h
33 rm -rf apidocs
35 apidocs:
36 $(DOXYGEN) api.doxygen
37 cp CONVENTIONS apidocs/
39 test: $(TEST_RUN)
41 .c.o:
42 $(CC) $(BASIC_CFLAGS) $(CFLAGS) -c $< -o $@
44 include/git/config.h: include/git/config.h.in
45 sed 's/@@OS@@/$(OS)/g' $< >$@+
46 mv $@+ $@
48 $(OBJS): $(HDRS)
49 $(GIT_LIB): $(OBJS)
50 rm -f $(LIB)
51 $(AR) cr $(GIT_LIB) $(OBJS)
53 T_HDR = tests/test_lib.h
54 T_LIB = tests/test_lib.o
55 T_MAIN_C = tests/test_main.c
57 $(T_LIB): $(T_HDR) $(HDRS)
58 $(TEST_OBJ): $(T_HDR) $(HDRS)
60 $(patsubst %.exe,%.toc,$(TEST_EXE)): tests/%.toc: tests/%.c
61 grep BEGIN_TEST $< >$@+
62 mv $@+ $@
64 $(TEST_OBJ): tests/%.o: tests/%.c
65 $(CC) -Iinclude $(CFLAGS) -c $< -o $@
67 $(patsubst %.exe,%_main.o,$(TEST_EXE)): tests/%_main.o: $(HDRS)
68 $(patsubst %.exe,%_main.o,$(TEST_EXE)): tests/%_main.o: $(T_MAIN_C)
69 $(patsubst %.exe,%_main.o,$(TEST_EXE)): tests/%_main.o: tests/%.toc
70 $(CC) -Iinclude -I. '-DTEST_TOC="$<"' \
71 -c $(T_MAIN_C) \
72 -o $@
74 $(TEST_EXE): tests/%.exe: $(T_LIB) $(GIT_LIB)
75 $(TEST_EXE): tests/%.exe: tests/%.o tests/%_main.o
76 $(CC) -o $@ \
77 $(patsubst %.exe,%_main.o,$@) \
78 $(patsubst %.exe,%.o,$@) \
79 $(T_LIB) -L. -lgit2
81 $(TEST_RUN): tests/%.run: tests/%.exe
82 @$<
84 .PHONY: all
85 .PHONY: clean
86 .PHONY: test $(TEST_RUN)
87 .PHONY: apidocs