#
# Makefile to create curray
#
# The following environmental variables must be defined:
#
#   LAPACK_LIB - name of lapack library, available from netlib.org
#   LAPACK_HOME - location of lapack library
#
#        
TOPDIR=$(CURDIR)
# Determine OS Type
sysname = $(shell uname -s)
ifeq ($(sysname),Linux)
   hardware = $(shell uname -m)
   ifeq ($(hardware),alpha)
     sysname = AlphaLin
     MACHINE = AlphaLin
   endif
endif        

#Default settings if machine not in list below
LIBS = -lcurk -lcurd -lmods -lrimsl -lrsla -lm
CF90 = f90
CF90PREFLAGS = -g -f fixed
LDR  = f90
LDFLAGS = -L./rimsl -L./currayK -L./currayD -L./rsla

# Custom cases for different machines
MACH = $(shell uname -n | tr -d 0-9)
#MACH=killeen
#MACH=mcurie
#MACH=blondie
#MACH=taurus.gat.com
#MACH=hydra   note: use gmake
#MACH=petrel @pppl

ifeq ($(MACH),petrel.pppl.gov)
LAPACK_HOME=/usr/local/lff95/lib
LAPACK_LIB= -llapack -lblas
LIBS = -lcurd -lcurk -lrimsl -lrsla -lmods $(LAPACK_LIB) -lm
CF90 = /usr/local/lff95/bin/lf95
CF90PREFLAGS = --fix -g -I$(TOPDIR)/currayK
LDR  = $(CF90)
LDFLAGS = -L./rimsl -L./currayK -L./currayD -L./rsla -L$(LAPACK_HOME) -Wl,-Map,map
endif

ifeq ($(MACH),mcurie)
CF90PREFLAGS = -g -Rab -ev  -f fixed -p$(TOPDIR)/currayK/libmods.a
CF90 = f90
LDR = f90
LIBS =   -lcurk -lcurd -lmods -lrimsl -lrsla -lm 
LDFLAGS =  -L./rimsl -L./currayK -L./currayD -L./rsla -Wl"-D equiv(DGESV)=SGESV"       
endif

ifeq ($(MACH),killeen)
CF90PREFLAGS = -g -Rab -ev -dp -f fixed -p$(TOPDIR)/currayK/libmods.a 
CF90 = f90
LDR = f90
LIBS =   -lcurk -lcurd -lmods -lrimsl -lrsla -lm
LDFLAGS =  -L./rimsl -L./currayK -L./currayD -L./rsla -Wl"-D equiv=SGESV(DGESV)"
endif  

ifeq ($(MACH),blondie.ph.utexas.edu)
LAPACK_HOME=/usr/lib
LAPACK_LIB=cxml  
CF90 = f90
LDR = f90
CF90PREFLAGS = -g -fixed  -ev -real_size 64 -integer_size 64  -I$(TOPDIR)/currayK 
LDFLAGS =  -L./rimsl -L./currayD -L./currayK -L./rsla  -Wl,-Map,map
LIBS    = -lcurd -lcurk -lrimsl -lrsla -lmods -l$(LAPACK_LIB) -lm    
endif

ifeq ($(MACH),taurus.gat.com)
LAPACK_HOME=$PGI/lib
LAPACK_LIB= -llapack -lblas
CF90PREFLAGS = -g -Mfixed -Msave -r8 -I$(TOPDIR)/currayK
CF90 = pgf90
LDR = pgf90
LDFLAGS =  -L./rimsl -L./currayD -L./currayK -L./rsla  -L$(LAPACK_HOME) -Wl,-Map,map
LIBS    = -lcurd -lcurk -lrimsl -lrsla -lmods $(LAPACK_LIB) -lm
endif     

ifeq ($(MACH),hydra)
LAPACK_HOME=/d/hp/lib
LAPACK_LIB= -llapack -lblas
CF90PREFLAGS = -g +source=fixed +save +noalign64bitpointers -R8 -I$(TOPDIR)/currayK
#CF90PREFLAGS = -g +source=fixed +save +fastallocatable -R8 -I$(TOPDIR)/currayK
CF90 = f90
LDR = f90
LDFLAGS =  -L./rimsl -L./currayD -L./currayK -L./rsla  -L$(LAPACK_HOME) 
LIBS    = -lcurd -lcurk -lrimsl -lrsla -lmods $(LAPACK_LIB) -lm -lcl -lc_r
endif 
# ignore errors and try to continue
.IGNORE:



# Specify any loader commands and libraries here
# the loader should be the same as the compiler for the main subroutine
LINK    = ar -ruv
 
# specify the name of the executable to be created
EXE     = xcurray

export LINK LDR LDFLAGS CF90 CF90PREFLAGS MACH TOPDIR

SUBDIRS = currayK currayD rimsl imsl rsla

all : subsystem $(EXE)

subsystem :
	echo "Start build of libraries"
	for i in $(SUBDIRS) ;\
	do \
	(cd $$i; echo; echo $(MAKE) all "in $$i"; $(MAKE) all ); \
	done ;\
	echo -e "\a";echo -e "\a";echo -e "\a";echo -e "\a"; \
	echo "Finished"; \

$(EXE) :  currayD/libcurd.a currayK/libmods.a currayK/libcurk.a rimsl/librimsl.a
	$(LDR) $(LDFLAGS)  -o $(EXE) $(CURDIR)/currayD/rfdrive.o $(LIBS)


clobber : clean
	-rm -f $(EXE)

clean:
	for i in $(SUBDIRS) ;\
	do \
	(cd $$i; echo; echo "making" clean "in $$i"; $(MAKE) clean); \
	done
	-rm -f $(EXE) 
	-rm -rf *~ *.lis map
