#-------------------------------------------------------------------------------
# Define Program, Program Directory, Program Version, Install Directories, and
# Target Names ... set mode to default (empty)
#-------------------------------------------------------------------------------
PROGRAM				= libslbmCshell
PROG_NAM			= SLBM_C_shell

SOURCES			= src/slbm_C_shell.cc
OBJECTS			= slbm_C_shell.o

INCLUDE_DIR			= include/
INCLUDE_SLBMDIR		= ../SLBM/include/
LIB_DIR				= ../lib/

CV = @

# Determine OS
OS := $(shell uname -s)
ifeq (${OS},Linux)
	OS = linux
endif
ifeq (${OS},Darwin)
	OS = darwin
endif
ifeq (${OS},SunOS)
	OS = sunos
endif

# OS-specific variable declarations
ifeq ($(OS),sunos)   
	CC = CC
	CCFLAGS = -Kpic -xO5 -dalign -fns -fsimple=2 -ftrap=%none
	COMMAND = ${CV} ${CC} -G -o ${LIB_DIR}libslbmCshell.so slbm_C_shell.o -L${LIB_DIR} -lslbm -lm -lCrun -lCstd
	VERSION_FLAG =  -V
endif
ifeq (${OS},linux)
	CC = gcc
	CCFLAGS = -fPIC -O3 -ffast-math -fno-trapping-math
	COMMAND = ${CV} ${CC} -shared -o ${LIB_DIR}libslbmCshell.so slbm_C_shell.o -L${LIB_DIR} -lslbm -lm -lstdc++
	VERSION_FLAG = --version
endif
ifeq ($(OS),darwin)
	CC = gcc
	COMMAND = ${CV} ${CC} -dynamiclib -o ${LIB_DIR}libslbmCshell.dylib slbm_C_shell.o -L${LIB_DIR} -lslbm -lm -lstdc++
	VERSION_FLAG = --version
endif


#-------------------------------------------------------------------------------
# targets
#-------------------------------------------------------------------------------

all : info cleanall cshell cleanobjs done

slbm_C_shell.o :
	${CV} echo "compiling slbm_C_shell.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR} -I${INCLUDE_SLBMDIR} -c src/slbm_C_shell.cc
	$(CV) echo ""

cshell :${OBJECTS}
	${CV} echo "building shared library slbm_C_shell.so"
	${COMMAND}
	${CV} echo ""

cleanobjs :
	${CV} echo "removing object files"
	rm -f slbm_C_shell.o
	${CV} echo ""


cleanall :
	${CV} echo "removing shared object files"
	rm -f lib/slbmshell.so
	${CV} echo ""
	${CV} echo "removing object files"
	rm -f slbm_C_shell.o
	${CV} echo ""

info :
	@ echo "========================================="
	@ echo "Building" $(PROG_NAM) "on" $(OS) 
	@ $(CC) $(VERSION_FLAG)
	@ echo ""

done :
	@echo "Done building" $(PROG_NAM)
	@ echo ""
