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} -lglobus_ftp_control_${GLOBUS_FLAVOR} -lglobus_common_${GLOBUS_FLAVOR} -lpthread
LIBS=-L${GLOBUS_LIBS} ${GLOBUS_GRIDFTP_LIBS} -lpthread
CPPLIBS=-lstdc++
INCLUDES=-I${GLOBUS_INCLUDES}
PROGRAMS=gridftp-server
OBJECTS=listener.o commands.o fileroot.o config.o names.o misc.o userspec.o \
        dataread.o datawrite.o datalist.o \
        ../misc/inttostring.o ../misc/stringtoint.o \
        ../misc/canonical_dir.o ../misc/log_time.o \
        ../misc/globus_error_utils.o ../misc/escaped.o ../misc/url_options.o \
        ../transfer/proxy.o \
        ../auth/libauth.a ../external/voms/api/libvomsapi.a
SUBDIRS=fileplugin jobplugin gaclplugin
BINARIES=gridftp-server
LIBRARIES=fileplugin/fileplugin.so jobplugin/jobplugin.so
CFLAGS+=-D__USE_FORK__ 

all: ${PROGRAMS} 
	@for dir in ${SUBDIRS} ; do \
	  echo "Making in $$dir" ; \
	  make -C $$dir all ; \
	  if [ $$? -ne 0 ] ; then exit 1 ; fi \
	done

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

gridftp-server: ${OBJECTS}
	${CC} -o gridftp-server ${OBJECTS} ${LIBS} -Wl,-Bstatic ${CPPLIBS} -Wl,-Bdynamic

test: test.o
	${CC} -o test test.o ${LIBS} -lglobus_ftp_client_$(GLOBUS_FLAVOR)

../auth/libauth.a:
	make -C ../auth libauth.a

../external/voms/api/libvomsapi.a:
	make -C ../external/voms

clean:
	@rm -f ${PROGRAMS} ${OBJECTS} ${OTHER_OBJECTS} globus_makefile.mk
	@for dir in ${SUBDIRS} ; do \
	  echo "Making in $$dir" ; \
	  make -C $$dir clean ; \
	done

install: ${PROGRAMS} 
	@for dir in ${SUBDIRS} ; do \
	  echo "Making in $$dir" ; \
	  make -C $$dir install ; \
	  if [ $$? -ne 0 ] ; then exit 1 ; fi \
	done

