-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile_variables.mk
60 lines (46 loc) · 2.01 KB
/
Makefile_variables.mk
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
###################################################################################
## Author: Stefan Lörwald, Universität Heidelberg ##
## License: CC BY-NC 4.0 http://creativecommons.org/licenses/by-nc/4.0/legalcode ##
###################################################################################
# target
bin_short = panda
library_name = polypanda
# directories
dir_binary = bin
dir_library = lib
dir_object = obj
dir_source = src
dir_test = test
dir_log = log
# file extensions
ext_binary = bin
ext_object = o
ext_dependency = d
ext_source = cpp
ext_header = h
# files to compile
sources = $(wildcard $(dir_source)/*.$(ext_source))
sources_test = $(wildcard $(dir_source)/$(dir_test)/*.$(ext_source))
# object files corresponding to sources
objects = $(sources:$(dir_source)%$(ext_source)=$(dir_object)%$(ext_object))
objects_without_main = $(filter-out $(dir_object)/main.$(ext_object), $(objects))
objects_test = $(sources_test:$(dir_source)%$(ext_source)=$(dir_object)%$(ext_object))
# dependency files corresponding to sources
dependencies = $(objects:%$(ext_object)=%$(ext_dependency))
dependencies_test = $(objects_test:%$(ext_object)=%$(ext_dependency))
# binary to produce
binary = $(dir_binary)/$(bin_short)
binaries_test = $(objects_test:$(dir_object)%.$(ext_object)=$(dir_binary)%.$(ext_binary))
# logfiles the test binaries print to
logs_test = $(binaries_test:$(dir_binary)/$(dir_test)/%.$(ext_binary)=$(dir_binary)/$(dir_test)/$(dir_log)/%)
# dependencies that are deprecated
deprecated_dependencies = $(filter-out \
$(dependencies), \
$(wildcard $(dir_object)/*.$(ext_dependency)))
# objects that are deprecated
deprecated_objects = $(filter-out \
$(objects), \
$(wildcard $(dir_object)/*.$(ext_object)))
# all deprecated files
deprecated_files = $(deprecated_dependencies) $(deprecated_objects)
.PRECIOUS: $(objects) $(objects_test) $(binaries_test)