#----------------------------------------------------------------------------#
#									     #
#	COPYRIGHT	1994, 1995, 1996     Applied Research Corporation    #
#									     #
#			1997, 1998	     Space Applications Corporation  #
#									     #
#			ALL RIGHTS RESERVED				     #
#									     #
#----------------------------------------------------------------------------#
#-----------------------------------------------------------------------------
# file:         makefile for MET tools
#
# environment:  MPPDE, machine-independent, PGS directory structure
#
# environment variables dependencies:
#   compiler:  CC CFHFLAGS F77 F77_CFH
#   includes:  PGSINC
#   other:     PGSOBJ HDFSYS HDFINC HDF5INC
#
# author: Mike Sucher / Graham Bland / Abe Taaheri
# history:
#       01-Apr-1994 MES Initial version
#	02-JAN-1995 ANS Adopted for GCT
#	04-Apr-1995 ANS Adopted for MET
#       23-Jan-2001 AT  Added PGS_MET_SetMultiAttr
# notes:
#       1) This file is intended for use in the Multi-Platform PGS Development
#          Environment (MPPDE) .  It depends on the PGS-defined toolkit
#          directory structure, and on environmental variables defined
#          by MPPDE startup files.  This is how machine independence
#          is maintained.
#       2) Target object files are moved to $(PGSOBJ)/MET
#
#----------------------------------------------------------------------------

#
# Set the name of this tool group
#

GRP= MET

# define sh shell (needed for embedded shell scripts)
SHELL=/bin/sh

# Name of the remove utility and flags
RM= /bin/rm
RMFLAGS= -f 

# define C preprocessor symbols
DFLAGS  = -D$(HDFSYS) -DPGS_MET_COMPILE

# path for #include directive
IFLAG   = -I$(PGSINC) -I$(PGSINC)/CUC -I$(HDFINC) -I$(HDF5INC)

# object files from this sub-group needed to build library

C_LIBOFILES = \
	$(PGSOBJ)/$(GRP)/PGS_MET_GetSetAttr.o \
	$(PGSOBJ)/$(GRP)/PGS_MET_GetSetAttrF.o \
	$(PGSOBJ)/$(GRP)/PGS_MET_Init.o \
	$(PGSOBJ)/$(GRP)/PGS_MET_Init_NonMCF.o \
	$(PGSOBJ)/$(GRP)/PGS_MET_SetAttr.o \
	$(PGSOBJ)/$(GRP)/PGS_MET_SetAttrF.o \
	$(PGSOBJ)/$(GRP)/PGS_MET_SetMultiAttr.o \
	$(PGSOBJ)/$(GRP)/PGS_MET_SetMultiAttrF.o \
	$(PGSOBJ)/$(GRP)/PGS_MET_GetPCAttr.o \
	$(PGSOBJ)/$(GRP)/PGS_MET_GetPCAttrF.o \
	$(PGSOBJ)/$(GRP)/PGS_MET_GetConfigData.o \
	$(PGSOBJ)/$(GRP)/PGS_MET_GetConfigDataF.o \
	$(PGSOBJ)/$(GRP)/PGS_MET_Write.o \
	$(PGSOBJ)/$(GRP)/PGS_MET_Remove.o \
	$(PGSOBJ)/$(GRP)/PGS_MET_GetSetFileIdName.o \
	$(PGSOBJ)/$(GRP)/PGS_MET_GetSetFileIdNameF.o \
	$(PGSOBJ)/$(GRP)/PGS_MET_bindFORTRAN.o

# FORTRAN 77 subset of object files from this sub-group

F77_LIBOFILES	=  \
	$(PGSOBJ)/$(GRP)/PGS_MET_SetFileIdF.o

# FORTRAN 90 subset of object files from this sub-group

F90_LIBOFILES	=  \
	$(PGSOBJ)/$(GRP)/PGS_MET_SetFileIdF.o

FINCFILES = \
	PGS_SMF.f

# note: if F77 is blank or set to "none", the FORTRAN tools will not be built
#F77=


all: ftn_type

all_f77: cc_obj f77_obj

all_f90: cc_obj f90_obj

ftn_type:
	@case "$(F77)" in	 \
	    /*/f90* | f90*) \
	        echo "The F90 version of FORTRAN MET tools will be built." ; \
	        targ=all_f90 ; \
	        ;; \
	    "none"|"") \
	        echo "No FORTRAN compiler - the FORTRAN MET tools will NOT be built." ; \
	        targ=cc_obj ; \
	        ;; \
	    *) \
	        echo "The F77 version of FORTRAN MET tools will be built." ; \
	        targ=all_f77 ; \
	        ;; \
	esac ; \
	$(MAKE) $(MFLAGS) $$targ

cc_obj: $(C_LIBOFILES)

f77_obj: finc $(F77_LIBOFILES)

f90_obj: finc $(F90_LIBOFILES)

lib:
	${PGSBIN}/mkpgslib $(GRP)

clean:
	$(RM) $(RMFLAGS) *.o
	$(RM) $(RMFLAGS) $(FINCFILES)
	$(RM) $(RMFLAGS) $(C_LIBOFILES) $(F77_LIBOFILES) $(F90_LIBOFILES)

#
# compilation rules
#


$(PGSOBJ)/$(GRP)/PGS_MET_GetSetAttr.o: PGS_MET_GetSetAttr.c
	$(CC) -c $(CFHFLAGS) $(DFLAGS) $(IFLAG) $? -o $@

$(PGSOBJ)/$(GRP)/PGS_MET_GetSetAttrF.o: PGS_MET_GetSetAttrF.c
	$(CC) -c $(CFHFLAGS) $(DFLAGS) $(IFLAG) $? -o $@

$(PGSOBJ)/$(GRP)/PGS_MET_Init.o: PGS_MET_Init.c
	$(CC) -c $(CFHFLAGS) $(DFLAGS) $(IFLAG) $? -o $@

$(PGSOBJ)/$(GRP)/PGS_MET_Init_NonMCF.o: PGS_MET_Init_NonMCF.c
	$(CC) -c $(CFHFLAGS) $(DFLAGS) $(IFLAG) $? -o $@

$(PGSOBJ)/$(GRP)/PGS_MET_SetAttr.o: PGS_MET_SetAttr.c
	$(CC) -c $(CFHFLAGS) $(DFLAGS) $(IFLAG) $? -o $@

$(PGSOBJ)/$(GRP)/PGS_MET_SetAttrF.o: PGS_MET_SetAttrF.c
	$(CC) -c $(CFHFLAGS) $(DFLAGS) $(IFLAG) $? -o $@

$(PGSOBJ)/$(GRP)/PGS_MET_SetMultiAttr.o: PGS_MET_SetMultiAttr.c
	$(CC) -c $(CFHFLAGS) $(DFLAGS) $(IFLAG) $? -o $@

$(PGSOBJ)/$(GRP)/PGS_MET_SetMultiAttrF.o: PGS_MET_SetMultiAttrF.c
	$(CC) -c $(CFHFLAGS) $(DFLAGS) $(IFLAG) $? -o $@

$(PGSOBJ)/$(GRP)/PGS_MET_GetPCAttr.o: PGS_MET_GetPCAttr.c
	$(CC) -c $(CFHFLAGS) $(DFLAGS) $(IFLAG) $? -o $@

$(PGSOBJ)/$(GRP)/PGS_MET_GetPCAttrF.o: PGS_MET_GetPCAttrF.c
	$(CC) -c $(CFHFLAGS) $(DFLAGS) $(IFLAG) $? -o $@

$(PGSOBJ)/$(GRP)/PGS_MET_GetConfigData.o: PGS_MET_GetConfigData.c
	$(CC) -c $(CFHFLAGS) $(DFLAGS) $(IFLAG) $? -o $@

$(PGSOBJ)/$(GRP)/PGS_MET_GetConfigDataF.o: PGS_MET_GetConfigDataF.c
	$(CC) -c $(CFHFLAGS) $(DFLAGS) $(IFLAG) $? -o $@

$(PGSOBJ)/$(GRP)/PGS_MET_Write.o: PGS_MET_Write.c
	$(CC) -c $(CFHFLAGS) $(DFLAGS) $(IFLAG) $? -o $@

$(PGSOBJ)/$(GRP)/PGS_MET_Remove.o: PGS_MET_Remove.c
	$(CC) -c $(CFHFLAGS) $(DFLAGS) $(IFLAG) $? -o $@

$(PGSOBJ)/$(GRP)/PGS_MET_GetSetFileIdName.o: PGS_MET_GetSetFileIdName.c
	$(CC) -c $(CFHFLAGS) $(DFLAGS) $(IFLAG) $? -o $@

$(PGSOBJ)/$(GRP)/PGS_MET_GetSetFileIdNameF.o: PGS_MET_GetSetFileIdNameF.c
	$(CC) -c $(CFHFLAGS) $(DFLAGS) $(IFLAG) $? -o $@

$(PGSOBJ)/$(GRP)/PGS_MET_bindFORTRAN.o: PGS_MET_bindFORTRAN.c
	$(CC) -c $(CFHFLAGS) $(DFLAGS) $(IFLAG) $? -o $@

$(PGSOBJ)/$(GRP)/PGS_MET_SetFileIdF.o: PGS_MET_SetFileIdF.f
	$(F77) -c $(F77FLAGS) $? -o $@

# force the default make rule to search for a specific make rule
# for a given input file (i.e. target)
.c.o:
	$(MAKE) $(MFLAGS) $(PGSOBJ)/$(GRP)/$@

# force the default make rule to search for a specific make rule
# for a given input file (i.e. target)
.f.o:
	$(MAKE) $(MFLAGS) $(PGSOBJ)/$(GRP)/$@

#
# rule to copy FORTRAN include files from $PGSINC to working directory
#

finc: $(FINCFILES)

PGS_SMF.f: $(PGSINC)/PGS_SMF.f
	cp $? $@

#
# rule to delete FORTRAN include files from working directory
#

dfinc:
	@$(RM) $(RMFLAGS) $(FINCFILES)
