-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathMakefile.in
79 lines (61 loc) · 1.61 KB
/
Makefile.in
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# Sources
OUT_DIR=bin/
SOURCES= \
example/main.cpp \
example/output.cpp
OBJECTS=$(SOURCES:.cpp=.cpp.o)
TEST_OBJECTS=$(SOURCES:.cpp=.test)
TESTS=$(foreach test,$(SOURCES), $(addprefix $(OUT_DIR), $(notdir $(test))))
# Generation/Installation
PREFIX=%PREFIX%
INCLUDEDIR=%INCLUDEDIR%
THREADS=%THREADS%
# Compiler flags
CXX=c++
CXX_WARN_FLAGS=-Wall -Wextra -Werror -pedantic
CXX_DEBUG_FLAGS=
CXX_OPTIM_FLAGS=-O3
CXX_INCLUDE_FLAGS=-Iinclude/
CXX_PLATFORM_FLAGS=%CXX_PLATFORM_FLAGS%
CXX_FLAGS=-std=c++1y \
$(CXX_PLATFORM_FLAGS) \
$(CXX_INCLUDE_FLAGS) \
$(CXX_WARN_FLAGS) \
$(CXX_DEBUG_FLAGS) \
$(CXX_OPTIM_FLAGS)
LD_PLATFORM_LIBS=%LD_PLATFORM_LIBS%
LD_LIBS=$(LD_PLATFORM_LIBS)
PROJECT=%PROJECT%
.PHONY: all threaded setup clean ${PROJECT} ${PROJECT}_setup install uninstall test test_setup
.SILENT:
all:
$(MAKE) -j $(THREADS) threaded
exit $$?
threaded: ${PROJECT}
echo "Success"
setup: clean
echo "Preparing"
mkdir -p $(OUT_DIR)
clean:
rm -rf $(OUT_DIR)
echo "Cleaned"
${PROJECT}: ${PROJECT}_setup $(OBJECTS)
echo "Done building ${PROJECT} tests"
${PROJECT}_setup: setup
echo "Building ${PROJECT} tests"
%.cpp.o: %.cpp ${PROJECT}_setup
echo " Compiling $<"
$(CXX) $(CXX_FLAGS) $< $(LD_LIBS) -o $(addprefix $(OUT_DIR), $(notdir $<))
install:
export installdir=$(DESTDIR)$(INCLUDEDIR) && \
export project=$(PROJECT) && \
./do_install safe
uninstall:
export installdir=$(DESTDIR)$(INCLUDEDIR) && \
export project=$(PROJECT) && \
./do_install undo
test: test_setup $(TEST_OBJECTS)
test_setup:
%.test: test_setup
echo
$(OUT_DIR)/$(notdir $(shell echo $@ | sed 's/\.test//')).cpp || true