+ 18.5 Language support library, Dynamic memory management: <new>
[lightlibc++.git] / Makefile
blob3609ec335ab3577620ae60327479090577cd0da4
1 default: all-host
3 .PHONY: doc todo clean
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")
9 OBJ:= $(SRC:%.cpp=%.o)
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)
14 STATIC_LIB:= libc++.a
15 INCLUDE:= -I include/
16 CXXFLAGS_COMMON:= -std=c++0x -Wall -Werror -Wextra -pedantic-errors -Weffc++ -nostdinc++ -D_LIGHTLIBCPP_CPP10 -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
21 -include $(DEP)
22 -include $(TESTCASE_DEP)
24 all-host: $(STATIC_LIB)
26 testcases-host: $(STATIC_LIB) $(TESTCASE)
28 clean:
29 @rm -f $(DEP) $(OBJ) $(STATIC_LIB) $(TESTCASE_DEP) $(TESTCASE) $(TESTCASE:%=%.gcc) $(TESTCASE:%=%.out)
31 doc:
32 @rm -rf doc
33 @doxygen
35 todo:
36 @grep -r -H -n --exclude=Doxyfile --exclude=Makefile --exclude-dir=doc -e TODO *
38 kloc:
39 @sloccount include source testcase
41 $(OBJ): Makefile
42 @echo " C++ lightlibc++/$(@:%.o=%.cpp)"
43 @g++ $(CXXFLAGS) -MMD -MF $(@:%.o=%.dep) -MT $@ -c $(@:%.o=%.cpp) -o $@
45 $(STATIC_LIB): $(OBJ)
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) && ./testcase.sh $@ ) || echo "\033[01;31mfailed to compile\033[m: $@"