#
# modules/srm/Makefile
#
# Build the iRODS srm module
#

ifndef buildDir
buildDir = $(CURDIR)/../..
endif

include $(buildDir)/config/config.mk
include $(buildDir)/config/platform.mk
include $(buildDir)/config/directories.mk
include $(buildDir)/config/common.mk

#
# Path to Globus installation
#
GLOBUS_DIR = /opt/globus

#
# Path to srm-ifce header files and library
#
SRM_IFCE_INC = /opt/srm-ifce.r2508/src
SRM_IFCE_LIB = -L/opt/srm-ifce.r2508/build/ -lsrm

#
# Add Globus libraries to LD_LIBRARY_PATH
# 
export LD_LIBRARY_PATH=$(GLOBUS_DIR)/lib/


#
# Directories
#
MSObjDir =	$(modulesDir)/srm/microservices/obj
MSSrcDir =	$(modulesDir)/srm/microservices/src
MSIncDir =	$(modulesDir)/srm/microservices/include


#
# Source files
#
OBJECTS =	$(MSObjDir)/srm_ls.o $(MSObjDir)/srm_rm.o $(MSObjDir)/srm_mkdir.o $(MSObjDir)/srm_rmdir.o $(MSObjDir)/srm_getpermission.o $(MSObjDir)/srm_setpermission.o $(MSObjDir)/srm_getbestspacetoken.o $(MSObjDir)/srm_getspacetokens.o $(MSObjDir)/srm_getspacemd.o $(MSObjDir)/srm_preparetoput.o $(MSObjDir)/srm_putdone.o $(MSObjDir)/srm_preparetoget.o $(MSObjDir)/srm_bringonline.o $(MSObjDir)/srm_ping.o $(MSObjDir)/srm_abortrequest.o $(MSObjDir)/srm_abortfiles.o $(MSObjDir)/srm_releasefiles.o $(MSObjDir)/srm_tools.o
INCLUDE_FLAGS =	-I$(MSIncDir) -I/opt/iRODS/core/include/ -I$(GLOBUS_DIR)/include/gcc64dbg -I$(SRM_IFCE_INC)


#
# All libraries needed by iRODS server
#
LIBS = $(SRM_IFCE_LIB)


#
# Compile and link flags
#
INCLUDES +=	$(INCLUDE_FLAGS) $(LIB_INCLUDES) $(SVR_INCLUDES)
CFLAGS_OPTIONS := $(CFLAGS) $(MY_CFLAG)
CFLAGS =	$(CFLAGS_OPTIONS) $(INCLUDES) $(MODULE_CFLAGS)

.PHONY: all rules microservices server client clean
.PHONY: server_ldflags client_ldflags server_cflags client_cflags
.PHONY: print_cflags

# Build everything
all:	microservices
	@true

# List module's objects for inclusion in the clients
client_ldflags:
	@true

# List module's includes for inclusion in the clients
client_cflags:
	@true

# List module's objects for inclusion in the server
server_ldflags:
	@echo $(OBJECTS) $(LIBS)

# List module's includes for inclusion in the server
server_cflags:
	@echo $(INCLUDE_FLAGS)

# Build microservices
microservices:	print_cflags $(OBJECTS)
	@true

# Build client additions
client:
	@true

# Build server additions
server:
	@true

# Build rules
rules:
	@true

# Clean
clean:
	@echo "Clean srm module..."
	@rm -f $(OBJECTS)

# Show compile flags
print_cflags:
	@echo "Compile flags:"
	@echo "    $(CFLAGS)"

#
# Compilation targets
#
$(OBJECTS): $(MSObjDir)/%.o: $(MSSrcDir)/%.c $(DEPEND)
	@echo "Compile srm module `basename $@`..."
#	@echo $(CC) -c $(CFLAGS) -o $@ $<
	@$(CC) -c $(CFLAGS) -o $@ $<


