add -Wl,-export-dynamic to LDFLAGS to allow direct linking of plugins
[olsrd.git] / Makefile.inc
1 # programs
2 CC ?=           gcc
3 STRIP ?=        strip
4 BISON ?=        bison
5 FLEX ?=         flex
6 TAGCMD ?=       etags
7
8 # target directories and names
9 #INSTALL_PREFIX = 
10 SBINDIR = $(INSTALL_PREFIX)/usr/sbin
11 ETCDIR = $(INSTALL_PREFIX)/etc
12 LIBDIR = $(INSTALL_PREFIX)/usr/lib
13 DOCDIR = $(INSTALL_PREFIX)/usr/share/doc
14 MANDIR = $(INSTALL_PREFIX)/usr/share/man
15 CFGFILE = $(ETCDIR)/olsrd.conf
16 EXENAME = olsrd
17
18 INCLUDES =      -Isrc -I$(TOPDIR)/src 
19
20 # add gcc warnings and optimizations if CFLAGS not set
21 ifndef CFLAGS
22 CFLAGS +=       -Wall -Wmissing-prototypes -Wstrict-prototypes \
23                 -Wmissing-declarations -Wsign-compare
24 CFLAGS +=       -O2 -g
25 endif
26
27 ifdef OLSRD_PLUGIN
28 # c and ld flags for libraries (plugins)
29 CFLAGS +=       -DOLSR_PLUGIN -fPIC
30 LDFLAGS +=      -shared  -fPIC -Wl,-soname,$(PLUGIN_NAME)
31 LDFLAGS +=      -Wl,--version-script=version-script.txt 
32 else
33 # c and ld flags for main
34 LDFLAGS +=      -Wl,-export-dynamic 
35 endif
36
37 # search sources and headers in current dir and in src/
38 SRCS =          $(wildcard src/*.c)
39 SRCS +=         $(wildcard *.c)
40 HDRS =          $(wildcard src/*.h)
41 HDRS +=         $(wildcard *.h)
42
43 all: default_target
44
45 # OS detection
46 OS =            $(shell sh $(TOPDIR)/make/guess_os.sh)
47 ifeq ($(OS),UNKNOWN)
48 all: help
49 else
50 # include OS specifics
51 include $(TOPDIR)/make/Makefile.$(OS)
52 all: default_target
53 endif
54
55 # one object for each source file
56 OBJS +=         $(patsubst %.c,%.o,$(SRCS))
57
58 # debugging or non-debugging flags
59 ifdef DEBUG
60 CFLAGS +=       -DDEBUG
61 endif
62 ifdef NODEBUG
63 CFLAGS +=       -DNODEBUG
64 endif
65
66 # let gcc generate dependency information (*.d)
67 CFLAGS +=       -MD
68
69 # we always need the includes and defines
70 CFLAGS += $(INCLUDES) $(DEFINES)
71
72 TAGFILE ?=      src/TAGS
73
74 help:
75         @echo 
76         @echo '***** olsr.org olsr daemon Make ****'
77         @echo ' Automatic detection of your OS     '
78         @echo ' failed!                            '
79         @echo ' You can provide a valid target OS  '
80         @echo ' by setting the OS variable! Valid  '
81         @echo ' target OSes are:                   '
82         @echo ' ---------------------------------  '
83         @echo ' linux - GNU/Linux                  '
84         @echo ' win32 - MS Windows                 '
85         @echo ' fbsd  - FreeBSD                    '
86         @echo ' nbsd  - NetBSD                     '
87         @echo ' obsd  - OpenBSD                    '
88         @echo ' osx   - Mac OS X                   '
89         @echo ' ---------------------------------  '
90         @echo ' Example - build for windows:       '
91         @echo ' make OS=win32                      '
92         @echo ' If you are developing olsrd code,  '
93         @echo ' exporting the OS variable might    '
94         @echo ' be a good idea :-) Have fun!       '
95         @echo '************************************'
96         @echo
97         
98 # include dependencies
99 -include $(SRCS:%.c=%.d)