-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathMakefile.in
137 lines (118 loc) · 4.29 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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# Target variables
MODE ?= Debug
sbg_branch ?= sb-graph-dev
build_sbg ?= True
repo_checkout=ssh
# The Directories, Source, Includes, Objects, Binary
ROOT := .
3RD_PARTY_DIR := $(ROOT)/3rd-party
GTEST_DIR := googletest-release-1.12.1
GTEST_CODE := $(GTEST_DIR).tar.gz
BUILD_DIR :=
BUILD_DIR := $(ROOT)/obj/release
ifeq ($(MODE),Debug)
BUILD_DIR := $(ROOT)/obj/debug
endif
AST_DIR := ast
PARSER_DIR := parser
SBG_LIB := sbg
SBG_DEV := sb-graph-dev
SBG_1_0_0 := sb-graph-1.0.0
BOOST_LIB_PATH := $(3RD_PARTY_DIR)/boost
BOOST_1_81 := boost-1.81.0
BOOST_1_81_LIB := $(BOOST_1_81).tar.xz
BOOST_1_81_INC := -I$(BOOST_LIB_PATH)/$(BOOST_1_81)/include
# Flags, Libraries and Includes
SBG_LIB_DEV_INCLUDE := -I$(3RD_PARTY_DIR)/$(SBG_LIB)/$(SBG_DEV)/usr/include
SBG_LIB_1_0_0_INCLUDE := -I$(3RD_PARTY_DIR)/$(SBG_LIB)/$(SBG_1_0_0)/usr/include
INCLUDES := -I.
CXXFLAGS := -std=c++17 -Wall -Wno-reorder -O3
ifeq ($(MODE),Debug)
CXXFLAGS += -ggdb
endif
LIBMODELICA = lib/libmodelica.a
LIBS := -L./lib -lginac -lmodelica
SBG_LIB_DEV_LINK := -L$(3RD_PARTY_DIR)/$(SBG_LIB)/$(SBG_DEV)/usr/lib -lsbgraph
SBG_LIB_1_0_0_LINK := -L$(3RD_PARTY_DIR)/$(SBG_LIB)/$(SBG_1_0_0)/usr/lib -lsbgraph
all: $(LIBMODELICA)
include antialias/Makefile.include
include mmo/Makefile.include
include flatter/Makefile.include
include causalize/Makefile.include
# Sources
COMMON_SRC := \
$(AST_DIR)/expression.cpp \
$(AST_DIR)/class.cpp \
$(AST_DIR)/equation.cpp \
$(AST_DIR)/statement.cpp \
$(AST_DIR)/modification.cpp \
$(AST_DIR)/element.cpp \
$(AST_DIR)/expression.cpp \
$(PARSER_DIR)/ident.cpp \
$(PARSER_DIR)/expression.cpp \
$(PARSER_DIR)/modification.cpp \
$(PARSER_DIR)/equation.cpp \
$(PARSER_DIR)/statement.cpp \
$(PARSER_DIR)/class.cpp \
$(PARSER_DIR)/parser.cpp
# Objects
COMMON_OBJ=$(addprefix $(BUILD_DIR)/, $(COMMON_SRC:.cpp=.o))
$(BUILD_DIR)/%.o : %.cpp
$(CC) $(INCLUDES) $(SBG_LIB_1_0_0_INCLUDE) $(CXXFLAGS) -MM -MT $@ -MF $(patsubst %.o,%.d,$@) $<
$(CC) $(INCLUDES) $(SBG_LIB_1_0_0_INCLUDE) -c $< -o $@ $(CXXFLAGS)
$(COMMON_OBJ): | create-folders
lib-boost:
ifeq ("$(wildcard $(BOOST_LIB_PATH)/$(BOOST_1_81))","")
cd $(BOOST_LIB_PATH); tar -xvf $(BOOST_1_81_LIB)
endif
update-sbg:
cd $(3RD_PARTY_DIR)/$(SBG_LIB); ./update.py --branch_name $(sbg_branch) --repo_checkout $(repo_checkout)
cd $(3RD_PARTY_DIR)/$(SBG_LIB); tar -zxvf $(SBG_DEV).tar.gz
lib-sbg: lib-boost
ifeq ("$(wildcard $(3RD_PARTY_DIR)/$(SBG_LIB)/$(SBG_1_0_0))","")
cd $(3RD_PARTY_DIR)/$(SBG_LIB); tar -zxvf $(SBG_1_0_0).tar.gz
cd $(3RD_PARTY_DIR)/$(SBG_LIB)/$(SBG_1_0_0); autoconf
cd $(3RD_PARTY_DIR)/$(SBG_LIB)/$(SBG_1_0_0); ./configure
cd $(3RD_PARTY_DIR)/$(SBG_LIB)/$(SBG_1_0_0); make
cd $(3RD_PARTY_DIR)/$(SBG_LIB)/$(SBG_1_0_0); mkdir -p usr
cd $(3RD_PARTY_DIR)/$(SBG_LIB)/$(SBG_1_0_0); make install prefix=./usr
endif
ifeq ("$(wildcard $(3RD_PARTY_DIR)/$(SBG_LIB)/$(SBG_DEV))","")
make update-sbg
endif
ifeq ($(build_sbg), True)
cd $(3RD_PARTY_DIR)/$(SBG_LIB)/$(SBG_DEV); autoconf
cd $(3RD_PARTY_DIR)/$(SBG_LIB)/$(SBG_DEV); ./configure
cd $(3RD_PARTY_DIR)/$(SBG_LIB)/$(SBG_DEV); make boost_libdir=../../boost/$(BOOST_1_81)
cd $(3RD_PARTY_DIR)/$(SBG_LIB)/$(SBG_DEV); mkdir -p usr
cd $(3RD_PARTY_DIR)/$(SBG_LIB)/$(SBG_DEV); make install prefix=./usr
endif
$(LIBMODELICA): $(COMMON_OBJ) lib-sbg | create-folders
$(AR) rcs $(LIBMODELICA) $(COMMON_OBJ)
doc: Doxyfile
doxygen
lib-gtest: | create-folders
ifeq ("$(wildcard $(3RD_PARTY_DIR)/gtest/usr/lib)","")
cd $(3RD_PARTY_DIR)/gtest; tar xvzf $(GTEST_CODE)
mkdir -p $(3RD_PARTY_DIR)/gtest/build
cd $(3RD_PARTY_DIR)/gtest/build; cmake ../$(GTEST_DIR) -DCMAKE_INSTALL_PREFIX=../usr
cd $(3RD_PARTY_DIR)/gtest/build; sudo make install
rm -rf $(3RD_PARTY_DIR)/gtest/$(GTEST_DIR)
rm -rf $(3RD_PARTY_DIR)/gtest/build
endif
create-folders::
@mkdir -p $(ROOT)/lib
@mkdir -p $(BUILD_DIR)
@mkdir -p $(BUILD_DIR)/$(AST_DIR)
@mkdir -p $(BUILD_DIR)/$(PARSER_DIR)
test: lib-gtest $(FLATTER_TEST) $(CAUSALIZE_SBG_TEST) $(SBG_GRAPH_TEST)
clean:
$(RM) -rf $(BUILD_DIR) $(LIBMODELICA) doc
help:
@echo "make MODE=<Debug|Release> sbg_branch=<BRANCH_NAME> build_sbg=<True|False> repo_checkout=<ssh|https>"
@echo "Default values:"
@echo ""
@echo "MODE=Debug"
@echo "sbg_branch=sb-graph-dev"
@echo "build_sbg=True"
@echo "repo_checkout=ssh"