forked from nasa/dcapp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
118 lines (100 loc) · 3.46 KB
/
Makefile
File metadata and controls
118 lines (100 loc) · 3.46 KB
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
.NOTPARALLEL:
.PHONY: all prebuild postbuild clean
OSSPEC := $(shell ./dcapp.app/Contents/dcapp-config --osspec)
OSMAJOR := $(shell ./dcapp.app/Contents/dcapp-config --osversion_major)
OBJDIR := $(shell ./dcapp.app/Contents/dcapp-config --objdir)
BINDIR := dcapp.app/Contents/$(OSSPEC)
HEADERS := \
$(wildcard *.hh)
DCAPP_SOURCES := \
animation.cc \
app_main.cc \
comm.cc \
constants.cc \
handle_bezel.cc \
handle_keyboard.cc \
handle_mouse.cc \
handle_utils.cc \
logic_stubs.cc \
report.cc \
tara_funcs.cc \
values.cc \
variables.cc \
xml_data.cc \
xml_parse.cc \
xml_stringsub.cc \
xml_utils.cc
GENHEADER_SOURCES := \
dcapp_genheader.cc \
xml_stringsub.cc \
xml_data.cc \
xml_utils.cc
SUBPACKAGE_CONFIGS := \
osenv/bin/osenv-config \
primitives/bin/primitives-config \
3rdParty/can/bin/CanPlugin-config \
3rdParty/edge/bin/EdgePlugin-config \
3rdParty/hagstrom/bin/HagstromPlugin-config \
3rdParty/trick/bin/TrickPlugin-config \
3rdParty/uei/bin/UeiPlugin-config \
packages/PixelStream/bin/PixelStream-config \
packages/TaraDraw/bin/TaraDraw-config \
packages/RenderLib/bin/RenderLib-config \
packages/basicutils/bin/basicutils-config
CXXFLAGS += -std=c++11 -Wall -Wextra -I.
CXXFLAGS += $(foreach subpackage, $(SUBPACKAGE_CONFIGS), $(shell $(subpackage) --cflags))
LINK_LIBS += $(foreach subpackage, $(SUBPACKAGE_CONFIGS), $(shell $(subpackage) --libs))
COMPDEPENDS := $(foreach subpackage, $(SUBPACKAGE_CONFIGS), $(shell $(subpackage) --compdepends))
LINKDEPENDS := $(foreach subpackage, $(SUBPACKAGE_CONFIGS), $(shell $(subpackage) --linkdepends))
# MacOS does a poor job with the xml2-config tool. Prior to Catalina (10.15), the libs weren't where xml2-config said
# that they would be. Starting with Catalina, the header files aren't where xml2-config says that they should be.
ifeq ($(OSSPEC), MacOS)
ifeq ($(shell test $(OSMAJOR) -gt 18; echo $$?),0)
CXXFLAGS += $(shell xml2-config --cflags)/libxml2
LINK_LIBS += $(shell xml2-config --libs)
else
CXXFLAGS += $(shell xml2-config --cflags)
LINK_LIBS += $(shell xml2-config --exec-prefix=/usr --libs)
endif
else
CXXFLAGS += $(shell xml2-config --cflags)
LINK_LIBS += $(shell xml2-config --libs)
endif
LINK_LIBS += -ldl
ifeq ($(OSSPEC), MacOS)
LINK_LIBS += -framework AppKit
CXXFLAGS += -Wno-deprecated -Wno-deprecated-declarations
else
CXXFLAGS += -D_GNU_SOURCE
LINK_LIBS += -lrt -L/usr/X11R6/lib -lX11 -lXi -lXmu
endif
DCAPP_OBJECTS := $(DCAPP_SOURCES)
DCAPP_OBJECTS := $(foreach obj, $(DCAPP_OBJECTS:.cc=.o), $(obj))
DCAPP_OBJECTS := $(foreach obj, $(patsubst %, $(OBJDIR)/%, $(DCAPP_OBJECTS)), $(obj))
GENHEADER_OBJECTS := $(foreach obj, $(patsubst %.cc, %.o, $(GENHEADER_SOURCES)), $(OBJDIR)/$(obj))
#CXXFLAGS += -DDEBUG
all: prebuild $(BINDIR)/dcapp $(BINDIR)/dcapp_genheader postbuild
$(BINDIR)/dcapp: $(DCAPP_OBJECTS) $(LINKDEPENDS)
mkdir -p $(BINDIR)
$(CXX) $(LDFLAGS) $^ $(LINK_LIBS) -o $@
$(BINDIR)/dcapp_genheader: $(GENHEADER_OBJECTS) $(LINKDEPENDS)
mkdir -p $(BINDIR)
$(CXX) $(LDFLAGS) $^ $(LINK_LIBS) -o $@
$(OBJDIR)/%.o: %.cc $(HEADERS) $(COMPDEPENDS)
mkdir -p $(OBJDIR)
$(CXX) $(CXXFLAGS) -c $< -o $@
prebuild:
${MAKE} -C 3rdParty
${MAKE} -C osenv
${MAKE} -C primitives
${MAKE} -C packages
postbuild: prebuild
${MAKE} -C samples
clean:
${MAKE} -C packages clean
${MAKE} -C 3rdParty clean
${MAKE} -C osenv clean
${MAKE} -C primitives clean
${MAKE} -C samples clean
rm -rf $(OBJDIR)
rm -rf $(BINDIR)