# Makefile for FORTRAN 2003 interfaces to NETCDF C routines
#  This version is used when replacing the original NETCDF
#  fortran code with the FORTRAN 2003 interfaces

include ../macros.make

RM= rm -rf
LIBRARY = ../libsrc/libnetcdf.a
F03GARBAGE = module_netcdf_nc_interfaces.f90 \
 module_netcdf_nf_interfaces.f90 \
 *.mod

NCINTS = module_netcdf_nc_interfaces.o

LIB_OBJS = module_netcdf_nc_interfaces.o \
 module_netcdf_nf_data.o \
 module_netcdf_nf_interfaces.o \
 module_netcdf_f03.o \
 nf_misc.o \
 nf_control.o \
 nf_dim.o \
 nf_gen_att.o \
 nf_gen_inq.o \
 nf_gen_var.o \
 nf_attio.o \
 nf_vario.o \
 nf_var1io.o \
 nf_varaio.o \
 nf_varsio.o \
 nf_varmio.o \
 module_netcdf_fortv2_c_interfaces.o \
 netcdf_fortv2_f_interfaces.o

all: lib

lib:  $(LIBRARY) 

#$(LIBRARY): $(LIB_OBJS)
#	$(AR) $(ARFLAGS) $@ $(LIB_OBJS)
#	$(RANLIB) $@

install: 	install-nc_interfaces install-nf_interfaces \
                install-nf_data install-f03 install-fortv2_c_interfaces

uninstall:
	$(RM) $(INCDIR)/NETCDF_*.mod \
	$(INCDIR)/netcdf_*.mod \
	$(INCDIR)/NETCDF_*.MOD \
	$(INCDIR)/netcdf_*.MOD \
	$(INCDIR)/netcdf_*.d

install-nc_interfaces:
	@if test -f netcdf_nc_interfaces.mod; then \
		header=netcdf_nc_interfaces.mod; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header; \
	elif test -f NETCDF_NC_INTERFACES.mod; then \
		header=NETCDF_NC_INTERFACES.mod; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header; \
	elif test -f NETCDF_NC_INTERFACES.MOD; then \
		header=NETCDF_NC_INTERFACES.MOD; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header; \
	elif test -f netcdf_nc_interfaces.MOD; then \
		header=netcdf_nc_interfaces.MOD; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header; \
	elif test -f netcdf_nc_interfaces.d; then \
		header=netcdf_nc_interfaces.d; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header \
	else \
		echo 1>&2 "netCDF netcdf_nc_interfaces-module  not found"; \
	fi

install-nf_interfaces:
	@if test -f netcdf_nf_interfaces.mod; then \
		header=netcdf_nf_interfaces.mod; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header; \
	elif test -f NETCDF_NF_INTERFACES.mod; then \
		header=NETCDF_NF_INTERFACES.mod; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header; \
	elif test -f NETCDF_NF_INTERFACES.MOD; then \
		header=NETCDF_NF_INTERFACES.MOD; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header; \
	elif test -f netcdf_nf_interfaces.MOD; then \
		header=netcdf_nf_interfaces.MOD; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header; \
	elif test -f netcdf_nf_interfaces.d; then \
		header=netcdf_nf_interfaces.d; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header; \
	else\
		echo 1>&2 "netCDF netcdf_nf_interfaces-module  not found"; \
	fi

install-nf_data:
	@if test -f netcdf_nf_data.mod; then \
		header=netcdf_nf_data.mod; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header; \
	elif test -f NETCDF_NF_DATA.mod; then \
		header=NETCDF_NF_DATA.mod; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header; \
	elif test -f NETCDF_NF_DATA.MOD; then \
		header=NETCDF_NF_DATA.MOD; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header; \
	elif test -f netcdf_nf_data.MOD; then \
		header=netcdf_nf_data.MOD; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header; \
	elif test -f netcdf_nf_data.d; then \
		header=netcdf_nf_data.d; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header; \
	else \
		echo 1>&2 "netCDF netcdf_nf_data-module  not found"; \
	fi

install-f03:
	@if test -f netcdf_f03.mod; then \
		header=netcdf_f03.mod; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header; \
	elif test -f NETCDF_F03.mod; then \
		header=NETCDF_F03.mod; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header; \
	elif test -f NETCDF_F03.MOD; then \
		header=NETCDF_F03.MOD; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header; \
	elif test -f netcdf_f03.MOD; then \
		header=netcdf_f03.MOD; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header; \
	elif test -f netcdf_f03.d; then \
		header=netcdf_f03.d; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header; \
	else \
		echo 1>&2 "netCDF netcdf_f03-module  not found"; \
	fi

install-fortv2_c_interfaces:
	@if test -f netcdf_fortv2_c_interfaces.mod; then \
		header=netcdf_fortv2_c_interfaces.mod; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header; \
	elif test -f NETCDF_FORTV2_C_INTERFACES.mod; then \
		header=NETCDF_FORTV2_C_INTERFACES.mod; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header; \
	elif test -f NETCDF_FORTV2_C_INTERFACES.MOD; then \
		header=NETCDF_FORTV2_C_INTERFACES.MOD; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header; \
	elif test -f netcdf_fortv2_c_interfaces.MOD; then \
		header=netcdf_fortv2_c_interfaces.MOD; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header; \
	elif test -f netcdf_fortv2_c_interfaces.d; then \
		header=netcdf_fortv2_c_interfaces.d; \
	$(MAKE) HEADER=$$header $(INCDIR)/$$header \
	else \
	echo 1>&2 "netCDF netcdf_fortv2_c_interfaces-module  not found"; \
	fi

# make explicit targets since we don't have a lot of files

module_netcdf_nc_interfaces.o: module_netcdf_nc_interfaces_.F90
	$(FPP) $(FPPFLAGS) module_netcdf_nc_interfaces_.F90 > module_netcdf_nc_interfaces.f90
	$(F90) -c $(F90FLAGS) module_netcdf_nc_interfaces.f90

module_netcdf_nf_data.o: module_netcdf_nf_data.f90
	$(F90) -c $(F90FLAGS) module_netcdf_nf_data.f90

module_netcdf_nf_interfaces.o: module_netcdf_nf_interfaces_.F90
	$(FPP) $(FPPFLAGS) module_netcdf_nf_interfaces_.F90 > module_netcdf_nf_interfaces.f90
	$(F90) -c $(F90FLAGS) module_netcdf_nf_interfaces.f90

module_netcdf_f03.o: module_netcdf_f03.f90
	$(F90) -c $(F90FLAGS) module_netcdf_f03.f90

nf_attio.o: nf_attio.f90 $(NCINTS)
	$(F90) -c $(F90FLAGS) nf_attio.f90

nf_misc.o: nf_misc.f90 $(NCINTS)
	$(F90) -c $(F90FLAGS) nf_misc.f90

nf_control.o: nf_control.f90 $(NCINTS)
	$(F90) -c $(F90FLAGS) nf_control.f90

nf_dim.o: nf_dim.f90 $(NCINTS)
	$(F90) -c $(F90FLAGS) nf_dim.f90

nf_vario.o: nf_vario.f90 $(NCINTS)
	$(F90) -c $(F90FLAGS) nf_vario.f90

nf_gen_att.o: nf_gen_att.f90 $(NCINTS)
	$(F90) -c $(F90FLAGS) nf_gen_att.f90

nf_gen_inq.o: nf_gen_inq.f90 $(NCINTS)
	$(F90) -c $(F90FLAGS) nf_gen_inq.f90

nf_gen_var.o: nf_gen_var.f90 $(NCINTS)
	$(F90) -c $(F90FLAGS) nf_gen_var.f90

nf_var1io.o: nf_var1io.f90 $(NCINTS)
	$(F90) -c $(F90FLAGS) nf_var1io.f90

nf_varaio.o: nf_varaio.f90 $(NCINTS)
	$(F90) -c $(F90FLAGS) nf_varaio.f90

nf_varsio.o: nf_varsio.f90 $(NCINTS)
	$(F90) -c $(F90FLAGS) nf_varsio.f90

nf_varmio.o: nf_varmio.f90 $(NCINTS)
	$(F90) -c $(F90FLAGS) nf_varmio.f90

module_netcdf_fortv2_c_interfaces.o: module_netcdf_fortv2_c_interfaces.f90
	$(F90) -c $(INCLUDES) $(F90FLAGS) module_netcdf_fortv2_c_interfaces.f90

netcdf_fortv2_f_interfaces.o: netcdf_fortv2_f_interfaces.f90
	$(F90) -c $(INCLUDES) $(F90FLAGS) netcdf_fortv2_f_interfaces.f90

include ../rules.make

