Installation on Windows now offers an ETX and an RFC configuration.
[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.54 2005/03/31 18:19:54 tlopatic Exp $
39
40 VERS =          0.4.9
41
42 CC ?=           gcc
43 STRIP ?=        strip
44 BISON ?=        bison
45 FLEX ?=         flex
46
47 CCWARNINGS = -Wall -Wmissing-prototypes -Wstrict-prototypes \
48              -Wmissing-declarations -Wsign-compare
49
50 INSTALL_PREFIX ?=
51
52 INCLUDES =      -Isrc
53
54 DEPFILE =       .depend
55
56 SRCS =          $(wildcard src/*.c)
57 HDRS =          $(wildcard src/*.h)
58
59 CFGDIR =        src/cfgparser
60 CFGOBJS =       $(CFGDIR)/oscan.o $(CFGDIR)/oparse.o $(CFGDIR)/olsrd_conf.o
61 CFGDEPS =       $(wildcard $(CFGDIR)/*.c) $(wildcard $(CFGDIR)/*.h) $(CFGDIR)/oparse.y $(CFGDIR)/oscan.lex
62
63 TAGCMD ?=       etags   
64 TAGFILE ?=      src/TAGS
65
66 ifeq ($(OS), Windows_NT)
67 OS =            win32
68 endif
69
70 ifeq ($(OS), linux)
71
72 SRCS +=         $(wildcard src/linux/*.c) $(wildcard src/unix/*.c)
73 HDRS +=         $(wildcard src/linux/*.h) $(wildcard src/unix/*.h)
74 DEFINES =       -Dlinux
75 CFLAGS ?=       $(CCWARNINGS) -O2 -g #-DDEBUG #-pg #-march=i686
76 LIBS =          -lm -ldl #-pg
77 MAKEDEPEND =    makedepend -f $(DEPFILE) $(DEFINES) -Y $(INCLUDES) $(SRCS) >/dev/null 2>&1
78
79 all:     cfgparser olsrd
80 install: install_olsrd
81
82 else
83 ifeq ($(OS), fbsd)
84
85 SRCS +=         $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
86 HDRS +=         $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
87 CFLAGS ?=       $(CCWARNINGS) -O2 -g
88 LIBS =          -lm
89 MAKEDEPEND =    makedepend -f $(DEPFILE) -D__FreeBSD__ $(INCLUDES) $(SRCS)
90
91 all:     cfgparser olsrd
92 install: install_olsrd
93
94 else
95 ifeq ($(OS), fbsd-ll)
96
97 SRCS +=         $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
98 HDRS +=         $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
99 CFLAGS ?=       -Wall -Wmissing-prototypes -O2 -g -DSPOOF -I/usr/local/include
100 LIBS =          -lm -L/usr/local/lib -lnet
101 MAKEDEPEND =    makedepend -f $(DEPFILE) -D__FreeBSD__ $(INCLUDES) $(SRCS)
102
103 all:     cfgparser olsrd
104 install: install_olsrd
105
106 else
107 ifeq ($(OS), nbsd)
108
109 SRCS +=         $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
110 HDRS +=         $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
111 CFLAGS ?=       $(CCWARNINGS) -O2 -g
112 LIBS =          -lm
113 MAKEDEPEND =    makedepend -f $(DEPFILE) -D__NetBSD__ $(INCLUDES) $(SRCS)
114
115 all:     cfgparser olsrd
116 install: install_olsrd
117
118 else
119 ifeq ($(OS), osx)
120
121 SRCS +=         $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
122 HDRS +=         $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
123 DEFINES =       -D__MacOSX__
124 CFLAGS ?=       $(CCWARNINGS) -O2 -g 
125 LIBS =          -lm -ldl
126 MAKEDEPEND =    makedepend -f $(DEPFILE) $(DEFINES) $(INCLUDES) $(SRCS)
127
128 all:     cfgparser olsrd
129 install: install_olsrd
130
131 else
132 ifeq ($(OS), win32)
133
134 SRCS +=         $(wildcard src/win32/*.c)
135 HDRS +=         $(wildcard src/win32/*.h)
136 INCLUDES +=     -Isrc/win32
137 DEFINES =       -DWIN32
138 CFLAGS ?=       $(CCWARNINGS) -mno-cygwin -O2 -g
139 LIBS =          -mno-cygwin -lws2_32 -liphlpapi
140 MAKEDEPEND =    makedepend -f $(DEPFILE) $(DEFINES) $(INCLUDES) $(SRCS)
141
142 all:     cfgparser olsrd
143 install: install_olsrd
144
145 olsr-${VERS}.zip:       gui/win32/Main/Release/Switch.exe \
146                 gui/win32/Shim/Release/Shim.exe \
147                 olsrd.exe \
148                 src/cfgparser/olsrd_cfgparser.dll \
149                 README \
150                 README-Link-Quality.html \
151                 gui/win32/Inst/linux-manual.txt \
152                 files/olsrd.conf.win32.rfc \
153                 files/olsrd.conf.win32.lq \
154                 gui/win32/Main/RFC-Default.olsr \
155                 gui/win32/Main/LQ-Default.olsr \
156                 lib/dot_draw/olsrd_dot_draw.dll \
157                 lib/nameservice/olsrd_nameservice.dll \
158                 lib/httpinfo/olsrd_httpinfo.dll
159                 $(STRIP) olsrd.exe
160                 $(STRIP) src/cfgparser/olsrd_cfgparser.dll
161                 $(STRIP) lib/dot_draw/olsrd_dot_draw.dll
162                 $(STRIP) lib/nameservice/olsrd_nameservice.dll
163                 $(STRIP) lib/httpinfo/olsrd_httpinfo.dll
164                 rm -rf ${TEMP}/olsr-${VERS}
165                 rm -f ${TEMP}/olsr-${VERS}.zip
166                 rm -f olsr-${VERS}.zip
167                 mkdir ${TEMP}/olsr-${VERS}
168                 cp gui/win32/Main/Release/Switch.exe ${TEMP}/olsr-${VERS}
169                 cp gui/win32/Shim/Release/Shim.exe ${TEMP}/olsr-${VERS}
170                 cp olsrd.exe ${TEMP}/olsr-${VERS}
171                 cp src/cfgparser/olsrd_cfgparser.dll ${TEMP}/olsr-${VERS}
172                 cp README ${TEMP}/olsr-${VERS}
173                 cp README-Link-Quality.html ${TEMP}/olsr-${VERS}
174                 cp gui/win32/Inst/linux-manual.txt ${TEMP}/olsr-${VERS}
175                 cp files/olsrd.conf.win32.rfc ${TEMP}/olsr-${VERS}/olsrd.conf.rfc
176                 cp files/olsrd.conf.win32.lq ${TEMP}/olsr-${VERS}/olsrd.conf.lq
177                 cp gui/win32/Main/RFC-Default.olsr ${TEMP}/olsr-${VERS}
178                 cp gui/win32/Main/LQ-Default.olsr ${TEMP}/olsr-${VERS}/Default.olsr
179                 cp lib/dot_draw/olsrd_dot_draw.dll ${TEMP}/olsr-${VERS}
180                 cp lib/nameservice/olsrd_nameservice.dll ${TEMP}/olsr-${VERS}
181                 cp lib/httpinfo/olsrd_httpinfo.dll ${TEMP}/olsr-${VERS}
182                 cd ${TEMP}; echo y | cacls olsr-${VERS} /T /G Everyone:F
183                 cd ${TEMP}; zip -q -r olsr-${VERS}.zip olsr-${VERS}
184                 cp ${TEMP}/olsr-${VERS}.zip .
185                 rm -rf ${TEMP}/olsr-${VERS}
186                 rm -f ${TEMP}/olsr-${VERS}.zip
187
188 olsr-${VERS}-setup.exe: gui/win32/Main/Release/Switch.exe \
189                 gui/win32/Shim/Release/Shim.exe \
190                 olsrd.exe \
191                 src/cfgparser/olsrd_cfgparser.dll \
192                 README \
193                 README-Link-Quality.html \
194                 gui/win32/Inst/linux-manual.txt \
195                 files/olsrd.conf.win32.rfc \
196                 files/olsrd.conf.win32.lq \
197                 gui/win32/Main/RFC-Default.olsr \
198                 gui/win32/Main/LQ-Default.olsr \
199                 lib/dot_draw/olsrd_dot_draw.dll \
200                 lib/nameservice/olsrd_nameservice.dll \
201                 lib/httpinfo/olsrd_httpinfo.dll \
202                 gui/win32/Inst/installer.nsi
203                 $(STRIP) olsrd.exe
204                 $(STRIP) src/cfgparser/olsrd_cfgparser.dll
205                 $(STRIP) lib/dot_draw/olsrd_dot_draw.dll
206                 $(STRIP) lib/nameservice/olsrd_nameservice.dll
207                 $(STRIP) lib/httpinfo/olsrd_httpinfo.dll
208                 rm -f olsr-setup.exe
209                 rm -f olsr-${VERS}-setup.exe
210                 C:/Program\ Files/NSIS/makensis gui\win32\Inst\installer.nsi
211                 mv olsr-setup.exe olsr-${VERS}-setup.exe
212
213 else
214 ifeq ($(OS), wince)
215
216 SRCS +=         $(wildcard src/win32/*.c)
217 HDRS +=         $(wildcard src/win32/*.h)
218 INCLUDES +=     -Isrc/win32 -Isrc/win32/ce
219 DEFINES =       -DWIN32 -DWINCE
220 CFLAGS ?=       $(CCWARNINGS) -O2 -g
221 LIBS =          -lwinsock -liphlpapi
222 MAKEDEPEND =    makedepend -f $(DEPFILE) $(DEFINES) $(INCLUDES) $(SRCS)
223
224 else
225
226 all:    help
227 install:help
228 endif
229 endif
230 endif
231 endif
232 endif
233 endif
234 endif
235
236 ifneq ($(NODEBUG), )
237 CFLAGS += -DNODEBUG
238 endif
239
240 OBJS = $(patsubst %.c,%.o,$(SRCS))
241 override CFLAGS += $(INCLUDES) $(DEFINES)
242 export CFLAGS
243
244
245 olsrd:          $(OBJS) $(CFGOBJS)
246                 $(CC) -o $@ $(OBJS) $(CFGOBJS) $(LIBS) 
247
248 $(DEPFILE):     $(SRCS) $(HDRS)
249 ifdef MAKEDEPEND
250                 @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
251                 $(MAKEDEPEND)
252 endif
253
254 cfgparser:      $(CFGDEPS)
255                 $(MAKE) -C $(CFGDIR)
256
257 $(CFGOBJS):
258                 $(MAKE) -C $(CFGDIR)
259
260 .PHONY: help libs clean_libs clean uberclean install_libs install_bin install
261
262 help:
263         @echo
264         @echo '***** olsr.org olsr daemon Make ****'
265         @echo ' You must provide a valid target OS '
266         @echo ' by setting the OS variable! Valid  '
267         @echo ' target OSes are:                   '
268         @echo ' ---------------------------------  '
269         @echo ' linux - GNU/Linux                  '
270         @echo ' win32 - MS Windows                 '
271         @echo ' fbsd  - FreeBSD                    '
272         @echo ' nbsd  - NetBSD                     '
273         @echo ' osx   - Mac OS X                   '
274         @echo ' ---------------------------------  '
275         @echo ' Example - build for windows:       '
276         @echo ' make OS=win32                      '
277         @echo ' If you are developing olsrd code,  '
278         @echo ' exporting the OS variable might    '
279         @echo ' be a good idea :-) Have fun!       '
280         @echo '************************************'
281         @echo
282
283 clean:
284                 rm -f $(OBJS) olsrd olsrd.exe
285                 $(MAKE) -C src/cfgparser clean
286
287 uberclean:      clean clean_libs
288                 rm -f $(DEPFILE) $(DEPFILE).bak *~
289                 rm -f src/*[o~] src/linux/*[o~] src/unix/*[o~] src/win32/*[o~]
290                 rm -f src/bsd/*[o~] 
291                 $(MAKE) -C src/cfgparser uberclean
292
293 install_bin:
294                 $(STRIP) olsrd
295                 mkdir -p $(INSTALL_PREFIX)/usr/sbin
296                 install -m 755 olsrd $(INSTALL_PREFIX)/usr/sbin
297
298 install_olsrd:  install_bin
299                 @echo olsrd uses the configfile $(INSTALL_PREFIX)/etc/olsr.conf
300                 @echo a default configfile. A sample configfile
301                 @echo can be installed
302                 mkdir -p $(INSTALL_PREFIX)/etc
303                 cp -i files/olsrd.conf.default $(INSTALL_PREFIX)/etc/olsrd.conf
304                 @echo -------------------------------------------
305                 @echo Edit $(INSTALL_PREFIX)/etc/olsrd.conf before running olsrd!!
306                 @echo -------------------------------------------
307                 @echo Installing manpages olsrd\(8\) and olsrd.conf\(5\)
308                 mkdir -p $(INSTALL_PREFIX)/usr/share/man/man8/
309                 cp files/olsrd.8.gz $(INSTALL_PREFIX)/usr/share/man/man8/olsrd.8.gz
310                 mkdir -p $(INSTALL_PREFIX)/usr/share/man/man5/
311                 cp files/olsrd.conf.5.gz $(INSTALL_PREFIX)/usr/share/man/man5/olsrd.conf.5.gz
312
313 #
314 # PLUGINS
315 #
316
317 libs: 
318                 for i in lib/*; do \
319                         $(MAKE) -C $$i; \
320                 done; 
321
322 clean_libs: 
323                 for i in lib/*; do \
324                         $(MAKE) -C $$i clean; \
325                 done; 
326
327 install_libs:
328                 for i in lib/*; do \
329                         $(MAKE) -C $$i LIBDIR=$(INSTALL_PREFIX)/usr/lib install; \
330                 done;   
331
332 httpinfo:
333                 $(MAKE) -C lib/httpinfo clean
334                 $(MAKE) -C lib/httpinfo 
335                 $(MAKE) -C lib/httpinfo install 
336
337 dot_draw:
338                 $(MAKE) -C lib/dot_draw clean
339                 $(MAKE) -C lib/dot_draw install
340
341 nameservice:
342                 $(MAKE) -C lib/nameservice clean
343                 $(MAKE) -C lib/nameservice install
344
345 dyn_gw:
346                 $(MAKE) -C lib/dyn_gw clean
347                 $(MAKE) -C lib/dyn_gw
348                 $(MAKE) -C lib/dyn_gw install
349
350 powerinfo:
351                 $(MAKE) -C lib/powerinfo clean
352                 $(MAKE) -C lib/powerinfo 
353                 $(MAKE) -C lib/powerinfo install
354
355 secure:
356                 $(MAKE) -C lib/secure clean
357                 $(MAKE) -C lib/secure
358                 $(MAKE) -C lib/secure install
359
360
361 tags:
362                 $(TAGCMD) -o $(TAGFILE) $(SRCS) $(HDRS) $(wildcard src/cfgparser/*.c) $(wildcard src/cfgparser/*.h)
363
364 sinclude        $(DEPFILE)