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