1
-
2
1
# Target variables
3
- MODE ?= Debug
2
+ MODE ?= Release
4
3
5
4
# The Directories, Source, Includes, Objects, Binary
6
5
ROOT := .
@@ -10,8 +9,9 @@ GTEST_CODE := $(GTEST_DIR).tar.gz
10
9
OBJ_DIR := $(ROOT ) /obj
11
10
BUILD_DIR := $(OBJ_DIR ) /release
12
11
AST_DIR := $(ROOT ) /ast
12
+ TEST_DIR := $(ROOT ) /test
13
13
BIN_DIR := $(ROOT ) /bin
14
- ifeq ($(MODE ) ,Debug)
14
+ ifeq ($(MODE ) , Debug)
15
15
BUILD_DIR := $(OBJ_DIR ) /debug
16
16
endif
17
17
prefix ?= /usr/local
@@ -20,38 +20,51 @@ includedir ?= $(prefix)/include
20
20
libdir ?= $(exec_prefix ) /lib
21
21
boost_libdir ?= $(prefix )
22
22
23
+ .PHONY : doc clean create-folders install install-folders lib-gtest test
24
+
25
+ # ///////////////////////////////////////////////////////////////////////////////
26
+ # Compilation ------------------------------------------------------------------
27
+ # ///////////////////////////////////////////////////////////////////////////////
28
+
23
29
# Flags, Libraries and Includes
24
30
INCLUDES := -I. -I$(boost_libdir ) /include
25
- CXXFLAGS := -std=c++17 -Wall -Werror - Wno-reorder -O2 -D BOOST_PHOENIX_STL_TUPLE_H_ -D BOOST_MPL_LIMIT_LIST_SIZE=30 -D BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
31
+ CXXFLAGS := -std=c++17 -Wno-reorder -O3
26
32
ifeq ($(MODE ) ,Debug)
27
- CXXFLAGS += -ggdb
33
+ CXXFLAGS += -ggdb -Wall -Werror
28
34
endif
29
35
LIB_SBGRAPH = lib/libsbgraph.a
30
36
31
37
all : $(LIB_SBGRAPH )
32
38
39
+ include util/Makefile.include
33
40
include sbg/Makefile.include
34
41
include parser/Makefile.include
35
- include util/Makefile.include
36
42
include eval/Makefile.include
37
- include test/Makefile.include
38
43
39
- $(BUILD_DIR ) /% .o : % .cpp
44
+ create-folders ::
45
+ @mkdir -p $(ROOT ) /lib
46
+ @mkdir -p $(OBJ_DIR )
47
+ @mkdir -p $(BUILD_DIR )
48
+ @mkdir -p $(BUILD_DIR ) /$(AST_DIR )
49
+ @mkdir -p $(BIN_DIR )
50
+
51
+ $(BUILD_DIR ) /% .o : % .cpp | create-folders
40
52
$(CC ) $(INCLUDES ) $(CXXFLAGS ) -MM -MT $@ -MF $(patsubst % .o,% .d,$@ ) $<
41
53
$(CC ) $(INCLUDES ) -c $< -o $@ $(CXXFLAGS )
42
54
43
- $( LIB_SBGRAPH ) : create-folders $( SBG_OBJ ) $( UTIL_OBJ ) $( PARSER_OBJ ) $( EVAL_OBJ )
44
- $( AR ) rcs $(LIB_SBGRAPH ) $(SBG_OBJ ) $(UTIL_OBJ ) $( PARSER_OBJ ) $( EVAL_OBJ )
55
+ LIB_SRC := $( shell find ast parser sbg eval util -type f -name " * .cpp" ! -name "main.cpp" )
56
+ LIB_OBJ = $(addprefix $(BUILD_DIR ) /, $(LIB_SRC:.cpp=.o ) )
45
57
46
- lib-gtest : | create-folders
47
- ifeq ("$(wildcard $(3RD_PARTY_DIR ) /gtest/usr/lib) ","")
48
- cd $(3RD_PARTY_DIR)/gtest; tar xvzf $(GTEST_CODE)
49
- mkdir -p $(3RD_PARTY_DIR)/gtest/build
50
- cd $(3RD_PARTY_DIR)/gtest/build; cmake ../$(GTEST_DIR) -DCMAKE_INSTALL_PREFIX=../usr
51
- cd $(3RD_PARTY_DIR)/gtest/build; make install
52
- rm -rf $(3RD_PARTY_DIR)/gtest/$(GTEST_DIR)
53
- rm -rf $(3RD_PARTY_DIR)/gtest/build
54
- endif
58
+ $(LIB_SBGRAPH ) : create-folders $(LIB_OBJ )
59
+ $(AR ) rcs $(LIB_SBGRAPH ) $(LIB_OBJ )
60
+
61
+ DEPS = $(addprefix $(BUILD_DIR ) /, $(LIB_SRC:.cpp=.d ) )
62
+
63
+ -include $(DEPS )
64
+
65
+ # ///////////////////////////////////////////////////////////////////////////////
66
+ # Library Installation ---------------------------------------------------------
67
+ # ///////////////////////////////////////////////////////////////////////////////
55
68
56
69
install : | install-folders
57
70
@echo " Installing SBG library headers."
@@ -73,26 +86,41 @@ install-folders:
73
86
@mkdir -p $(includedir ) /parser
74
87
@mkdir -p $(includedir ) /eval
75
88
76
- create-folders ::
77
- @mkdir -p $(ROOT ) /lib
78
- @mkdir -p $(OBJ_DIR )
79
- @mkdir -p $(BUILD_DIR )
80
- @mkdir -p $(BUILD_DIR ) /$(AST_DIR )
81
- @mkdir -p $(BIN_DIR )
89
+ # ///////////////////////////////////////////////////////////////////////////////
90
+ # Testing ----------------------------------------------------------------------
91
+ # ///////////////////////////////////////////////////////////////////////////////
92
+
93
+ lib-gtest : | create-folders
94
+ ifeq ("$(wildcard $(3RD_PARTY_DIR ) /gtest/usr/lib) ","")
95
+ cd $(3RD_PARTY_DIR)/gtest; tar xvzf $(GTEST_CODE)
96
+ mkdir -p $(3RD_PARTY_DIR)/gtest/build
97
+ cd $(3RD_PARTY_DIR)/gtest/build; cmake ../$(GTEST_DIR) -DCMAKE_INSTALL_PREFIX=../usr
98
+ cd $(3RD_PARTY_DIR)/gtest/build; make install
99
+ rm -rf $(3RD_PARTY_DIR)/gtest/$(GTEST_DIR)
100
+ rm -rf $(3RD_PARTY_DIR)/gtest/build
101
+ endif
102
+
103
+ test : lib-gtest
104
+ @cd $(TEST_DIR ) && ./compile_run_tests.sh
82
105
83
- .PHONY : doc
106
+ # ///////////////////////////////////////////////////////////////////////////////
107
+ # Documentation ----------------------------------------------------------------
108
+ # ///////////////////////////////////////////////////////////////////////////////
84
109
85
110
doc :
86
111
@mkdir -p $(ROOT ) /doc
87
112
@mkdir -p $(ROOT ) /doc/html
88
113
@mkdir -p $(ROOT ) /doc/latex
114
+ doxygen eval/EVAL.doxyfile
89
115
doxygen sbg/SBG.doxyfile
90
116
doxygen util/UTIL.doxyfile
91
117
92
- test : lib-gtest $(SBG_TEST )
118
+ # ///////////////////////////////////////////////////////////////////////////////
119
+ # Cleaning ---------------------------------------------------------------------
120
+ # ///////////////////////////////////////////////////////////////////////////////
121
+
122
+ TEST_DIRS := test/parser test/performance test/performance/boost test/eval
93
123
94
- TEST_DIRS := test/parser test/performance test/performance/boost test/eval
95
-
96
124
clean :
97
125
$(RM ) -rf $(BIN_DIR ) $(OBJ_DIR ) $(LIB_SBGRAPH ) $(ROOT ) /lib $(ROOT ) /include $(3RD_PARTY_DIR ) /gtest/usr
98
126
for dir in $( TEST_DIRS) ; do \
@@ -101,11 +129,15 @@ clean:
101
129
$(RM) -rf $$dir/test_data; \
102
130
done
103
131
132
+ # ///////////////////////////////////////////////////////////////////////////////
133
+ # Help -------------------------------------------------------------------------
134
+ # ///////////////////////////////////////////////////////////////////////////////
135
+
104
136
help :
105
137
@echo " make MODE=<Debug|Release> prefix=<PATH> exec_prefix=<PATH> includedir=<PATH> libdir=<PATH> boost_libdir=<PATH>"
106
138
@echo " Default values:"
107
139
@echo " "
108
- @echo " MODE=Debug "
140
+ @echo " MODE=Release "
109
141
@echo " prefix=/usr/local"
110
142
@echo " exec_prefix=/usr/local"
111
143
@echo " includedir=/usr/local/include"
0 commit comments