Routing table creation based on LQ compiles. Not tested at all.
[olsrd.git] / Makefile
1 #
2 # OLSR ad-hoc routing table management protocol
3 # Copyright (C) 2003-2004 Andreas T√łnnesen (andreto@ifi.uio.no)
4 #
5 # This file is part of the olsr.org OLSR daemon.
6 #
7 # olsr.org is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 2 of the License, or
10 # (at your option) any later version.
11 #
12 # olsr.org is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 # GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License
18 # along with olsr.org; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20 #
21 #
22 # $Id: Makefile,v 1.18 2004/11/05 20:58:09 tlopatic Exp $
23 #
24
25 #OS ?=          linux
26 #OS =           fbsd
27 #OS =           win32
28 #OS =           osx
29
30 CC ?=           gcc
31
32 PREFIX ?=
33
34 STRIP ?=        strip
35
36 BISON ?=        bison
37 FLEX ?=         flex
38 CFGDIR =        src/cfgparser
39
40 DEPFILE =       .depend
41 DEPBAK =        .depend.bak
42 DEPEND =        makedepend -f $(DEPFILE)
43
44 all:            olsrd
45
46 SRCS =          $(wildcard src/*.c) \
47                 $(CFGDIR)/oparse.c $(CFGDIR)/oscan.c $(CFGDIR)/olsrd_conf.c
48
49 HDRS =          $(wildcard src/*.h) \
50                 $(CFGDIR)/oparse.h $(CFGDIR)/olsrd_conf.h
51
52 OBJS =          $(patsubst %.c,%.o,$(wildcard src/*.c)) \
53                 $(CFGDIR)/oparse.o $(CFGDIR)/oscan.o $(CFGDIR)/olsrd_conf.o
54
55 ifeq ($(OS), linux)
56
57 SRCS +=         $(wildcard src/linux/*.c) $(wildcard src/unix/*.c)
58
59 HDRS +=         $(wildcard src/linux/*.h) $(wildcard src/unix/*.h)
60
61 OBJS +=         $(patsubst %.c,%.o,$(wildcard src/linux/*.c)) \
62                 $(patsubst %.c,%.o,$(wildcard src/unix/*.c))
63
64 CFLAGS ?=       -Isrc -Wall -Wmissing-prototypes -Wstrict-prototypes \
65                 -O2 -g -Dlinux #-pg -DDEBUG #-march=i686
66
67 LIBS =          -lpthread -lm -ldl
68
69 $(DEPFILE):     $(SRCS) $(HDRS)
70                 @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
71                 $(DEPEND) -Y $(CFLAGS) $(SRCS) >/dev/null 2>&1
72
73 olsrd:          $(OBJS)
74                 $(CC) -o bin/$@ $(OBJS) $(LIBS)
75
76 else
77 ifeq ($(OS), fbsd)
78
79 SRCS +=         $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
80
81 HDRS +=         $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
82
83 OBJS +=         $(patsubst %.c,%.o,$(wildcard src/bsd/*.c)) \
84                 $(patsubst %.c,%.o,$(wildcard src/unix/*.c))
85
86 CFLAGS ?=       -Isrc -Wall -Wmissing-prototypes -Wstrict-prototypes \
87                 -O2 -g
88
89 LIBS =          -pthread -lm
90
91 $(DEPFILE):     $(SRCS) $(HDRS)
92                 @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
93                 $(DEPEND) $(CFLAGS) $(SRCS)
94
95 olsrd:          $(OBJS)
96                 $(CC) -o bin/$@ $(OBJS) $(LIBS)
97
98 else
99 ifeq ($(OS), win32)
100
101 SRCS +=         $(wildcard src/win32/*.c)
102
103 HDRS +=         $(wildcard src/win32/*.h)
104
105 OBJS +=         $(patsubst %.c,%.o,$(wildcard src/win32/*.c))
106
107 CFLAGS ?=       -Isrc -Isrc/win32 -Wall -Wmissing-prototypes \
108                 -Wstrict-prototypes -mno-cygwin -O2 -g -DWIN32
109
110 LIBS =          -mno-cygwin -lws2_32 -liphlpapi
111
112 $(DEPFILE):     $(SRCS) $(HDRS)
113                 @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
114                 $(DEPEND) $(CFLAGS) $(SRCS)
115
116 olsrd:          $(OBJS)
117                 $(CC) -o bin/$@ $(OBJS) $(LIBS)
118
119 else
120 ifeq ($(OS), osx)
121
122 SRCS +=         $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
123
124 HDRS +=         $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
125
126 OBJS +=         $(patsubst %.c,%.o,$(wildcard src/bsd/*.c)) \
127                 $(patsubst %.c,%.o,$(wildcard src/unix/*.c))
128
129 CFLAGS ?=       -D__MacOSX__ -Isrc -Wall -Wmissing-prototypes \
130                 -Wstrict-prototypes -O2 -g 
131
132 LIBS =          -lm -ldl
133
134 $(DEPFILE):     $(SRCS) $(HDRS)
135                 @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
136                 $(DEPEND) $(CFLAGS) $(SRCS)
137
138 olsrd:          $(OBJS)
139                 $(CC) -o bin/$@ $(OBJS) $(LIBS)
140
141
142 else
143
144 olsrd:
145         @echo
146         @echo '***** olsr.org olsr daemon Make ****'
147         @echo ' You must provide a valid target OS '
148         @echo ' by setting the OS variable! Valid  '
149         @echo ' target OSes are:                   '
150         @echo ' ---------------------------------  '
151         @echo ' linux - GNU/Linux                  '
152         @echo ' win32 - Windows NT family(2k/XP)   '
153         @echo ' fbsd  - FreeBSD                    '
154         @echo ' osx   - Mac OS X                   '
155         @echo ' ---------------------------------  '
156         @echo ' Example - build for windows:       '
157         @echo ' make OS=win32                      '
158         @echo ' If you are developing olsrd code,  '
159         @echo ' exporting the OS variable might    '
160         @echo ' be a good idea :-) Have fun!       '
161         @echo '************************************'
162         @echo
163 endif
164 endif
165 endif
166 endif
167
168 depend:         $(DEPFILE)
169
170 $(CFGDIR)/oparse.c: \
171                 $(CFGDIR)/oparse.y $(CFGDIR)/olsrd_conf.h
172                 $(BISON) -d -o$(CFGDIR)/oparse.c $(CFGDIR)/oparse.y
173
174 $(CFGDIR)/oparse.h: \
175                 $(CFGDIR)/oparse.c
176
177 $(CFGDIR)/oscan.c: \
178                 $(CFGDIR)/oscan.lex $(CFGDIR)/oparse.h $(CFGDIR)/olsrd_conf.h
179                 $(FLEX) -o$(CFGDIR)/oscan.c $(CFGDIR)/oscan.lex
180
181 libs: 
182                 for i in lib/*; do \
183                         $(MAKE) -C $$i; \
184                 done; 
185
186 clean_libs: 
187                 for i in lib/*; do \
188                         $(MAKE) -C $$i clean; \
189                 done; 
190
191 .PHONY:         clean
192
193 clean:
194                 rm -f $(OBJS)
195
196 uberclean:
197                 rm -f $(OBJS) $(DEPFILE) $(DEPBAK)
198                 rm -f $(CFGDIR)/oscan.c $(CFGDIR)/oparse.h $(CFGDIR)/oparse.c
199                 rm -f bin/olsrd bin/olsrd.exe
200                 rm -f src/*~ src/linux/*~ src/unix/*~ src/win32/*~
201                 rm -f src/bsd/*~ src/cfgparser/*~
202
203 install_libs:
204                 for i in lib/*; do \
205                         $(MAKE) -C $$i LIBDIR=$(PREFIX)/usr/lib install; \
206                 done;   
207
208 install_bin:
209                 $(STRIP) bin/olsrd
210                 install -D -m 755 bin/olsrd $(PREFIX)/usr/sbin/olsrd
211
212 install:        install_bin
213                 @echo olsrd uses the configfile $(PREFIX)/etc/olsr.conf
214                 @echo a default configfile. A sample configfile
215                 @echo can be installed
216                 mkdir -p $(PREFIX)/etc
217                 cp -i files/olsrd.conf.default $(PREFIX)/etc/olsrd.conf
218                 @echo -------------------------------------------
219                 @echo Edit $(PREFIX)/etc/olsrd.conf before running olsrd!!
220                 @echo -------------------------------------------
221                 mkdir -p $(PREFIX)/usr/share/man/man8/
222                 cp files/olsrd.8.gz $(PREFIX)/usr/share/man/man8/olsrd.8.gz
223
224 sinclude        $(DEPFILE)
225