Removed pthreads link flags
[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.22 2004/11/12 21:20:53 kattemat 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 DEFINES =       -DUSE_LINK_QUALITY
45 INCLUDES =      -I src
46
47 all:            olsrd
48
49 SRCS =          $(wildcard src/*.c) \
50                 $(CFGDIR)/oparse.c $(CFGDIR)/oscan.c $(CFGDIR)/olsrd_conf.c
51
52 HDRS =          $(wildcard src/*.h) \
53                 $(CFGDIR)/oparse.h $(CFGDIR)/olsrd_conf.h
54
55 OBJS =          $(patsubst %.c,%.o,$(wildcard src/*.c)) \
56                 $(CFGDIR)/oparse.o $(CFGDIR)/oscan.o $(CFGDIR)/olsrd_conf.o
57
58 ifeq ($(OS), linux)
59
60 SRCS +=         $(wildcard src/linux/*.c) $(wildcard src/unix/*.c)
61
62 HDRS +=         $(wildcard src/linux/*.h) $(wildcard src/unix/*.h)
63
64 OBJS +=         $(patsubst %.c,%.o,$(wildcard src/linux/*.c)) \
65                 $(patsubst %.c,%.o,$(wildcard src/unix/*.c))
66
67 DEFINES +=      -Dlinux
68
69 CFLAGS ?=       -Wall -Wmissing-prototypes -Wstrict-prototypes \
70                 -O2 -g #-pg -DDEBUG #-march=i686
71
72 LIBS =          -lm -ldl
73
74
75 $(DEPFILE):     $(SRCS) $(HDRS)
76                 @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
77                 $(DEPEND) -Y $(INCLUDES) $(DEFINES) $(SRCS) >/dev/null 2>&1
78
79 olsrd:          $(OBJS)
80                 $(CC) -o bin/$@ $(OBJS) $(LIBS)
81
82 else
83 ifeq ($(OS), fbsd)
84
85 SRCS +=         $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
86
87 HDRS +=         $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
88
89 OBJS +=         $(patsubst %.c,%.o,$(wildcard src/bsd/*.c)) \
90                 $(patsubst %.c,%.o,$(wildcard src/unix/*.c))
91
92 CFLAGS ?=       -Wall -Wmissing-prototypes -Wstrict-prototypes \
93                 -O2 -g
94
95 LIBS =          -lm
96
97 $(DEPFILE):     $(SRCS) $(HDRS)
98                 @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
99                 $(DEPEND) $(INCLUDES) $(DEFINES) $(SRCS)
100
101 olsrd:          $(OBJS)
102                 $(CC) -o bin/$@ $(OBJS) $(LIBS)
103
104 else
105 ifeq ($(OS), win32)
106
107 SRCS +=         $(wildcard src/win32/*.c)
108
109 HDRS +=         $(wildcard src/win32/*.h)
110
111 OBJS +=         $(patsubst %.c,%.o,$(wildcard src/win32/*.c))
112
113 INCLUDES +=     -Isrc/win32
114
115 DEFINES +=      -DWIN32
116
117 CFLAGS ?=       -Wall -Wmissing-prototypes \
118                 -Wstrict-prototypes -mno-cygwin -O2 -g
119
120 LIBS =          -mno-cygwin -lws2_32 -liphlpapi
121
122 $(DEPFILE):     $(SRCS) $(HDRS)
123                 @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
124                 $(DEPEND) $(INCLUDES) $(DEFINES) $(SRCS) >/dev/null 2>&1
125
126 olsrd:          $(OBJS)
127                 $(CC) -o bin/$@ $(OBJS) $(LIBS)
128
129 else
130 ifeq ($(OS), osx)
131
132 SRCS +=         $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
133
134 HDRS +=         $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
135
136 OBJS +=         $(patsubst %.c,%.o,$(wildcard src/bsd/*.c)) \
137                 $(patsubst %.c,%.o,$(wildcard src/unix/*.c))
138
139 DEFINES +=      -D__MacOSX__
140
141 CFLAGS ?=       -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -g 
142
143 LIBS =          -lm -ldl
144
145 $(DEPFILE):     $(SRCS) $(HDRS)
146                 @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
147                 $(DEPEND) $(INCLUDES) $(DEFINES) $(SRCS)
148
149 olsrd:          $(OBJS)
150                 $(CC) -o bin/$@ $(OBJS) $(LIBS)
151
152 else
153
154 olsrd:
155         @echo
156         @echo '***** olsr.org olsr daemon Make ****'
157         @echo ' You must provide a valid target OS '
158         @echo ' by setting the OS variable! Valid  '
159         @echo ' target OSes are:                   '
160         @echo ' ---------------------------------  '
161         @echo ' linux - GNU/Linux                  '
162         @echo ' win32 - Windows NT family(2k/XP)   '
163         @echo ' fbsd  - FreeBSD                    '
164         @echo ' osx   - Mac OS X                   '
165         @echo ' ---------------------------------  '
166         @echo ' Example - build for windows:       '
167         @echo ' make OS=win32                      '
168         @echo ' If you are developing olsrd code,  '
169         @echo ' exporting the OS variable might    '
170         @echo ' be a good idea :-) Have fun!       '
171         @echo '************************************'
172         @echo
173 endif
174 endif
175 endif
176 endif
177
178 override CFLAGS += $(INCLUDES) $(DEFINES)
179 export CFLAGS
180
181 depend:         $(DEPFILE)
182
183 $(CFGDIR)/oparse.c: \
184                 $(CFGDIR)/oparse.y $(CFGDIR)/olsrd_conf.h
185                 $(BISON) -d -o$(CFGDIR)/oparse.c $(CFGDIR)/oparse.y
186
187 $(CFGDIR)/oparse.h: \
188                 $(CFGDIR)/oparse.c
189
190 $(CFGDIR)/oscan.c: \
191                 $(CFGDIR)/oscan.lex $(CFGDIR)/oparse.h $(CFGDIR)/olsrd_conf.h
192                 $(FLEX) -o$(CFGDIR)/oscan.c $(CFGDIR)/oscan.lex
193
194 libs: 
195                 for i in lib/*; do \
196                         $(MAKE) -C $$i; \
197                 done; 
198
199 clean_libs: 
200                 for i in lib/*; do \
201                         $(MAKE) -C $$i clean; \
202                 done; 
203
204 .PHONY:         clean
205
206 clean:
207                 rm -f $(OBJS)
208
209 uberclean:
210                 rm -f $(OBJS) $(DEPFILE) $(DEPBAK)
211                 rm -f $(CFGDIR)/oscan.c $(CFGDIR)/oparse.h $(CFGDIR)/oparse.c
212                 rm -f bin/olsrd bin/olsrd.exe
213                 rm -f src/*~ src/linux/*~ src/unix/*~ src/win32/*~
214                 rm -f src/bsd/*~ src/cfgparser/*~
215
216 install_libs:
217                 for i in lib/*; do \
218                         $(MAKE) -C $$i LIBDIR=$(PREFIX)/usr/lib install; \
219                 done;   
220
221 install_bin:
222                 $(STRIP) bin/olsrd
223                 install -D -m 755 bin/olsrd $(PREFIX)/usr/sbin/olsrd
224
225 install:        install_bin
226                 @echo olsrd uses the configfile $(PREFIX)/etc/olsr.conf
227                 @echo a default configfile. A sample configfile
228                 @echo can be installed
229                 mkdir -p $(PREFIX)/etc
230                 cp -i files/olsrd.conf.default $(PREFIX)/etc/olsrd.conf
231                 @echo -------------------------------------------
232                 @echo Edit $(PREFIX)/etc/olsrd.conf before running olsrd!!
233                 @echo -------------------------------------------
234                 mkdir -p $(PREFIX)/usr/share/man/man8/
235                 cp files/olsrd.8.gz $(PREFIX)/usr/share/man/man8/olsrd.8.gz
236
237 sinclude        $(DEPFILE)
238