1 # Common makefile rules for tests
3 # Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
5 # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
8 TESTS
:= $(patsubst %.c
,%,$(wildcard *.c
))
10 ifneq ($(TESTS_DISABLED
),)
11 TESTS
:= $(filter-out $(TESTS_DISABLED
),$(TESTS
))
13 ifeq ($(SHELL_TESTS
),)
14 SHELL_TESTS
:= $(patsubst %.sh
,shell_
%,$(wildcard *.sh
))
17 ifneq ($(filter-out test,$(strip $(TESTS
))),$(strip $(TESTS
)))
18 $(error Sanity
check: cannot have a
test named
"test.c")
22 G_TARGETS
:= $(addsuffix _glibc
,$(U_TARGETS
))
24 ifneq ($(GLIBC_TESTS_DISABLED
),)
25 G_TARGETS
:= $(filter-out $(GLIBC_TESTS_DISABLED
),$(G_TARGETS
))
29 TARGETS
+= $(U_TARGETS
)
31 ifeq ($(UCLIBC_ONLY
),)
32 TARGETS
+= $(G_TARGETS
)
35 CLEAN_TARGETS
:= $(U_TARGETS
) $(G_TARGETS
)
36 CLEAN_TARGETS
+= $(TESTS_DISABLED
) $(addsuffix _glibc
,$(TESTS_DISABLED
)) $(GLIBC_TESTS_DISABLED
)
37 COMPILE_TARGETS
:= $(TARGETS
)
38 # We sort the targets so uClibc and host-libc tests are run adjacent
39 RUN_TARGETS
:= $(sort $(addsuffix .exe
,$(TARGETS
)))
40 COMPILE_TARGETS
:= $(sort $(COMPILE_TARGETS
))
41 # provide build rules even for disabled tests:
42 U_TARGETS
+= $(TESTS_DISABLED
)
43 G_TARGETS
+= $(addsuffix _glibc
,$(TESTS_DISABLED
)) $(GLIBC_TESTS_DISABLED
)
44 TARGETS
+= $(SHELL_TESTS
)
45 CFLAGS
+= $(CFLAGS_
$(notdir $(CURDIR
)))
48 $(patsubst %.exe
,%,$@
)
51 $(patsubst %_glibc
,%,$(binary_name
))
56 for x in
"$(binary_name).out" "$(tst_src_name).out" ; do \
57 test -e
"$$x.good" && $(do_showdiff
) "$(binary_name).out" "$$x.good" && exec diff
-u
"$(binary_name).out" "$$x.good" ; \
61 define uclibc_glibc_diff_test
63 test -z
"$(DODIFF_$(tst_src_name))" && exec true
; \
64 uclibc_out
="$(binary_name).out" ; \
65 glibc_out
="$(tst_src_name).out" ; \
66 $(do_showdiff
) $$uclibc_out $$glibc_out ; \
67 exec diff
-u
"$$uclibc_out" "$$glibc_out"
72 $(WRAPPER
) $(WRAPPER_
$(tst_src_name
)) \
73 .
/$(binary_name
) $(OPTS
) $(OPTS_
$(tst_src_name
)) > "$(binary_name).out" 2>&1 ; \
75 expected_ret
="$(RET_$(tst_src_name))" ; \
76 test -z
"$$expected_ret" && export expected_ret
=0 ; \
77 if
! test $$ret -eq
$$expected_ret ; then \
78 echo
"ret == $$ret ; expected_ret == $$expected_ret" ; \
79 echo
"The output of failed test is:"; \
80 cat
"$(binary_name).out"; \
83 $(SCAT
) "$(binary_name).out"
91 ifeq ($(UCLIBC_ONLY
),)
92 $(uclibc_glibc_diff_test
)
95 compile
: $(COMPILE_TARGETS
)
97 G_TARGET_SRCS
:= $(addsuffix .c
,$(G_TARGETS
))
98 U_TARGET_SRCS
:= $(addsuffix .c
,$(U_TARGETS
))
100 $(MAKE_SRCS
): Makefile
$(TESTDIR
)Makefile
$(TESTDIR
)Rules.mak
$(TESTDIR
)Test.mak
102 $(U_TARGETS
): $(U_TARGET_SRCS
) $(MAKE_SRCS
)
104 $(Q
)$(CC
) $(filter-out $(CFLAGS-OMIT-
$@
),$(CFLAGS
)) $(EXTRA_CFLAGS
) $(CFLAGS_
$(notdir $(CURDIR
))) $(CFLAGS_
$@
) -c
$@.c
-o
$@.o
105 $(Q
)$(CC
) $(LDFLAGS
) $@.o
-o
$@
$(EXTRA_LDFLAGS
) $(LDFLAGS_
$@
)
107 $(G_TARGETS
): $(U_TARGET_SRCS
) $(MAKE_SRCS
)
109 $(Q
)$(HOSTCC
) $(filter-out $(HOST_CFLAGS-OMIT-
$(patsubst %_glibc
,%,$@
)),$(HOST_CFLAGS
)) \
110 $(CFLAGS_
$(notdir $(CURDIR
))) $(CFLAGS_
$(patsubst %_glibc
,%,$@
)) \
111 -c
$(patsubst %_glibc
,%,$@
).c
-o
$@.o
112 $(Q
)$(HOSTCC
) $(HOST_LDFLAGS
) $@.o
-o
$@
$(EXTRA_LDFLAGS
) $(LDFLAGS_
$(patsubst %_glibc
,%,$@
)) $(LDFLAGS_
$@
)
117 $(Q
)$(if
$(PRE_RUN_
$(@
)),$(PRE_RUN_
$(@
)))
118 $(Q
)$(SHELL
) $(patsubst shell_
%,%.sh
,$(binary_name
))
119 $(Q
)$(if
$(POST_RUN_
$(@
)),$(POST_RUN_
$(@
)))
124 $(filter-out $(CFLAGS-OMIT-
$<),$(CFLAGS
)) $(EXTRA_CFLAGS
) \
125 $(CFLAGS_
$(patsubst %_glibc
,%,$@
)) \
126 -fPIC
-shared
$< -o
$@
-Wl
,-soname
,$@ \
127 $(filter-out $(LDFLAGS-OMIT-
$<),$(LDFLAGS
)) $(EXTRA_LIBS
) \
128 $(LDFLAGS_
$(patsubst %_glibc
,%,$@
))
132 $(Q
)$(RM
) *.a
*.o
*.so
*~ core
*.out
*.gdb
$(CLEAN_TARGETS
) $(EXTRA_CLEAN
)
133 $(Q
)$(RM_R
) $(EXTRA_DIRS
)
135 .PHONY
: all check clean test run compile