OSDN Git Service

0b079af1a54e5a0cae9631f2b059663fe208e3da
[alstede/alstede.git] / Makefile
1 #
2 # Environment variable : NDEBUG: 1: Release mode
3 #                                (null): Debug mode
4 #
5
6 PROGRAM := alstede
7
8 SOURCES := \
9                 alstede.cpp
10
11 OBJECTS = $(subst .cpp,.o,$(SOURCES))
12
13 DEPENDENCIES = $(subst .o,.d,$(OBJECTS))
14
15 CLEANEES := \
16                 $(OBJECTS) \
17                 $(PROGRAM) \
18                 $(DEPENDENCIES) \
19                 core.*
20
21 CXX := g++
22
23 CC := g++
24
25 LDFLAGS := \
26                 -L$(HOME)/lib
27
28 LOADLIBES := \
29                 -lboost_filesystem \
30                 -lislib
31
32 CXXFLAGS := \
33                 -D_GNU_SOURCE \
34                 -fno-dollars-in-identifiers \
35                 -Wall \
36                 -Wshadow \
37                 -Wcast-qual \
38                 -Wcast-align \
39                 -Wwrite-strings \
40                 -Wconversion \
41                 -Wredundant-decls \
42                 -Woverloaded-virtual \
43                 -Winline \
44                 -x c++
45
46 ifdef NDEBUG
47
48 CXXFLAGS := \
49                 $(CXXFLAGS) \
50                 -O3 \
51                 -DNDEBUG
52
53 else
54
55 CXXFLAGS := \
56                 $(CXXFLAGS) \
57                 -g
58
59 endif
60
61 ifdef DOES_NOT_USE_THROW
62
63 CXXFLAGS := \
64                 $(CXXFLAGS) \
65                 -DDOES_NOT_USE_THROW_
66
67 endif
68
69 ifdef DOES_NOT_USE_THROW_IF
70
71 CXXFLAGS := \
72                 $(CXXFLAGS) \
73                 -DDOES_NOT_USE_THROW_IF
74
75 endif
76
77 CPPFLAGS := \
78                 -I$(HOME)/islib \
79                 -I$(HOME)/site01
80
81 TARGET_ARCH :=
82
83 STRIP := strip
84
85 STRIPFLAGS := \
86                 -s
87
88 INSTALL := install
89
90 INSTALLFLAGS :=
91
92 INSTALLPATH := ~/bin
93
94 MV := mv
95
96 MVFLAGS :=
97
98 RM := rm
99
100 RMFLAGS := \
101                 -f
102
103 SED := sed
104
105 .PHONY: build
106
107 build: $(PROGRAM)
108
109 $(PROGRAM): $(OBJECTS)
110         $(LINK.o) $^ $(LOADLIBES) $(OUTPUT_OPTION)
111
112 .PHONY: clean
113
114 clean:
115         $(RM) $(RMFLAGS) $(CLEANEES)
116
117 .PHONY: strip
118
119 strip: $(PROGRAM)
120         $(STRIP) $(STRIPFLAGS) $(PROGRAM)
121
122 .PHONY: install
123
124 install: $(PROGRAM)
125         $(INSTALL) $(INSTALLFLAGS) $(PROGRAM) $(INSTALLPATH)
126
127 ifneq "$(MAKECMDGOALS)" "clean"
128
129 include $(DEPENDENCIES)
130
131 endif
132
133 %.d: %.cpp
134         $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -M $< | \
135         $(SED) 's,\($(notdir $*)\.o\) *:,$(dir $@)\1 $@: ,' >$@.temporary
136         $(MV) $@.temporary $@
137
138 #
139 # end of file
140 #