63d36bfe9b61fef8fcae701024ed2e02ece257e7
[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
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 \
17          func_math.o \
18          func_groupcount.o \
19          func_strings.o \
20          func_cdr.o \
21          func_logic.o \
22          func_env.o \
23          func_db.o \
24          func_timeout.o \
25          func_language.o \
26          func_moh.o \
27          func_base64.o
28
29 AVAILABLE_FUNCS=$(filter-out $(BUILTINS),$(patsubst %.c,%.o,$(wildcard func*.c)))
30
31 ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/odbcinst.h)$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/include/odbcinst.h),)
32   STANDALONE_FUNCS=$(filter-out func_odbc.o,$(AVAILABLE_FUNCS))
33 else
34   STANDALONE_FUNCS=$(AVAILABLE_FUNCS)
35 endif
36
37 FUNCS+=$(STANDALONE_FUNCS:.o=.so)
38
39 FUNC_SOURCES=$(BUILTINS:.o=.c)
40
41 FUNC_STRUCTS=$(shell grep 'struct ast_custom_function' $(FUNC_SOURCES) | awk '{print $$3};' | sort)
42
43 ifeq (${OSARCH},CYGWIN)
44 CYGSOLINK=-Wl,--out-implib=lib$@.a -Wl,--export-all-symbols
45 CYGSOLIB=-L.. -L. -lasterisk.dll
46 else
47 CFLAGS+=-fPIC
48 endif
49
50 ifeq ($(findstring BSD,${OSARCH}),BSD)
51   CFLAGS+=-I$(CROSS_COMPILE_TARGET)/usr/local/include -L$(CROSS_COMPILE_TARGET)/usr/local/lib
52 endif
53
54 all: $(FUNCS)
55
56 clean:
57         rm -f *.so *.o .depend pbx_functions.h
58
59 %.so : %.o
60         $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB}
61
62 #$(BUILTINS) : CFLAGS += -DBUILTIN_FUNC
63
64 pbx_functions.h: $(FUNC_SOURCES)
65         @echo "/* Automatically generated - do not edit */" > $@
66         @for f in $(FUNC_SOURCES); do echo "#include \"$$f\"" >> $@; done
67         @echo "static struct ast_custom_function *builtins[] = {" >> $@
68         @for f in $(FUNC_STRUCTS); do echo "&$$f," >> $@; done
69         @echo "};" >> $@
70
71 pbx_functions.o: pbx_functions.h
72
73 pbx_functions.so: pbx_functions.o #$(BUILTINS)
74         $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB}
75
76 func_odbc.so: func_odbc.o
77         $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} -lodbc
78
79 install: all
80         for x in $(FUNCS); do $(INSTALL) -m 755 $$x $(DESTDIR)$(MODULES_DIR) ; done
81
82 ifneq ($(wildcard .depend),)
83   include .depend
84 endif
85
86 depend: .depend
87
88 .depend: pbx_functions.h
89         ../build_tools/mkdep $(CFLAGS) `ls *.c`
90
91 env:
92         env