5 HOST_LIBC
:= $(shell g
++ -print-file-name
=libc.a
)
6 HOST_LIBGCC
:= $(shell g
++ -print-libgcc-file-name
)
8 SRC
:= $(shell [ -d source
] && find source
-name
"*.cpp")
10 DEP
:= $(SRC
:%.
cpp=%.dep
)
11 TESTCASE_SRC
:= $(shell [ -d testcase
] && find testcase
-name
"*.cpp")
12 TESTCASE
:= $(TESTCASE_SRC
:%.
cpp=%)
13 TESTCASE_DEP
:= $(TESTCASE_SRC
:%.
cpp=%.dep
)
16 CXXFLAGS_COMMON
:= -std
=c
++0x
-Wall
-Werror
-Wextra
-pedantic-errors
-Weffc
++ -nostdinc
++ -D_LIGHTLIBCPP_NO_EXCEPTIONS
-fno-exceptions
17 CXXFLAGS
:= $(CXXFLAGS_COMMON
) $(INCLUDE
)
18 CXXFLAGS_TESTCASE
:= $(CXXFLAGS_COMMON
) $(INCLUDE
) -nodefaultlibs
19 LIBS_TESTCASE
:= -Xlinker
--start-group
-Xlinker
$(STATIC_LIB
) -Xlinker
$(HOST_LIBGCC
) -Xlinker
$(HOST_LIBC
) -Xlinker
--end-group
22 -include $(TESTCASE_DEP
)
24 all-host
: $(STATIC_LIB
)
26 testcases-host
: $(STATIC_LIB
) $(TESTCASE
)
29 @
rm -f
$(DEP
) $(OBJ
) $(STATIC_LIB
) $(TESTCASE_DEP
) $(TESTCASE
) $(TESTCASE
:%=%.gcc
)
36 @grep
-r
-H
-n
--exclude
=Doxyfile
--exclude
=Makefile
--exclude-dir
=doc
-e TODO
*
39 @sloccount
include source testcase
42 @echo
" C++ lightlibc++/$(@:%.o=%.cpp)"
43 @g
++ $(CXXFLAGS
) -MMD
-MF
$(@
:%.o
=%.dep
) -MT
$@
-c
$(@
:%.o
=%.
cpp) -o
$@
46 @echo
" AR $(STATIC_LIB)"
47 @
ar rc
$(STATIC_LIB
) $(OBJ
)
49 $(TESTCASE
): $(STATIC_LIB
) Makefile
50 @
(g
++ $(CXXFLAGS_TESTCASE
) -MMD
-MF
$(@
:%=%.dep
) -MT
$@
$(@
:%=%.
cpp) $(LIBS_TESTCASE
) -o
$@
2> $(@
:%=%.gcc
) && rm $(@
:%=%.gcc
) && (((( [ -x
$@.sh
] && .
/$@.sh
) ||
( [ \
! -x
$@.sh
] && .
/$@
) ) && echo
"$@: \033[01;32mpassed \033[m" ||
(echo
"$@: \033[01;31mfailed \033[m" && rm -f
$@
)) || true
)) || echo
"$@: \033[01;31mfailed to compile \033[m"