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