blob: a10fdc7db1548f6235a09b742c24f4bafdb2e977 [file] [log] [blame]
Tristan Matthews0a329cc2013-07-17 13:20:14 -04001# For common OSes, test's main() is defined in main.c.
2# OS specific configuration may want to put it in different file.
3# For example, see os-rtems.mak in current directory.
4export TEST_OBJS = main.o
5
6include ../../build.mak
7include ../../version.mak
8include $(PJDIR)/build/common.mak
9
Alexandre Lision8af73cb2013-12-10 14:11:20 -050010export LIBDIR := ../lib
11export BINDIR := ../bin
12
Tristan Matthews0a329cc2013-07-17 13:20:14 -040013RULES_MAK := $(PJDIR)/build/rules.mak
14
15PJLIB_LIB:=../../pjlib/lib/libpj-$(TARGET_NAME)$(LIBEXT)
16PJLIB_UTIL_LIB:=../../pjlib-util/lib/libpjlib-util-$(TARGET_NAME)$(LIBEXT)
Alexandre Lision8af73cb2013-12-10 14:11:20 -050017PJNATH_LIB:=../../pjnath/lib/libpjnath-$(TARGET_NAME)$(LIBEXT)
Tristan Matthews0a329cc2013-07-17 13:20:14 -040018PJMEDIA_LIB:=../../pjmedia/lib/libpjmedia-$(TARGET_NAME)$(LIBEXT)
Tristan Matthews0a329cc2013-07-17 13:20:14 -040019
Alexandre Lision8af73cb2013-12-10 14:11:20 -050020export PJSIP_LIB:=libpjsip-$(TARGET_NAME)$(LIBEXT)
21export PJSIP_UA_LIB:=libpjsip-ua-$(TARGET_NAME)$(LIBEXT)
22export PJSIP_SIMPLE_LIB:=libpjsip-simple-$(TARGET_NAME)$(LIBEXT)
23export PJSUA_LIB_LIB:=libpjsua-$(TARGET_NAME)$(LIBEXT)
Tristan Matthews0a329cc2013-07-17 13:20:14 -040024
Alexandre Lision8af73cb2013-12-10 14:11:20 -050025ifeq ($(PJ_SHARED_LIBRARIES),)
26else
27export PJSIP_SONAME := libpjsip.$(SHLIB_SUFFIX)
28export PJSIP_SHLIB := $(PJSIP_SONAME).$(PJ_VERSION_MAJOR)
29export PJSIP_UA_SONAME := libpjsip-ua.$(SHLIB_SUFFIX)
30export PJSIP_UA_SHLIB := $(PJSIP_UA_SONAME).$(PJ_VERSION_MAJOR)
31export PJSIP_SIMPLE_SONAME := libpjsip-simple.$(SHLIB_SUFFIX)
32export PJSIP_SIMPLE_SHLIB := $(PJSIP_SIMPLE_SONAME).$(PJ_VERSION_MAJOR)
33export PJSUA_LIB_SONAME := libpjsua.$(SHLIB_SUFFIX)
34export PJSUA_LIB_SHLIB := $(PJSUA_LIB_SONAME).$(PJ_VERSION_MAJOR)
35endif
Tristan Matthews0a329cc2013-07-17 13:20:14 -040036
37###############################################################################
38# Gather all flags.
39#
40export _CFLAGS := $(CC_CFLAGS) $(OS_CFLAGS) $(HOST_CFLAGS) $(M_CFLAGS) \
41 $(CFLAGS) $(CC_INC)../include \
42 $(CC_INC)../../pjlib/include \
43 $(CC_INC)../../pjlib-util/include \
44 $(CC_INC)../../pjnath/include \
45 $(CC_INC)../../pjmedia/include
46export _CXXFLAGS:= $(_CFLAGS) $(CC_CXXFLAGS) $(OS_CXXFLAGS) $(M_CXXFLAGS) \
47 $(HOST_CXXFLAGS) $(CXXFLAGS)
Alexandre Lision8af73cb2013-12-10 14:11:20 -050048export _LDFLAGS := $(APP_THIRD_PARTY_LIBS) \
49 $(APP_THIRD_PARTY_EXT) \
50 $(CC_LDFLAGS) $(OS_LDFLAGS) $(M_LDFLAGS) $(HOST_LDFLAGS) \
51 $(APP_LDFLAGS) $(LDFLAGS)
Tristan Matthews0a329cc2013-07-17 13:20:14 -040052
53###############################################################################
54# Defines for building PJSIP core library
55#
56export PJSIP_SRCDIR = ../src/pjsip
57export PJSIP_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \
58 sip_config.o sip_multipart.o \
59 sip_errno.o sip_msg.o sip_parser.o sip_tel_uri.o sip_uri.o \
60 sip_endpoint.o sip_util.o sip_util_proxy.o \
61 sip_resolve.o sip_transport.o sip_transport_loop.o \
62 sip_transport_udp.o sip_transport_tcp.o \
63 sip_transport_tls.o sip_auth_aka.o sip_auth_client.o \
64 sip_auth_msg.o sip_auth_parser.o \
65 sip_auth_server.o \
66 sip_transaction.o sip_util_statefull.o \
67 sip_dialog.o sip_ua_layer.o
68export PJSIP_CFLAGS += $(_CFLAGS)
Alexandre Lision8af73cb2013-12-10 14:11:20 -050069export PJSIP_CXXFLAGS += $(_CXXFLAGS)
70export PJSIP_LDFLAGS += $(PJLIB_UTIL_LDLIB) \
71 $(PJLIB_LDLIB) \
72 $(_LDFLAGS)
Tristan Matthews0a329cc2013-07-17 13:20:14 -040073
74###############################################################################
75# Defines for building PJSIP UA library
76#
77export PJSIP_UA_SRCDIR = ../src/pjsip-ua
78export PJSIP_UA_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \
79 sip_inv.o sip_reg.o sip_replaces.o sip_xfer.o \
80 sip_100rel.o sip_timer.o
81export PJSIP_UA_CFLAGS += $(_CFLAGS)
Alexandre Lision8af73cb2013-12-10 14:11:20 -050082export PJSIP_UA_CXXFLAGS += $(_CXXFLAGS)
83export PJSIP_UA_LDFLAGS += $(PJSIP_SIMPLE_LDLIB) \
84 $(PJSIP_LDLIB) \
85 $(PJMEDIA_LDLIB) \
86 $(PJLIB_UTIL_LDLIB) \
87 $(PJLIB_LDLIB) \
88 $(_LDFLAGS)
Tristan Matthews0a329cc2013-07-17 13:20:14 -040089
90
91###############################################################################
92# Defines for building PJSIP SIMPLE library
93#
94export PJSIP_SIMPLE_SRCDIR = ../src/pjsip-simple
95export PJSIP_SIMPLE_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \
96 errno.o evsub.o evsub_msg.o iscomposing.o \
97 mwi.o pidf.o presence.o presence_body.o publishc.o \
98 rpid.o xpidf.o
99export PJSIP_SIMPLE_CFLAGS += $(_CFLAGS)
Alexandre Lision8af73cb2013-12-10 14:11:20 -0500100export PJSIP_SIMPLE_CXXFLAGS += $(_CXXFLAGS)
101export PJSIP_SIMPLE_LDFLAGS += $(PJSIP_LDLIB) \
102 $(PJLIB_UTIL_LDLIB) \
103 $(PJLIB_LDLIB) \
104 $(_LDFLAGS)
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400105
106
107###############################################################################
108# Defines for building PJSUA-LIB library
109#
110export PJSUA_LIB_SRCDIR = ../src/pjsua-lib
111export PJSUA_LIB_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \
112 pjsua_acc.o pjsua_call.o pjsua_core.o \
113 pjsua_im.o pjsua_media.o pjsua_pres.o \
114 pjsua_dump.o pjsua_aud.o pjsua_vid.o
115export PJSUA_LIB_CFLAGS += $(_CFLAGS) $(PJ_VIDEO_CFLAGS)
Alexandre Lision8af73cb2013-12-10 14:11:20 -0500116export PJSUA_LIB_CXXFLAGS += $(_CXXFLAGS) $(PJ_VIDEO_CFLAGS)
117export PJSUA_LIB_LDFLAGS += $(PJSIP_UA_LDLIB) \
118 $(PJSIP_SIMPLE_LDLIB) \
119 $(PJSIP_LDLIB) \
120 $(PJMEDIA_AUDIODEV_LDLIB) \
121 $(PJMEDIA_VIDEODEV_LDLIB) \
122 $(PJMEDIA_CODEC_LDLIB) \
123 $(PJMEDIA_LDLIB) \
124 $(PJNATH_LDLIB) \
125 $(PJLIB_UTIL_LDLIB) \
126 $(PJLIB_LDLIB) \
127 $(_LDFLAGS)
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400128
129
130export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT
131
132###############################################################################
133# Defines for building test application
134#
135export TEST_SRCDIR = ../src/test
136export TEST_OBJS += dlg_core_test.o dns_test.o msg_err_test.o \
137 msg_logger.o msg_test.o multipart_test.o regc_test.o \
138 test.o transport_loop_test.o transport_tcp_test.o \
139 transport_test.o transport_udp_test.o \
140 tsx_basic_test.o tsx_bench.o tsx_uac_test.o \
141 tsx_uas_test.o txdata_test.o uri_test.o \
142 inv_offer_answer_test.o
143export TEST_CFLAGS += $(_CFLAGS)
Alexandre Lision8af73cb2013-12-10 14:11:20 -0500144export TEST_CXXFLAGS += $(_CXXFLAGS)
145export TEST_LDFLAGS += $(PJSIP_LDLIB) \
146 $(PJSIP_UA_LDLIB) \
147 $(PJSIP_SIMPLE_LDLIB) \
148 $(PJSUA_LDLIB) \
149 $(PJMEDIA_CODEC_LDLIB) \
150 $(PJMEDIA_VIDEODEV_LDLIB) \
151 $(PJMEDIA_LDLIB) \
152 $(PJMEDIA_AUDIODEV_LDLIB) \
153 $(PJLIB_LDLIB) \
154 $(PJLIB_UTIL_LDLIB) \
155 $(PJNATH_LDLIB) \
156 $(_LDFLAGS)
157export TEST_EXE := pjsip-test-$(TARGET_NAME)$(HOST_EXE)
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400158
159
160export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT
161###############################################################################
162# Main entry
163#
164#
Alexandre Lision8af73cb2013-12-10 14:11:20 -0500165TARGETS := $(PJSIP_LIB) $(PJSIP_SONAME) \
166 $(PJSIP_SIMPLE_LIB) $(PJSIP_SIMPLE_SONAME) \
167 $(PJSIP_UA_LIB) $(PJSIP_UA_SONAME) \
168 $(PJSUA_LIB_LIB) $(PJSUA_LIB_SONAME) \
169 $(TEST_EXE)
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400170
171all: $(TARGETS)
172
173doc:
174 cd .. && rm -rf docs/$(PJ_VERSION) && doxygen docs/doxygen.cfg
175 @if [ -n "$(WWWDIR)" ] && ! [ -d "$(WWWDIR)/docs/$(PJ_VERSION)/pjsip/docs/html" ] ; then \
176 echo "Creating docs/$(PJ_VERSION)/pjsip/docs/html" ; \
177 mkdir -p $(WWWDIR)/docs/$(PJ_VERSION)/pjsip/docs/html ; \
178 fi
179 @if [ -n "$(WWWDIR)" ] && [ -d "$(WWWDIR)/docs/$(PJ_VERSION)/pjsip/docs/html" ] ; then \
180 echo "Copying docs/$(PJ_VERSION) to $(WWWDIR)/docs/$(PJ_VERSION)/pjsip/docs/html.." ; \
181 cp -v -a ../docs/$(PJ_VERSION)/html/* $(WWWDIR)/docs/$(PJ_VERSION)/pjsip/docs/html/ ; \
182 fi
183
184dep: depend
185distclean: realclean
186
Alexandre Lision8af73cb2013-12-10 14:11:20 -0500187.PHONY: all dep depend clean realclean distclean
188.PHONY: $(TARGETS)
189.PHONY: $(PJSIP_LIB) $(PJSIP_SONAME)
190.PHONY: $(PJSIP_UA_LIB) $(PJSIP_UA_SONAME)
191.PHONY: $(PJSIP_SIMPLE_LIB) $(PJSIP_SIMPLE_SONAME)
192.PHONY: $(PJSUA_LIB_LIB) $(PJSUA_LIB_SONAME)
193.PHONY: $(TEST_EXE)
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400194
Alexandre Lision8af73cb2013-12-10 14:11:20 -0500195pjsip: $(PJSIP_LIB)
196$(PJSIP_SONAME): $(PJSIP_LIB)
197$(PJSIP_LIB) $(PJSIP_SONAME):
198 $(MAKE) -f $(RULES_MAK) APP=PJSIP app=pjsip $(subst /,$(HOST_PSEP),$(LIBDIR)/$@)
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400199
Alexandre Lision8af73cb2013-12-10 14:11:20 -0500200pjsip-ua: $(PJSIP_UA_LIB)
201$(PJSIP_UA_SONAME): $(PJSIP_UA_LIB)
202$(PJSIP_UA_LIB) $(PJSIP_UA_SONAME): $(PJSIP_LIB) $(PJSIP_SONAME) $(PJSIP_SIMPLE_LIB) $(PJSIP_SIMPLE_SONAME)
203 $(MAKE) -f $(RULES_MAK) APP=PJSIP_UA app=pjsip-ua $(subst /,$(HOST_PSEP),$(LIBDIR)/$@)
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400204
Alexandre Lision8af73cb2013-12-10 14:11:20 -0500205pjsip-simple: $(PJSIP_SIMPLE_LIB)
206$(PJSIP_SIMPLE_SONAME): $(PJSIP_SIMPLE_LIB)
207$(PJSIP_SIMPLE_LIB) $(PJSIP_SIMPLE_SONAME): $(PJSIP_LIB) $(PJSIP_SONAME)
208 $(MAKE) -f $(RULES_MAK) APP=PJSIP_SIMPLE app=pjsip-simple $(subst /,$(HOST_PSEP),$(LIBDIR)/$@)
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400209
Alexandre Lision8af73cb2013-12-10 14:11:20 -0500210pjsua-lib: $(PJSUA_LIB_LIB)
211$(PJSUA_LIB_SONAME): $(PJSUA_LIB_LIB)
212$(PJSUA_LIB_LIB) $(PJSUA_LIB_SONAME): $(PJSIP_LIB) $(PJSIP_SONAME) $(PJSIP_SIMPLE_LIB) $(PJSIP_SIMPLE_SONAME) $(PJSIP_UA_LIB) $(PJSIP_UA_SONAME)
213 $(MAKE) -f $(RULES_MAK) APP=PJSUA_LIB app=pjsua-lib $(subst /,$(HOST_PSEP),$(LIBDIR)/$@)
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400214
Alexandre Lision8af73cb2013-12-10 14:11:20 -0500215pjsip-test: $(TEST_EXE)
216$(TEST_EXE): $(PJSIP_LIB) $(PJSIP_SONAME)
217$(TEST_EXE): $(PJSIP_UA_LIB) $(PJSIP_UA_SONAME)
218$(TEST_EXE): $(PJSIP_SIMPLE_LIB) $(PJSIP_SIMPLE_SONAME)
219$(TEST_EXE): $(PJSUA_LIB_LIB) $(PJSUA_LIB_SONAME)
220$(TEST_EXE):
221 $(MAKE) -f $(RULES_MAK) APP=TEST app=pjsip-test $(subst /,$(HOST_PSEP),$(BINDIR)/$@)
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400222
Alexandre Lision8af73cb2013-12-10 14:11:20 -0500223.PHONY: pjsip.ko
224pjsip.ko:
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400225 echo Making $@
Alexandre Lision8af73cb2013-12-10 14:11:20 -0500226 $(MAKE) -f $(RULES_MAK) APP=PJSIP app=pjsip $(subst /,$(HOST_PSEP),$(LIBDIR)/$@)
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400227
Alexandre Lision8af73cb2013-12-10 14:11:20 -0500228.PHONY: pjsip-ua.ko
229pjsip-ua.ko:
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400230 echo Making $@
Alexandre Lision8af73cb2013-12-10 14:11:20 -0500231 $(MAKE) -f $(RULES_MAK) APP=PJSIP_UA app=pjsip-ua $(subst /,$(HOST_PSEP),$(LIBDIR)/$@)
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400232
Alexandre Lision8af73cb2013-12-10 14:11:20 -0500233.PHONY: pjsip-simple.ko
234pjsip-simple.ko:
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400235 echo Making $@
Alexandre Lision8af73cb2013-12-10 14:11:20 -0500236 $(MAKE) -f $(RULES_MAK) APP=PJSIP_SIMPLE app=pjsip-simple $(subst /,$(HOST_PSEP),$(LIBDIR)/$@)
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400237
Alexandre Lision8af73cb2013-12-10 14:11:20 -0500238.PHONY: pjsua-lib.ko
239pjsua-lib.ko:
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400240 echo Making $@
Alexandre Lision8af73cb2013-12-10 14:11:20 -0500241 $(MAKE) -f $(RULES_MAK) APP=PJSUA_LIB app=pjsua-lib $(subst /,$(HOST_PSEP),$(LIBDIR)/$@)
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400242
243clean:
244 $(MAKE) -f $(RULES_MAK) APP=PJSIP app=pjsip $@
245 $(MAKE) -f $(RULES_MAK) APP=PJSIP_UA app=pjsip-ua $@
246 $(MAKE) -f $(RULES_MAK) APP=PJSIP_SIMPLE app=pjsip-simple $@
247 $(MAKE) -f $(RULES_MAK) APP=PJSUA_LIB app=pjsua-lib $@
248 $(MAKE) -f $(RULES_MAK) APP=TEST app=pjsip-test $@
249
250depend:
251 $(MAKE) -f $(RULES_MAK) APP=PJSIP app=pjsip $@
252 $(MAKE) -f $(RULES_MAK) APP=PJSIP_UA app=pjsip-ua $@
253 $(MAKE) -f $(RULES_MAK) APP=PJSIP_SIMPLE app=pjsip-simple $@
254 $(MAKE) -f $(RULES_MAK) APP=PJSUA_LIB app=pjsua-lib $@
255 $(MAKE) -f $(RULES_MAK) APP=TEST app=pjsip-test $@
Alexandre Lision8af73cb2013-12-10 14:11:20 -0500256 echo '$(BINDIR)/$(TEST_EXE): $(PJMEDIA_LIB) $(LIBDIR)/$(PJSUA_LIB_LIB) $(LIBDIR)/$(PJSIP_SIMPLE_LIB) $(LIBDIR)/$(PJSIP_UA_LIB) $(LIBDIR)/$(PJSIP_LIB) $(PJNATH_LIB) $(PJLIB_UTIL_LIB) $(PJLIB_LIB)' >> .pjsip-test-$(TARGET_NAME).depend
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400257
258realclean:
259 $(subst @@,$(subst /,$(HOST_PSEP),.pjsip-$(TARGET_NAME).depend),$(HOST_RMR))
260 $(subst @@,$(subst /,$(HOST_PSEP),.pjsip-ua-$(TARGET_NAME).depend),$(HOST_RMR))
261 $(subst @@,$(subst /,$(HOST_PSEP),.pjsip-simple-$(TARGET_NAME).depend),$(HOST_RMR))
262 $(subst @@,$(subst /,$(HOST_PSEP),.pjsua-lib-$(TARGET_NAME).depend),$(HOST_RMR))
263 $(MAKE) -f $(RULES_MAK) APP=PJSIP app=pjsip $@
264 $(MAKE) -f $(RULES_MAK) APP=PJSIP_UA app=pjsip-ua $@
265 $(MAKE) -f $(RULES_MAK) APP=PJSIP_SIMPLE app=pjsip-simple $@
266 $(MAKE) -f $(RULES_MAK) APP=TEST app=pjsip-test $@
267 $(MAKE) -f $(RULES_MAK) APP=PJSUA_LIB app=pjsua-lib $@
268
269
270