35b6ffd8db6342fee99949ba455d602b1f8653e0
[olsrd.git] / Makefile
1 CC ?= gcc
2
3 CFLAGS ?= -Isrc -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -g #-pg -DDEBUG #-march=i686
4 LIBS = -lpthread -lm -ldl
5 INSTALL_PREFIX ?=
6 STRIP ?= strip
7 BISON ?= bison
8 FLEX ?= flex
9 CFGDIR = src/cfgparser
10
11 # Keep OS specific files last
12
13 SRCS=   src/interfaces.c src/parser.c src/build_msg.c \
14         src/scheduler.c src/main.c src/two_hop_neighbor_table.c \
15         src/neighbor_table.c src/mpr_selector_set.c src/duplicate_set.c \
16         src/tc_set.c src/routing_table.c src/packet.c src/olsr.c \
17         src/process_routes.c src/net.c src/mantissa.c \
18         src/hna_set.c src/mid_set.c src/ipc_frontend.c \
19         src/link_set.c src/configfile.c src/socket_parser.c \
20         src/process_package.c src/mpr.c src/local_hna_set.c \
21         src/hashing.c src/hysteresis.c src/generate_msg.c \
22         src/rebuild_packet.c src/plugin_loader.c src/plugin.c \
23         $(CFGDIR)/oparse.c $(CFGDIR)/oscan.c \
24         $(CFGDIR)/olsrd_conf.c \
25         src/linux/net.c src/linux/apm.c src/linux/tunnel.c \
26         src/linux/kernel_routes.c src/linux/link_layer.c \
27         src/linux/ifnet.c src/linux/log.c
28
29 OBJS=   src/interfaces.o src/parser.o src/build_msg.o \
30         src/scheduler.o src/main.o src/two_hop_neighbor_table.o \
31         src/neighbor_table.o src/mpr_selector_set.o src/duplicate_set.o \
32         src/tc_set.o src/routing_table.o src/packet.o src/olsr.o \
33         src/process_routes.o src/net.o src/mantissa.o \
34         src/hna_set.o src/mid_set.o src/ipc_frontend.o \
35         src/link_set.o src/configfile.o src/socket_parser.o \
36         src/process_package.o src/mpr.o src/local_hna_set.o\
37         src/hashing.o src/hysteresis.o src/generate_msg.o \
38         src/rebuild_packet.o src/plugin_loader.o src/plugin.o \
39         $(CFGDIR)/oparse.o $(CFGDIR)/oscan.o \
40         $(CFGDIR)/olsrd_conf.o \
41         src/linux/net.o src/linux/apm.o src/linux/tunnel.o \
42         src/linux/kernel_routes.o src/linux/link_layer.o \
43         src/linux/ifnet.o src/linux/log.o
44
45
46 HDRS=   src/defs.h src/interfaces.h src/packet.h src/build_msg.h \
47         src/olsr.h src/two_hop_neighbor_table.h olsr_plugin_io.h \
48         src/neighbor_table.h src/mpr_selector_set.h \
49         src/duplicate_set.h src/tc_set.h src/rtable.h \
50         src/process_routes.h src/net.h src/mantissa.h \
51         src/hna_set.h main.h src/mid_set.h src/ipc_frontend.h \
52         src/olsr_protocol.h src/link_set.h src/configfile.h \
53         src/process_package.h src/mpr.h src/ipc_olsrset.h \
54         src/local_hna_set.h src/hashing.h src/hysteresis.h \
55         src/generate_msg.h src/rebuild_packet.h src/plugin_loader.h \
56         src/plugin.h src/socket_parser.h src/ifnet.h \
57         src/kernel_routes.h src/log.h src/net_os.h \
58         src/apm.h src/linux/tunnel.h src/scheduler.h \
59         src/olsr_cfg.h \
60         $(CFGDIR)/oparse.h $(CFGDIR)/olsrd_conf.h \
61         src/linux/net.h src/linux/link_layer.h
62
63 all:    olsrd
64
65 olsrd:  $(OBJS)
66         $(CC) $(LIBS) -o bin/$@ $(OBJS)
67
68 $(CFGDIR)/oparse.c: $(CFGDIR)/oparse.y $(CFGDIR)/olsrd_conf.h
69         $(BISON) -d -o$(CFGDIR)/oparse.c $(CFGDIR)/oparse.y
70
71 $(CFGDIR)/oparse.h: $(CFGDIR)/oparse.c
72
73
74 $(CFGDIR)/oscan.c: $(CFGDIR)/oscan.lex $(CFGDIR)/oparse.h $(CFGDIR)/olsrd_conf.h
75         $(FLEX) -o$(CFGDIR)/oscan.c $(CFGDIR)/oscan.lex
76
77 libs: 
78         for i in lib/*; do \
79                 $(MAKE) -C $$i; \
80         done; 
81
82 clean_libs: 
83         for i in lib/*; do \
84                 $(MAKE) -C $$i clean; \
85         done; 
86
87 .PHONY: clean
88 clean:
89         -rm -f $(OBJS)
90
91 install_libs:
92         for i in lib/*; do \
93                 $(MAKE) -C $$i LIBDIR=$(INSTALL_PREFIX)/usr/lib install; \
94         done;   
95
96
97 install_bin:
98         $(STRIP) bin/olsrd
99         install -D -m 755 bin/olsrd $(INSTALL_PREFIX)/usr/sbin/olsrd
100
101 install: install_bin
102         @echo olsrd uses the configfile $(INSTALL_PREFIX)/etc/olsr.conf
103         @echo a default configfile. A sample configfile
104         @echo can be installed
105         mkdir -p $(INSTALL_PREFIX)/etc
106         cp -i files/olsrd.conf.default $(INSTALL_PREFIX)/etc/olsrd.conf
107         @echo -------------------------------------------
108         @echo Edit $(INSTALL_PREFIX)/etc/olsrd.conf before running olsrd!!
109         @echo -------------------------------------------
110         mkdir -p $(INSTALL_PREFIX)/usr/share/man/man8/
111         cp files/olsrd.8.gz $(INSTALL_PREFIX)/usr/share/man/man8/olsrd.8.gz