Added missing include files.
[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.12 2004/11/05 02:06:13 tlopatic 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) -- $(CFLAGS)
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
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
83 ifeq ($(OS), win32)
84
85 SRCS +=         $(wildcard src/win32/*.c)
86
87 HDRS +=         $(wildcard src/win32/*.h)
88
89 OBJS +=         $(patsubst %.c,%.o,$(wildcard src/win32/*.c))
90
91 CFLAGS ?=       -Isrc -Isrc/win32 -Wall -Wmissing-prototypes \
92                 -Wstrict-prototypes -mno-cygwin -O2 -g -DWIN32
93
94 LIBS =          -mno-cygwin -lws2_32 -liphlpapi
95
96 endif
97
98 all:            olsrd
99
100 olsrd:          $(OBJS)
101                 $(CC) -o bin/$@ $(OBJS) $(LIBS)
102
103 depend:         $(DEPFILE)
104
105 $(DEPFILE):
106                 @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
107                 $(DEPEND) -- $(SRCS)
108
109 $(CFGDIR)/oparse.c: \
110                 $(CFGDIR)/oparse.y $(CFGDIR)/olsrd_conf.h
111                 $(BISON) -d -o$(CFGDIR)/oparse.c $(CFGDIR)/oparse.y
112
113 $(CFGDIR)/oparse.h: \
114                 $(CFGDIR)/oparse.c
115
116 $(CFGDIR)/oscan.c: \
117                 $(CFGDIR)/oscan.lex $(CFGDIR)/oparse.h $(CFGDIR)/olsrd_conf.h
118                 $(FLEX) -o$(CFGDIR)/oscan.c $(CFGDIR)/oscan.lex
119
120 libs: 
121                 for i in lib/*; do \
122                         $(MAKE) -C $$i; \
123                 done; 
124
125 clean_libs: 
126                 for i in lib/*; do \
127                         $(MAKE) -C $$i clean; \
128                 done; 
129
130 .PHONY:         clean
131
132 clean:
133                 rm -f $(OBJS)
134
135 uberclean:
136                 rm -f $(OBJS) $(DEPFILE) 
137                 rm -f $(CFGDIR)/oscan.c $(CFGDIR)/oparse.h $(CFGDIR)/oparse.c
138                 rm -f bin/olsrd
139                 rm -f src/*~ src/linux/*~ src/unix/*~ src/win32/*~
140                 rm -f src/bsd/*~ src/cfgparser/*~
141
142 install_libs:
143                 for i in lib/*; do \
144                         $(MAKE) -C $$i LIBDIR=$(PREFIX)/usr/lib install; \
145                 done;   
146
147 install_bin:
148                 $(STRIP) bin/olsrd
149                 install -D -m 755 bin/olsrd $(PREFIX)/usr/sbin/olsrd
150
151 install:        install_bin
152                 @echo olsrd uses the configfile $(PREFIX)/etc/olsr.conf
153                 @echo a default configfile. A sample configfile
154                 @echo can be installed
155                 mkdir -p $(PREFIX)/etc
156                 cp -i files/olsrd.conf.default $(PREFIX)/etc/olsrd.conf
157                 @echo -------------------------------------------
158                 @echo Edit $(PREFIX)/etc/olsrd.conf before running olsrd!!
159                 @echo -------------------------------------------
160                 mkdir -p $(PREFIX)/usr/share/man/man8/
161                 cp files/olsrd.8.gz $(PREFIX)/usr/share/man/man8/olsrd.8.gz
162
163 sinclude        $(DEPFILE)
164