correct build on platforms that require PIC objects (bug #4179)
[asterisk/asterisk.git] / funcs / Makefile
1 #
2 # Asterisk -- A telephony toolkit for Linux.
3
4 # Makefile for dialplan functions
5 #
6 # Copyright (C) 2005, Digium, Inc.
7 #
8 # Kevin P. Fleming <kpfleming@digium.com>
9 #
10 # This program is free software, distributed under the terms of
11 # the GNU General Public License
12 #
13
14 FUNCS=pbx_functions.so
15
16 BUILTINS=func_md5.o func_groupcount.o func_strings.o func_cdr.o func_logic.o func_env.o
17
18 STANDALONE_FUNCS=$(filter-out $(BUILTINS),$(patsubst %.c,%.o,$(wildcard func*.c)))
19
20 FUNCS+=$(STANDALONE_FUNCS:.o=.so)
21
22 FUNC_STRUCTS=$(shell grep 'struct ast_custom_function' $(BUILTINS:.o=.c) | awk '{print $$3};')
23
24 CFLAGS+=-fPIC
25
26 all: $(FUNCS)
27
28 clean:
29         rm -f *.so *.o .depend
30
31 %.so : %.o
32         $(CC) $(SOLINK) -o $@ $<
33
34 $(BUILTINS) : CFLAGS += -DBUILTIN_FUNC
35
36 pbx_functions.h: $(BUILTINS:.o=.c)
37         @echo "/* Automatically generated - do not edit */" > $@
38         @for f in $(FUNC_STRUCTS); do echo "extern struct ast_custom_function $$f;" >> $@; done
39         @echo "static struct ast_custom_function *builtins[] = {" >> $@
40         @for f in $(FUNC_STRUCTS); do echo "&$$f," >> $@; done
41         @echo "};" >> $@
42
43 pbx_functions.so: pbx_functions.o $(BUILTINS)
44         $(CC) $(SOLINK) -o $@ $(BUILTINS) $<
45         strip $(foreach f,$(FUNC_STRUCTS),-N $(f)) $@
46
47 install: all
48         for x in $(FUNCS); do $(INSTALL) -m 755 $$x $(DESTDIR)$(MODULES_DIR) ; done
49
50 ifneq ($(wildcard .depend),)
51 include .depend
52 endif
53
54 depend: .depend
55
56 .depend: pbx_functions.h
57         ../mkdep $(CFLAGS) `ls *.c`
58
59 env:
60         env