include ../../Make.inc
include ../../Make.rules

ifneq ($(MAKECMDGOALS),clean)
ifneq (,$(USE_GLOBUS_GPT))
-include globus_makefile.mk
else
include globus_makefile.mk.pre
endif
endif

INCLUDES=-I$(GSOAP_PATH)/include -I$(GLOBUS_INCLUDES)
LIBRARIES=$(GSOAP_PATH)/lib/libgsoap++.a -L$(GLOBUS_LIBS) $(GLOBUS_LOGGER_LIBS) 

CPPLIBS=-lstdc++

SERVER_OBJECTS=logger_soapC.o logger_soapServer.o \
               logger.o logger_common.o

CLIENT_OBJECTS=logger_soapC.o logger_soapClient.o client.o \
               logger_common.o \
               ../../files/info_types.o \
               ../../misc/canonical_dir.o ../../misc/log_time.o \
               ../../misc/escaped.o ../../misc/stringtoint.o

all: logger.a logger

logger: logger_soapH.h $(CLIENT_OBJECTS)
	$(CPP) -o logger $(CLIENT_OBJECTS) $(LIBRARIES) -Wl,-Bstatic $(CPPLIBS) -Wl,-Bdynamic

logger.a: logger_soapH.h $(SERVER_OBJECTS)
	rm -f logger.a
	ar rc logger.a $(SERVER_OBJECTS)

client: logger_soapH.h $(CLIENT_OBJECTS)
	g++ -o client $(CLIENT_OBJECTS) $(LIBRARIES)

logger_soapH.h: logger_soap.h
	$(GSOAP_PATH)/bin/soapcpp2 -p logger_soap logger_soap.h

logger_soapC.o: logger_soapC.cpp

logger_soapServer.o: logger_soapServer.cpp

logger_soapClient.o: logger_soapClient.cpp

globus_makefile.mk:
	@export GLOBUS_LOCATION=$(GLOBUS_LOCATION) ; \
	export GPT_LOCATION=$(GPT_LOCATION) ; \
	${USE_GLOBUS_GPT} -flavor=${GLOBUS_FLAVOR} globus_io | \
	grep '^GLOBUS_PKG_LIBS' | \
	sed 's/^GLOBUS_PKG_LIBS/GLOBUS_LOGGER_LIBS/' >globus_makefile.mk ; \
	if [ $$? -ne 0 ] ; then rm -f globus_makefile.mk ; exit 1 ; fi

clean:
	@rm -f logger.a logger ${CLIENT_OBJECTS} ${SERVER_OBJECTS} \
	logger_soapH.h logger_soapStub.h \
	logger_soapC.cpp logger_soapServer.cpp logger_soapClient.cpp \
	*.xml *.xsd *.nsmap *.wsdl globus_makefile.mk

