612b41235a768c4779f106e7ab5adf905ba53d81
[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.58 2005/05/15 17:51:30 kattemat 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 INCLUDES =      -Isrc
51
52 DEPFILE =       .depend
53
54 SRCS =          $(wildcard src/*.c)
55 HDRS =          $(wildcard src/*.h)
56
57 CFGDIR =        src/cfgparser
58 CFGOBJS =       $(CFGDIR)/oscan.o $(CFGDIR)/oparse.o $(CFGDIR)/olsrd_conf.o
59 CFGDEPS =       $(wildcard $(CFGDIR)/*.c) $(wildcard $(CFGDIR)/*.h) $(CFGDIR)/oparse.y $(CFGDIR)/oscan.lex
60
61 TAGCMD ?=       etags   
62 TAGFILE ?=      src/TAGS
63
64 ifeq ($(OS), Windows_NT)
65 OS =            win32
66 endif
67
68 ifeq ($(OS), linux)
69
70 #
71 # LINUX SPECIFIC CONFIGURATION
72 #
73
74 INSTALL_PREFIX ?=
75
76 SRCS +=         $(wildcard src/linux/*.c) $(wildcard src/unix/*.c)
77 HDRS +=         $(wildcard src/linux/*.h) $(wildcard src/unix/*.h)
78 DEFINES =       -Dlinux
79 CFLAGS ?=       $(CCWARNINGS) -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 LIBDIR =        $(INSTALL_PREFIX)/usr/lib
83
84 all:     cfgparser olsrd
85 install: install_olsrd
86
87 else
88 ifeq ($(OS), fbsd)
89
90 #
91 # FREEBSD SPECIFIC CONFIGURATION
92 #
93
94 LOCALBASE?=     /usr/local
95 INSTALL_PREFIX?= $(LOCALBASE)
96 CFGFILE?=       $(INSTALL_PREFIX)/etc/olsrd.conf
97
98 SRCS +=         $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
99 HDRS +=         $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
100 CFLAGS +=       -DOLSRD_GLOBAL_CONF_FILE=\"$(CFGFILE)\"
101 LIBS =          -lm
102 MAKEDEPEND =    makedepend -f $(DEPFILE) -D__FreeBSD__ $(INCLUDES) $(SRCS)
103 LIBDIR =        $(INSTALL_PREFIX)/lib
104
105 all:     cfgparser olsrd
106 install: install_olsrd
107
108 else
109 ifeq ($(OS), fbsd-ll)
110
111 #
112 # FREEBSD/LIBNET SPECIFIC CONFIGURATION
113 #
114
115 LOCALBASE?=     /usr/local
116 INSTALL_PREFIX?= $(LOCALBASE)
117 CFGFILE?=       $(INSTALL_PREFIX)/etc/olsrd.conf
118
119 SRCS +=         $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
120 HDRS +=         $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
121 CFLAGS +=       -DOLSRD_GLOBAL_CONF_FILE=\"${CFGFILE}\"  -DSPOOF -I${LOCALBASE}/include
122 LIBS =          -lm -L${LOCALBASE}/lib -lnet
123 MAKEDEPEND =    makedepend -f $(DEPFILE) -D__FreeBSD__ $(INCLUDES) $(SRCS)
124 LIBDIR =        $(INSTALL_PREFIX)/lib
125
126 all:     cfgparser olsrd
127 install: install_olsrd
128
129 else
130 ifeq ($(OS), nbsd)
131
132 #
133 # NETBSD SPECIFIC CONFIGURATION
134 #
135
136 INSTALL_PREFIX ?=
137
138 SRCS +=         $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
139 HDRS +=         $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
140 CFLAGS ?=       $(CCWARNINGS) -O2 -g
141 LIBS =          -lm
142 MAKEDEPEND =    makedepend -f $(DEPFILE) -D__NetBSD__ $(INCLUDES) $(SRCS)
143
144 all:     cfgparser olsrd
145 install: install_olsrd
146
147 else
148 ifeq ($(OS), obsd)
149
150 #
151 # OPENBSD SPECIFIC CONFIGURATION
152 #
153
154 INSTALL_PREFIX ?=
155
156 SRCS +=         $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
157 HDRS +=         $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
158 CFLAGS ?=       $(CCWARNINGS) -O2 -g
159 LIBS =          -lm
160 MAKEDEPEND =    makedepend -f $(DEPFILE) -D__OpenBSD__ $(INCLUDES) $(SRCS)
161
162 all:     cfgparser olsrd
163 install: install_olsrd
164
165 else
166 ifeq ($(OS), osx)
167
168 #
169 # MACOSX SPECIFIC CONFIGURATION
170 #
171
172 INSTALL_PREFIX ?=
173
174 SRCS +=         $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
175 HDRS +=         $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
176 DEFINES =       -D__MacOSX__
177 CFLAGS ?=       $(CCWARNINGS) -O2 -g 
178 LIBS =          -lm -ldl
179 MAKEDEPEND =    makedepend -f $(DEPFILE) $(DEFINES) $(INCLUDES) $(SRCS)
180
181 all:     cfgparser olsrd
182 install: install_olsrd
183
184 else
185 ifeq ($(OS), win32)
186
187 #
188 # WINDOWS32 SPECIFIC CONFIGURATION
189 #
190
191 INSTALL_PREFIX ?=
192
193 SRCS +=         $(wildcard src/win32/*.c)
194 HDRS +=         $(wildcard src/win32/*.h)
195 INCLUDES +=     -Isrc/win32
196 DEFINES =       -DWIN32
197 CFLAGS ?=       $(CCWARNINGS) -mno-cygwin -O2 -g
198 LIBS =          -mno-cygwin -lws2_32 -liphlpapi
199 MAKEDEPEND =    makedepend -f $(DEPFILE) $(DEFINES) $(INCLUDES) $(SRCS)
200 LIBDIR =        $(INSTALL_PREFIX)/usr/lib
201
202 all:     cfgparser olsrd
203 install: install_olsrd
204
205 olsr-${VERS}.zip:       gui/win32/Main/Release/Switch.exe \
206                 gui/win32/Shim/Release/Shim.exe \
207                 olsrd.exe \
208                 src/cfgparser/olsrd_cfgparser.dll \
209                 README \
210                 README-Link-Quality.html \
211                 gui/win32/Inst/linux-manual.txt \
212                 files/olsrd.conf.win32.rfc \
213                 files/olsrd.conf.win32.lq \
214                 gui/win32/Main/RFC-Default.olsr \
215                 gui/win32/Main/LQ-Default.olsr \
216                 lib/dot_draw/olsrd_dot_draw.dll \
217                 lib/nameservice/olsrd_nameservice.dll \
218                 lib/httpinfo/olsrd_httpinfo.dll
219                 $(STRIP) olsrd.exe
220                 $(STRIP) src/cfgparser/olsrd_cfgparser.dll
221                 $(STRIP) lib/dot_draw/olsrd_dot_draw.dll
222                 $(STRIP) lib/nameservice/olsrd_nameservice.dll
223                 $(STRIP) lib/httpinfo/olsrd_httpinfo.dll
224                 rm -rf ${TEMP}/olsr-${VERS}
225                 rm -f ${TEMP}/olsr-${VERS}.zip
226                 rm -f olsr-${VERS}.zip
227                 mkdir ${TEMP}/olsr-${VERS}
228                 cp gui/win32/Main/Release/Switch.exe ${TEMP}/olsr-${VERS}
229                 cp gui/win32/Shim/Release/Shim.exe ${TEMP}/olsr-${VERS}
230                 cp olsrd.exe ${TEMP}/olsr-${VERS}
231                 cp src/cfgparser/olsrd_cfgparser.dll ${TEMP}/olsr-${VERS}
232                 cp README ${TEMP}/olsr-${VERS}
233                 cp README-Link-Quality.html ${TEMP}/olsr-${VERS}
234                 cp gui/win32/Inst/linux-manual.txt ${TEMP}/olsr-${VERS}
235                 cp files/olsrd.conf.win32.rfc ${TEMP}/olsr-${VERS}/olsrd.conf.rfc
236                 cp files/olsrd.conf.win32.lq ${TEMP}/olsr-${VERS}/olsrd.conf.lq
237                 cp gui/win32/Main/RFC-Default.olsr ${TEMP}/olsr-${VERS}
238                 cp gui/win32/Main/LQ-Default.olsr ${TEMP}/olsr-${VERS}/Default.olsr
239                 cp lib/dot_draw/olsrd_dot_draw.dll ${TEMP}/olsr-${VERS}
240                 cp lib/nameservice/olsrd_nameservice.dll ${TEMP}/olsr-${VERS}
241                 cp lib/httpinfo/olsrd_httpinfo.dll ${TEMP}/olsr-${VERS}
242                 cd ${TEMP}; echo y | cacls olsr-${VERS} /T /G Everyone:F
243                 cd ${TEMP}; zip -q -r olsr-${VERS}.zip olsr-${VERS}
244                 cp ${TEMP}/olsr-${VERS}.zip .
245                 rm -rf ${TEMP}/olsr-${VERS}
246                 rm -f ${TEMP}/olsr-${VERS}.zip
247
248 olsr-${VERS}-setup.exe: gui/win32/Main/Release/Switch.exe \
249                 gui/win32/Shim/Release/Shim.exe \
250                 olsrd.exe \
251                 src/cfgparser/olsrd_cfgparser.dll \
252                 README \
253                 README-Link-Quality.html \
254                 gui/win32/Inst/linux-manual.txt \
255                 files/olsrd.conf.win32.rfc \
256                 files/olsrd.conf.win32.lq \
257                 gui/win32/Main/RFC-Default.olsr \
258                 gui/win32/Main/LQ-Default.olsr \
259                 lib/dot_draw/olsrd_dot_draw.dll \
260                 lib/nameservice/olsrd_nameservice.dll \
261                 lib/httpinfo/olsrd_httpinfo.dll \
262                 gui/win32/Inst/installer.nsi
263                 $(STRIP) olsrd.exe
264                 $(STRIP) src/cfgparser/olsrd_cfgparser.dll
265                 $(STRIP) lib/dot_draw/olsrd_dot_draw.dll
266                 $(STRIP) lib/nameservice/olsrd_nameservice.dll
267                 $(STRIP) lib/httpinfo/olsrd_httpinfo.dll
268                 rm -f olsr-setup.exe
269                 rm -f olsr-${VERS}-setup.exe
270                 C:/Program\ Files/NSIS/makensis gui\win32\Inst\installer.nsi
271                 mv olsr-setup.exe olsr-${VERS}-setup.exe
272
273 else
274 ifeq ($(OS), wince)
275
276 #
277 # WINDOWS CE SPECIFIC CONFIGURATION
278 #
279
280 INSTALL_PREFIX ?=
281
282 SRCS +=         $(wildcard src/win32/*.c)
283 HDRS +=         $(wildcard src/win32/*.h)
284 INCLUDES +=     -Isrc/win32 -Isrc/win32/ce
285 DEFINES =       -DWIN32 -DWINCE
286 CFLAGS ?=       $(CCWARNINGS) -O2 -g
287 LIBS =          -lwinsock -liphlpapi
288 MAKEDEPEND =    makedepend -f $(DEPFILE) $(DEFINES) $(INCLUDES) $(SRCS)
289
290 else
291
292 all:    help
293 install:help
294
295 endif
296 endif
297 endif
298 endif
299 endif
300 endif
301 endif
302 endif
303
304 #
305 # END OF OS SPECIFIC STUFF
306 #
307
308 ifneq ($(NODEBUG), )
309 CFLAGS += -DNODEBUG
310 endif
311
312 OBJS = $(patsubst %.c,%.o,$(SRCS))
313 override CFLAGS += $(INCLUDES) $(DEFINES)
314 export CFLAGS
315
316
317 olsrd:          $(OBJS) $(CFGOBJS)
318                 $(CC) -o $@ $(OBJS) $(CFGOBJS) $(LIBS) 
319
320 $(DEPFILE):     $(SRCS) $(HDRS)
321 ifdef MAKEDEPEND
322                 @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
323                 $(MAKEDEPEND)
324 endif
325
326 cfgparser:      $(CFGDEPS)
327                 $(MAKE) -C $(CFGDIR)
328
329 $(CFGOBJS):
330                 $(MAKE) -C $(CFGDIR)
331
332 .PHONY: help libs clean_libs clean uberclean install_libs install_bin install
333
334 help:
335         @echo
336         @echo '***** olsr.org olsr daemon Make ****'
337         @echo ' You must provide a valid target OS '
338         @echo ' by setting the OS variable! Valid  '
339         @echo ' target OSes are:                   '
340         @echo ' ---------------------------------  '
341         @echo ' linux - GNU/Linux                  '
342         @echo ' win32 - MS Windows                 '
343         @echo ' fbsd  - FreeBSD                    '
344         @echo ' nbsd  - NetBSD                     '
345         @echo ' obsd  - OpenBSD                    '
346         @echo ' osx   - Mac OS X                   '
347         @echo ' ---------------------------------  '
348         @echo ' Example - build for windows:       '
349         @echo ' make OS=win32                      '
350         @echo ' If you are developing olsrd code,  '
351         @echo ' exporting the OS variable might    '
352         @echo ' be a good idea :-) Have fun!       '
353         @echo '************************************'
354         @echo
355
356 clean:
357                 rm -f $(OBJS) olsrd olsrd.exe
358                 $(MAKE) -C src/cfgparser clean
359
360 uberclean:      clean clean_libs
361                 rm -f $(DEPFILE) $(DEPFILE).bak *~
362                 rm -f src/*[o~] src/linux/*[o~] src/unix/*[o~] src/win32/*[o~]
363                 rm -f src/bsd/*[o~] 
364                 $(MAKE) -C src/cfgparser uberclean
365
366 install_bin:
367                 $(STRIP) olsrd
368                 mkdir -p $(INSTALL_PREFIX)/usr/sbin
369                 install -m 755 olsrd $(INSTALL_PREFIX)/usr/sbin
370
371 install_olsrd:  install_bin
372                 @echo ========= C O N F I G U R A T I O N - F I L E ============
373                 @echo olsrd uses the configfile $(INSTALL_PREFIX)/etc/olsr.conf
374                 @echo a default configfile. A sample RFC-compliance aimed
375                 @echo configfile can be installed. Note that a LQ-based configfile
376                 @echo can be found at files/olsrd.conf.default.lq
377                 @echo ==========================================================
378                 mkdir -p $(INSTALL_PREFIX)/etc
379                 cp -i files/olsrd.conf.default.rfc $(INSTALL_PREFIX)/etc/olsrd.conf
380                 @echo -------------------------------------------
381                 @echo Edit $(INSTALL_PREFIX)/etc/olsrd.conf before running olsrd!!
382                 @echo -------------------------------------------
383                 @echo Installing manpages olsrd\(8\) and olsrd.conf\(5\)
384                 mkdir -p $(INSTALL_PREFIX)/usr/share/man/man8/
385                 cp files/olsrd.8.gz $(INSTALL_PREFIX)/usr/share/man/man8/olsrd.8.gz
386                 mkdir -p $(INSTALL_PREFIX)/usr/share/man/man5/
387                 cp files/olsrd.conf.5.gz $(INSTALL_PREFIX)/usr/share/man/man5/olsrd.conf.5.gz
388
389 #
390 # PLUGINS
391 #
392
393 libs: 
394                 $(MAKE) -C lib LIBDIR=$(LIBDIR)
395
396 clean_libs: 
397                 $(MAKE) -C lib LIBDIR=$(LIBDIR) clean
398
399 install_libs:
400                 $(MAKE) -C lib LIBDIR=$(LIBDIR) install
401
402 httpinfo:
403                 $(MAKE) -C lib/httpinfo clean
404                 $(MAKE) -C lib/httpinfo 
405                 $(MAKE) -C lib/httpinfo install 
406
407 tas:
408                 $(MAKE) -C lib/tas clean
409                 $(MAKE) -C lib/tas install
410
411 dot_draw:
412                 $(MAKE) -C lib/dot_draw clean
413                 $(MAKE) -C lib/dot_draw install
414
415 nameservice:
416                 $(MAKE) -C lib/nameservice clean
417                 $(MAKE) -C lib/nameservice install
418
419 dyn_gw:
420                 $(MAKE) -C lib/dyn_gw clean
421                 $(MAKE) -C lib/dyn_gw
422                 $(MAKE) -C lib/dyn_gw install
423
424 powerinfo:
425                 $(MAKE) -C lib/powerinfo clean
426                 $(MAKE) -C lib/powerinfo 
427                 $(MAKE) -C lib/powerinfo install
428
429 secure:
430                 $(MAKE) -C lib/secure clean
431                 $(MAKE) -C lib/secure
432                 $(MAKE) -C lib/secure install
433
434
435 tags:
436                 $(TAGCMD) -o $(TAGFILE) $(SRCS) $(HDRS) $(wildcard src/cfgparser/*.c) $(wildcard src/cfgparser/*.h)
437
438 sinclude        $(DEPFILE)