Output redirection to /dev/null for makedepend on Linux.
[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.16 2004/11/05 14:58:01 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):
70                 @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
71                 $(DEPEND) -Y $(CFLAGS) $(SRCS) >/dev/null 2>&1
72
73 endif
74 ifeq ($(OS), fbsd)
75
76 SRCS +=         $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
77
78 HDRS +=         $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
79
80 OBJS +=         $(patsubst %.c,%.o,$(wildcard src/bsd/*.c)) \
81                 $(patsubst %.c,%.o,$(wildcard src/unix/*.c))
82
83 CFLAGS ?=       -Isrc -Wall -Wmissing-prototypes -Wstrict-prototypes \
84                 -O2 -g
85
86 LIBS =          -pthread -lm
87
88 $(DEPFILE):
89                 @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
90                 $(DEPEND) $(CFLAGS) $(SRCS)
91
92 endif
93 ifeq ($(OS), win32)
94
95 SRCS +=         $(wildcard src/win32/*.c)
96
97 HDRS +=         $(wildcard src/win32/*.h)
98
99 OBJS +=         $(patsubst %.c,%.o,$(wildcard src/win32/*.c))
100
101 CFLAGS ?=       -Isrc -Isrc/win32 -Wall -Wmissing-prototypes \
102                 -Wstrict-prototypes -mno-cygwin -O2 -g -DWIN32
103
104 LIBS =          -mno-cygwin -lws2_32 -liphlpapi
105
106 $(DEPFILE):
107                 @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
108                 $(DEPEND) $(CFLAGS) $(SRCS)
109
110 endif
111 ifeq ($(OS), osx)
112
113 SRCS +=         $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
114
115 HDRS +=         $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
116
117 OBJS +=         $(patsubst %.c,%.o,$(wildcard src/bsd/*.c)) \
118                 $(patsubst %.c,%.o,$(wildcard src/unix/*.c))
119
120 CFLAGS ?=       -D__MacOSX__ -Isrc -Wall -Wmissing-prototypes \
121                 -Wstrict-prototypes -O2 -g 
122
123 LIBS =          -lm -ldl
124  
125 $(DEPFILE):
126                 @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
127                 $(DEPEND) $(CFLAGS) $(SRCS)
128
129 endif
130
131 olsrd:          $(OBJS)
132                 $(CC) -o bin/$@ $(OBJS) $(LIBS)
133
134 depend:         $(DEPFILE)
135
136 $(CFGDIR)/oparse.c: \
137                 $(CFGDIR)/oparse.y $(CFGDIR)/olsrd_conf.h
138                 $(BISON) -d -o$(CFGDIR)/oparse.c $(CFGDIR)/oparse.y
139
140 $(CFGDIR)/oparse.h: \
141                 $(CFGDIR)/oparse.c
142
143 $(CFGDIR)/oscan.c: \
144                 $(CFGDIR)/oscan.lex $(CFGDIR)/oparse.h $(CFGDIR)/olsrd_conf.h
145                 $(FLEX) -o$(CFGDIR)/oscan.c $(CFGDIR)/oscan.lex
146
147 libs: 
148                 for i in lib/*; do \
149                         $(MAKE) -C $$i; \
150                 done; 
151
152 clean_libs: 
153                 for i in lib/*; do \
154                         $(MAKE) -C $$i clean; \
155                 done; 
156
157 .PHONY:         clean
158
159 clean:
160                 rm -f $(OBJS)
161
162 uberclean:
163                 rm -f $(OBJS) $(DEPFILE) $(DEPBAK)
164                 rm -f $(CFGDIR)/oscan.c $(CFGDIR)/oparse.h $(CFGDIR)/oparse.c
165                 rm -f bin/olsrd bin/olsrd.exe
166                 rm -f src/*~ src/linux/*~ src/unix/*~ src/win32/*~
167                 rm -f src/bsd/*~ src/cfgparser/*~
168
169 install_libs:
170                 for i in lib/*; do \
171                         $(MAKE) -C $$i LIBDIR=$(PREFIX)/usr/lib install; \
172                 done;   
173
174 install_bin:
175                 $(STRIP) bin/olsrd
176                 install -D -m 755 bin/olsrd $(PREFIX)/usr/sbin/olsrd
177
178 install:        install_bin
179                 @echo olsrd uses the configfile $(PREFIX)/etc/olsr.conf
180                 @echo a default configfile. A sample configfile
181                 @echo can be installed
182                 mkdir -p $(PREFIX)/etc
183                 cp -i files/olsrd.conf.default $(PREFIX)/etc/olsrd.conf
184                 @echo -------------------------------------------
185                 @echo Edit $(PREFIX)/etc/olsrd.conf before running olsrd!!
186                 @echo -------------------------------------------
187                 mkdir -p $(PREFIX)/usr/share/man/man8/
188                 cp files/olsrd.8.gz $(PREFIX)/usr/share/man/man8/olsrd.8.gz
189
190 sinclude        $(DEPFILE)
191