123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- include srcdir.mk
- BLDDIR = $(CURDIR)
- SUBDIR =
- export SRCDIR
- export BLDDIR
- 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
- ifeq ($(BUILD_TOOLS),yes)
- DEFAULT_SUBDIRS += tools
- endif
- PROGRAMS_TO_INSTALL = xmlrpc-c-config
- default: xmlrpc-c-config xmlrpc-c-config.test $(DEFAULT_SUBDIRS:%=%/all)
- # 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
- # We don't want common.mk's rule for xmlrpc-c-config.test:
- OMIT_XMLRPC_C_CONFIG_TEST = Y
- include $(SRCDIR)/common.mk
- .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)/version.mk
- rm -f $@
- echo "/* Generated by make file rule */" >>$@
- echo "#define XMLRPC_C_VERSION" \"$(MAJOR).$(MINOR).$(POINT)"\"" >>$@
- echo "#define XMLRPC_VERSION_MAJOR $(MAJOR)" >>$@
- echo "#define XMLRPC_VERSION_MINOR $(MINOR)" >>$@
- echo "#define XMLRPC_VERSION_POINT $(POINT)" >>$@
- include transport_config.mk
- # 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 'LIBXMLRPCPP_NAME="$(LIBXMLRPCPP_NAME)"' >>$@
- @echo 'LSOCKET="$(LSOCKET)"' >>$@
- @echo 'WININET_LDADD="$(WININET_LDADD)"' >>$@
- @echo 'WININET_LIBDIR="$(WININET_LIBDIR)"' >>$@
- @echo 'CURL_LDADD="$(CURL_LDADD)"' >>$@
- @echo 'CURL_LIBDIR="$(CURL_LIBDIR)"' >>$@
- @echo 'LIBWWW_LDADD="$(LIBWWW_LDADD)"' >>$@
- @echo 'LIBWWW_LIBDIR="$(LIBWWW_LIBDIR)"' >>$@
- @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 '#######################################################' >>$@
- 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 srcdir.mk
- 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
- # A trick to catch a common user error. When you don't run 'configure',
- # you don't have a srcdir.mk, 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 -
|