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