-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
99 lines (71 loc) · 2.06 KB
/
Makefile
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
MODULE = textgenapps
SPEC = smartmet-textgenapps
REQUIRES = gdal fmt
include $(shell echo $${PREFIX-/usr})/share/smartmet/devel/makefile.inc
# Default compiler flags
DEFINES = -DUNIX
INCLUDES += \
-I$(includedir)/smartmet
LIBS += $(PREFIX_LDFLAGS) \
-lsmartmet-calculator \
-lsmartmet-textgen \
-lsmartmet-newbase \
-lsmartmet-macgyver \
-L$(libdir)/mysql -lmysqlpp \
$(REQUIRED_LIBS) \
-lboost_iostreams \
-lboost_locale \
-lboost_system \
-lstdc++ -lm
# Compilation directories
vpath %.cpp source main
vpath %.h include
vpath %.o $(objdir)
vpath %.d $(objdir)
# The files to be compiled
HDRS = $(patsubst include/%,%,$(wildcard *.h include/*.h))
MAINSRCS = $(patsubst main/%,%,$(wildcard main/*.cpp))
MAINPROGS = $(MAINSRCS:%.cpp=%)
MAINOBJS = $(MAINSRCS:%.cpp=%.o)
MAINOBJFILES = $(MAINOBJS:%.o=obj/%.o)
SRCS = $(patsubst source/%,%,$(wildcard source/*.cpp))
OBJS = $(SRCS:%.cpp=%.o)
OBJFILES = $(OBJS:%.o=obj/%.o)
INCLUDES := -Iinclude $(INCLUDES)
# For make depend:
ALLSRCS = $(wildcard main/*.cpp source/*.cpp)
.PHONY: test rpm
# The rules
all: objdir $(MAINPROGS)
debug: objdir $(MAINPROGS)
release: objdir $(MAINPROGS)
profile: objdir $(MAINPROGS)
.SECONDEXPANSION:
$(MAINPROGS): % : obj/%.o $(OBJFILES)
$(CXX) $(LDFLAGS) -o $@ obj/[email protected] $(OBJFILES) $(LIBS)
clean:
rm -f $(MAINPROGS) $(OBJFILES) $(MAINOBJFILES)*~ source/*~ include/*~
rm -rf obj/
$(MAKE) -C test $@
format:
clang-format -i -style=file main/*.cpp
install:
mkdir -p $(bindir)
@list='$(MAINPROGS)'; \
for prog in $$list; do \
echo $(INSTALL_PROG) $$prog $(bindir)/$$prog; \
$(INSTALL_PROG) $$prog $(bindir)/$$prog; \
done
test:
cd test && make test
objdir:
@mkdir -p $(objdir)
rpm: clean $(SPEC).spec
rm -f $(SPEC).tar.gz # Clean a possible leftover from previous attempt
tar -czvf $(SPEC).tar.gz --exclude test --exclude-vcs --transform "s,^,$(SPEC)/," *
rpmbuild -tb $(SPEC).tar.gz
rm -f $(SPEC).tar.gz
.SUFFIXES: $(SUFFIXES) .cpp
obj/%.o : %.cpp
$(CXX) $(CFLAGS) $(INCLUDES) -c -MD -MF $(patsubst obj/%.o, obj/%.d, $@) -MT $@ -o $@ $<
-include obj/*.d