initial load of upstream version 1.06.32
[xmlrpc-c] / src / Makefile
diff --git a/src/Makefile b/src/Makefile
new file mode 100644 (file)
index 0000000..e78370d
--- /dev/null
@@ -0,0 +1,203 @@
+ifeq ($(SRCDIR)x,x)
+SRCDIR = $(CURDIR)/..
+endif
+SUBDIR = src
+BUILDDIR = $(SRCDIR)
+VPATH = .:$(SRCDIR)
+
+include $(BUILDDIR)/Makefile.config
+
+ABYSS_LIBDIR = $(BUILDDIR)/lib/abyss/src/.libs
+LIBUTIL_LIBDIR = $(BUILDDIR)/lib/libutil/.libs
+
+default: all
+
+SUBDIRS =
+
+ifeq ($(ENABLE_CPLUSPLUS),yes)
+  SUBDIRS += cpp
+endif
+
+WININET_TRANSPORT_DIR = $(SRCDIR)/lib/wininet_transport
+CURL_TRANSPORT_DIR    = $(SRCDIR)/lib/curl_transport
+LIBWWW_TRANSPORT_DIR  = $(SRCDIR)/lib/libwww_transport
+
+# TRANSPORT_OBJS is the list of modules that have to go into the client
+# library to provide the client XML transport functions.  Since there is
+# some variability in what XML transports we can build into the client
+# library, this is a little complicated.
+
+# TRANSPORT_LIBDEP is linker -l options to declare what libraries contain
+# things to which the transport objects refer.  (like LIBxxx_LIBDEP --
+# see below)
+
+TRANSPORT_OBJS =
+TRANSPORT_LIBDEP =
+ifeq ($(MUST_BUILD_WININET_CLIENT),yes)
+  TRANSPORT_OBJS += $(WININET_TRANSPORT_DIR)/xmlrpc_wininet_transport.lo
+  TRANSPORT_LIBDEP += $(shell wininet-config --libs)
+endif
+ifeq ($(MUST_BUILD_CURL_CLIENT),yes)
+  TRANSPORT_OBJS += $(CURL_TRANSPORT_DIR)/xmlrpc_curl_transport.lo
+  TRANSPORT_LIBDEP += $(shell curl-config --libs)
+endif
+ifeq ($(MUST_BUILD_LIBWWW_CLIENT),yes)
+  TRANSPORT_OBJS += $(LIBWWW_TRANSPORT_DIR)/xmlrpc_libwww_transport.lo
+  TRANSPORT_LIBDEP += $(shell libwww-config --libs)
+endif
+
+ifeq ($(ENABLE_LIBXML2_BACKEND),yes)
+  LIBXML_INCLUDES = $(shell xml2-config --cflags)
+  LIBXML_LIBS = $(shell xml2-config --libs)
+else
+  LIBXML_INCLUDES = -I$(SRCDIR)/lib/expat/xmlparse
+endif
+
+ABYSS_INCLUDES = -I$(SRCDIR)/lib/abyss/src
+
+ifeq ($(ENABLE_LIBXML2_BACKEND),yes)
+  XMLRPC_XML_PARSER = xmlrpc_libxml2.lo
+else
+  XMLRPC_XML_PARSER = xmlrpc_expat.lo
+endif
+
+# LIBxxx_OBJS is the list of object files that make up library libxxx.
+
+# LIBxxx_LIBDEP is linker -l options to declare what libraries contain
+# things to which the library being built refers.  This information
+# makes its way to the dynamic linker, so it knows to load the
+# referred-to library before it loads libxxx.  Note that the link command
+# may require the necessary -L options in addition.
+
+LIBXMLRPC_CLIENT_OBJS = xmlrpc_client.lo xmlrpc_client_global.lo
+LIBXMLRPC_CLIENT_LIBDEP = -lxmlrpc_util -lxmlrpc
+
+LIBXMLRPC_SERVER_OBJS = registry.lo system_method.lo
+LIBXMLRPC_SERVER_LIBDEP = -lxmlrpc_util -lxmlrpc
+
+LIBXMLRPC_SERVER_ABYSS_OBJS = xmlrpc_server_abyss.lo
+LIBXMLRPC_SERVER_ABYSS_LIBDEP = \
+  -lxmlrpc_util -lxmlrpc_server -L$(ABYSS_LIBDIR) -lxmlrpc_abyss -lxmlrpc
+
+LIBXMLRPC_SERVER_CGI_OBJS = xmlrpc_server_cgi.lo
+LIBXMLRPC_SERVER_CGI_LIBDEP = -lxmlrpc_util -lxmlrpc_server -lxmlrpc
+
+LIBXMLRPC_OBJS = \
+       trace.lo \
+       xmlrpc_data.lo \
+       xmlrpc_builddecomp.lo \
+       xmlrpc_datetime.lo \
+       xmlrpc_array.lo \
+       xmlrpc_struct.lo \
+       $(XMLRPC_XML_PARSER) \
+       xmlrpc_parse.lo \
+       xmlrpc_serialize.lo \
+       xmlrpc_base64.lo \
+       xmlrpc_utf8.lo \
+       xmlrpc_authcookie.lo \
+
+LIBXMLRPC_LIBDEP = -lxmlrpc_util $(LIBXML_LIBS)
+
+LIB_OBJS = $(LIBXMLRPC_CLIENT_OBJS) $(LIBXMLRPC_SERVER_OBJS)
+
+TRANSPORT_INCLUDES = \
+  -I$(WININET_TRANSPORT_DIR) \
+  -I$(CURL_TRANSPORT_DIR) \
+  -I$(LIBWWW_TRANSPORT_DIR) \
+
+INCLUDES = -I$(BUILDDIR) -I$(SRCDIR) \
+           -I$(SRCDIR)/include -I$(SRCDIR)/lib/util/include \
+          -I$(SRCDIR)/lib/abyss/src \
+          $(TRANSPORT_INCLUDES) \
+          $(LIBXML_INCLUDES) \
+
+# People sometimes think that when the Xmlrpc-c build has been
+# configured for no Abyss server (configure --disable-abyss), that
+# libmxlrpc_server_abyss should not get built.  But
+# libxmlrpc_server_abyss is not part of the Abyss server; it is merely
+# some code that exploits an Abyss server, and you don't need to have a
+# built Abyss server to build it.
+
+TARGET_LTLIBRARIES = libxmlrpc.la libxmlrpc_server.la \
+     libxmlrpc_server_abyss.la
+
+ifeq ($(MUST_BUILD_CLIENT),yes)
+  TARGET_LTLIBRARIES += libxmlrpc_client.la
+endif
+
+ifeq ($(ENABLE_CGI_SERVER),yes)
+  TARGET_LTLIBRARIES += libxmlrpc_server_cgi.la
+endif
+
+all: $(TARGET_LTLIBRARIES) $(SUBDIRS:%=%/all)
+
+LDFLAGS = $(LADD)
+
+LIBPATHS = -L.libs -L$(LIBUTIL_LIBDIR)
+
+LIBLDFLAGS = $(LDFLAGS_VERSINFO) -rpath $(LIBINST_DIR) $(LIBPATHS) $(LADD)
+
+
+libxmlrpc.la: $(LIBXMLRPC_OBJS)
+       $(LIBTOOL) --mode=link $(CCLD) -o $@ $(LIBLDFLAGS) \
+         $(LIBXMLRPC_OBJS) $(LIBXMLRPC_LIBDEP) 
+
+libxmlrpc_client.la: $(LIBXMLRPC_CLIENT_OBJS) $(TRANSPORT_OBJS)
+       $(LIBTOOL) --mode=link $(CCLD) -o $@ $(LIBLDFLAGS) \
+         $(LIBXMLRPC_CLIENT_OBJS) $(TRANSPORT_OBJS) \
+         $(LIBXMLRPC_CLIENT_LIBDEP) $(TRANSPORT_LIBDEP) \
+
+libxmlrpc_server.la: $(LIBXMLRPC_SERVER_OBJS)
+       $(LIBTOOL) --mode=link $(CCLD) -o $@ $(LIBLDFLAGS) \
+         $(LIBXMLRPC_SERVER_OBJS) $(LIBXMLRPC_SERVER_LIBDEP)
+
+libxmlrpc_server_abyss.la: $(LIBXMLRPC_SERVER_ABYSS_OBJS)
+       $(LIBTOOL) --mode=link $(CCLD) -o $@ $(LIBLDFLAGS) \
+         $(LIBXMLRPC_SERVER_ABYSS_OBJS) $(LIBXMLRPC_SERVER_ABYSS_LIBDEP)
+
+libxmlrpc_server_cgi.la: $(LIBXMLRPC_SERVER_CGI_OBJS)
+       $(LIBTOOL) --mode=link $(CCLD) -o $@ $(LIBLDFLAGS) \
+         $(LIBXMLRPC_SERVER_CGI_OBJS) $(LIBXMLRPC_SERVER_CGI_LIBDEP)
+
+
+CFLAGS = $(CFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
+
+$(LIBXMLRPC_CLIENT_OBJS) $(LIBXMLRPC_SERVER_OBJS):%.lo:%.c
+       $(LIBTOOL) --mode=compile $(CC) -c $(INCLUDES) $(CFLAGS) $<
+
+$(LIBXMLRPC_OBJS):%.lo:%.c
+       $(LIBTOOL) --mode=compile $(CC) -c $(INCLUDES) $(LIBXML_INCLUDES) \
+         $(CFLAGS) $<
+
+$(LIBXMLRPC_SERVER_ABYSS_OBJS):%.lo:%.c
+       $(LIBTOOL) --mode=compile $(CC) -c $(INCLUDES) $(ABYSS_INCLUDES) \
+         $(CFLAGS) $<
+
+xmlrpc_server_cgi.lo:%.lo:%.c
+       $(LIBTOOL) --mode=compile $(CC) -c $(INCLUDES) \
+         $(CFLAGS) $<
+
+LTLIBRARIES_TO_INSTALL = $(TARGET_LTLIBRARIES)
+
+check:
+       $(MAKE) -C test runtests
+       $(MAKE) -C cpp  check
+
+.PHONY: install
+install: install-common $(SUBDIRS:%=%/install)
+
+.PHONY: clean clean-local distclean
+clean: clean-common clean-local $(SUBDIRS:%=%/clean)
+clean-local:
+       $(MAKE) -C test clean
+
+distclean: clean-common clean-local distclean-common $(SUBDIRS:%=%/distclean)
+
+.PHONY: dep
+dep: $(SUBDIRS:%=%/dep) $(BUILDDIR)/transport_config.h dep-common
+
+include $(SRCDIR)/Makefile.common
+
+xmlrpc_client.lo: $(BUILDDIR)/transport_config.h
+
+include Makefile.depend