blob: 56e5ead236956e6fa843f26def5a078cbf03f08a [file] [log] [blame]
Tristan Matthews0a329cc2013-07-17 13:20:14 -04001include ../../build.mak
2include ../../version.mak
3include $(PJDIR)/build/common.mak
4
Alexandre Lision8af73cb2013-12-10 14:11:20 -05005export LIBDIR := ../lib
6export BINDIR := ../bin
7
Tristan Matthews0a329cc2013-07-17 13:20:14 -04008RULES_MAK := $(PJDIR)/build/rules.mak
9
Alexandre Lision8af73cb2013-12-10 14:11:20 -050010export PJLIB_LIB := libpj-$(TARGET_NAME)$(LIBEXT)
Tristan Matthews0a329cc2013-07-17 13:20:14 -040011
Alexandre Lision8af73cb2013-12-10 14:11:20 -050012ifeq ($(PJ_SHARED_LIBRARIES),)
13else
14export PJLIB_SONAME := libpj.$(SHLIB_SUFFIX)
15export PJLIB_SHLIB := $(PJLIB_SONAME).$(PJ_VERSION_MAJOR)
16endif
Tristan Matthews0a329cc2013-07-17 13:20:14 -040017
18###############################################################################
19# Gather all flags.
20#
21export _CFLAGS := $(CC_CFLAGS) $(OS_CFLAGS) $(HOST_CFLAGS) $(M_CFLAGS) \
22 $(CFLAGS) $(CC_INC)../include
23export _CXXFLAGS:= $(_CFLAGS) $(CC_CXXFLAGS) $(OS_CXXFLAGS) $(M_CXXFLAGS) \
24 $(HOST_CXXFLAGS) $(CXXFLAGS)
Alexandre Lision8af73cb2013-12-10 14:11:20 -050025export _LDFLAGS := $(CC_LDFLAGS) $(OS_LDFLAGS) $(M_LDFLAGS) $(HOST_LDFLAGS) \
26 $(APP_LDFLAGS) $(LDFLAGS)
27
Tristan Matthews0a329cc2013-07-17 13:20:14 -040028
29###############################################################################
30# Defines for building PJLIB library
31#
32export PJLIB_SRCDIR = ../src/pj
33export PJLIB_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \
34 activesock.o array.o config.o ctype.o errno.o except.o fifobuf.o \
35 guid.o hash.o ip_helper_generic.o list.o lock.o log.o os_time_common.o \
36 os_info.o pool.o pool_buf.o pool_caching.o pool_dbg.o rand.o \
37 rbtree.o sock_common.o sock_qos_common.o sock_qos_bsd.o \
38 ssl_sock_common.o ssl_sock_ossl.o ssl_sock_dump.o \
39 string.o timer.o types.o
40export PJLIB_CFLAGS += $(_CFLAGS)
Alexandre Lision8af73cb2013-12-10 14:11:20 -050041export PJLIB_CXXFLAGS += $(_CXXFLAGS)
42export PJLIB_LDFLAGS += $(_LDFLAGS)
Tristan Matthews0a329cc2013-07-17 13:20:14 -040043
44###############################################################################
45# Defines for building test application
46#
47export TEST_SRCDIR = ../src/pjlib-test
48export TEST_OBJS += activesock.o atomic.o echo_clt.o errno.o exception.o \
49 fifobuf.o file.o hash_test.o ioq_perf.o ioq_udp.o \
50 ioq_unreg.o ioq_tcp.o \
51 list.o mutex.o os.o pool.o pool_perf.o rand.o rbtree.o \
52 select.o sleep.o sock.o sock_perf.o ssl_sock.o \
53 string.o test.o thread.o timer.o timestamp.o \
54 udp_echo_srv_sync.o udp_echo_srv_ioqueue.o \
55 util.o
56export TEST_CFLAGS += $(_CFLAGS)
Alexandre Lision8af73cb2013-12-10 14:11:20 -050057export TEST_CXXFLAGS += $(_CXXFLAGS)
58export TEST_LDFLAGS += $(PJLIB_LDLIB) $(_LDFLAGS)
59export TEST_EXE := pjlib-test-$(TARGET_NAME)$(HOST_EXE)
Tristan Matthews0a329cc2013-07-17 13:20:14 -040060
Alexandre Lision8af73cb2013-12-10 14:11:20 -050061
Tristan Matthews0a329cc2013-07-17 13:20:14 -040062export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT
63###############################################################################
64# Main entry
65#
66# $(TARGET) is defined in os-$(OS_NAME).mak file in current directory.
67#
68
69all: $(TARGETS)
70
71doc:
72 cd .. && rm -rf docs/$(PJ_VERSION) && doxygen docs/doxygen.cfg
73 @if [ -n "$(WWWDIR)" ] && ! [ -d "$(WWWDIR)/docs/$(PJ_VERSION)/pjlib/docs/html" ] ; then \
74 echo "Creating docs/$(PJ_VERSION)/pjlib/docs/html" ; \
75 mkdir -p $(WWWDIR)/docs/$(PJ_VERSION)/pjlib/docs/html ; \
76 fi
77 @if [ -n "$(WWWDIR)" ] && [ -d "$(WWWDIR)/docs/$(PJ_VERSION)/pjlib/docs/html" ] ; then \
78 echo "Copying docs/$(PJ_VERSION) to $(WWWDIR)/docs/$(PJ_VERSION)/pjlib/docs/html.." ; \
79 cp -v -a ../docs/$(PJ_VERSION)/html/* $(WWWDIR)/docs/$(PJ_VERSION)/pjlib/docs/html/ ; \
80 fi
81print:
82 $(MAKE) -f $(RULES_MAK) APP=PJLIB app=pjlib print_lib
83 $(MAKE) -f $(RULES_MAK) APP=TEST app=pjlib-test print_bin
84
85depend: ../include/pj/config_site.h
86 $(MAKE) -f $(RULES_MAK) APP=PJLIB app=pjlib depend
87 $(MAKE) -f $(RULES_MAK) APP=TEST app=pjlib-test depend
Alexandre Lision8af73cb2013-12-10 14:11:20 -050088 echo '$(BINDIR)/$(TEST_EXE): $(LIBDIR)/$(PJLIB_LIB)' >> .pjlib-test-$(TARGET_NAME).depend
Tristan Matthews0a329cc2013-07-17 13:20:14 -040089
90
Alexandre Lision8af73cb2013-12-10 14:11:20 -050091.PHONY: all dep depend clean realclean distclean
92.PHONY: $(TARGETS)
93.PHONY: $(PJLIB_LIB) $(PJLIB_SONAME)
94.PHONY: $(TEST_EXE)
Tristan Matthews0a329cc2013-07-17 13:20:14 -040095
96dep: depend
97
Alexandre Lision8af73cb2013-12-10 14:11:20 -050098pjlib: $(PJLIB_LIB)
99$(PJLIB_LIB): ../include/pj/config_site.h
100
101$(PJLIB_SONAME): $(PJLIB_LIB)
102$(PJLIB_LIB) $(PJLIB_SONAME):
103 $(MAKE) -f $(RULES_MAK) APP=PJLIB app=pjlib $(subst /,$(HOST_PSEP),$(LIBDIR)/$@)
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400104
105../include/pj/config_site.h:
106 touch ../include/pj/config_site.h
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400107
Alexandre Lision8af73cb2013-12-10 14:11:20 -0500108pjlib-test: $(TEST_EXE)
109$(TEST_EXE): $(PJLIB_LIB) $(PJLIB_SONAME)
110 $(MAKE) -f $(RULES_MAK) APP=TEST app=pjlib-test $(subst /,$(HOST_PSEP),$(BINDIR)/$@)
111
112.PHONY: pjlib.ko
113pjlib.ko:
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400114 echo Making $@
Alexandre Lision8af73cb2013-12-10 14:11:20 -0500115 $(MAKE) -f $(RULES_MAK) APP=PJLIB app=pjlib $(subst /,$(HOST_PSEP),$(LIBDIR)/$@)
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400116
Alexandre Lision8af73cb2013-12-10 14:11:20 -0500117.PHONY: pjlib-test.ko
118pjlib-test.ko:
119 $(MAKE) -f $(RULES_MAK) APP=TEST app=pjlib-test $(subst /,$(HOST_PSEP),$(LIBDIR)/$@)
Tristan Matthews0a329cc2013-07-17 13:20:14 -0400120
121clean:
122 $(MAKE) -f $(RULES_MAK) APP=PJLIB app=pjlib clean
123 $(MAKE) -f $(RULES_MAK) APP=TEST app=pjlib-test clean
124
125realclean:
126 $(subst @@,$(subst /,$(HOST_PSEP),.pjlib-$(TARGET_NAME).depend),$(HOST_RMR))
127 $(subst @@,$(subst /,$(HOST_PSEP),.pjlib-test-$(TARGET_NAME).depend),$(HOST_RMR))
128 $(MAKE) -f $(RULES_MAK) APP=PJLIB app=pjlib realclean
129 $(MAKE) -f $(RULES_MAK) APP=TEST app=pjlib-test realclean
130
131distclean: realclean
132
133gcov-report:
134 $(MAKE) -f $(RULES_MAK) APP=PJLIB app=pjlib gcov-report
135 $(MAKE) -f $(RULES_MAK) APP=TEST app=pjlib-test gcov-report
136