initial load of upstream version 1.06.32
[xmlrpc-c] / src / cpp / Makefile
1 ifeq ($(SRCDIR)x,x)
2 SRCDIR := $(CURDIR)/../..
3 endif
4 SUBDIR := src/cpp
5 # BLDDIR is for use in places where a symbolic link won't work.
6 # BUILDDIR is for places in Makefile.common that can use the 'blddir'
7 # symbolic link (but in directories that don't, like this one, have
8 # blddir, these places use something else -- hence the variable).
9 BLDDIR = ../..
10 BUILDDIR := blddir
11 VPATH = .:$(SRCDIR)
12
13 include $(BLDDIR)/Makefile.config
14
15 default: all
16
17 # libxmlrpc_cpp is the legacy C++ wrapper library.  The others are the
18 # more elaborate replacements.
19
20 TARGET_LIBRARY_NAMES := \
21   libxmlrpc_cpp \
22   libxmlrpc++ \
23   libxmlrpc_server++ \
24   libxmlrpc_server_abyss++ \
25
26 ifeq ($(MUST_BUILD_CLIENT),yes)
27   TARGET_LIBRARY_NAMES += libxmlrpc_client++
28 endif
29
30 STATIC_LIBRARIES_TO_INSTALL = $(TARGET_STATIC_LIBRARIES)
31
32 SHARED_LIBS_TO_BUILD := $(TARGET_LIBRARY_NAMES)
33 SHARED_LIBS_TO_INSTALL := $(TARGET_LIBRARY_NAMES)
34
35 # INCLUDES and DEP_SOURCES are used by dep-common target
36 INCLUDES = $(BASIC_INCLUDES) $(CLIENT_INCLUDES) $(LIBXML_INCLUDES) \
37   $(SERVER_INCLUDES) $(SERVER_ABYSS_INCLUDES) $(TRANSPORT_INCLUDES)
38 DEP_SOURCES = *.cpp
39
40 WININET_TRANSPORT_DIR = srcdir/lib/wininet_transport
41 CURL_TRANSPORT_DIR    = srcdir/lib/curl_transport
42 LIBWWW_TRANSPORT_DIR  = srcdir/lib/libwww_transport
43
44 ifeq ($(ENABLE_LIBXML2_BACKEND),yes)
45   LIBXML_INCLUDES = $(LIBXML2_CFLAGS)
46 else
47   LIBXML_INCLUDES = -Isrcdir/lib/expat/xmlparse
48 endif
49
50 LIBXMLRPCPP_OBJS = \
51         base64.o \
52         env_wrap.o \
53         fault.o \
54         girerr.o \
55         girmem.o \
56         outcome.o \
57         param_list.o \
58         value.o \
59         xml.o \
60
61 LIBXMLRPC_SERVERPP_OBJS = registry.o
62 LIBXMLRPC_SERVER_ABYSSPP_OBJS = server_abyss.o
63 LIBXMLRPC_CLIENTPP_OBJS = client.o client_simple.o curl.o libwww.o wininet.o
64
65 ALL_OBJS = \
66   XmlRpcCpp.o \
67   $(LIBXMLRPCCPP_OBJS) \
68   $(LIBXMLRPC_SERVERPP_OBJS) \
69   $(LIBXMLRPC_SERVER_ABYSSPP_OBJS) \
70   $(LIBXMLRPC_CLIENTPP_OBJS)
71
72 include $(SRCDIR)/Makefile.common
73
74 # This 'Makefile.common' dependency makes sure the symlinks get built before
75 # this make file is used for anything.
76
77 $(SRCDIR)/Makefile.common: srcdir blddir
78
79 TRANSPORT_INCLUDES = \
80   -I$(WININET_TRANSPORT_DIR) \
81   -I$(CURL_TRANSPORT_DIR) \
82   -I$(LIBWWW_TRANSPORT_DIR) \
83
84 BASIC_INCLUDES = -Isrcdir/include -Iblddir -Isrcdir \
85   -Isrcdir/lib/util/include
86
87 ifeq ($(SHARED_LIB_TYPE),unix)
88   include unix.make
89   endif
90
91 ifeq ($(SHARED_LIB_TYPE),irix)
92   include irix.make
93   endif
94
95 ifeq ($(SHARED_LIB_TYPE),dll)
96   include dll.make
97   endif
98
99 ifeq ($(SHARED_LIB_TYPE),dylib)
100   include dylib.make
101   endif
102
103 ifneq ($(SHARED_LIB_TYPE),NONE)
104   TARGET_SHARED_LIBRARIES = $(TARGET_LIBRARY_NAMES:%=%.$(SHLIB_SUFFIX))
105   endif
106
107 TARGET_STATIC_LIBRARIES = $(TARGET_LIBRARY_NAMES:%=%.a)
108
109 TARGET_LIBRARIES = $(TARGET_STATIC_LIBRARIES) $(ALL_SHARED_LIBRARIES)
110
111 all: $(TARGET_LIBRARIES)
112
113 libxmlrpc_cpp.a: XmlRpcCpp.o
114         -rm -f $@
115         $(AR) cru $@ $^
116         $(RANLIB) $@
117
118 libxmlrpc++.a: $(LIBXMLRPCPP_OBJS)
119         -rm -f $@
120         $(AR) cru $@ $^
121         $(RANLIB) $@
122
123 libxmlrpc_server++.a: $(LIBXMLRPC_SERVERPP_OBJS)
124         -rm -f $@
125         $(AR) cru $@ $^
126         $(RANLIB) $@
127
128 libxmlrpc_server_abyss++.a: $(LIBXMLRPC_SERVER_ABYSSPP_OBJS)
129         -rm -f $@
130         $(AR) cru $@ $^
131         $(RANLIB) $@
132
133 libxmlrpc_client++.a: $(LIBXMLRPC_CLIENTPP_OBJS)
134         -rm -f $@
135         $(AR) cru $@ $^
136         $(RANLIB) $@
137
138 #-----------------------------------------------------------------------------
139 #  RULES TO COMPILE OBJECT MODULES FOR LIBRARIES
140 #-----------------------------------------------------------------------------
141
142 CXXFLAGS = $(CXXFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
143
144 XmlRpcCpp.o:%.o:%.cpp
145         $(CXX) -c $(BASIC_INCLUDES) $(CXXFLAGS) $<
146
147 $(LIBXMLRPCPP_OBJS):%.o:%.cpp
148         $(CXX) -c $(BASIC_INCLUDES) $(CXXFLAGS) $<
149
150 SERVER_INCLUDES = $(BASIC_INCLUDES) $(LIBXML_INCLUDES)
151
152 $(LIBXMLRPC_SERVERPP_OBJS):%.o:%.cpp
153         $(CXX) -c $(SERVER_INCLUDES) $(CXXFLAGS) $<
154
155 SERVER_ABYSS_INCLUDES = $(SERVER_INCLUDES) -Isrcdir/lib/abyss/src
156
157 $(LIBXMLRPC_SERVER_ABYSSPP_OBJS):%.o:%.cpp
158         $(CXX) -c $(SERVER_ABYSS_INCLUDES) $(CXXFLAGS) $<
159
160 CLIENT_INCLUDES = $(BASIC_INCLUDES) $(LIBXML_INCLUDES) $(TRANSPORT_INCLUDES)
161
162 $(LIBXMLRPC_CLIENTPP_OBJS):%.o:%.cpp
163         $(CXX) -c $(CLIENT_INCLUDES) $(CXXFLAGS) $<
164
165 client.o curl.o libwww.o wininet.o: $(BUILDDIR)/transport_config.h
166
167 #-----------------------------------------------------------------------------
168 #  MISCELLANEOUS RULES
169 #-----------------------------------------------------------------------------
170
171 check:
172         $(MAKE) -C test runtests
173
174 .PHONY: install
175 install: install-common
176
177 .PHONY: clean clean-local distclean distclean-local
178 clean: clean-common clean-local
179 clean-local:
180         $(MAKE) -C test clean
181
182 distclean: clean distclean-local distclean-common
183
184 distclean-local:
185         $(MAKE) -C test distclean
186
187 .PHONY: dep
188 dep: dep-common $(BUILDDIR)/transport_config.h
189
190 include Makefile.depend