Remove the correct temporary directory after having created the
[olsrd.git] / Makefile
1 # The olsr.org Optimized Link-State Routing daemon(olsrd)
2 # Copyright (c) 2004, Andreas T√łnnesen(andreto@olsr.org)
3 # All rights reserved.
4 #
5 # Redistribution and use in source and binary forms, with or without 
6 # modification, are permitted provided that the following conditions 
7 # are met:
8 #
9 # * Redistributions of source code must retain the above copyright 
10 #   notice, this list of conditions and the following disclaimer.
11 # * Redistributions in binary form must reproduce the above copyright 
12 #   notice, this list of conditions and the following disclaimer in 
13 #   the documentation and/or other materials provided with the 
14 #   distribution.
15 # * Neither the name of olsr.org, olsrd nor the names of its 
16 #   contributors may be used to endorse or promote products derived 
17 #   from this software without specific prior written permission.
18 #
19 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
20 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
21 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
22 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
23 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
24 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
25 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
26 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
27 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
28 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
29 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
30 # POSSIBILITY OF SUCH DAMAGE.
31 #
32 # Visit http://www.olsr.org for more information.
33 #
34 # If you find this software useful feel free to make a donation
35 # to the project. For more information see the website or contact
36 # the copyright holders.
37 #
38 # $Id: Makefile,v 1.28 2004/11/28 00:13:27 tlopatic Exp $
39
40 #OS ?=          linux
41 #OS =           fbsd
42 #OS =           win32
43 #OS =           osx
44
45 CC ?=           gcc
46
47 PREFIX ?=
48
49 STRIP ?=        strip
50
51 BISON ?=        bison
52 FLEX ?=         flex
53 CFGDIR =        src/cfgparser
54
55 DEPFILE =       .depend
56 DEPBAK =        .depend.bak
57 DEPEND =        makedepend -f $(DEPFILE)
58
59 DEFINES =       -DUSE_LINK_QUALITY
60 INCLUDES =      -I src
61
62 all:            olsrd
63
64 SRCS =          $(wildcard src/*.c) \
65                 $(CFGDIR)/oparse.c $(CFGDIR)/oscan.c $(CFGDIR)/olsrd_conf.c
66
67 HDRS =          $(wildcard src/*.h) \
68                 $(CFGDIR)/oparse.h $(CFGDIR)/olsrd_conf.h
69
70 OBJS =          $(patsubst %.c,%.o,$(wildcard src/*.c)) \
71                 $(CFGDIR)/oparse.o $(CFGDIR)/oscan.o $(CFGDIR)/olsrd_conf.o
72
73 ifeq ($(OS), linux)
74
75 SRCS +=         $(wildcard src/linux/*.c) $(wildcard src/unix/*.c)
76
77 HDRS +=         $(wildcard src/linux/*.h) $(wildcard src/unix/*.h)
78
79 OBJS +=         $(patsubst %.c,%.o,$(wildcard src/linux/*.c)) \
80                 $(patsubst %.c,%.o,$(wildcard src/unix/*.c))
81
82 DEFINES +=      -Dlinux
83
84 CFLAGS ?=       -Wall -Wmissing-prototypes -Wstrict-prototypes \
85                 -O2 -g #-pg -DDEBUG #-march=i686
86
87 LIBS =          -lm -ldl
88
89
90 $(DEPFILE):     $(SRCS) $(HDRS)
91                 @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
92                 $(DEPEND) -Y $(INCLUDES) $(DEFINES) $(SRCS) >/dev/null 2>&1
93
94 olsrd:          $(OBJS)
95                 $(CC) -o $@ $(OBJS) $(LIBS)
96
97 else
98 ifeq ($(OS), fbsd)
99
100 SRCS +=         $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
101
102 HDRS +=         $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
103
104 OBJS +=         $(patsubst %.c,%.o,$(wildcard src/bsd/*.c)) \
105                 $(patsubst %.c,%.o,$(wildcard src/unix/*.c))
106
107 CFLAGS ?=       -Wall -Wmissing-prototypes -Wstrict-prototypes \
108                 -O2 -g
109
110 LIBS =          -lm
111
112 $(DEPFILE):     $(SRCS) $(HDRS)
113                 @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
114                 $(DEPEND) $(INCLUDES) $(DEFINES) $(SRCS)
115
116 olsrd:          $(OBJS)
117                 $(CC) -o $@ $(OBJS) $(LIBS)
118
119 else
120 ifeq ($(OS), win32)
121
122 SRCS +=         $(wildcard src/win32/*.c)
123
124 HDRS +=         $(wildcard src/win32/*.h)
125
126 OBJS +=         $(patsubst %.c,%.o,$(wildcard src/win32/*.c))
127
128 INCLUDES +=     -Isrc/win32
129
130 DEFINES +=      -DWIN32
131
132 CFLAGS ?=       -Wall -Wmissing-prototypes \
133                 -Wstrict-prototypes -mno-cygwin -O2 -g
134
135 LIBS =          -mno-cygwin -lws2_32 -liphlpapi
136
137 $(DEPFILE):     $(SRCS) $(HDRS)
138                 @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
139                 $(DEPEND) $(INCLUDES) $(DEFINES) $(SRCS) >/dev/null 2>&1
140
141 olsrd:          $(OBJS)
142                 $(CC) -o $@ $(OBJS) $(LIBS)
143
144 VERS =          0.4.8
145
146 olsr-${VERS}.zip:       gui/win32/Main/Release/Switch.exe \
147                 gui/win32/Shim/Release/Shim.exe \
148                 olsrd.exe \
149                 src/cfgparser/olsrd_cfgparser.dll \
150                 README-WIN32.txt \
151                 gui/win32/Inst/linux-manual.txt \
152                 files/olsrd.conf.default.win32 \
153                 gui/win32/Main/Default.olsr \
154                 lib/dot_draw/olsrd_dot_draw.dll
155                 rm -rf ${TEMP}/olsr-${VERS}
156                 rm -f ${TEMP}/olsr-${VERS}.zip
157                 rm -f olsr-${VERS}.zip
158                 mkdir ${TEMP}/olsr-${VERS}
159                 cp gui/win32/Main/Release/Switch.exe ${TEMP}/olsr-${VERS}
160                 cp gui/win32/Shim/Release/Shim.exe ${TEMP}/olsr-${VERS}
161                 cp olsrd.exe ${TEMP}/olsr-${VERS}
162                 cp src/cfgparser/olsrd_cfgparser.dll ${TEMP}/olsr-${VERS}
163                 cp README-WIN32.txt ${TEMP}/olsr-${VERS}
164                 cp gui/win32/Inst/linux-manual.txt ${TEMP}/olsr-${VERS}
165                 cp files/olsrd.conf.default.win32 ${TEMP}/olsr-${VERS}/olsrd.conf
166                 cp gui/win32/Main/Default.olsr ${TEMP}/olsr-${VERS}
167                 cp lib/dot_draw/olsrd_dot_draw.dll ${TEMP}/olsr-${VERS}
168                 cd ${TEMP}; echo y | cacls olsr-${VERS} /T /G Everyone:F
169                 cd ${TEMP}; zip -q -r olsr-${VERS}.zip olsr-${VERS}
170                 cp ${TEMP}/olsr-${VERS}.zip .
171                 rm -rf ${TEMP}/olsr-${VERS}
172                 rm -f ${TEMP}/olsr-${VERS}.zip
173
174 olsr-${VERS}-setup.exe: gui/win32/Main/Release/Switch.exe \
175                 gui/win32/Shim/Release/Shim.exe \
176                 olsrd.exe \
177                 src/cfgparser/olsrd_cfgparser.dll \
178                 README-WIN32.txt \
179                 gui/win32/Inst/linux-manual.txt \
180                 files/olsrd.conf.default.win32 \
181                 gui/win32/Main/Default.olsr \
182                 lib/dot_draw/olsrd_dot_draw.dll \
183                 gui/win32/Inst/installer.nsi
184                 rm -f olsr-setup.exe
185                 rm -f olsr-${VERS}-setup.exe
186                 C:/Program\ Files/NSIS/makensis gui\win32\Inst\installer.nsi
187                 mv olsr-setup.exe olsr-${VERS}-setup.exe
188
189 else
190 ifeq ($(OS), osx)
191
192 SRCS +=         $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
193
194 HDRS +=         $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
195
196 OBJS +=         $(patsubst %.c,%.o,$(wildcard src/bsd/*.c)) \
197                 $(patsubst %.c,%.o,$(wildcard src/unix/*.c))
198
199 DEFINES +=      -D__MacOSX__
200
201 CFLAGS ?=       -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -g 
202
203 LIBS =          -lm -ldl
204
205 $(DEPFILE):     $(SRCS) $(HDRS)
206                 @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
207                 $(DEPEND) $(INCLUDES) $(DEFINES) $(SRCS)
208
209 olsrd:          $(OBJS)
210                 $(CC) -o $@ $(OBJS) $(LIBS)
211
212 else
213
214 olsrd:
215         @echo
216         @echo '***** olsr.org olsr daemon Make ****'
217         @echo ' You must provide a valid target OS '
218         @echo ' by setting the OS variable! Valid  '
219         @echo ' target OSes are:                   '
220         @echo ' ---------------------------------  '
221         @echo ' linux - GNU/Linux                  '
222         @echo ' win32 - MS Windows                 '
223         @echo ' fbsd  - FreeBSD                    '
224         @echo ' osx   - Mac OS X                   '
225         @echo ' ---------------------------------  '
226         @echo ' Example - build for windows:       '
227         @echo ' make OS=win32                      '
228         @echo ' If you are developing olsrd code,  '
229         @echo ' exporting the OS variable might    '
230         @echo ' be a good idea :-) Have fun!       '
231         @echo '************************************'
232         @echo
233 endif
234 endif
235 endif
236 endif
237
238 override CFLAGS += $(INCLUDES) $(DEFINES)
239 export CFLAGS
240
241 depend:         $(DEPFILE)
242
243 $(CFGDIR)/oparse.c: \
244                 $(CFGDIR)/oparse.y $(CFGDIR)/olsrd_conf.h
245                 $(BISON) -d -o$(CFGDIR)/oparse.c $(CFGDIR)/oparse.y
246
247 $(CFGDIR)/oparse.h: \
248                 $(CFGDIR)/oparse.c
249
250 $(CFGDIR)/oscan.c: \
251                 $(CFGDIR)/oscan.lex $(CFGDIR)/oparse.h $(CFGDIR)/olsrd_conf.h
252                 $(FLEX) -o$(CFGDIR)/oscan.c $(CFGDIR)/oscan.lex
253
254 libs: 
255                 for i in lib/*; do \
256                         $(MAKE) -C $$i; \
257                 done; 
258
259 clean_libs: 
260                 for i in lib/*; do \
261                         $(MAKE) -C $$i clean; \
262                 done; 
263
264 .PHONY:         clean
265
266 clean:
267                 rm -f $(OBJS)
268
269 uberclean:
270                 rm -f $(OBJS) $(DEPFILE) $(DEPBAK)
271                 rm -f $(CFGDIR)/oscan.c $(CFGDIR)/oparse.h $(CFGDIR)/oparse.c
272                 rm -f olsrd olsrd.exe
273                 rm -f src/*~ src/linux/*~ src/unix/*~ src/win32/*~
274                 rm -f src/bsd/*~ src/cfgparser/*~
275
276 install_libs:
277                 for i in lib/*; do \
278                         $(MAKE) -C $$i LIBDIR=$(PREFIX)/usr/lib install; \
279                 done;   
280
281 install_bin:
282                 $(STRIP) olsrd
283                 install -D -m 755 olsrd $(PREFIX)/usr/sbin/olsrd
284
285 install:        install_bin
286                 @echo olsrd uses the configfile $(PREFIX)/etc/olsr.conf
287                 @echo a default configfile. A sample configfile
288                 @echo can be installed
289                 mkdir -p $(PREFIX)/etc
290                 cp -i files/olsrd.conf.default $(PREFIX)/etc/olsrd.conf
291                 @echo -------------------------------------------
292                 @echo Edit $(PREFIX)/etc/olsrd.conf before running olsrd!!
293                 @echo -------------------------------------------
294                 mkdir -p $(PREFIX)/usr/share/man/man8/
295                 cp files/olsrd.8.gz $(PREFIX)/usr/share/man/man8/olsrd.8.gz
296
297 sinclude        $(DEPFILE)
298