Depecy calculation in linux makefile using makedepend
[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 DEPFILE = .linux-depend
12 DEPEND= makedepend -Dlinux -Y -f $(DEPFILE) -- $(CFLAGS)
13
14 SRCS= $(wildcard src/*.c) \
15       $(wildcard src/linux/*.c) \
16       $(wildcard src/cfgparser/*.c)
17
18 OBJS= $(patsubst %.c,%.o,$(wildcard src/*.c)) \
19       $(patsubst %.c,%.o,$(wildcard src/linux/*.c)) \
20       $(patsubst %.c,%.o,$(wildcard src/cfgparser/*.c))
21
22
23 all:    olsrd
24
25 olsrd:  $(OBJS)
26         $(CC) $(LIBS) -o bin/$@ $(OBJS)
27
28 depend:
29         rm -f $(DEPFILE)
30         make $(DEPFILE)
31
32
33 $(DEPFILE):
34         @echo '# olsrd dependency file. AUTOGENERATED' > $(DEPFILE)
35         $(DEPEND) -- $(SRCS) >&/dev/null
36
37
38 $(CFGDIR)/oparse.c: $(CFGDIR)/oparse.y $(CFGDIR)/olsrd_conf.h
39         $(BISON) -d -o$(CFGDIR)/oparse.c $(CFGDIR)/oparse.y
40
41 $(CFGDIR)/oparse.h: $(CFGDIR)/oparse.c
42
43
44 $(CFGDIR)/oscan.c: $(CFGDIR)/oscan.lex $(CFGDIR)/oparse.h $(CFGDIR)/olsrd_conf.h
45         $(FLEX) -o$(CFGDIR)/oscan.c $(CFGDIR)/oscan.lex
46
47 libs: 
48         for i in lib/*; do \
49                 $(MAKE) -C $$i; \
50         done; 
51
52 clean_libs: 
53         for i in lib/*; do \
54                 $(MAKE) -C $$i clean; \
55         done; 
56
57 .PHONY: clean
58 clean:
59         -rm -f $(OBJS) $(DEPFILE)
60
61 install_libs:
62         for i in lib/*; do \
63                 $(MAKE) -C $$i LIBDIR=$(INSTALL_PREFIX)/usr/lib install; \
64         done;   
65
66
67 install_bin:
68         $(STRIP) bin/olsrd
69         install -D -m 755 bin/olsrd $(INSTALL_PREFIX)/usr/sbin/olsrd
70
71 install: install_bin
72         @echo olsrd uses the configfile $(INSTALL_PREFIX)/etc/olsr.conf
73         @echo a default configfile. A sample configfile
74         @echo can be installed
75         mkdir -p $(INSTALL_PREFIX)/etc
76         cp -i files/olsrd.conf.default $(INSTALL_PREFIX)/etc/olsrd.conf
77         @echo -------------------------------------------
78         @echo Edit $(INSTALL_PREFIX)/etc/olsrd.conf before running olsrd!!
79         @echo -------------------------------------------
80         mkdir -p $(INSTALL_PREFIX)/usr/share/man/man8/
81         cp files/olsrd.8.gz $(INSTALL_PREFIX)/usr/share/man/man8/olsrd.8.gz
82
83
84 sinclude $(DEPFILE)