
# Interesting PGI compiler options:
# -C       Perform array bounds checking. 
# -D<arg>  Defines a preprocessor macro.
# -I<arg>  Adds a directory to the search path for #include files. 
# -L       Specifies a library directory. 
# -l       Loads a library. 
# -module <moduledir>  Save/search for module files in directory <moduledir>
# -Mpgflag Selects variations for code generation and optimization. 
# -Olevel  Specifies code optimization level where level is 0, 1, or 2. 
# -o       Names the object file. 
# -pc	   Set precision for certain calculations. 

RMNLIB	= rmn
#PROF    = -prof
#PROF    = 

MODULEDIR = $(PWD)

COMPIL	= r.compile -optf =-module $(MODULEDIR)  $(CHECKBOUND) \
	            -librmn $(RMNLIB) $(PROF) -includes $(PWD)

COMPIL0	= r.compile -optf $(CHECKBOUND) \
	            -librmn $(RMNLIB) $(PROF) -includes $(PWD)

HFILES = int_macros.hf

UTILSRC = clib_interface.c \
	mod_clib_interface.f90 \
	mod_strings.f90 \
	mod_sort.f90 \
	mod_ospath.f90 \
	mod_statfld.f90 
#\
#	mod_distll.f90 \
#	distll.f90 \
#	mod_rpnstdfile.f90 \
#	mod_rpnstdrec.f90 \
#	mod_rpnstdgrid.f90 

UTIL_I    = . cnf
UTIL_LDIR = cnf
UTIL_LNAME= cnf

HERE = $(PWD)

BUILDUTILOPT = -includes $(UTIL_I) -libpath $(UTIL_LDIR) -libappl $(UTIL_LNAME)

CLEANUTILCMD = /bin/rm -f *~ *.o *.mod

cnflib:
	cd cnf; rm -f *.so *.a ; make build CC=gcc ; make clean ; rm -f *.so ; cd $(HERE)

utilsobj:
	$(COMPIL) $(BUILDUTILOPT) -src $(UTILSRC)

utilsobjpollux:
	$(COMPIL0) $(BUILDUTILOPT) -src $(UTILSRC)

all: cnflib utilsobj

clean: cleanutils
cleanutils: qclean
	/bin/rm -f *~ *.o $(MODULEDIR)/*.mod 

#==========================================
clean0:
#Faire le grand menage. On enleve tous les fichiers sources inutiles et les .o
	-if [ "*.[chfs]" != "`echo *.[chfs]`" ] ; \
	then 	for i in *.[chfs]; \
	do \
	if (r.ucanrm $$i)  ; \
	then rm -f $$i; \
	fi; \
	done \
	fi; \
	if [ "*.cdk" != "`echo *.cdk`" ] ; \
	then 	for i in *.cdk; \
	do \
	if (r.ucanrm  $$i) ; \
	then rm -f $$i; \
	fi; \
	done \
	fi; \
	if [ "*.txt" != "`echo *.txt`" ] ; \
	then 	for i in *.txt; \
	do \
	if (r.ucanrm  $$i) ; \
	then rm -f $$i; \
	fi; \
	done \
	fi; \
	if [ "*.*_sh" != "`echo *.*_sh`" ] ; \
	then \
	for i in *.*_sh; \
	do \
	if (r.ucanrm  $$i) ; \
	then rm -f $$i; \
	fi; \
	done \
	fi; \
	if [ "*.[fp]tn" != "`echo *.[fp]tn`" ] ; \
	then \
	for i in *.[fp]tn; \
	do \
	if (r.ucanrm $$i) ; \
	then rm -f $$i; \
	fi; \
	done \
	fi ; \
	rm *.o
	-if [ "*.f90" != "`echo *.f90`" ] ; \
	then \
	for i in *.f90; \
	do \
	if (r.ucanrm $$i)  ; \
	then rm -f $$i; \
	fi; \
	done \
	fi; \
	if [ "*.cdk90" != "`echo *.cdk90`" ] ; \
	then \
	for i in *.cdk90; \
	do \
	if (r.ucanrm  $$i) ; \
	then rm -f $$i; \
	fi; \
	done \
	fi ; \
	if [ "*.ftn90" != "`echo *.ftn90`" ] ; \
	then \
	for i in *.ftn90; \
	do \
	if (r.ucanrm $$i) ; \
	then rm -f $$i; \
	fi; \
	done \
	fi
	rm *.o *.mod

qclean:
#Faire un petit menage. On enleve tous les .o et les .f produits a partir de .ftn/.ptn
	-if [ "*.[fp]tn" != "`echo *.[fp]tn`" ] ; \
	then \
	for i in *.[fp]tn ; \
	do \
	fn=$${i%.[fp]tn}; \
	rm -f $$fn.f; \
	done \
	fi ; \
	if [ "*.ftn90" != "`echo *.ftn90`" ] ; \
	then \
	for i in *.ftn90 ; \
	do \
	fn=$${i%.ftn90};\
	rm -f $$fn.f90; \
	done \
	fi
	-rm -f *.o

#==========================================
RCOMPIL = r.compile
RBUILD  = r.build
FCOMPF =
CCOMPF =
COMPF =
FC = $(RCOMPIL) -arch $(ARCH) -abi $(ABI)  -defines "=$(DEFINE)" -O $(OPTIL) -optf="$(FFLAGS)" -bindir $(LCLPO) $(COMPF) $(FCOMPF) -src
CC = $(RCOMPIL) -arch $(ARCH) -abi $(ABI)  -defines "=$(DEFINE)" -O $(OPTIL) -optc="$(CFLAGS)" -bindir $(LCLPO) $(COMPF) $(CCOMPF) -src
FTNC = $(RCOMPIL) -arch $(ARCH) -abi $(ABI)  -defines "=$(DEFINE)" -optf="$(FFLAGS) $(CPPFLAGS)" -P $(COMPF) $(FCOMPF) -src
PTNC = sed 's/^[[:blank:]].*PROGRAM /      SUBROUTINE /' | sed 's/^[[:blank:]].*program /      subroutine /'  > $*.f
.f90.o:
	$(FC) $<
.f.o:
	$(FC) $<
.c.o:
	$(CC) $<

