thrflavour=gcc32pthr
gsoap_prefix=/opt/gsoap
-CC=gcc
-
-gsoap_versions?=2.6.2 2.7.0f 2.7.6b 2.7.9b 2.7.10
-gsoap_versions:=${shell if ! echo $gsoap_versions | grep "\<${gsoap_default_version}\>" >/dev/null; then echo "${gsoap_default_version} "; else echo ne; fi} ${gsoap_versions}
+gsoap_versions_noflavours?=2.6.2 2.7.0f 2.7.6b 2.7.9b
+gsoap_versions_flavours?=2.7.10
+gsoap_versions_flavours:=${shell if ! echo $gsoap_versions_flavours | grep "\<${gsoap_default_version}\>" >/dev/null; then echo "${gsoap_default_version} "; else echo ne; fi} ${gsoap_versions_flavours}
-include Makefile.inc
-include ../Makefile.inc
GSPLUGIN_DEBUG?=no
GSPLUGIN_VERSION_CHECKING?=yes
-
+CC=gcc
offset=1
version_info:=-version-info ${shell \
gsoap_version=${gsoap_default_version}
gsoap_prefix?=${ext_repository}/${gsoap_name}/${gsoap_version}/${gsoap_platform}
+ifdef lang
+langflavour:=_${lang}
+langsuffix:=.${lang}
+endif
VPATH=${top_srcdir}/src:${top_srcdir}/test:${top_srcdir}/examples
COMPILE:=libtool --mode=compile ${CC} ${CFLAGS}
COMPILEXX:=libtool --mode=compile ${CXX} ${CFLAGS}
-LINK:=libtool --mode=link ${CC} -rpath ${stagedir}/lib ${LDFLAGS}
-LINKXX:=PATH=${top_srcdir}/project/libtoolhack:${PATH} libtool --mode=link ${CXX} -rpath ${stagedir}/lib ${LDFLAGS}
+LINK:=libtool --mode=link ${CC} -rpath ${stagedir}/lib ${LDFLAGS}
+LINKXX:=libtool --mode=link ${CXX} -rpath ${stagedir}/lib ${LDFLAGS}
INSTALL:=libtool --mode=install install
+LINK_lang:=PATH=${top_srcdir}/project/libtoolhack:${PATH} libtool --mode=link ${CXX} -rpath ${stagedir}/lib ${LDFLAGS}
+ifeq (${lang},c)
+LINK_lang:=${LINK}
+endif
+ifeq (${lang},cxx)
+LINK_lang:=${LINKXX}
+endif
GLOBUS_INC:= -I${globus_prefix}/include/${nothrflavour}
GLOBUS_THR_INC:= -I${globus_prefix}/include/${thrflavour}
EX_THRLIBS := ${GLOBUS_THR_LIBS} ${ARES_LIBS}
HDRS:=glite_gss.h glite_gsplugin.h glite_gscompat.h
+EXAMPLES:=wscalc_clt_ex wscalc_srv_ex wscalc_srv_ex2
+TESTS:=test_gss test_coverage test_cxx
GSS_OBJS:=glite_gss.o
GSS_LOBJS:=${GSS_OBJS:.o=.lo}
GSS_LTLIB:=libglite_security_gss_${nothrflavour}.la
GSS_THRLTLIB:=libglite_security_gss_${thrflavour}.la
-STATICLIB:=libglite_security_gsoap_plugin_${nothrflavour}.a
-THRSTATICLIB:=libglite_security_gsoap_plugin_${thrflavour}.a
-LTLIB:=libglite_security_gsoap_plugin_${nothrflavour}.la
-THRLTLIB:=libglite_security_gsoap_plugin_${thrflavour}.la
+STATICLIB:=libglite_security_gsoap_plugin_${nothrflavour}${langflavour}.a
+THRSTATICLIB:=libglite_security_gsoap_plugin_${thrflavour}${langflavour}.a
+LTLIB:=libglite_security_gsoap_plugin_${nothrflavour}${langflavour}.la
+THRLTLIB:=libglite_security_gsoap_plugin_${thrflavour}${langflavour}.la
${GSS_STATICLIB}: ${GSS_OBJS}
ar crv $@ ${GSS_OBJS}
${LINK} ${version_info} -o $@ ${GSS_THRLOBJS} ${EX_THRLIBS}
-OBJS:=${GSS_OBJS} glite_gsplugin.o
+OBJS:=${GSS_OBJS} glite_gsplugin${langsuffix}.o
LOBJS:=${OBJS:.o=.lo}
THROBJS:=${OBJS:.o=.thr.o}
THRLOBJS:=${OBJS:.o=.thr.lo}
dotless_ver:=${shell echo ${gsoap_version} | tr -d '.'}
-STATICLIB_S:=libglite_security_gsoap_plugin_${dotless_ver}_${nothrflavour}.a
-THRSTATICLIB_S:=libglite_security_gsoap_plugin_${dotless_ver}_${thrflavour}.a
-LTLIB_S:=libglite_security_gsoap_plugin_${dotless_ver}_${nothrflavour}.la
-THRLTLIB_S:=libglite_security_gsoap_plugin_${dotless_ver}_${thrflavour}.la
+STATICLIB_S:=libglite_security_gsoap_plugin_${dotless_ver}_${nothrflavour}${langflavour}.a
+THRSTATICLIB_S:=libglite_security_gsoap_plugin_${dotless_ver}_${thrflavour}${langflavour}.a
+LTLIB_S:=libglite_security_gsoap_plugin_${dotless_ver}_${nothrflavour}${langflavour}.la
+THRLTLIB_S:=libglite_security_gsoap_plugin_${dotless_ver}_${thrflavour}${langflavour}.la
+LTLIB_TEST_S:=libglite_security_gsoap_plugin_${dotless_ver}_${nothrflavour}_cxx.la
-OBJS_S:=${GSS_OBJS} glite_gsplugin.o stdsoap2.o
+OBJS_S:=${GSS_OBJS} glite_gsplugin${langsuffix}.o stdsoap2${langsuffix}.o
LOBJS_S:=${OBJS_S:.o=.lo}
THROBJS_S:=${OBJS_S:.o=.thr.o}
THRLOBJS_S:=${OBJS_S:.o=.thr.lo}
ranlib $@
${LTLIB}: ${OBJS}
- PATH=${top_builddir}:${PATH} ${LINKXX} ${version_info} -o $@ ${LOBJS} ${EX_LIBS}
+ ${LINK_lang} ${version_info} -o $@ ${LOBJS} ${EX_LIBS}
${THRLTLIB}: ${THROBJS}
- PATH=${top_builddir}:${PATH} ${LINKXX} ${version_info} -o $@ ${THRLOBJS} ${EX_THRLIBS}
+ ${LINK_lang} ${version_info} -o $@ ${THRLOBJS} ${EX_THRLIBS}
${STATICLIB_S}: ${OBJS_S}
ar crv $@ ${OBJS_S}
ranlib $@
${LTLIB_S}: ${OBJS_S}
- PATH=${top_builddir}:${PATH} ${LINKXX} ${version_info} -o $@ ${LOBJS_S} ${EX_LIBS}
+ ${LINK_lang} ${version_info} -o $@ ${LOBJS_S} ${EX_LIBS}
${THRLTLIB_S}: ${THROBJS_S}
- PATH=${top_builddir}:${PATH} ${LINKXX} ${version_info} -o $@ ${THRLOBJS_S} ${EX_THRLIBS}
+ ${LINK_lang} ${version_info} -o $@ ${THRLOBJS_S} ${EX_THRLIBS}
all compile: \
${GSS_STATICLIB} ${GSS_LTLIB} ${GSS_THRSTATICLIB} ${GSS_THRLTLIB} \
${STATICLIB} ${LTLIB} ${THRSTATICLIB} ${THRLTLIB} \
all-libs-with-soap examples
-check: compile check.gss
+check: check.gss check.cxx
-check.gss: test_gss
+check.gss: ${GSS_LTLIB} test_gss
# ./test_gss
echo test_gss not run automatically util we have got some credentials
+# C/C++ compatibility test
+# (C flavour, gsoap 2.7.10 ==> C++ test fails)
+check.cxx:
+ ${MAKE} lang=cxx ${LTLIB_TEST_S} test_cxx
+ ./test_cxx
+
test_gss: test_gss.o
- PATH=${top_builddir}:${PATH} ${LINKXX} -o $@ test_gss.o ${GSS_LTLIB} ${TEST_LIBS} ${GLOBUS_LIBS} ${EX_LIBS}
+ ${LINKXX} -o $@ test_gss.o ${GSS_LTLIB} ${TEST_LIBS} ${GLOBUS_LIBS} ${EX_LIBS}
test_coverage:
-mkdir coverage
cd coverage && $(MAKE) -f ../Makefile top_srcdir=../../ COVERAGE_FLAGS="-fprofile-arcs -ftest-coverage" check
cd coverage && for i in ${OBJS}; do gcov -o .libs/ $$i ; done
-
-examples: wscalc_clt_ex wscalc_srv_ex wscalc_srv_ex2
+examples: ${EXAMPLES}
all-libs-with-soap:
- for v in ${gsoap_versions}; do \
+ for v in ${gsoap_versions_noflavours}; do \
dir=`echo $$v | tr -d .`; \
mkdir $$dir; \
- ( cd $$dir && ${MAKE} -f ../Makefile gsoap_version=$$v top_srcdir=../.. libs-with-soap) ; \
+ ( cd $$dir && ${MAKE} -f ../Makefile gsoap_version=$$v top_srcdir=../.. lang= libs-with-soap) ; \
+ done
+ for v in ${gsoap_versions_flavours}; do \
+ dir=`echo $$v | tr -d .`; \
+ mkdir $$dir; \
+ ( cd $$dir && ${MAKE} -f ../Makefile gsoap_version=$$v top_srcdir=../.. lang=c libs-with-soap) ; \
+ ( cd $$dir && ${MAKE} -f ../Makefile gsoap_version=$$v top_srcdir=../.. lang=cxx libs-with-soap) ; \
done
libs-with-soap: ${LTLIB_S} ${THRLTLIB_S} ${STATICLIB_S} ${THRSTATICLIB_S}
wscalc_clt_ex.o wscalc_srv_ex.o wscalc_srv_ex2.o: ${GSOAP_FPREFIX}H.h
wscalc_clt_ex: ${WSCALC_CLT_OBJS} ${LTLIB_S}
- ${LINK} -o $@ ${WSCALC_CLT_OBJS} ${LTLIB_S}
+ ${LINK_lang} -o $@ ${WSCALC_CLT_OBJS} ${LTLIB_S}
wscalc_srv_ex: ${WSCALC_SRV_OBJS} ${LTLIB_S}
- ${LINK} -o $@ ${WSCALC_SRV_OBJS} ${LTLIB_S}
+ ${LINK_lang} -o $@ ${WSCALC_SRV_OBJS} ${LTLIB_S}
wscalc_srv_ex2: ${WSCALC_SRV2_OBJS} ${LTLIB_S}
- ${LINK} -o $@ ${WSCALC_SRV2_OBJS} ${LTLIB_S}
+ ${LINK_lang} -o $@ ${WSCALC_SRV2_OBJS} ${LTLIB_S}
+test_cxx: test_gsplugin_cxx.o ${GSOAP_FPREFIX}C.cxx.o
+ ${LINKXX} -o $@ $+ ${LTLIB_TEST_S}
soapcpp:=${shell if [ -x ${gsoap_prefix}/bin/soapcpp2 ]; then \
echo ${gsoap_prefix}/bin/soapcpp2; \
else echo ${gsoap_prefix}/soapcpp2; \
fi}
-${GSOAP_FPREFIX}H.h ${GSOAP_FPREFIX}C.c ${GSOAP_FPREFIX}Server.c ${GSOAP_FPREFIX}Client.c ${GSOAP_FPREFIX}ServerLib.c ${GSOAP_FPREFIX}ClientLib.c: calc.h.S
+${GSOAP_FPREFIX}H.h ${GSOAP_FPREFIX}C.c ${GSOAP_FPREFIX}Server.c ${GSOAP_FPREFIX}Client.c ${GSOAP_FPREFIX}ServerLib.c ${GSOAP_FPREFIX}ClientLib.c: calc.h.S
${soapcpp} -c -p ${GSOAP_FPREFIX} ${top_srcdir}/examples/calc.h.S
wscalc_clt_ex.o: wscalc_clt_ex.c
${CC} -c ${CFLAGS} ${GLOBUS_INC} -o $@ $<
-
+
doc:
stage:
if [ x${DOSTAGE} = xyes ]; then \
install -m 644 ${GSS_STATICLIB} ${GSS_THRSTATICLIB} ${PREFIX}/lib; \
fi
- for v in ${gsoap_versions}; do \
- (cd `echo $$v | tr -d .` && ${MAKE} -f ../Makefile install-soaplib gsoap_version=$$v PREFIX=${PREFIX} top_srcdir=${top_srcdir}/..); \
+ for v in ${gsoap_versions_noflavours}; do \
+ (cd `echo $$v | tr -d .` && ${MAKE} -f ../Makefile install-soaplib gsoap_version=$$v lang= PREFIX=${PREFIX} top_srcdir=${top_srcdir}/..); \
+ done
+ for v in ${gsoap_versions_flavours}; do \
+ (cd `echo $$v | tr -d .` && ${MAKE} -f ../Makefile install-soaplib gsoap_version=$$v lang=c PREFIX=${PREFIX} top_srcdir=${top_srcdir}/..); \
+ (cd `echo $$v | tr -d .` && ${MAKE} -f ../Makefile install-soaplib gsoap_version=$$v lang=cxx PREFIX=${PREFIX} top_srcdir=${top_srcdir}/..); \
done
install-soaplib:
${INSTALL} -m 755 ${LTLIB_S} ${THRLTLIB_S} ${PREFIX}/lib
clean:
+ rm -rvf *.c *.h *.xml *.nsmap *.o *.lo *.a *.la .libs ${EXAMPLES} ${TESTS}
+ rm -rvf CalcService.wsdl wscalc.xsd
+ rm -rvf log.xml project/ rpmbuild/ RPMS/ tgz/
+ for v in ${gsoap_versions_noflavours} ${gsoap_versions_flavours}; do \
+ rm -rvf `echo $$v | tr -d .`; \
+ done
-%.o: %.c
+%.c.o: %.c
${COMPILE} ${GLOBUS_INC} -o $@ -c $<
-stdsoap2.o: stdsoap2.c
+%.cxx.o: %.c
${COMPILEXX} ${GLOBUS_INC} -o $@ -c $<
+%.o: %.c
+ ${COMPILE} ${GLOBUS_INC} -o $@ -c $<
+
+%.c.thr.o: %.c
+ ${COMPILE} ${GLOBUS_THR_INC} -o $@ -c $<
+
+%.cxx.thr.o: %.c
+ ${COMPILEXX} ${GLOBUS_THR_INC} -o $@ -c $<
+
%.thr.o: %.c
${COMPILE} ${GLOBUS_THR_INC} -o $@ -c $<
test_gss.o: %.o: %.cpp
- ${CXX} -c ${CFLAGS} ${GLOBUS_INC} ${TEST_INC} $<
+ ${COMPILEXX} -c ${GLOBUS_INC} ${TEST_INC} $<
+
+test_gsplugin_cxx.o: %.o: %.cpp stdsoap2.h
+ ${COMPILEXX} -c ${GLOBUS_INC} $<
-glite_gsplugin.o, glite_gsplugin.thr.o: soap_version.h
+glite_gsplugin${langsuffix}.o glite_gsplugin${langsuffix}.thr.o: soap_version.h
soap_version.h: stdsoap2.h
head stdsoap2.h | \
perl -ne '/^stdsoap2.h\s+([0-9])\.([0-9])\.(\S+)\s.*/ && printf "#define GSOAP_VERSION %d%02d%02d\n#define GSOAP_MIN_VERSION \"$$3\"\n#ident \"soap_version.h $$1.$$2.$$3\"\n",$$1,$$2,$$3' >$@
-
-glite_gsplugin.o: soap_version.h
-
edg_wll_GssStatus gss_code;
int ret;
- ret = edg_wll_gss_acquire_cred_gsi(cert, key, &ctx->cred, NULL, &gss_code);
+ ret = edg_wll_gss_acquire_cred_gsi((char *)cert, (char *)key, &ctx->cred, NULL, &gss_code);
if (ret) {
/* XXX propagate error description */
return EINVAL;
int
glite_gsplugin(struct soap *soap, struct soap_plugin *p, void *arg)
{
- int_plugin_data_t *pdata = malloc(sizeof(int_plugin_data_t));
+ int_plugin_data_t *pdata = (int_plugin_data_t *)malloc(sizeof(int_plugin_data_t));
pdprintf(("GSLITE_GSPLUGIN: initializing gSOAP plugin\n"));
if ( !pdata ) return ENOMEM;
if ( arg ) {
pdprintf(("GSLITE_GSPLUGIN: Context is given\n"));
- pdata->ctx = arg;
+ pdata->ctx = (glite_gsplugin_Context)arg;
pdata->def = 0;
}
else {
}
}
- if ( !(ctx->connection = malloc(sizeof(*ctx->connection))) ) return errno;
+ if ( !(ctx->connection = (edg_wll_GssConnection *)malloc(sizeof(*ctx->connection))) ) return errno;
ret = edg_wll_gss_connect(ctx->cred,
host, port,
ctx->timeout,
soap->errnum = 0;
pdprintf(("GSLITE_GSPLUGIN: glite_gsplugin_accept()\n"));
ctx = ((int_plugin_data_t *)soap_lookup_plugin(soap, plugin_id))->ctx;
- if ( (conn = accept(s, (struct sockaddr *)&a, n)) < 0 ) return conn;
+ if ( (conn = accept(s, (struct sockaddr *)&a, (socklen_t *)n)) < 0 ) return conn;
if ( !ctx->connection
- && !(ctx->connection = malloc(sizeof(*ctx->connection))) ) {
+ && !(ctx->connection = (edg_wll_GssConnection *)malloc(sizeof(*ctx->connection))) ) {
soap_set_receiver_error(soap, "malloc error", strerror(ENOMEM), ENOMEM);
return SOAP_INVALID_SOCKET;
}