If the registry cannot be found, do not bother.
[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 projcet. For more information see the website or contact
36 # the copyright holders.
37 #
38 # $Id: Makefile,v 1.24 2004/11/20 23:57:32 kattemat 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 bin/$@ $(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 bin/$@ $(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 bin/$@ $(OBJS) $(LIBS)
143
144 else
145 ifeq ($(OS), osx)
146
147 SRCS +=         $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
148
149 HDRS +=         $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
150
151 OBJS +=         $(patsubst %.c,%.o,$(wildcard src/bsd/*.c)) \
152                 $(patsubst %.c,%.o,$(wildcard src/unix/*.c))
153
154 DEFINES +=      -D__MacOSX__
155
156 CFLAGS ?=       -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -g 
157
158 LIBS =          -lm -ldl
159
160 $(DEPFILE):     $(SRCS) $(HDRS)
161                 @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
162                 $(DEPEND) $(INCLUDES) $(DEFINES) $(SRCS)
163
164 olsrd:          $(OBJS)
165                 $(CC) -o bin/$@ $(OBJS) $(LIBS)
166
167 else
168
169 olsrd:
170         @echo
171         @echo '***** olsr.org olsr daemon Make ****'
172         @echo ' You must provide a valid target OS '
173         @echo ' by setting the OS variable! Valid  '
174         @echo ' target OSes are:                   '
175         @echo ' ---------------------------------  '
176         @echo ' linux - GNU/Linux                  '
177         @echo ' win32 - MS Windows                 '
178         @echo ' fbsd  - FreeBSD                    '
179         @echo ' osx   - Mac OS X                   '
180         @echo ' ---------------------------------  '
181         @echo ' Example - build for windows:       '
182         @echo ' make OS=win32                      '
183         @echo ' If you are developing olsrd code,  '
184         @echo ' exporting the OS variable might    '
185         @echo ' be a good idea :-) Have fun!       '
186         @echo '************************************'
187         @echo
188 endif
189 endif
190 endif
191 endif
192
193 override CFLAGS += $(INCLUDES) $(DEFINES)
194 export CFLAGS
195
196 depend:         $(DEPFILE)
197
198 $(CFGDIR)/oparse.c: \
199                 $(CFGDIR)/oparse.y $(CFGDIR)/olsrd_conf.h
200                 $(BISON) -d -o$(CFGDIR)/oparse.c $(CFGDIR)/oparse.y
201
202 $(CFGDIR)/oparse.h: \
203                 $(CFGDIR)/oparse.c
204
205 $(CFGDIR)/oscan.c: \
206                 $(CFGDIR)/oscan.lex $(CFGDIR)/oparse.h $(CFGDIR)/olsrd_conf.h
207                 $(FLEX) -o$(CFGDIR)/oscan.c $(CFGDIR)/oscan.lex
208
209 libs: 
210                 for i in lib/*; do \
211                         $(MAKE) -C $$i; \
212                 done; 
213
214 clean_libs: 
215                 for i in lib/*; do \
216                         $(MAKE) -C $$i clean; \
217                 done; 
218
219 .PHONY:         clean
220
221 clean:
222                 rm -f $(OBJS)
223
224 uberclean:
225                 rm -f $(OBJS) $(DEPFILE) $(DEPBAK)
226                 rm -f $(CFGDIR)/oscan.c $(CFGDIR)/oparse.h $(CFGDIR)/oparse.c
227                 rm -f bin/olsrd bin/olsrd.exe
228                 rm -f src/*~ src/linux/*~ src/unix/*~ src/win32/*~
229                 rm -f src/bsd/*~ src/cfgparser/*~
230
231 install_libs:
232                 for i in lib/*; do \
233                         $(MAKE) -C $$i LIBDIR=$(PREFIX)/usr/lib install; \
234                 done;   
235
236 install_bin:
237                 $(STRIP) bin/olsrd
238                 install -D -m 755 bin/olsrd $(PREFIX)/usr/sbin/olsrd
239
240 install:        install_bin
241                 @echo olsrd uses the configfile $(PREFIX)/etc/olsr.conf
242                 @echo a default configfile. A sample configfile
243                 @echo can be installed
244                 mkdir -p $(PREFIX)/etc
245                 cp -i files/olsrd.conf.default $(PREFIX)/etc/olsrd.conf
246                 @echo -------------------------------------------
247                 @echo Edit $(PREFIX)/etc/olsrd.conf before running olsrd!!
248                 @echo -------------------------------------------
249                 mkdir -p $(PREFIX)/usr/share/man/man8/
250                 cp files/olsrd.8.gz $(PREFIX)/usr/share/man/man8/olsrd.8.gz
251
252 sinclude        $(DEPFILE)
253