297 lines
8.2 KiB
Makefile
297 lines
8.2 KiB
Makefile
ifeq ($(SRCDIR),)
|
|
updir = $(shell echo $(dir $(1)) | sed 's/.$$//')
|
|
SRCDIR := $(call updir,$(CURDIR))
|
|
BLDDIR := $(SRCDIR)
|
|
endif
|
|
SUBDIR := src
|
|
|
|
include $(BLDDIR)/config.mk
|
|
|
|
default: all
|
|
|
|
SUBDIRS =
|
|
|
|
ifeq ($(ENABLE_CPLUSPLUS),yes)
|
|
SUBDIRS += cpp
|
|
endif
|
|
|
|
TARGET_LIBRARY_NAMES := libxmlrpc libxmlrpc_server
|
|
|
|
# We cannot build libxmlrpc_server_abyss if we can't also build Abyss,
|
|
# because we need libxmlrpc_abyss in order to build the proper runtime
|
|
# dependencies into libxmlrpc_server_abyss.
|
|
|
|
ifeq ($(ENABLE_ABYSS_SERVER),yes)
|
|
TARGET_LIBRARY_NAMES += libxmlrpc_server_abyss
|
|
endif
|
|
|
|
ifeq ($(MUST_BUILD_CLIENT),yes)
|
|
TARGET_LIBRARY_NAMES += libxmlrpc_client
|
|
endif
|
|
|
|
ifeq ($(ENABLE_CGI_SERVER),yes)
|
|
TARGET_LIBRARY_NAMES += libxmlrpc_server_cgi
|
|
endif
|
|
|
|
STATIC_LIBRARIES_TO_INSTALL = $(TARGET_STATIC_LIBRARIES)
|
|
|
|
SHARED_LIBS_TO_BUILD := $(TARGET_LIBRARY_NAMES)
|
|
SHARED_LIBS_TO_INSTALL := $(TARGET_LIBRARY_NAMES)
|
|
|
|
# TRANSPORT_MODS is the list of modules that have to go into the client
|
|
# library to provide the client XML transport functions.
|
|
|
|
# TRANSPORT_LIBDEP is linker -l options to declare what libraries contain
|
|
# things to which the transport objects refer. (like LIBxxx_LIBDEP --
|
|
# see below)
|
|
|
|
TRANSPORT_MODS =
|
|
TRANSPORT_LIBDEP =
|
|
ifeq ($(MUST_BUILD_WININET_CLIENT),yes)
|
|
TRANSPORT_MODS += $(BLDDIR)/lib/wininet_transport/xmlrpc_wininet_transport
|
|
TRANSPORT_LIBDEP += $(shell wininet-config --libs)
|
|
endif
|
|
ifeq ($(MUST_BUILD_CURL_CLIENT),yes)
|
|
TRANSPORT_MODS += $(BLDDIR)/lib/curl_transport/xmlrpc_curl_transport
|
|
TRANSPORT_LIBDEP += $(shell curl-config --libs)
|
|
endif
|
|
ifeq ($(MUST_BUILD_LIBWWW_CLIENT),yes)
|
|
TRANSPORT_MODS += $(BLDDIR)/lib/libwww_transport/xmlrpc_libwww_transport
|
|
TRANSPORT_LIBDEP += $(shell libwww-config --libs)
|
|
endif
|
|
|
|
ifeq ($(ENABLE_LIBXML2_BACKEND),yes)
|
|
XMLRPC_XML_PARSER = xmlrpc_libxml2
|
|
XML_PARSER_LIBDEP = $(shell xml2-config --libs)
|
|
XML_PARSER_LIBDEP_DEP =
|
|
else
|
|
XMLRPC_XML_PARSER = xmlrpc_expat
|
|
XML_PARSER_LIBDEP = -L$(BLDDIR)/lib/expat/xmlparse -lxmlrpc_xmlparse
|
|
XML_PARSER_LIBDEP_DEP = $(LIBXMLRPC_XMLPARSE)
|
|
endif
|
|
|
|
# LIBxxx_OBJS is the list of object files that make up library libxxx.
|
|
|
|
LIBXMLRPC_MODS = \
|
|
double \
|
|
parse_value \
|
|
resource \
|
|
trace \
|
|
version \
|
|
xmlrpc_data \
|
|
xmlrpc_datetime \
|
|
xmlrpc_string \
|
|
xmlrpc_array \
|
|
xmlrpc_struct \
|
|
xmlrpc_build \
|
|
xmlrpc_decompose \
|
|
$(XMLRPC_XML_PARSER) \
|
|
xmlrpc_parse \
|
|
xmlrpc_serialize \
|
|
xmlrpc_base64 \
|
|
xmlrpc_authcookie \
|
|
|
|
LIBXMLRPC_CLIENT_MODS = xmlrpc_client xmlrpc_client_global xmlrpc_server_info
|
|
|
|
LIBXMLRPC_SERVER_MODS = registry method system_method
|
|
|
|
LIBXMLRPC_SERVER_ABYSS_MODS = xmlrpc_server_abyss
|
|
|
|
LIBXMLRPC_SERVER_CGI_MODS = xmlrpc_server_cgi
|
|
|
|
TARGET_MODS = \
|
|
$(LIBXMLRPC_MODS) \
|
|
$(LIBXMLRPC_SERVER_MODS) \
|
|
$(LIBXMLRPC_SERVER_ABYSS_MODS) \
|
|
$(LIBXMLRPC_SERVER_CGI_MODS) \
|
|
$(LIBXMLRPC_CLIENT_MODS) \
|
|
|
|
OMIT_XMLRPC_LIB_RULE=Y
|
|
MAJ=3
|
|
# Major number of shared libraries in this directory
|
|
|
|
include $(SRCDIR)/common.mk
|
|
|
|
# This 'common.mk' dependency makes sure the symlinks get built before
|
|
# this make file is used for anything.
|
|
|
|
$(SRCDIR)/common.mk: srcdir blddir
|
|
|
|
# TARGET_STATIC_LIBRARIES, etc. are set by common.mk, based on
|
|
# TARGET_LIBRARY_NAMES.
|
|
|
|
|
|
all: \
|
|
$(TARGET_STATIC_LIBRARIES) \
|
|
$(TARGET_SHARED_LIBRARIES) \
|
|
$(TARGET_SHARED_LE_LIBS) \
|
|
$(SUBDIRS:%=%/all) \
|
|
|
|
# Extra dependencies to make parallel make work in spite of all the submakes
|
|
# (See top level make file for details)
|
|
ifeq ($MUST_BUILD_CLIENT),yes)
|
|
cpp/all: $(BLDDIR)/transport_config.h
|
|
endif
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# RULES TO LINK LIBRARIES
|
|
#-----------------------------------------------------------------------------
|
|
|
|
# Rules for these are in common.mk, courtesy of TARGET_LIBRARY_NAMES:
|
|
|
|
# shlibfn generates e.g. libxmlrpc.so.3.1
|
|
# shliblefn generates e.g. libxmlrpc.so
|
|
|
|
LIBXMLRPC = $(call shlibfn, libxmlrpc)
|
|
|
|
$(LIBXMLRPC): $(LIBXMLRPC_MODS:%=%.osh) \
|
|
$(LIBXMLRPC_UTIL) \
|
|
$(XML_PARSER_LIBDEP_DEP)
|
|
$(LIBXMLRPC): LIBOBJECTS = $(LIBXMLRPC_MODS:%=%.osh)
|
|
$(LIBXMLRPC): LIBDEP = \
|
|
-L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util \
|
|
$(XML_PARSER_LIBDEP)
|
|
|
|
LIBXMLRPC_SERVER = $(call shlibfn, libxmlrpc_server)
|
|
|
|
$(LIBXMLRPC_SERVER): \
|
|
$(LIBXMLRPC_SERVER_MODS:%=%.osh) \
|
|
$(LIBXMLRPC_UTIL) \
|
|
$(call shliblefn, libxmlrpc)
|
|
$(LIBXMLRPC_SERVER): LIBOBJECTS = $(LIBXMLRPC_SERVER_MODS:%=%.osh)
|
|
$(LIBXMLRPC_SERVER): LIBDEP = \
|
|
-L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util -L. -lxmlrpc
|
|
|
|
LIBXMLRPC_SERVER_ABYSS = $(call shlibfn, libxmlrpc_server_abyss)
|
|
|
|
$(LIBXMLRPC_SERVER_ABYSS): \
|
|
$(LIBXMLRPC_SERVER_ABYSS_MODS:%=%.osh) \
|
|
$(LIBXMLRPC_UTIL) \
|
|
$(LIBXMLRPC_ABYSS) \
|
|
$(call shliblefn, libxmlrpc_server) \
|
|
$(call shliblefn, libxmlrpc)
|
|
$(LIBXMLRPC_SERVER_ABYSS): LIBOBJECTS = $(LIBXMLRPC_SERVER_ABYSS_MODS:%=%.osh)
|
|
$(LIBXMLRPC_SERVER_ABYSS): LIBDEP = \
|
|
-L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util \
|
|
-L. -lxmlrpc_server \
|
|
-L$(LIBXMLRPC_ABYSS_DIR) -lxmlrpc_abyss \
|
|
-lxmlrpc
|
|
|
|
LIBXMLRPC_SERVER_CGI = $(call shlibfn, libxmlrpc_server_cgi)
|
|
|
|
$(LIBXMLRPC_SERVER_CGI): \
|
|
$(LIBXMLRPC_SERVER_CGI_MODS:%=%.osh) \
|
|
$(LIBXMRPC_UTIL) \
|
|
$(call shliblefn, libxmlrpc_server) \
|
|
$(call shliblefn, libxmlrpc)
|
|
$(LIBXMLRPC_SERVER_CGI): LIBOBJECTS = $(LIBXMLRPC_SERVER_CGI_MODS:%=%.osh)
|
|
$(LIBXMLRPC_SERVER_CGI): LIBDEP = \
|
|
-L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util -L. -lxmlrpc_server -lxmlrpc
|
|
|
|
LIBXMLRPC_CLIENT = $(call shlibfn, libxmlrpc_client)
|
|
|
|
$(LIBXMLRPC_CLIENT): \
|
|
$(LIBXMLRPC_CLIENT_MODS:%=%.osh) \
|
|
$(TRANSPORT_MODS:%=%.osh) \
|
|
$(LIBXMLRPC_UTIL) \
|
|
$(call shliblefn, libxmlrpc)
|
|
$(LIBXMLRPC_CLIENT): LIBOBJECTS = \
|
|
$(LIBXMLRPC_CLIENT_MODS:%=%.osh) \
|
|
$(TRANSPORT_MODS:%=%.osh)
|
|
$(LIBXMLRPC_CLIENT): LIBDEP = \
|
|
-L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util \
|
|
-L. -lxmlrpc \
|
|
$(TRANSPORT_LIBDEP)
|
|
|
|
|
|
libxmlrpc.a: $(LIBXMLRPC_MODS:%=%.o)
|
|
libxmlrpc.a: LIBOBJECTS = $(LIBXMLRPC_MODS:%=%.o)
|
|
|
|
libxmlrpc_server.a: $(LIBXMLRPC_SERVER_MODS:%=%.o)
|
|
libxmlrpc_server.a: LIBOBJECTS = $(LIBXMLRPC_SERVER_MODS:%=%.o)
|
|
|
|
libxmlrpc_server_abyss.a: $(LIBXMLRPC_SERVER_ABYSS_MODS:%=%.o)
|
|
libxmlrpc_server_abyss.a: LIBOBJECTS=$(LIBXMLRPC_SERVER_ABYSS_MODS:%=%.o)
|
|
|
|
libxmlrpc_server_cgi.a: $(LIBXMLRPC_SERVER_CGI_MODS:%=%.o)
|
|
libxmlrpc_server_cgi.a: LIBOBJECTS=$(LIBXMLRPC_SERVER_CGI_MODS:%=%.o)
|
|
|
|
libxmlrpc_client.a: $(LIBXMLRPC_CLIENT_MODS:%=%.o) $(TRANSPORT_MODS:%=%.o)
|
|
libxmlrpc_client.a: LIBOBJECTS = \
|
|
$(LIBXMLRPC_CLIENT_MODS:%=%.o) \
|
|
$(TRANSPORT_MODS:%=%.o)
|
|
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# RULES TO COMPILE OBJECT MODULES FOR LIBRARIES
|
|
#-----------------------------------------------------------------------------
|
|
|
|
# Rules for these are in common.mk, courtesy of TARGET_MODS:
|
|
|
|
BASIC_INCLUDES = \
|
|
-I$(BLDDIR) \
|
|
-I$(BLDDIR)/include \
|
|
-I$(SRCDIR)/include \
|
|
-I$(SRCDIR)/lib/util/include \
|
|
|
|
TRANSPORT_INCLUDES = \
|
|
-I$($SRCDIR)/lib/wininet_transport \
|
|
-I$(SRCDIR)/lib/curl_transport \
|
|
-I$(SRCDIR)/lib/libwww_transport \
|
|
|
|
ifeq ($(ENABLE_LIBXML2_BACKEND),yes)
|
|
LIBXML_INCLUDES = $(shell xml2-config --cflags)
|
|
else
|
|
LIBXML_INCLUDES = -I$(SRCDIR)/lib/expat/xmlparse
|
|
endif
|
|
|
|
$(LIBXMLRPC_MODS:%=%.o) \
|
|
$(LIBXMLRPC_MODS:%=%.osh): \
|
|
INCLUDES = $(BASIC_INCLUDES) $(LIBXML_INCLUDES)
|
|
|
|
$(LIBXMLRPC_CLIENT_MODS:%=%.o) \
|
|
$(LIBXMLRPC_CLIENT_MODS:%=%.osh): \
|
|
INCLUDES = $(BASIC_INCLUDES) $(TRANSPORT_INCLUDES)
|
|
|
|
$(LIBXMLRPC_SERVER_MODS:%=%.o) \
|
|
$(LIBXMLRPC_SERVER_MODS:%=%.osh): \
|
|
INCLUDES = $(BASIC_INCLUDES)
|
|
|
|
$(LIBXMLRPC_SERVER_ABYSS_MODS:%=%.o) \
|
|
$(LIBXMLRPC_SERVER_ABYSS_MODS:%=%.osh): \
|
|
INCLUDES = $(BASIC_INCLUDES) -I$(SRCDIR)/lib/abyss/src
|
|
|
|
$(LIBXMLRPC_SERVER_CGI_MODS:%=%.o) \
|
|
$(LIBXMLRPC_SERVER_CGI_MODS:%=%.osh): \
|
|
INCLUDES = $(BASIC_INCLUDES)
|
|
|
|
CFLAGS = $(CFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
|
|
|
|
|
|
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) $(BLDDIR)/transport_config.h dep-common
|
|
|
|
dep-common:
|
|
INCLUDES = $(BASIC_INCLUDES) $(TRANSPORT_INCLUDES) $(LIBXML_INCLUDES)
|
|
|
|
xmlrpc_client.o xmlrpc_client.osh: $(BLDDIR)/transport_config.h
|
|
xmlrpc_client.o xmlrpc_client.osh: $(BLDDIR)/version.h
|
|
registry.o registry.osh: $(BLDDIR)/version.h
|
|
version.o version.osh: $(BLDDIR)/version.h
|
|
|
|
include Makefile.depend
|