forked from Mirrors/freeswitch
00654d880e
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@8545 d0543943-73ff-0310-b7d9-9358b9ac24b2
184 lines
6.5 KiB
Makefile
184 lines
6.5 KiB
Makefile
include Makefile.srcdir
|
|
|
|
BLDDIR = $(CURDIR)
|
|
SUBDIR =
|
|
|
|
export SRCDIR
|
|
export BLDDIR
|
|
|
|
include $(BLDDIR)/Makefile.version
|
|
include $(BLDDIR)/config.mk
|
|
|
|
SUBDIRS = include lib src tools examples
|
|
|
|
# The reason we don't build tools and examples by default is that they
|
|
# contain executables, which require significantly more from the
|
|
# environment to build than libraries. Ergo, they are signficantly
|
|
# more likely to fail to build. Indeed, when 'tools' was built by
|
|
# default, the majority of the reported build problems were with that.
|
|
# Since they are ancillary to the package, building them by default is
|
|
# not worth causing the whole build to fail.
|
|
|
|
# As with any subdirectory, to build 'tools' or 'examples', cd to the
|
|
# subdirectory and make there.
|
|
|
|
DEFAULT_SUBDIRS = include lib src
|
|
|
|
PROGRAMS_TO_INSTALL = xmlrpc-c-config
|
|
|
|
default: xmlrpc-c-config xmlrpc-c-config.test $(DEFAULT_SUBDIRS:%=%/all)
|
|
|
|
.PHONY: all
|
|
all: xmlrpc-c-config xmlrpc-c-config.test $(SUBDIRS:%=%/all)
|
|
|
|
# The examples subdirectory is special, because even the make file in there
|
|
# is designed to be an example. So it has to be simple and as close as
|
|
# possible to something a person could use outside of the Xmlrpc-c source
|
|
# tree. One ramification of that is that it does not specify dependencies
|
|
# on other parts of the Xmlrpc-c build. That means we must separately
|
|
# ensure that the Xmlrpc-c libraries are built before making the example
|
|
# programs.
|
|
#
|
|
# It also means that you have to manually clean the examples directory
|
|
# in order to get the examples rebuilt after you modify the Xmlrpc-c
|
|
# libraries.
|
|
|
|
examples/all: xmlrpc-c-config.test lib/all src/all include/all
|
|
|
|
# Parallel make (make --jobs) is not smart enough to coordinate builds
|
|
# between submakes, so a naive parallel make would cause certain
|
|
# targets to get built multiple times simultaneously. That is usually
|
|
# unacceptable. So we introduce extra dependencies here just to make
|
|
# sure such targets are already up to date before the submake starts,
|
|
# for the benefit of parallel make. Note that we ensure that parallel
|
|
# make works for 'make all' in the top directory, but it may still fail
|
|
# for the aforementioned reason for other invocations.
|
|
|
|
tools/all: include/all lib/all src/all
|
|
src/all lib/all: include/all
|
|
src/all: lib/all
|
|
|
|
MAJOR := $(XMLRPC_MAJOR_RELEASE)
|
|
MINOR := $(XMLRPC_MINOR_RELEASE)
|
|
POINT := $(XMLRPC_POINT_RELEASE)
|
|
version.h: $(SRCDIR)/Makefile.version
|
|
rm -f $@
|
|
echo "/* Generated by make file rule */" >>$@
|
|
echo "#define XMLRPC_C_VERSION" \
|
|
\"Xmlrpc-c $(MAJOR).$(MINOR).$(POINT)"\"" >>$@
|
|
echo "#define XMLRPC_VERSION_MAJOR $(MAJOR)" >>$@
|
|
echo "#define XMLRPC_VERSION_MINOR $(MINOR)" >>$@
|
|
echo "#define XMLRPC_VERSION_POINT $(POINT)" >>$@
|
|
|
|
# We don't want common.mk's rule for version.h
|
|
OMIT_VERSION_H = Y
|
|
|
|
# We don't want common.mk's rule for transport_config.h
|
|
OMIT_TRANSPORT_CONFIG_H = Y
|
|
|
|
include transport_config.make
|
|
|
|
# shell_config is a fragment to place inside a Bourne shell program that
|
|
# sets variables that tell how the build is configured.
|
|
|
|
shell_config: $(BLDDIR)/config.mk
|
|
rm -f $@
|
|
@echo "Lots of echoes to '$@' suppressed here ..."
|
|
@echo '#' >>$@
|
|
@echo '#######################################################' >>$@
|
|
@echo "# From '$@'" >>$@
|
|
@echo '#######################################################' >>$@
|
|
@echo 'ENABLE_ABYSS_THREADS="$(ENABLE_ABYSS_THREADS)"' >>$@
|
|
@echo 'ENABLE_LIBXML2_BACKEND="$(ENABLE_LIBXML2_BACKEND)"' >>$@
|
|
@echo 'MUST_BUILD_WININET_CLIENT="$(MUST_BUILD_WININET_CLIENT)"'>>$@
|
|
@echo 'MUST_BUILD_CURL_CLIENT="$(MUST_BUILD_CURL_CLIENT)"' >>$@
|
|
@echo 'MUST_BUILD_LIBWWW_CLIENT="$(MUST_BUILD_LIBWWW_CLIENT)"' >>$@
|
|
@echo 'NEED_RPATH="$(NEED_RPATH)"' >>$@
|
|
@echo 'NEED_WL_RPATH="$(NEED_WL)RPATH)"' >>$@
|
|
@echo 'LSOCKET="$(LSOCKET)"' >>$@
|
|
@echo 'WININET_LDADD="$(WININET_LDADD)"' >>$@
|
|
@echo 'WININET_RPATH="$(WININET_RPATH)"' >>$@
|
|
@echo 'WININET_WL_RPATH="$(WININET_WL_RPATH)"' >>$@
|
|
@echo 'CURL_LDADD="$(CURL_LDADD)"' >>$@
|
|
@echo 'CURL_RPATH="$(CURL_RPATH)"' >>$@
|
|
@echo 'CURL_WL_RPATH="$(CURL_WL_RPATH)"' >>$@
|
|
@echo 'LIBWWW_LDADD="$(LIBWWW_LDADD)"' >>$@
|
|
@echo 'LIBWWW_RPATH="$(LIBWWW_RPATH)"' >>$@
|
|
@echo 'LIBWWW_WL_RPATH="$(LIBWWW_WL_RPATH)"' >>$@
|
|
@echo 'XMLRPC_MAJOR_RELEASE="$(XMLRPC_MAJOR_RELEASE)"' >>$@
|
|
@echo 'XMLRPC_MINOR_RELEASE="$(XMLRPC_MINOR_RELEASE)"' >>$@
|
|
@echo 'XMLRPC_POINT_RELEASE="$(XMLRPC_POINT_RELEASE)"' >>$@
|
|
@echo 'FEATURE_LIST="$(FEATURE_LIST)"' >>$@
|
|
@echo 'PREFIX="$(PREFIX)"' >>$@
|
|
@echo 'HEADERINST_DIR="$(HEADERINST_DIR)"' >>$@
|
|
@echo 'LIBINST_DIR="$(LIBINST_DIR)"' >>$@
|
|
@echo 'BLDDIR="$(BLDDIR)"' >>$@
|
|
@echo 'ABS_SRCDIR="$(ABS_SRCDIR)"' >>$@
|
|
@echo '#######################################################' >>$@
|
|
|
|
# We don't want config.mk's xmlrpc-c-config.test rule:
|
|
OMIT_XMLRPC_C_CONFIG_TEST = Y
|
|
|
|
xmlrpc-c-config xmlrpc-c-config.test:%: %.main shell_config
|
|
rm -f $@
|
|
@echo "Echoes to '$@' suppressed here ..."
|
|
@echo '#! /bin/sh' >>$@
|
|
@echo '#' >>$@
|
|
@echo '# This file was generated by a make rule' >>$@
|
|
@echo '#' >>$@
|
|
cat shell_config >>$@
|
|
cat $< >>$@
|
|
chmod a+rx $@
|
|
|
|
.PHONY: clean clean-local
|
|
clean: $(SUBDIRS:%=%/clean) clean-common clean-local
|
|
|
|
clean-local:
|
|
rm -f transport_config.h version.h
|
|
|
|
.PHONY: distclean distclean-local
|
|
distclean: $(SUBDIRS:%=%/distclean) distclean-common distclean-local
|
|
|
|
distclean-local: clean-local
|
|
rm -f config.log config.status config.mk Makefile.srcdir
|
|
rm -f xmlrpc_config.h xmlrpc_amconfig.h stamp-h
|
|
rm -f shell_config xmlrpc-c-config xmlrpc-c-config.test
|
|
rm -f TAGS
|
|
|
|
check: $(SUBDIRS:%=%/check)
|
|
|
|
DISTFILES =
|
|
|
|
.PHONY: distdir
|
|
distdir: distdir-common
|
|
|
|
.PHONY: install
|
|
install: $(DEFAULT_SUBDIRS:%=%/install) install-common
|
|
|
|
.PHONY: dep
|
|
dep: version.h $(BLDDIR)/include/xmlrpc-c/config.h $(SUBDIRS:%=%/dep)
|
|
|
|
xmlrpc_config.h xmlrpc_amconfig.h \
|
|
:%:%.in $(SRCDIR)/configure
|
|
$(SRCDIR)/configure
|
|
|
|
include $(SRCDIR)/common.mk
|
|
|
|
|
|
# A trick to catch a common user error. When you don't run 'configure',
|
|
# you don't have a Makefile.srcdir, which means $(SRCDIR) is null.
|
|
|
|
/common.mk:
|
|
@echo =======================================
|
|
@echo = You must run Configure before Make. =
|
|
@echo =======================================
|
|
false
|
|
|
|
# 'tags' generates/updates an Emacs tags file, anmed TAGS, in the current
|
|
# directory. Use with Emacs command 'find-tag'.
|
|
|
|
.PHONY: tags
|
|
tags:
|
|
find . -name "*.c" -o -name "*.h" -o -name "*.cpp" -o -name "*.hpp" | \
|
|
etags -
|