-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathMakefile.in
99 lines (63 loc) · 2.89 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
# Copyright (C) 2016-2017 Edgar Costa
# See the file LICENSE for license details.
LIBDIR=lib
MAKEFLAGS+=-j$(JOBS)
SOURCE_DIRS = conv dr dr_nd hypersurface hypersurface_nd matrix solve_system tools vec_int64 wrapper
BUILD_DIRS = $(patsubst %, build/%, $(SOURCE_DIRS)) build/test build/examples $(patsubst %, build/%/test, $(SOURCE_DIRS))
AT=@
define NEWLINE
endef
export
HEADERS = $(patsubst %, %.h, $(SOURCE_DIRS)) timing.h
SOURCES = $(wildcard $(patsubst %, %/*.cc, $(SOURCE_DIRS)))
OBJS = $(patsubst %.cc, build/%.o, $(SOURCES))
LOBJS = $(patsubst %.cc, build/%.lo, $(SOURCES))
MOD_LOBJS = $(patsubst %, build/%.lo, $(SOURCE_DIRS))
EXAMPLE_SOURCES = $(wildcard examples/*.cc)
EXAMPLES = $(patsubst %.cc, build/%$(EXEEXT), $(EXAMPLE_SOURCES))
TEST_SOURCES = $(wildcard $(patsubst %, %/test/*.cc, $(SOURCE_DIRS))) $(wildcard test/*.cc)
TESTS = $(patsubst %.cc, build/%$(EXEEXT), $(TEST_SOURCES))
BINARIES =
all: $(OBJS) test examples
clean:
rm -f $(OBJS) $(LOBJS) $(TESTS) $(EXAMPLES) $(wildcard $(CONTROLLEDREDUCTION_LIBNAME)*) # libcontrolledreduction.a
rm -rf build
examples: $(EXAMPLES)
test: $(TESTS)
build/%.o: %.cc $(HEADERS) | build_dirs
$(CXX) $(CXXFLAGS) $(INCS) -c $< -o $@;
build/%.lo: %.cc $(HEADERS) | build_dirs
$(CXX) -fPIC $(CXXFLAGS) $(INCS) -c $< -o $@;
$(TESTS) : % : %.o $(OBJS)
$(CXX) $(CXXFLAGS) $(INCS) $^ -o $@ $(LIBS)
build/%.valgrind : %.cc $(SOURCES)
$(CXX) $(CXXFLAGS) $(INCS) $^ -o $@ $(LIBS)
$(EXAMPLES) : % : %.o $(OBJS)
$(CXX) $(CXXFLAGS) $(INCS) $^ -o $@ $(LIBS)
build_dirs: $(BUILD_DIRS)
# $(foreach dir, $(BUILD_DIRS), mkdir -p $(dir) || exit $$?;)
$(BUILD_DIRS): % :
mkdir -p $@
check: test
$(AT)$(foreach test_executable, $(TESTS), $(call test_executable) || exit $$?;)
$(CONTROLLEDREDUCTION_LIB): $(LOBJS) $(SOURCES) $(HEADERS) | build_dirs
$(CXX) -shared $(EXTRA_SHARED_FLAGS) $(CXXFLAGS) $(LOBJS) -o $(CONTROLLEDREDUCTION_LIB) $(LIBS); \
ln -sf "$(CONTROLLEDREDUCTION_LIB)" "$(CONTROLLEDREDUCTION_LIBNAME)"; \
ln -sf "$(CONTROLLEDREDUCTION_LIB)" "$(CONTROLLEDREDUCTION_LIBNAME).$(CONTROLLEDREDUCTION_MAJOR)";
#libcontrolledreduction.a: $(LOBJS) $(SOURCES) $(HEADERS) | build_dirs
# $(AT)$(foreach mod, $(BUILD_DIRS), $(AR) rcs libdeformation.a build/$(mod)/*.o || exit $$?;)
shared: $(CONTROLLEDREDUCTION_LIB)
#static: libcontrolledreduction.a
library: shared
install: shared
mkdir -p $(DESTDIR)$(PREFIX)/$(LIBDIR)
mkdir -p $(DESTDIR)$(PREFIX)/include/controlledreduction
cp $(CONTROLLEDREDUCTION_LIB) "$(DESTDIR)$(PREFIX)/$(LIBDIR)"
cp -a $(shell ls $(CONTROLLEDREDUCTION_LIBNAME)*) "$(DESTDIR)$(PREFIX)/$(LIBDIR)"
cp $(HEADERS) $(DESTDIR)$(PREFIX)/include/controlledreduction
if [ $(OS) = "Darwin" ]; then \
install_name_tool -id "$(DESTDIR)$(PREFIX)/$(LIBDIR)/$(CONTROLLEDREDUCTION_LIB)" "$(DESTDIR)$(PREFIX)/$(LIBDIR)/$(CONTROLLEDREDUCTION_LIBNAME)"; \
fi
print-%:
@echo '$*=$($*)'
.PHONY: clean library shared static clean examples check tests install