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

INSTALL_BASE=${NORDUGRID_LOCATION}
LIBS=-L${GLOBUS_LIBS} ${GLOBUS_TRANSFER_LIBS} -lpthread
UP_LIBS=-L${GLOBUS_LIBS} ${GLOBUS_TRANSFER_UP_LIBS} -lpthread
DOWN_LIBS=-L${GLOBUS_LIBS} ${GLOBUS_TRANSFER_DOWN_LIBS} -lpthread
CPPLIBS=-lstdc++
INCLUDES=-I${GLOBUS_INCLUDES}
# PROGRAMS=downloader uploader ui-uploader ui-downloader
PROGRAMS=
# CLIENT_PROGRAMS=ui-uploader ui-downloader
CLIENT_PROGRAMS=
LIBRARIES=
STATIC_LIBRARIES=
CFLAGS=-g -O0 -ansi
OBJECTS=../files/info_files.o ../files/info_types.o ../jobs/users.o \
        ../config/config.o replica.o url_map.o \
        ../misc/inttostring.o ../misc/delete.o ../misc/canonical_dir.o \
        ../run/run.o ../config/environment.o replica_utils.o \
        ../misc/stringtoint.o check.o ../jobs/job.o ../misc/url_options.o \
        ../config/config_map.o ../misc/log_time.o convert_url.o \
        ../cache/cache.o cache_download.o ftp_preallocate_plugin.o proxy.o \
        ../misc/checkfile.o ../misc/checksum.o
OTHER_OBJECTS=downloader.o uploader.o ui_uploader.o autodir.o ui_downloader.o \
              libui_downloader.o libui_uploader.o
DOWN_OBJECTS=../files/info_files.o ../files/info_types.o \
        ../misc/inttostring.o ../misc/delete.o ../misc/stringtoint.o \
        ../misc/canonical_dir.o ../misc/mkdir_recursive.o check.o \
        ../misc/log_time.o ../misc/checkfile.o lister.o ../misc/escaped.o
UP_OBJECTS=autodir.o ftpsubmit.o ../files/info_files.o ../files/info_types.o \
        ../jobs/users.o ../misc/inttostring.o ../misc/stringtoint.o \
        ../misc/delete.o ../misc/canonical_dir.o ../run/run.o \
        ../config/config.o ../config/environment.o check.o ../misc/log_time.o \
        ../misc/checkfile.o ../misc/escaped.o
LIBUI_OBJECTS=../files/info_files.o ../files/info_types.o \
        ../misc/inttostring.o ../misc/delete.o ../misc/stringtoint.o \
        ../misc/canonical_dir.o ../misc/mkdir_recursive.o check.o \
        autodir.o ftpsubmit.o lister.o \
        ../jobs/users.o \
        ../run/run.o \
        ../config/config.o ../config/environment.o ../misc/log_time.o \
        ../misc/escaped.o
TEST_MODULES=../cache/cache.o ../jobs/users.o ../run/run.o ../config/config.o \
             ../files/info_files.o ../files/info_types.o \
             ../misc/stringtoint.o ../misc/canonical_dir.o ../misc/delete.o \
             ../misc/inttostring.o ../misc/log_time.o ../config/environment.o \
             cache_download.o check.o ftp_preallocate_plugin.o ../misc/url_options.o

all: ${PROGRAMS} ${LIBRARIES}

globus_makefile.mk:
	@export GLOBUS_LOCATION=$(GLOBUS_LOCATION) ; \
	${USE_GLOBUS_GPT} -flavor=${GLOBUS_FLAVOR} globus_gass_copy globus_replica_catalog | \
	sed 's/^GLOBUS_PKG_LIBS[ ]*=[ ]*/GLOBUS_TRANSFER_LIBS=/' | grep '^GLOBUS_TRANSFER_LIBS' \
	>> globus_makefile.mk ; \
	if [ $$? -ne 0 ] ; then rm -f globus_makefile.mk ; exit 1 ; fi
	@export GLOBUS_LOCATION=$(GLOBUS_LOCATION) ; \
	${USE_GLOBUS_GPT} -flavor=${GLOBUS_FLAVOR} globus_gram_client globus_gass_copy globus_replica_catalog | \
	sed 's/^GLOBUS_PKG_LIBS[ ]*=[ ]*/GLOBUS_TRANSFER_UP_LIBS=/'| grep '^GLOBUS_TRANSFER_UP_LIBS' \
	>> globus_makefile.mk ; \
	if [ $$? -ne 0 ] ; then rm -f globus_makefile.mk ; exit 1 ; fi
	@export GLOBUS_LOCATION=$(GLOBUS_LOCATION) ; \
	${USE_GLOBUS_GPT} -flavor=${GLOBUS_FLAVOR} globus_ftp_client globus_gass_copy | \
	sed 's/^GLOBUS_PKG_LIBS[ ]*=[ ]*/GLOBUS_TRANSFER_DOWN_LIBS=/' | grep '^GLOBUS_TRANSFER_DOWN_LIBS' \
	>> globus_makefile.mk ; \
	if [ $$? -ne 0 ] ; then rm -f globus_makefile.mk ; exit 1 ; fi

client: ${CLIENT_PROGRAMS} ${LIBRARIES}

client-static: ${CLIENT_PROGRAMS} ${STATIC_LIBRARIES}

paral: paral.o
	${CC} -o paral paral.o ${LIBS} -Wl,-Bstatic ${CPPLIBS} -Wl,-Bdynamic

downloader: ${OBJECTS} downloader.o
	${CC} -o downloader downloader.o ${OBJECTS} ${LIBS} -Wl,-Bstatic ${CPPLIBS} -Wl,-Bdynamic

uploader: ${OBJECTS} uploader.o
	${CC} -o uploader uploader.o ${OBJECTS} ${LIBS} -Wl,-Bstatic ${CPPLIBS} -Wl,-Bdynamic

ui-uploader: ${UP_OBJECTS} ui_uploader.o
	${CC} -o ui-uploader ui_uploader.o ${UP_OBJECTS} ${UP_LIBS} -Wl,-Bstatic ${CPPLIBS} -Wl,-Bdynamic

ui-downloader: ${DOWN_OBJECTS} ui_downloader.o
	${CC} -o ui-downloader ui_downloader.o ${DOWN_OBJECTS} ${DOWN_LIBS} -Wl,-Bstatic ${CPPLIBS} -Wl,-Bdynamic

libui.so: ${LIBUI_OBJECTS} libui_uploader.o libui_downloader.o
	${CC} -shared -o libui.so libui_uploader.o libui_downloader.o ${LIBUI_OBJECTS}

libui.a: ${LIBUI_OBJECTS} libui_uploader.o libui_downloader.o
	rm -f libui.a
	ar r libui.a ${LIBUI_OBJECTS} libui_uploader.o libui_downloader.o
	ranlib libui.a

libui_uploader.o: ui_uploader.cc
	${CC} -g -O0 -o libui_uploader.o -c ui_uploader.cc ${CFLAGS} ${INCLUDES} -D__UI_LIBRARY__

libui_downloader.o: ui_downloader.cc
	${CC} -g -O0 -o libui_downloader.o -c ui_downloader.cc ${CFLAGS} ${INCLUDES} -D__UI_LIBRARY__

cache_test: cache_test.o ${TEST_MODULES}
	${CC} -g -O0 -o cache_test cache_test.o ${TEST_MODULES} ${LIBS} -Wl,-Bstatic ${CPPLIBS} -Wl,-Bdynamic

clean:
	@rm -f ${PROGRAMS} ${LIBRARIES} ${OBJECTS} ${UP_OPJECTS} ${OTHER_OBJECTS} ${DOWN_OBJECTS} ${LIBUI_OBJECTS} globus_makefile.mk

install: ${PROGRAMS} ${LIBRARIES}
	@echo "Actual installation is performed in base directory"

install-client: ${CLIENT_PROGRAMS} ${LIBRARIES}
	@echo "Actual installation is performed in base directory"
