![Michael Jerris](/assets/img/avatar_default.png)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6297 d0543943-73ff-0310-b7d9-9358b9ac24b2
273 lines
8.6 KiB
Makefile
273 lines
8.6 KiB
Makefile
# -*-makefile-*- <-- an Emacs control
|
|
|
|
# This file contains rules and variable settings for the convenience
|
|
# of every other make file in the package.
|
|
|
|
# No make file is required to use this file, but it usually saves a lot
|
|
# of duplication.
|
|
|
|
# The following make variables are meaningful as input to this file:
|
|
#
|
|
# SRCDIR: Name of directory which is the top of the Xmlrpc-c source tree.
|
|
# BUILDDIR: Name of directory which is the top of the Xmlrpc-c build tree.
|
|
|
|
LIBTOOL = $(SRCDIR)/libtool
|
|
LINK = $(LIBTOOL) --mode=link $(CCLD)
|
|
|
|
GCC_WARNINGS = -Wall -Wundef -Wimplicit -W -Winline
|
|
# We need -Wwrite-strings after we fix all the missing consts
|
|
|
|
GCC_C_WARNINGS = $(GCC_WARNINGS) \
|
|
-Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes
|
|
|
|
GCC_CXX_WARNINGS = $(GCC_WARNINGS) -Woverloaded-virtual -Wsynth
|
|
|
|
ifeq ($(C_COMPILER_GNU),yes)
|
|
CFLAGS_COMMON = $(GCC_C_WARNINGS) $(COMPILER_CFLAGS) -fno-common -g
|
|
else
|
|
CFLAGS_COMMON = $(COMPILER_CFLAGS)
|
|
endif
|
|
|
|
ifeq ($(CXX_COMPILER_GNU),yes)
|
|
CXXFLAGS_COMMON = $(GCC_CXX_WARNINGS) $(COMPILER_CXXFLAGS)
|
|
else
|
|
CXXFLAGS_COMMON = $(COMPILER_CXXFLAGS)
|
|
endif
|
|
|
|
DISTDIR = $(BUILDDIR)/$(PACKAGE)-$(VERSION)/$(SUBDIR)
|
|
|
|
LDFLAGS_VERSINFO = -version-info 7:0:4
|
|
|
|
# CURDIR was introduced in GNU Make 3.77.
|
|
ifeq ($(CURDIR)x,x)
|
|
CURDIR := $(shell /bin/pwd)
|
|
endif
|
|
|
|
##############################################################################
|
|
# RULES #
|
|
##############################################################################
|
|
|
|
$(SUBDIRS:%=%/all): %/all: $(CURDIR)/%
|
|
$(MAKE) -C $(dir $@) -f $(SRCDIR)/$(SUBDIR)/$(dir $@)Makefile \
|
|
$(notdir $@)
|
|
|
|
$(SUBDIRS:%=%/install): %/install: $(CURDIR)/%
|
|
$(MAKE) -C $(dir $@) -f $(SRCDIR)/$(SUBDIR)/$(dir $@)Makefile \
|
|
$(notdir $@)
|
|
|
|
$(SUBDIRS:%=%/clean): %/clean: $(CURDIR)/%
|
|
$(MAKE) -C $(dir $@) -f $(SRCDIR)/$(SUBDIR)/$(dir $@)Makefile \
|
|
$(notdir $@)
|
|
|
|
$(SUBDIRS:%=%/distclean): %/distclean: $(CURDIR)/%
|
|
$(MAKE) -C $(dir $@) -f $(SRCDIR)/$(SUBDIR)/$(dir $@)Makefile \
|
|
$(notdir $@)
|
|
|
|
$(SUBDIRS:%=%/distdir): %/distdir: $(CURDIR)/%
|
|
$(MAKE) -C $(dir $@) -f $(SRCDIR)/$(SUBDIR)/$(dir $@)Makefile \
|
|
$(notdir $@)
|
|
|
|
$(SUBDIRS:%=%/dep): %/dep: $(CURDIR)/%
|
|
$(MAKE) -C $(dir $@) -f $(SRCDIR)/$(SUBDIR)/$(dir $@)Makefile \
|
|
$(notdir $@)
|
|
|
|
$(BUILDDIR)/lib/util/casprintf.lo: FORCE
|
|
$(MAKE) -C $(dir $@) -f $(SRCDIR)/lib/util/Makefile $(notdir $@)
|
|
|
|
$(BUILDDIR)/lib/expat/xmlparse/libxmlrpc_xmlparse.la: FORCE
|
|
$(MAKE) -C $(dir $@) -f $(SRCDIR)/lib/expat/xmlparse/Makefile \
|
|
$(notdir $@)
|
|
|
|
$(BUILDDIR)/lib/expat/xmltok/libxmlrpc_xmltok.la: FORCE
|
|
$(MAKE) -C $(dir $@) -f $(SRCDIR)/lib/expat/xmltok/Makefile \
|
|
$(notdir $@)
|
|
|
|
$(BUILDDIR)/lib/wininet_transport/xmlrpc_wininet_transport.lo: FORCE
|
|
$(MAKE) -C $(dir $@) -f $(SRCDIR)/lib/wininet_transport/Makefile \
|
|
$(notdir $@)
|
|
|
|
$(BUILDDIR)/lib/curl_transport/xmlrpc_curl_transport.lo: FORCE
|
|
$(MAKE) -C $(dir $@) -f $(SRCDIR)/lib/curl_transport/Makefile \
|
|
$(notdir $@)
|
|
|
|
$(BUILDDIR)/lib/libwww_transport/xmlrpc_libwww_transport.lo: FORCE
|
|
$(MAKE) -C $(dir $@) -f $(SRCDIR)/lib/libwww_transport/Makefile \
|
|
$(notdir $@)
|
|
|
|
$(BUILDDIR)/src/libxmlrpc.la: FORCE
|
|
$(MAKE) -C $(dir $@) -f $(SRCDIR)/src/Makefile \
|
|
$(notdir $@)
|
|
|
|
$(BUILDDIR)/src/libxmlrpc_client.la: FORCE
|
|
$(MAKE) -C $(dir $@) -f $(SRCDIR)/src/Makefile \
|
|
$(notdir $@)
|
|
|
|
$(BUILDDIR)/src/libxmlrpc_server.la: FORCE
|
|
$(MAKE) -C $(dir $@) -f $(SRCDIR)/src/Makefile \
|
|
$(notdir $@)
|
|
|
|
ifneq ($(OMIT_TRANSPORT_CONFIG_H),Y)
|
|
$(BUILDDIR)/transport_config.h:
|
|
$(MAKE) -C $(dir $@) $(notdir $@)
|
|
endif
|
|
|
|
MKINSTALLDIRS = $(SHELL) $(SRCDIR)/mkinstalldirs
|
|
|
|
.PHONY: install-common install-libraries install-headers install-bin
|
|
install-common: \
|
|
install-ltlibraries install-libraries install-headers install-bin
|
|
|
|
INSTALL_LIB_CMD = $(INSTALL_DATA) $$p $(DESTDIR)$(LIBINST_DIR)/$$p
|
|
RANLIB_CMD = $(RANLIB) $(DESTDIR)$(LIBINST_DIR)/$$p
|
|
|
|
install-libraries: $(LIBRARIES_TO_INSTALL)
|
|
$(MKINSTALLDIRS) $(DESTDIR)$(LIBINST_DIR)
|
|
@list='$(LIBRARIES_TO_INSTALL)'; for p in $$list; do \
|
|
if test -f $$p; then \
|
|
echo " $(INSTALL_LIB_CMD)"; \
|
|
$(INSTALL_LIB_CMD); \
|
|
else :; fi; \
|
|
done
|
|
@$(POST_INSTALL)
|
|
@list='$(LIBRARIES_TO_INSTALL)'; for p in $$list; do \
|
|
if test -f $$p; then \
|
|
echo " $(RANLIB_CMD)"; \
|
|
$(RANLIB_CMD); \
|
|
else :; fi; \
|
|
done
|
|
|
|
LIBTOOL_INSTALL_CMD = $(LIBTOOL) --mode=install \
|
|
$(INSTALL) $$p $(DESTDIR)$(LIBINST_DIR)/$$p
|
|
|
|
install-ltlibraries: $(LTLIBRARIES_TO_INSTALL)
|
|
$(MKINSTALLDIRS) $(DESTDIR)$(LIBINST_DIR)
|
|
@list='$(LTLIBRARIES_TO_INSTALL)'; for p in $$list; do \
|
|
if test -f $$p; then \
|
|
echo " $(LIBTOOL_INSTALL_CMD)"; \
|
|
$(LIBTOOL_INSTALL_CMD); \
|
|
else :; fi; \
|
|
done
|
|
|
|
HEADERDESTDIR = $(DESTDIR)$(HEADERINST_DIR)
|
|
INSTALL_HDR_CMD = $(INSTALL_DATA) $$d$$p $(HEADERDESTDIR)/$$p
|
|
|
|
install-headers: $(HEADERS_TO_INSTALL)
|
|
$(MKINSTALLDIRS) $(HEADERDESTDIR)
|
|
$(MKINSTALLDIRS) $(HEADERDESTDIR)/xmlrpc-c
|
|
@list='$(HEADERS_TO_INSTALL)'; for p in $$list; do \
|
|
if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
|
|
echo " $(INSTALL_HDR_CMD)"; \
|
|
$(INSTALL_HDR_CMD); \
|
|
done
|
|
|
|
|
|
INSTALL_PROGRAM_CMD = $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p \
|
|
$(DESTDIR)$(PROGRAMINST_DIR)/$$p
|
|
|
|
install-bin: $(PROGRAMS_TO_INSTALL) $(DESTDIR)$(PROGRAMINST_DIR)
|
|
@list='$(PROGRAMS_TO_INSTALL)'; \
|
|
for p in $$list; do \
|
|
echo "$(INSTALL_PROGRAM_CMD)"; \
|
|
$(INSTALL_PROGRAM_CMD); \
|
|
done
|
|
|
|
$(DESTDIR)$(PROGRAMINST_DIR):
|
|
$(MKINSTALLDIRS) $@
|
|
|
|
|
|
.PHONY: clean-common
|
|
clean-common:
|
|
rm -f *.o *.a *.s *.i *.la *.lo
|
|
rm -rf .libs
|
|
|
|
.PHONY: distclean-common
|
|
distclean-common:
|
|
# Makefile.depend is generated by 'make dep' and contains only dependencies
|
|
# that make parts get _rebuilt_ when parts upon which they depend change.
|
|
# It does not contain dependencies that are necessary to cause a part to
|
|
# get built in the first place. E.g. if foo.c uses bar.h and bar.h gets built
|
|
# by a make rule, you must put the dependency of foo.c on bar.h somewhere
|
|
# besides Makefile.depend.
|
|
#
|
|
# Because of this, a user doesn't need Makefile.depend, because he
|
|
# doesn't modify source files. A developer, on the other hand, must make his
|
|
# own Makefile.depend, because 'make dep' creates Makefile.depend with
|
|
# absolute pathnames, specific to the developer's system.
|
|
#
|
|
# So we empty out Makefile.depend here. The developer must do 'make dep' if
|
|
# he wants to edit and rebuild.
|
|
#
|
|
# Other projects have 'make distclean' _remove_ Makefile.depend and then
|
|
# have 'make' automatically build Makefile.depend. We have
|
|
# found that to be an utter disaster -- it's way too complicated and prone
|
|
# to failure, especially with built .h files. Better not to burden the user,
|
|
# who gains nothing from it, with that.
|
|
#
|
|
cat /dev/null >Makefile.depend
|
|
rm -f TAGS
|
|
|
|
|
|
.PHONY: distdir-common
|
|
distdir-common:
|
|
@for file in $(DISTFILES); do \
|
|
d=$(SRCDIR); \
|
|
if test -d $$d/$$file; then \
|
|
cp -pr $$d/$$file $(DISTDIR)/$$file; \
|
|
else \
|
|
test -f $(DISTDIR)/$$file \
|
|
|| ln $$d/$$file $(DISTDIR)/$$file 2> /dev/null \
|
|
|| cp -p $$d/$$file $(DISTDIR)/$$file || :; \
|
|
fi; \
|
|
done
|
|
|
|
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
|
|
tags=; \
|
|
here=`pwd`; \
|
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
|
if test "$$subdir" = .; then :; else \
|
|
test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
|
|
fi; \
|
|
done; \
|
|
list='$(SOURCES) $(HEADERS)'; \
|
|
unique=`for i in $$list; do echo $$i; done | \
|
|
awk ' { files[$$0] = 1; } \
|
|
END { for (i in files) print i; }'`; \
|
|
test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
|
|
|| (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
|
|
|
|
DEP_SOURCES = $(wildcard *.c *.cpp)
|
|
|
|
# This is a filter to turn "foo.o:" rules into "foo.o foo.lo:" because Libtool
|
|
# uses .lo for object files. I'd like to purge the build of Libtool some day
|
|
# and eliminate this complication.
|
|
|
|
LIBTOOL_DEPEND_MASSAGER = perl -walnpe's{^(.*)\.o:}{$$1.o $$1.lo:}'
|
|
|
|
|
|
|
|
.PHONY: dep-common
|
|
dep-common: FORCE
|
|
ifneq ($(DEP_SOURCES)x,x)
|
|
-$(CC) -MM -MG -I. $(INCLUDES) $(DEP_SOURCES) | \
|
|
$(LIBTOOL_DEPEND_MASSAGER) \
|
|
>Makefile.depend
|
|
endif
|
|
|
|
Makefile.depend:
|
|
cat /dev/null >$@
|
|
|
|
# The automatic dependency generation is a pain in the butt and
|
|
# totally unnecessary for people just installing the distributed code,
|
|
# so to avoid needless failures in the field and a complex build, the
|
|
# 'distclean' target simply makes Makefile.depend an empty file. A
|
|
# developer may do 'make dep' to create a Makefile.depend full of real
|
|
# dependencies.
|
|
|
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
|
.NOEXPORT:
|
|
|
|
|
|
# Use the FORCE target as a dependency to force a target to get remade
|
|
FORCE:
|