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

SOURCES	= src/Brents.cc \
	src/CrustalProfile.cc \
	src/CrustalProfileStore.cc \
	src/DataBuffer.cc \
	src/GeoStack.cc \
	src/GreatCircle.cc \
	src/GreatCircle_Xg.cc \
	src/GreatCircle_Xn.cc \
	src/GreatCircleFactory.cc \
	src/Grid.cc \
	src/GridProfile.cc \
	src/IntegrateFunction.cc \
	src/InterpolatedProfile.cc \
	src/LayerProfile.cc \
	src/LayerProfileG.cc \
	src/Location.cc \
	src/MD50.cc \
	src/QueryProfile.cc \
	src/SlbmInterface.cc \
	src/SlbmInterfaceToJNI.cc \
	src/TauPSite.cc \
	src/TauPSiteFunctionals.cc \
	src/TPVelocityModels.cc \
	src/Triangle.cc \
	src/Uncertainty.cc \

OBJECTS	= Brents.o \
	CrustalProfile.o \
	CrustalProfileStore.o \
	DataBuffer.o \
	GeoStack.o \
	GreatCircle.o \
	GreatCircle_Xg.o \
	GreatCircle_Xn.o \
	GreatCircleFactory.o \
	Grid.o \
	GridProfile.o \
	IntegrateFunction.o \
	InterpolatedProfile.o \
	LayerProfile.o \
	LayerProfileG.o \
	Location.o \
	MD50.o \
	QueryProfile.o \
	SlbmInterface.o \
	SlbmInterfaceToJNI.o \
	TauPSite.o \
	TauPSiteFunctionals.o \
	TPVelocityModels.o \
	Triangle.o \
	Uncertainty.o \

INCLUDE_DIR	= include/
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 compiler variables
ifeq ($(OS),sunos)   
	CC = CC
	CCFLAGS = -Kpic -xO5 -dalign -fns -fsimple=2 -ftrap=%none
	COMMAND = ${CV} ${CC} ${CCFLAGS} -G -Bdynamic -o ../lib/libslbm.so -L/usr/lib/ -lCrun -lCstd -lm ${OBJECTS}
	VERSION_FLAG = -V
endif
ifeq ($(OS),linux)
	CC = gcc
	CCFLAGS = -fPIC -O3 -ffast-math -fno-trapping-math
	COMMAND = ${CV} ${CC} ${CCFLAGS} -shared -o ../lib/libslbm.so -L/usr/lib/ -lstdc++ -lm ${OBJECTS} 
	VERSION_FLAG = --version
endif
ifeq ($(OS),darwin)
	CC = gcc
	COMMAND = ${CV} ${CC} -dynamiclib -o ../lib/libslbm.dylib -L/usr/lib/ -lstdc++ -lm ${OBJECTS} 
	VERSION_FLAG = --version
endif


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


all : info slbm cleanobjs done

Brents.o:
	@ echo "Brents.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/Brents.cc

CrustalProfile.o:
	@ echo "CrustalProfile.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/CrustalProfile.cc

CrustalProfileStore.o:
	@ echo "CrustalProfileStore.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/CrustalProfileStore.cc

DataBuffer.o:
	@ echo "DataBuffer.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/DataBuffer.cc

GeoStack.o:
	@ echo "GeoStack.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/GeoStack.cc

GreatCircle.o:
	@ echo "GreatCircle.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/GreatCircle.cc

GreatCircle_Xg.o:
	@ echo "GreatCircle_Xg.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/GreatCircle_Xg.cc

GreatCircle_Xn.o:
	@ echo "GreatCircle_Xn.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/GreatCircle_Xn.cc

GreatCircleFactory.o:
	@ echo "GreatCircleFactory.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/GreatCircleFactory.cc

Grid.o:
	@ echo "Grid.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/Grid.cc

GridProfile.o:
	@ echo "GridProfile.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/GridProfile.cc

IntegrateFunction.o:
	@ echo "IntegrateFunction.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/IntegrateFunction.cc

InterpolatedProfile.o:
	@ echo "InterpolatedProfile.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/InterpolatedProfile.cc

LayerProfile.o:
	@ echo "LayerProfile.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/LayerProfile.cc

LayerProfileG.o:
	@ echo "LayerProfileG.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/LayerProfileG.cc

Location.o:
	@ echo "Location.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/Location.cc

MD50.o:
	@ echo "MD50.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/MD50.cc

QueryProfile.o:
	@ echo "QueryProfile.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/QueryProfile.cc

SlbmInterface.o:
	@ echo "SlbmInterface.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/SlbmInterface.cc

SlbmInterfaceToJNI.o:
	@ echo "SlbmInterfaceToJNI.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/SlbmInterfaceToJNI.cc

TauPSite.o:
	@ echo "TauPSite.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/TauPSite.cc

TauPSiteFunctionals.o:
	@ echo "TauPSiteFunctionals.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/TauPSiteFunctionals.cc

TPVelocityModels.o:
	@ echo "TPVelocityModels.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/TPVelocityModels.cc

Triangle.o:
	@ echo "Triangle.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/Triangle.cc

Uncertainty.o:
	@ echo "Uncertainty.cc"
	${CV} ${CC} ${CCFLAGS} -I${INCLUDE_DIR}  -c src/Uncertainty.cc
	@ echo ""

slbm : slbmlib cleanobjs

slbmlib: ${OBJECTS}
	${CV} echo "building shared library slbm.so"
	${COMMAND}
	@ echo ""

cleanobjs :
	${CV} echo "removing object files"
	rm -f Brents.o
	rm -f CrustalProfile.o
	rm -f CrustalProfileStore.o
	rm -f Databuffer.o
	rm -f GreatCircle.o
	rm -f GreatCircle_Xg.o
	rm -f GreatCircle_Xn.o
	rm -f GreatCircleFactory.o
	rm -f Grid.o
	rm -f GridProfile.o
	rm -f IntegrateFunction.o
	rm -f InterpolatedProfile.o
	rm -f LayerProfile.o
	rm -f LayerProfileG.o
	rm -f Location.o
	rm -f QueryProfile.o
	rm -f SlbmInterface.o
	rm -f SlbmInterfaceToJNI.o
	rm -f TauPSite.o
	rm -f TauPSiteFunctionals.o
	rm -f TPVelocityModels.o
	rm -f Triangle.o
	rm -f GeoStack.o
	rm -f DataBuffer.o
	rm -f MD50.o
	rm -f Uncertainty.o
	@ echo ""

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

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