6 uname_S
:= $(shell sh
-c
'uname -s 2>/dev/null || echo no')
9 # avoid the MinGW and Cygwin configuration sections
14 LIBS
= -L..
-lgit2
-lz
17 VFLAGS
= -q
--error-exitcode
=1 --leak-check
=yes
--suppressions
=..
/tests.supp
23 LD_OUT
=-o
# add a space
24 CC_OUT
=-o
# add a space
26 # Platform specific tweaks
28 ifeq ($(uname_S
),Windows
)
31 CFLAGS
= -TC
-W3
-RTC1
-Zi
-DWIN32
-D_DEBUG
-D_LIB
35 LIBS
= ..
\\libgit2.a libz.lib wsock32.lib
36 CRYPTO_LIB
= libeay32.lib
39 ifneq (,$(findstring MINGW
,$(uname_S
)))
41 EXTRA_LIBS
+= -lwsock32
-lpthread
44 GIT_LIB
= ..
/libgit2.a
46 HDRS
= $(wildcard ..
/src
/*.h
)
47 PUBLIC_HEADERS
= $(wildcard ..
/src
/git
/*.h
)
48 HDRS
+= $(PUBLIC_HEADERS
)
50 TEST_OBJ
= $(patsubst %.c
,%.o
,\
51 $(wildcard t
[0-9][0-9][0-9][0-9]-*.c
))
52 TEST_EXE
= $(patsubst %.o
,%.exe
,$(TEST_OBJ
))
53 TEST_RUN
= $(patsubst %.exe
,%.run
,$(TEST_EXE
))
54 TEST_VAL
= $(patsubst %.exe
,%.val
,$(TEST_EXE
))
57 EXTRA_LIBS
+= -O0
-lgcov
61 EXTRA_LIBS
+= $(CRYPTO_LIB
)
64 BASIC_CFLAGS
:= -I..
/src
66 ALL_CFLAGS
= $(CFLAGS
) $(BASIC_CFLAGS
)
67 ALL_LIBS
= $(LIBS
) $(EXTRA_LIBS
)
72 rm -f
*.o
*.exe
*.toc
*.pdb
81 $(CC
) $(ALL_CFLAGS
) -c
$< $(CC_OUT
)$@
83 T_HDR
= test_lib.h test_helpers.h
84 T_LIB
= test_lib.o test_helpers.o
85 T_MAIN_C
= test_main.c
87 $(T_LIB
): $(T_HDR
) $(HDRS
)
88 $(TEST_OBJ
): $(T_HDR
) $(HDRS
)
90 $(patsubst %.exe
,%.toc
,$(TEST_EXE
)): %.toc
: %.c
91 grep BEGIN_TEST
$< >$@
+
95 $(CC
) $(ALL_CFLAGS
) -c
$< $(CC_OUT
)$@
97 $(patsubst %.exe
,%_main.o
,$(TEST_EXE
)): %_main.o
: $(HDRS
)
98 $(patsubst %.exe
,%_main.o
,$(TEST_EXE
)): %_main.o
: $(T_MAIN_C
)
99 $(patsubst %.exe
,%_main.o
,$(TEST_EXE
)): %_main.o
: %.toc
100 $(CC
) $(ALL_CFLAGS
) '-DTEST_TOC="$<"' \
104 $(TEST_EXE
): %.exe
: $(T_LIB
)
105 $(TEST_EXE
): %.exe
: $(GIT_LIB
)
106 $(TEST_EXE
): %.exe
: %.o
%_main.o
108 $(patsubst %.exe
,%_main.o
,$@
) \
109 $(patsubst %.exe
,%.o
,$@
) \
112 $(TEST_RUN
): %.run
: %.exe
115 if
(cd
$$t && ..
/$<); \
117 else rmdir
$$t; exit
1; \
120 $(TEST_VAL
): %.val
: %.exe
123 if
(cd
$$t && valgrind
$(VFLAGS
) ..
/$<); \
125 else rmdir
$$t; exit
1; \
130 .PHONY
: test $(TEST_RUN
)