04087c3e97e3ec943eb2ddde3bbc741218a51608
[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.13 2004/11/05 09:31:46 kattemat Exp $
23 #
24
25 OS ?=           linux
26 #OS =           fbsd
27 #OS =           win32
28
29 CC ?=           gcc
30
31 PREFIX ?=
32
33 STRIP ?=        strip
34
35 BISON ?=        bison
36 FLEX ?=         flex
37 CFGDIR =        src/cfgparser
38
39 DEPFILE =       .depend
40 DEPEND =        makedepend -f $(DEPFILE)
41
42 SRCS =          $(wildcard src/*.c) \
43                 $(CFGDIR)/oparse.c $(CFGDIR)/oscan.c $(CFGDIR)/olsrd_conf.c
44
45 HDRS =          $(wildcard src/*.h) \
46                 $(CFGDIR)/oparse.h $(CFGDIR)/olsrd_conf.h
47
48 OBJS =          $(patsubst %.c,%.o,$(wildcard src/*.c)) \
49                 $(CFGDIR)/oparse.o $(CFGDIR)/oscan.o $(CFGDIR)/olsrd_conf.o
50
51 ifeq ($(OS), linux)
52
53 SRCS +=         $(wildcard src/linux/*.c) $(wildcard src/unix/*.c)
54
55 HDRS +=         $(wildcard src/linux/*.h) $(wildcard src/unix/*.h)
56
57 OBJS +=         $(patsubst %.c,%.o,$(wildcard src/linux/*.c)) \
58                 $(patsubst %.c,%.o,$(wildcard src/unix/*.c))
59
60 CFLAGS ?=       -Isrc -Wall -Wmissing-prototypes -Wstrict-prototypes \
61                 -O2 -g -Dlinux #-pg -DDEBUG #-march=i686
62
63 LIBS =          -lpthread -lm -ldl
64
65 endif
66 ifeq ($(OS), fbsd)
67
68 SRCS +=         $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
69
70 HDRS +=         $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
71
72 OBJS +=         $(patsubst %.c,%.o,$(wildcard src/bsd/*.c)) \
73                 $(patsubst %.c,%.o,$(wildcard src/unix/*.c))
74
75 CFLAGS ?=       -Isrc -Wall -Wmissing-prototypes -Wstrict-prototypes \
76                 -O2 -g
77
78 LIBS =          -pthread -lm
79
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
97 all:            olsrd
98
99 olsrd:          $(OBJS)
100                 $(CC) -o bin/$@ $(OBJS) $(LIBS)
101
102 depend:         $(DEPFILE)
103
104 $(DEPFILE):
105                 @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
106                 $(DEPEND) -Y $(CFLAGS) $(SRCS)
107
108 $(CFGDIR)/oparse.c: \
109                 $(CFGDIR)/oparse.y $(CFGDIR)/olsrd_conf.h
110                 $(BISON) -d -o$(CFGDIR)/oparse.c $(CFGDIR)/oparse.y
111
112 $(CFGDIR)/oparse.h: \
113                 $(CFGDIR)/oparse.c
114
115 $(CFGDIR)/oscan.c: \
116                 $(CFGDIR)/oscan.lex $(CFGDIR)/oparse.h $(CFGDIR)/olsrd_conf.h
117                 $(FLEX) -o$(CFGDIR)/oscan.c $(CFGDIR)/oscan.lex
118
119 libs: 
120                 for i in lib/*; do \
121                         $(MAKE) -C $$i; \
122                 done; 
123
124 clean_libs: 
125                 for i in lib/*; do \
126                         $(MAKE) -C $$i clean; \
127                 done; 
128
129 .PHONY:         clean
130
131 clean:
132                 rm -f $(OBJS)
133
134 uberclean:
135                 rm -f $(OBJS) $(DEPFILE) 
136                 rm -f $(CFGDIR)/oscan.c $(CFGDIR)/oparse.h $(CFGDIR)/oparse.c
137                 rm -f bin/olsrd
138                 rm -f src/*~ src/linux/*~ src/unix/*~ src/win32/*~
139                 rm -f src/bsd/*~ src/cfgparser/*~
140
141 install_libs:
142                 for i in lib/*; do \
143                         $(MAKE) -C $$i LIBDIR=$(PREFIX)/usr/lib install; \
144                 done;   
145
146 install_bin:
147                 $(STRIP) bin/olsrd
148                 install -D -m 755 bin/olsrd $(PREFIX)/usr/sbin/olsrd
149
150 install:        install_bin
151                 @echo olsrd uses the configfile $(PREFIX)/etc/olsr.conf
152                 @echo a default configfile. A sample configfile
153                 @echo can be installed
154                 mkdir -p $(PREFIX)/etc
155                 cp -i files/olsrd.conf.default $(PREFIX)/etc/olsrd.conf
156                 @echo -------------------------------------------
157                 @echo Edit $(PREFIX)/etc/olsrd.conf before running olsrd!!
158                 @echo -------------------------------------------
159                 mkdir -p $(PREFIX)/usr/share/man/man8/
160                 cp files/olsrd.8.gz $(PREFIX)/usr/share/man/man8/olsrd.8.gz
161
162 sinclude        $(DEPFILE)
163