-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile.am
59 lines (41 loc) · 1.4 KB
/
Makefile.am
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
CXX=g++
RM=rm -f
CPPFLAGS=-O3 -fPIC -fopenmp -Wall -std=c++17 -march=native -fno-math-errno
LDFLAGS=-lm -lz @ldflags@
DFLAGS=@dflags@
MODULES := utils estimators evaluators optimizers
SRC_DIR := $(addprefix ./src/,$(MODULES))
BUILD_DIR := $(addprefix ./bin/,$(MODULES))
EXEDIR := ./examples
SRC := $(foreach sdir,$(SRC_DIR),$(wildcard $(sdir)/*.cpp))
EXES := $(wildcard $(EXEDIR)/*.cpp)
OBJ := $(patsubst ./src/%.cpp,./bin/%.o,$(SRC))
OBJ_EXES := $(patsubst ./examples/%.cpp,./bin/examples/%.x,$(EXES))
INCL := $(addprefix -I,$(SRC_DIR)) -I/usr/include/eigen3
vpath %.cpp $(SRC_DIR)
define make-goal
$1/%.o: %.cpp
$(CXX) $(CPPFLAGS) $(DFLAGS) $(INCL) -c $$< -o $$@
endef
.PHONY: all checkdirs clean
all: checkdirs lib/libcestimator.so
lib/libcestimator.so: $(OBJ)
$(CXX) $^ -shared -o $@ $(LDFLAGS) $(LDLIBS)
checkdirs: $(BUILD_DIR)
examples: $(OBJ_EXES) lib/libcestimator.so
format:
@uncrustify -c ucfy.cfg --no-backup ./src/**/*.hpp ./src/**/*.cpp ./examples/*.cpp
tests: tests/run_tests.x
tests/run_tests.x:
@cmake tests -B./tests
@make -C tests
tests/run_tests.x
bin/examples/%.x: examples/%.cpp
$(CXX) $(CPPFLAGS) $(DFLAGS) $(INCL) -I./src $^ -o $@ $(LDFLAGS) -L./lib -lcestimator $(LDLIBS)
$(BUILD_DIR):
@mkdir -p $@
@mkdir -p bin/examples
@mkdir -p lib
clean:
@rm -rf $(BUILD_DIR) bin/examples/*
$(foreach bdir,$(BUILD_DIR),$(eval $(call make-goal,$(bdir))))