09669b816fe2b4e2ffe7fa3fc53d2fccf69e3794
[olsrd.git] / Makefile.inc
1 # programs
2 CCACHE ?=       $(shell sh -c "type -path ccache")
3 ifeq ($(origin CC),default)
4 CC =            $(CCACHE) gcc
5 else
6 CC ?=           $(CCACHE) gcc
7 endif
8 STRIP ?=        strip
9 BISON ?=        bison
10 FLEX ?=         flex
11 TAGCMD ?=       etags
12
13 # target directories and names
14 DESTDIR ?=
15 SBINDIR ?= $(DESTDIR)/usr/sbin
16 ETCDIR  ?= $(DESTDIR)/etc
17 LIBDIR  ?= $(DESTDIR)/usr/lib
18 DOCDIR  ?= $(DESTDIR)/usr/share/doc
19 MANDIR  ?= $(DESTDIR)/usr/share/man
20 CFGFILE ?= $(ETCDIR)/olsrd.conf
21 EXENAME ?= olsrd
22
23 INCLUDES =      -Isrc -I$(TOPDIR)/src 
24
25 # add gcc warnings and optimizations if CFLAGS not set
26 ifndef CFLAGS
27 ifndef WARNINGS
28 WARNINGS +=     -Wall
29 WARNINGS +=     -Wextra
30 WARNINGS +=     -Wold-style-definition
31 WARNINGS +=     -Wdeclaration-after-statement
32 WARNINGS +=     -Wmissing-prototypes
33 WARNINGS +=     -Wstrict-prototypes
34 WARNINGS +=     -Wmissing-declarations
35 WARNINGS +=     -Wsign-compare
36 WARNINGS +=     -Waggregate-return
37 WARNINGS +=     -Wmissing-noreturn
38 WARNINGS +=     -Wmissing-format-attribute
39 WARNINGS +=     -Wno-multichar
40 WARNINGS +=     -Wno-deprecated-declarations
41 #WARNINGS +=    -Wredundant-decls
42 WARNINGS +=     -Wnested-externs
43 #WARNINGS +=    -Wunreachable-code
44 WARNINGS +=     -Winline
45 WARNINGS +=     -Wdisabled-optimization
46 #WARNINGS +=    -Werror
47 WARNINGS :=     $(shell CC="$(CC)" $(TOPDIR)/gcc-warnings $(WARNINGS))
48 endif
49 CFLAGS +=       $(WARNINGS)
50 CFLAGS +=       -O2
51 CFLAGS +=       -g
52 endif
53
54 ifdef OLSRD_PLUGIN
55 # c and ld flags for libraries (plugins)
56 CFLAGS +=       -DOLSR_PLUGIN
57 LDFLAGS +=      -shared -Wl,-soname,$(PLUGIN_NAME)
58 LDFLAGS +=      -Wl,--version-script=version-script.txt 
59 else
60 # c and ld flags for main
61 LDFLAGS +=      -Wl,-export-dynamic 
62 endif
63
64 ###################################
65 #
66 # options to save space on small systems
67
68 # we have plugins with the old interface
69 CFLAGS +=       -DSUPPORT_OLD_PLUGIN_VERSIONS=1
70
71 # search sources and headers in current dir and in src/
72 SRCS =          $(wildcard src/*.c)
73 SRCS +=         $(wildcard *.c)
74 HDRS =          $(wildcard src/*.h)
75 HDRS +=         $(wildcard *.h)
76
77 all: default_target
78
79 # OS detection
80 ifeq ($(OS),Windows_NT)
81 OS = win32
82 endif
83 ifeq ($(OS),)
84 OS :=           $(shell sh $(TOPDIR)/make/guess_os.sh)
85 endif
86 ifeq ($(OS),UNKNOWN)
87 all: help
88 else
89 # include OS specifics
90 include $(TOPDIR)/make/Makefile.$(OS)
91 all: default_target
92 endif
93
94 # one object for each source file
95 OBJS +=         $(patsubst %.c,%.o,$(SRCS))
96
97 # debugging or non-debugging flags
98 ifdef DEBUG
99 CFLAGS +=       -DDEBUG
100 endif
101 ifdef NODEBUG
102 CFLAGS +=       -DNODEBUG
103 endif
104
105 # let gcc generate dependency information (*.d)
106 CFLAGS +=       -MD
107
108 # we always need the includes and defines
109 CFLAGS += $(INCLUDES) $(DEFINES)
110
111 TAGFILE ?=      src/TAGS
112
113 help:
114         @echo 
115         @echo '***** olsr.org olsr daemon Make ****'
116         @echo ' Automatic detection of your OS     '
117         @echo ' failed!                            '
118         @echo ' You can provide a valid target OS  '
119         @echo ' by setting the OS variable! Valid  '
120         @echo ' target OSes are:                   '
121         @echo ' ---------------------------------  '
122         @echo ' linux - GNU/Linux                  '
123         @echo ' win32 - MS Windows                 '
124         @echo ' fbsd  - FreeBSD                    '
125         @echo ' nbsd  - NetBSD                     '
126         @echo ' obsd  - OpenBSD                    '
127         @echo ' osx   - Mac OS X                   '
128         @echo ' ---------------------------------  '
129         @echo ' Example - build for windows:       '
130         @echo ' make OS=win32                      '
131         @echo ' If you are developing olsrd code,  '
132         @echo ' exporting the OS variable might    '
133         @echo ' be a good idea :-) Have fun!       '
134         @echo '************************************'
135         @echo
136
137 # include dependencies
138 -include $(SRCS:%.c=%.d)
139
140 # Local Variables:
141 # mode: makefile
142 # End: