#	Top-level Makefile for GRAPH

#	Macros, these should be generic for all machines

.IGNORE:

AR	=	ar ru
CD	=	cd
LN	=	ln -s
MAKE	=	make -i -r -f Makefile
RM	=	/bin/rm -f
RM_LIST	=	*.o *.f core .tmpfile graph.exe

#	Targets for supported architectures

default:
	uname -a > .tmpfile
	grep CRAY .tmpfile ; \
	if [ $$? = 0 ]; then echo "Compiling for CRAY" ; 		\
		( $(CD) src ; $(MAKE) all				\
		"RM		= $(RM)" 	"RM_LIST	= $(RM_LIST)"	\
		"LN		= $(LN)" 	"MACH		= CRAY"		\
		"MAKE		= $(MAKE)"			\
		"CPP		= /opt/ctl/bin/cpp" "CPPFLAGS	= -I. -C -P -DNCARG41"	\
		"FC		= f90" 		"FCFLAGS	= -I."		\
		"LDOPTIONS      = " 		"CFLAGS         = "		\
		"LOCAL_LIBRARIES= -L/usr/local/lib -lncarg -lncarg_gks -lncarg_c -lX11 -lm" ) ; \
	else \
		grep OSF .tmpfile ; \
	if [ $$? = 0 ]; then echo "Compiling for Compaq" ; 		\
		( $(CD) src ; $(MAKE) all 				\
		"RM		= $(RM)" 	"RM_LIST	= $(RM_LIST)"	\
		"LN		= $(LN)" 	"MACH		= DEC"		\
		"MAKE		= $(MAKE)"			\
		"CPP		= /usr/bin/cpp" "CPPFLAGS	= -I. -C -P -DNCARG41"	\
		"FC		= f77"		"FCFLAGS	= -I. -convert big_endian -fpe"	\
		"LDOPTIONS      = "		"CFLAGS         = "		\
		"LOCAL_LIBRARIES= -L/usr/local/ncarg/lib -lncarg -lncarg_gks -lncarg_c -lX11 -lm" ) ; \
	else \
		grep IRIX .tmpfile ; \
	if [ $$? = 0 ]; then echo "Compiling for SGI" ; 		\
		( $(CD) src ; $(MAKE) all				\
		"RM		= $(RM)" 	"RM_LIST	= $(RM_LIST)"	\
		"LN		= $(LN)" 	"MACH		= SGI" 		\
		"MAKE		= $(MAKE)"				 	\
		"CPP		= /lib/cpp" 	"CPPFLAGS	= -I. -C -P -DNCARG41"	\
		"FC		= f77" 		"FCFLAGS	= -I. -n32"	\
		"LDOPTIONS      = -n32"		"CFLAGS         = -I. -n32"	\
		"LOCAL_LIBRARIES= -L/usr/local/ncarg/lib -lncarg -lncarg_gks -lncarg_c -lX11 -lm" ) ; \
	else \
		grep HP .tmpfile ; \
	if [ $$? = 0 ]; then echo "Compiling for HP" ; 			\
		( $(CD) src ; $(MAKE) all				\
		"RM		= $(RM)" 	"RM_LIST	= $(RM_LIST)"	\
		"LN		= $(LN)" 	"MACH		= HP"		\
		"MAKE		= $(MAKE)"			\
		"CPP		= /opt/langtools/lbin/cpp" "CPPFLAGS= -I. -C -P -DNCARG41"\
		"FC		= f77" 		"FCFLAGS	= -I. -O"	\
		"LDOPTIONS	= " 		"CFLAGS		= -Aa"		\
		"LOCAL_LIBRARIES= -L/usr/local/ncarg/lib -lncarg -lncarg_gks -lncarg_c -lX11 -lm" ) ; \
	else \
		grep SUN .tmpfile ; \
	if [ $$? = 0 ]; then echo "Compiling for SUN" ; 		\
		( $(CD) src ; $(MAKE) all				\
		"RM		= $(RM)" 	"RM_LIST	= $(RM_LIST)"	\
		"LN		= $(LN)" 	"MACH		= SUN"		\
		"MAKE		= $(MAKE)"			\
		"CPP		= /usr/ccs/lib/cpp" "CPPFLAGS=-I. -C -P -DNCARG41"	\
		"FC		= f77" 		"FCFLAGS	= -I."		\
		"LDOPTIONS	= -z muldefs"	"CFLAGS		= -I."		\
		"LOCAL_LIBRARIES= -L/usr/local/ncarg/lib -L/usr/openwin/lib -L/usr/dt/lib -lncarg -lncarg_gks -lncarg_c -lX11 -lm" ) ; \
	else \
		grep AIX .tmpfile ; \
	if [ $$? = 0 ]; then echo "Compiling for IBM" ;			\
		( $(CD) src ; $(MAKE) all				\
		"RM		= $(RM)" 	"RM_LIST	= $(RM_LIST)"	\
		"LN		= $(LN)" 	"MACH		= IBM"		\
		"MAKE		= $(MAKE)"			\
		"CPP		= /usr/lib/cpp" "CPPFLAGS	= -I. -C -P -DNCARG41"	\
		"FC		= xlf"		"FCFLAGS	= -I. -O -qmaxmem=-1"	\
		"LDOPTIONS	= " 		"CFLAGS		= -I."			\
		"LOCAL_LIBRARIES= -L/usr/local/lib32/r4i4 -lncarg -lncarg_gks -lncarg_c -lX11 -lm" ) ; \
	else \
		grep Linux .tmpfile ; \
	if [ $$? = 0 ]; then echo "Compiling for Linux" ; 		\
		( $(CD) src ; $(MAKE) all				\
		"RM		= $(RM)" 	"RM_LIST	= $(RM_LIST)"	\
		"LN		= $(LN)" 	"MACH		= SGI" 		\
		"MAKE		= $(MAKE)"				 	\
		"CPP		= /lib/cpp" 	"CPPFLAGS	= -I. -C -P -DNCARG41 -traditional"	\
		"FC		= pgf90" 	"FCFLAGS	= -I. -Mcray=pointer -pc 32 -byteswapio" \
		"LDOPTIONS      = "		"CFLAGS         = -I. "	\
		"LOCAL_LIBRARIES= -L$(NCARG_ROOT)/lib -L/usr/X11R6/lib -lncarg -lncarg_gks -lncarg_c -lX11 -L$(PGI)/linux86/lib -L/usr/lib -lf2c" ) ; \
	else echo "Do not know how to compile for the `cat .tmpfile` machine." \
		fi ; \
		fi ; \
		fi ; \
		fi ; \
		fi ; \
		fi ; \
		fi ; \
	fi ; \
		( $(RM) graph.exe ; $(LN) src/graph.exe . ) ;

intel:
	"Compiling for Linux with INTEL compiler" ; 		\
		( $(CD) src ; $(MAKE) all				\
		"RM		= $(RM)" 	"RM_LIST	= $(RM_LIST)"	\
		"LN		= $(LN)" 	"MACH		= SGI" 		\
		"MAKE		= $(MAKE)"				 	\
		"CPP		= /lib/cpp" 	"CPPFLAGS	= -I. -C -P -DNCARG41 -traditional"	\
		"FC		= ifort" 	"FCFLAGS	= -I. -w90 -w95 -pc 32 -convert big_endian" \
		"LDOPTIONS      = "		"CFLAGS         = -I. "	\
		"LOCAL_LIBRARIES= -L$(NCARG_ROOT)/lib -L/usr/X11R6/lib -lncarg -lncarg_gks -lncarg_c -lX11 -lX11 -L/usr/lib/gcc-lib/i386-redhat-linux/3.3.2  -lg2c") ; \
		( $(RM) graph.exe ; $(LN) src/graph.exe . ) ;

graph.deck:
	( cp Templates/graph.deck.cray graph.deck )

code:
	( $(CD) src ; $(MAKE) code					\
	"MAKE			=	$(MAKE)"			\
	"CPP			=	/usr/bin/cpp"			\
	"CPPFLAGS		=	-I. -C -P -DDEC"		)

clean:
	( $(CD) src   ; $(MAKE) clean "CD = $(CD)" "RM = $(RM)" "RM_LIST = $(RM_LIST)" )
	$(RM) $(RM_LIST)
