#	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 -f Makefile
RM	=	/bin/rm -f
RM_LIST	=	*.o *.f *.tmp core .tmpfile comadp.incl hedmif.incl rawins.exe
NCARGRAPHICS	= 	NCARG
#NCARGRAPHICS	=	NONCARG
#NETCDFOPT	= 	NETCDF
NETCDFOPT	= 	NONETCDF

#	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)"	\
		"MAKE		= $(MAKE)"	\
		"OPTIONS	= -DCRAY -DBIT64 -D$(NCARGRAPHICS) -D$(NETCDFOPT)"	\
		"CPP		= /opt/ctl/bin/cpp" "CPPFLAGS	= -I. -C -P"	\
		"FC		= f90" 		"FCFLAGS	= -I. -e v"	\
		"LDOPTIONS      = " 		"CFLAGS         = "		\
		"LOCAL_LIBRARIES= -L/lib,/usr/lib,/usr/local/lib -l ncarg,ncarg_gks,ncarg_c,X11,imsl,imslcnv,netcdf,ncaro" ) ; \
	else \
		grep OSF .tmpfile ; \
	if [ $$? = 0 ]; then echo "Compiling for Compaq" ; 		\
		( $(CD) src ; $(MAKE) all 				\
		"RM		= $(RM)" 	"RM_LIST	= $(RM_LIST)"	\
		"MAKE		= $(MAKE)"					\
		"OPTIONS        = -DDEC -DBIT32 -D$(NCARGRAPHICS) -D$(NETCDFOPT)"	\
		"CPP		= /usr/lib/cpp" 		"CPPFLAGS	= -I. -C -P"	\
		"FC		= f90"						\
		"FCFLAGS	= -I. -convert big_endian"			\
		"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)" 	"MAKE		= $(MAKE)"	\
		"OPTIONS        = -DSGI -DBIT32 -D$(NCARGRAPHICS) -D$(NETCDFOPT)" 	\
		"CPP		= /lib/cpp" 	"CPPFLAGS	= -I. -C -P"	\
		"FC		= f77" 		"FCFLAGS	= -I. -n32 -static"	\
		"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)" 	"MAKE		= $(MAKE)"	\
		"OPTIONS        = -DHP -DBIT32 -D$(NCARGRAPHICS) -D$(NETCDFOPT)"	\
		"CPP		= /opt/langtools/lbin/cpp" "CPPFLAGS= -I. -C -P $(OPTIONS)"	\
		"FC		= f77" 		"FCFLAGS	= -I. -O $(OPTIONS) -K"	\
		"LDOPTIONS	= " 		"CFLAGS		= -Aa $(OPTIONS)"	\
		"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)" 	"MAKE		= $(MAKE)"	\
		"OPTIONS        = -DSUN -DBIT32 -D$(NCARGRAPHICS) -D$(NETCDFOPT)"	\
		"CPP		= /usr/ccs/lib/cpp" "CPPFLAGS=-I. -C -P $(OPTIONS)"	\
		"FC		= f77" 		"FCFLAGS	= -I. $(OPTIONS)"	\
		"LDOPTIONS	= "    		"CFLAGS		= -I. $(OPTIONS)"	\
		"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)" 	"MAKE		= $(MAKE)"	\
		"OPTIONS        = -DIBM -DBIT32 -D$(NCARGRAPHICS) -D$(NETCDFOPT)"	\
		"CPP		= /usr/lib/cpp" "CPPFLAGS	= -I. -C -P $(OPTIONS)"	\
		"FC		= xlf"		"FCFLAGS	= -I. -O -qmaxmem=-1 $(OPTIONS)"\
		"LDOPTIONS	= " 		"CFLAGS		= -I. $(OPTIONS)"	\
		"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)" 	"MAKE		= $(MAKE)"	\
		"OPTIONS        = -DDEC -DBIT32 -D$(NCARGRAPHICS) -D$(NETCDFOPT)" 	\
		"CPP		= /lib/cpp" 	"CPPFLAGS	= -I. -C -P -traditional"	\
		"FC		= pgf90" 	"FCFLAGS	= -I. -byteswapio -pc 32"	\
		"LDOPTIONS      = -pc 32"	"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) rawins.exe ; $(LN) src/rawins.exe . ) ;

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

rawins.deck:
	uname -a > .tmpfile
	grep OSF .tmpfile ; \
	if [ $$? = 0 ]; then \
		echo "Making rawins deck for Compaq" ; 		\
		( cp Templates/rawins.deck.sgi rawins.deck ) ;	\
        else \
		grep CRAY .tmpfile ; \
	if [ $$? = 0 ]; then \
		echo "Making rawins deck for CRAY" ; 			\
		( cp Templates/rawins.deck.cray rawins.deck ) ;	\
        else \
		grep IRIX .tmpfile ; \
	if [ $$? = 0 ]; then \
		echo "Making rawins deck for SGI" ; 			\
		( cp Templates/rawins.deck.sgi rawins.deck ) ;	\
        else \
		grep HP .tmpfile ; \
	if [ $$? = 0 ]; then \
		echo "Making rawins deck for HP" ; 			\
		( cp Templates/rawins.deck.hp rawins.deck ) ;		\
        else \
		grep SUN .tmpfile ; \
	if [ $$? = 0 ]; then \
		echo "Making rawins deck for SUN" ; 			\
		( cp Templates/rawins.deck.sgi rawins.deck ) ;	\
        else \
		grep AIX .tmpfile ; \
	if [ $$? = 0 ]; then \
		echo "Making rawins deck for IBM" ; 			\
		( cp Templates/rawins.deck.ibm rawins.deck ) ;	\
        else \
		grep Linux .tmpfile ; \
	if [ $$? = 0 ]; then \
		echo "Making rawins deck for Linux" ; 			\
		( cp Templates/rawins.deck.sgi rawins.deck ) ;	\
		( cp Templates/rawins.deck.intel rawins.deck.intel ) ;	\
	fi; \
	fi; \
	fi; \
	fi; \
	fi; \
	fi; \
	fi;

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)
