Newer
Older

WAUTELET Philippe
committed
#MNH_LIC Copyright 1994-2024 CNRS, Meteo-France and Universite Paul Sabatier
#MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence

WAUTELET Philippe
committed
#MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
#MNH_LIC for details. version 1.
##########################################################
# #
# MACRO : dependance_flist #
# generate the dependance list for ALL fortran #
# "*.f*" files #
# searching in PATH=$(1) #
##########################################################
#
dependance_flist = $(notdir $(shell find $(1) -follow -type f \
-name '*.f' -o -name '*.f90' -o -name '*.fx90' -o -name '*.F90'\
| grep -v ',v' | sed -e 's/\.f.*/.D/g' -e 's/\.F.*/.D/g' ))
obj_flist = $(notdir $(shell find $(1) -follow -type f \
-name 'spll_*.f*' | sed -e 's/\(.*\)\(\.\).*/\1.o/g' ))
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#
##########################################################
##########################################################
##########################################################
# #
# DONT MODIFY LINES AFTER THIS !!!!!!!!!!!!! #
# #
##########################################################
##########################################################
##########################################################
##########################################################
# #
# AUTOMATIQUE DEPENDANCE GENERATION !!!!!!!!!!!!! #
# #
# "*.D" files contain dependance deduceed #
# form all "*.f*" FORTRAN sources files #
# #
# "use" key word #
# --> dependance on "*.mod" module files #
# "module" key word key word #
# --> creation of"*.mod" module files #
# #
# The "*.D" list of files is contructed from every #
# directories of fortran sources : #
# ---> user, master , bugfix , etc... #
# with or without RCS version control #
# #
# The "*.D" list is reconstructed automaticaly #
# by the commande "spll" , each time a FORTRAN source #
# are modified or added . #
# #
# All modification are allowed !!!!! #
# adding new subroutines #
# or #

WAUTELET Philippe
committed
# adding new modules #
# #
# REM : if during modification, you deleting some #
# FORTRAN subroutines you must also deleted the #
# "spll_*.o" files created by this one by hand #
# to avoid potential link problems #
# #
##########################################################
##########################################################
# #
# DEP_MASTER : Automatique --> #
# Dependance file of MASTER source #
# #
##########################################################
#
OBJDIR_MASTER=$(OBJDIR_ROOT)/MASTER
DEP_MASTER= $(call dependance_flist,$(DIR_MASTER))
#
# init VPATH depending on compilation phase
#
ifdef DO_DEP_MASTER
VPATH += $(shell find $(DIR_MASTER) -follow -type d )
VPATH += $(OBJDIR_MASTER)
endif
#
ifdef DO_COMP_MASTER
VPATH += $(OBJDIR_MASTER) $(OBJDIR_MASTER)/MOD

WAUTELET Philippe
committed
INC += -I$(B)$(OBJDIR_MASTER)/MOD
endif
#
##########################################################
# #
# DEP_USER : Automatique --> #
# Dependance file of MY source #
# #
##########################################################
#
ifdef VER_USER
OBJDIR_USER=$(OBJDIR_ROOT)/$(VER_USER)
#
# init VPATH depending on compilation phase
#
ifdef DO_DEP_USER
DEP_USER= $(call dependance_flist,$(DIR_USER))
VPATH += $(shell find $(DIR_USER) -follow -type d )
VPATH += $(OBJDIR_USER)
endif
#
ifdef DO_COMP_USER
VPATH += $(OBJDIR_USER) $(OBJDIR_USER)/MOD $(OBJDIR_MASTER) $(OBJDIR_MASTER)/MOD

ESCOBAR MUNOZ Juan
committed
INC += -I$(B)$(OBJDIR_USER)/MOD -I$(B)$(OBJDIR_MASTER)/MOD
endif
#
endif
##########################################################
# #

ESCOBAR MUNOZ Juan
committed
# COMPILER & ARCHITECTURE CONFIGURATION #
# #
##########################################################
#

ESCOBAR MUNOZ Juan
committed
include Rules.$(ARCH)$(F).mk
#
##########################################################
# #
# VPATH ADJUSTEMENT : #
# #
##########################################################
#
#VPATH := $(filter-out $(VPATH_EXCLUDE),$(VPATH))
#
##########################################################
# #
# OBJS : all *.o to compile #
# #
##########################################################
#
# MASTER
#
OBJS_LISTE_MASTER := $(OBJS_LISTE_MASTER) $(notdir $(shell find $(OBJDIR_MASTER) -follow -type f -name "spll_*.f*" | sed -e 's/\(.*\)\(\.\).*/\1.o/g' ))
#OBJS_LISTE_MASTER := $(OBJS_LISTE_MASTER) $(obj_flist $(OBJDIR_MASTER))
#
OBJS_LISTE_MASTER := $(sort $(filter-out $(IGNORE_OBJS),$(OBJS_LISTE_MASTER)))
#
LIB_MASTER=$(OBJDIR_MASTER)/$(LIB_OBJS_ROOT)-MASTER.a
#
# USER
#

Juan Escobar
committed
ifdef OBJDIR_USER
OBJS_LISTE_USER := $(OBJS_LISTE_USER) $(notdir $(shell find $(OBJDIR_USER) -follow -type f -name "spll_*.f*" | sed -e 's/\(.*\)\(\.\).*/\1.o/g' ))
#OBJS_LISTE_USER := $(OBJS_LISTE_USER) $(obj_flist $(OBJDIR_USER))
#
OBJS_LISTE_USER := $(sort $(filter-out $(IGNORE_OBJS), $(OBJS_LISTE_USER) $(OBJS_LISTE_MASTER) ))
#
LIB_USER=$(OBJDIR_USER)/$(LIB_OBJS_ROOT)-$(VER_USER).a

Juan Escobar
committed
endif
##########################################################
# #
# DEP_ALL : All dependance *.D to generate #
# #
##########################################################
#
DEP_ALL_MASTER = $(sort $(filter-out $(IGNORE_DEP_MASTER),$(DEP_MASTER)) )
#
DEP_ALL_USER = $(sort $(filter-out $(IGNORE_DEP_USER) ,$(DEP_USER)) )
#

WAUTELET Philippe
committed
.PHONY : clean objdir depall objs lib prog print
.DELETE_ON_ERROR:
.SUFFIXES:
.SUFFIXES: .o .f90 .f .fx90 .mod .D .a
.INTERMEDIATE: $(LIB_MASTER)
.SECONDARY: iso_fortran_env.mod mpi.mod netcdf.mod openacc.mod
##########################################################
# #
# MASTER RULES #
# #
##########################################################

WAUTELET Philippe
committed
.PHONY : all objdirmaster libmaster bibmaster objmaster progmaster
.PHONY : installmaster cleanlibmaster cleanmaster cleanobjmaster cleanprogmaster

WAUTELET Philippe
committed
ifeq "$(MNH_GRIBAPI)" "yes"
all : gribapi progmaster
else
all : eccodes_lib progmaster

WAUTELET Philippe
committed
endif
objdirmaster : $(OBJDIR_MASTER)/.dummy
$(OBJDIR_MASTER)/.dummy :
-mkdir -p $(OBJDIR_MASTER)/.dummy
-mkdir -p $(OBJDIR_MASTER)/MOD

ESCOBAR MUNOZ Juan
committed
depmaster : objdirmaster
@$(MAKE) DO_DEP_MASTER=YES OBJDIR=$(OBJDIR_MASTER) filedepallmaster

ESCOBAR MUNOZ Juan
committed
ifeq "$(VER_CDF)" "CDFAUTO"
depmaster : cdf
endif
ifeq "$(VER_OASIS)" "OASISAUTO"
depmaster : oasis
endif

WAUTELET Philippe
committed
ifeq "$(MNH_GRIBAPI)" "yes"
depmaster : gribapi
else
depmaster : eccodes_lib

WAUTELET Philippe
committed
endif

ESCOBAR MUNOZ Juan
committed
filedepallmaster : $(DEP_ALL_MASTER)
find $(OBJDIR_MASTER) -follow -name "*.D" > $(OBJDIR_MASTER)/filemaster
rm -f $(OBJDIR_MASTER)/filedepallmaster
cat $(OBJDIR_MASTER)/filemaster | xargs cat >> $(OBJDIR_MASTER)/filedepallmaster
libmaster : depmaster

ESCOBAR MUNOZ Juan
committed
@$(MAKE) -I$(B)$(OBJDIR_MASTER) DO_COMP_MASTER=YES OBJDIR=$(OBJDIR_MASTER) objmaster

ESCOBAR MUNOZ Juan
committed
@$(MAKE) -I$(B)$(OBJDIR_MASTER) DO_COMP_MASTER=YES OBJDIR=$(OBJDIR_MASTER) $(LIB_MASTER)
mv $(LIB_MASTER) $(subst lib-,bib-,$(LIB_MASTER))
objmaster : $(OBJS_LISTE_MASTER)
$(LIB_MASTER) : $(OBJS_LISTE_MASTER)
cd $(OBJDIR_MASTER) ; find . -follow -name '*.o'| xargs $(AR) r $(LIB_MASTER)
progmaster : libmaster

ESCOBAR MUNOZ Juan
committed
@$(MAKE) -I$(B)$(OBJDIR_MASTER) DO_COMP_MASTER=YES \
OBJDIR=$(OBJDIR_MASTER) \
LIB_MNH=$(LIB_MASTER) \
PROG_DIR=$(OBJDIR_MASTER) \
$(PROG_LIST) cleanlibmaster
installmaster : libmaster

ESCOBAR MUNOZ Juan
committed
@$(MAKE) -I$(B)$(OBJDIR_MASTER) DO_COMP_MASTER=YES OBJDIR=$(OBJDIR_MASTER) install
cleanlibmaster :
rm -f $(LIB_MASTER)

ESCOBAR MUNOZ Juan
committed
cleanmaster :
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
test -d $(OBJDIR_MASTER) && rm -fr $(OBJDIR_MASTER)
cleanobjmaster :
test -d $(OBJDIR_MASTER) && find $(OBJDIR_MASTER) -follow -name "*.o" -o -name "*.mod" | xargs rm
cleanprogmaster :
test -d $(OBJDIR_MASTER) && cd $(OBJDIR_MASTER) && rm -f $(PROG_LIST)
##########################################################
# #
# USER RULES #
# #
##########################################################
user : proguser
objdiruser : $(OBJDIR_USER)/.dummy
$(OBJDIR_USER)/.dummy :
-mkdir -p $(OBJDIR_USER)/.dummy
-mkdir -p $(OBJDIR_USER)/MOD
depuser : objdiruser
@$(MAKE) DO_DEP_USER=YES OBJDIR=$(OBJDIR_USER) filedepalluser
filedepalluser : $(DEP_ALL_USER)
find $(OBJDIR_USER) -follow -name "*.D" > $(OBJDIR_USER)/fileuser
cat $(OBJDIR_USER)/fileuser | sed -e "s!$(OBJDIR_USER)!$(OBJDIR_MASTER)!g" > $(OBJDIR_USER)/filenotmaster
grep -F -v -f $(OBJDIR_USER)/filenotmaster $(OBJDIR_MASTER)/filemaster > $(OBJDIR_USER)/filemaster
rm -f $(OBJDIR_USER)/filedepalluser
cat $(OBJDIR_USER)/fileuser $(OBJDIR_USER)/filemaster | xargs cat >> $(OBJDIR_USER)/filedepalluser
libuser : depuser

ESCOBAR MUNOZ Juan
committed
@$(MAKE) -I$(B)$(OBJDIR_USER) DO_COMP_USER=YES OBJDIR=$(OBJDIR_USER) objuser
objuser : $(OBJS_LISTE_USER)
$(LIB_USER) : $(OBJS_LISTE_USER)
rm -f $(LIB_USER)
cd $(OBJDIR_MASTER) ; find . -name "*.o" | xargs $(AR) r $(LIB_USER)
cd $(OBJDIR_USER) ; find . -name "*.o" | xargs $(AR) r $(LIB_USER)
proguser : libuser

ESCOBAR MUNOZ Juan
committed
@$(MAKE) -I$(B)$(OBJDIR_USER) DO_COMP_USER=YES \
OBJDIR=$(OBJDIR_USER) \
LIB_MNH=$(LIB_USER) \
PROG_DIR="$(OBJDIR_USER) $(OBJDIR_MASTER)" \
$(PROG_LIST) # cleanlibuser
cleanlibuser :
rm -f $(LIB_USER)
installuser :

ESCOBAR MUNOZ Juan
committed
@$(MAKE) -I$(B)$(OBJDIR_USER) DO_COMP_USER=YES OBJDIR=$(OBJDIR_USER) install
cleanproguser :
test -d $(OBJDIR_USER) && cd $(OBJDIR_USER) && rm -f $(PROG_LIST)
##########################################################
# #

WAUTELET Philippe
committed
# EXTRA LIB : GRIBAPI #
# #
##########################################################
ifneq "$(findstring 64,$(shell uname -m))" ""
A64=A64
endif
gribapi : $(GRIBAPI_INC)
$(GRIBAPI_INC) :
cd ${DIR_GRIBAPI} && ./configure --disable-shared --disable-jpeg --prefix=${GRIBAPI_PATH} CC="$(CC)" \
FC="$(FC)" FCFLAGS="$(GRIB_FLAGS)" ${GRIBAPI_CONF} && $(MAKE) -j 1 clean && \
$(MAKE) -j 1 && $(MAKE) -j 1 install && $(MAKE) -j 1 clean
gribapi_clean :
- [ -d ${GRIBAPI_PATH} ] && rm -fr ${GRIBAPI_PATH}
##########################################################
# #
# EXTRA LIB : ecCodes #
# #
##########################################################
eccodes_lib : $(ECCODES_MOD)
$(ECCODES_MOD) :
- [ ! -d $(DIR_ECCODES_BUILD) ] && mkdir -p $(DIR_ECCODES_BUILD)
cd ${DIR_ECCODES_BUILD} && \
AEC_PATH=$(CDF_PATH) cmake ${DIR_ECCODES_SRC} -DCMAKE_INSTALL_PREFIX=${DIR_ECCODES_INSTALL} -DBUILD_SHARED_LIBS=OFF \
-DENABLE_NETCDF=OFF -DENABLE_JPG=OFF -DENABLE_PYTHON=OFF -DENABLE_EXAMPLES=OFF \

ESCOBAR MUNOZ Juan
committed
-DCMAKE_Fortran_COMPILER=$(FC) -DCMAKE_C_COMPILER="$(CC)" \
-DCMAKE_Fortran_FLAGS="$(ECCODES_FFLAGS)" -DCMAKE_C_FLAGS="$(ECCODES_CFLAGS)" ${EC_CONF} && \
$(MAKE) && $(MAKE) install && $(MAKE) clean && [ -d ${DIR_ECCODES_BUILD} ] && rm -fr ${DIR_ECCODES_BUILD}
eccodes_lib_clean :
- [ -d ${DIR_ECCODES_BUILD} ] && rm -fr ${DIR_ECCODES_BUILD}
- [ -d ${DIR_ECCODES_INSTALL} ] && rm -fr ${DIR_ECCODES_INSTALL}
##########################################################
# #
# EXTRA LIB : NETCDF #
# #
##########################################################
ifeq "$(VER_CDF)" "CDFAUTO"
#
HDF_OPT ?= ${OPT_BASE_I4:-$OPT_BASE}
NETCDF_OPT ?= ${OPT_BASE_I4:-$OPT_BASE}

WAUTELET Philippe
committed
#
cdf : $(CDF_MOD)
$(CDF_MOD) :

WAUTELET Philippe
committed
cd ${DIR_LIBAEC} && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 CC="$(CC)" CFLAGS="$(HDF_OPT)" ${CDF_CONF} && \
$(MAKE) && $(MAKE) install && $(MAKE) clean
cd ${DIR_HDF} && ./configure --enable-fortran --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 --with-szlib=${CDF_PATH}/include,${CDF_PATH}/lib64 \

ESCOBAR MUNOZ Juan
committed
CC="$(CC)" CFLAGS="$(HDF_OPT)" ${HDF_CONF} FC="$(FC)" FCFLAGS="$(NETCDF_OPT)" LDFLAGS="-L${CDF_PATH}/lib64" LIBS="-lsz -laec -lz" && \
$(MAKE) && $(MAKE) install && $(MAKE) clean
cd ${DIR_CDFC} && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 --disable-dap --disable-byterange \
CC="$(CC)" CFLAGS="$(NETCDF_OPT)" CPPFLAGS="${INC_NETCDF}" ${CDF_CONF} LDFLAGS="-L${CDF_PATH}/lib64" LIBS="-lhdf5_hl -lhdf5 -lsz -laec -lz -ldl " && \
$(MAKE) && $(MAKE) install && $(MAKE) clean
ifdef MNH_FOREFIRE
cd ${DIR_CDFCXX} && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 \
CXX="$(CXX)" CXXFLAGS="$(NETCDF_OPT)" FC="$(FC)" FCFLAGS="$(NETCDF_OPT) $(NETCDF_SUPPFLAGS)" FFLAGS="$(NETCDF_OPT)" \
CPPFLAGS="${INC_NETCDF}" ${CDF_CONF} LDFLAGS="-L${CDF_PATH}/lib64" LIBS="-lnetcdf -lhdf5_hl -lhdf5 -lsz -laec -lz" && \
$(MAKE) && $(MAKE) install && $(MAKE) clean
endif
cd ${DIR_CDFF} && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 \

WAUTELET Philippe
committed
CC="$(CC)" CFLAGS="$(NETCDF_OPT)" FC="$(FC)" FCFLAGS="$(NETCDF_OPT) $(NETCDF_SUPPFLAGS)" FFLAGS="$(NETCDF_OPT)" \

WAUTELET Philippe
committed
CPPFLAGS="${INC_NETCDF}" ${CDF_CONF} LDFLAGS="-L${CDF_PATH}/lib64" LIBS="-lnetcdf -lhdf5_hl -lhdf5 -lsz -laec -lz" && \
$(MAKE) && $(MAKE) install && $(MAKE) clean
cleanmaster : cleancdf
cleancdf :
- [ -d ${CDF_PATH} ] && rm -fr ${CDF_PATH}
cd ${DIR_LIBAEC} && $(MAKE) clean
cd ${DIR_HDF} && $(MAKE) clean
cd ${DIR_CDFC} && $(MAKE) clean
ifdef MNH_FOREFIRE
cd ${DIR_CDFCXX} && $(MAKE) clean
endif
cd ${DIR_CDFF} && $(MAKE) clean
##########################################################
# #
# EXTRA LIB : OASIS #
# #
##########################################################
ifeq "$(VER_OASIS)" "OASISAUTO"
#
oasis : $(OASIS_KEY)
$(OASIS_KEY):
cd ${SRC_MESONH}/src/LIB/oasis3-mct_v3/util/make_dir && make realclean -f TopMakefileOasis3 && make -f TopMakefileOasis3 && cd ${SRC_MESONH}/src/LIB/toy_v1-0 && make clean && make
cleanmaster : cleanoasis
cleanoasis :
- [ -d ${OASIS_PATH} ] && rm -fr ${OASIS_PATH}
endif

WAUTELET Philippe
committed
##########################################################
# #
# EXTRA LIB : S4PY #
# #
##########################################################
ifdef MNH_S4PY
all : libs4py.so

WAUTELET Philippe
committed
OBJ_S4PY=$(OBJDIR_MASTER)/spll_wcompress_field.o $(OBJDIR_MASTER)/spll_wdecompress_field.o \
$(OBJDIR_MASTER)/spll_wget_compheader.o $(OBJDIR_MASTER)/spll_wlficas.o \
$(OBJDIR_MASTER)/spll_wlfiecr.o $(OBJDIR_MASTER)/spll_wlfifer.o \
$(OBJDIR_MASTER)/spll_wlfilec.o $(OBJDIR_MASTER)/spll_wlfinaf.o \
$(OBJDIR_MASTER)/spll_wlfinfo.o $(OBJDIR_MASTER)/spll_wlfiouv.o $(OBJDIR_MASTER)/spll_wlfipos.o \
$(OBJDIR_MASTER)/spll_NEWLFI_ALL.o $(OBJDIR_MASTER)/spll_lockasgn.o \
$(OBJDIR_MASTER)/spll_lockoff.o $(OBJDIR_MASTER)/spll_lockon.o $(OBJDIR_MASTER)/spll_lockrel.o \
$(OBJDIR_MASTER)/fswap8buff.o $(OBJDIR_MASTER)/spll_remark2.o

WAUTELET Philippe
committed
libs4py.so : progmaster

WAUTELET Philippe
committed
$(F90) -shared $(LDFLAGS) -o $(OBJDIR_MASTER)/$@ $(OBJ_S4PY) $(LIBS)

WAUTELET Philippe
committed
endif
##########################################################
# #
# PROGRAM RULES #
# #
##########################################################
ifdef PROG_LIST
prog : lib

ESCOBAR MUNOZ Juan
committed
@$(MAKE) -I$(B)$(OBJDIR) DEP=YES $(PROG_LIST)

WAUTELET Philippe
committed
install : $(patsubst %,%-${ARCH_XYZ},$(PROG_LIST))
$(PROG_LIST) : OBJ_PROG=$(shell find $(PROG_DIR) -follow -type f -name "spll_*.f*" \
| xargs grep -l -E -i "^[[:space:]]*program *$@" | sed -e 's/\.f.*/.o/g' | head -1 \
| xargs basename | xargs -I{} find $(PROG_DIR) -follow -name {} -print | head -1 )
$(PROG_LIST) : $(LIB_MNH)
# echo OBJ_PROG=$(OBJ_PROG)
$(F90) $(LDFLAGS) -o $(OBJDIR)/$@ $(OBJ_PROG) $(LIB_MNH) $(LIBS)
%-${ARCH_XYZ} :%
ifndef DO_COMP_USER
ln -sf $(OBJDIR)/$(*F) $(SRC_MESONH)/exe/$(*F)-${ARCH_XYZ}
else
# ln -sf $(OBJDIR)/$(*F) $(SRC_MESONH)/exe/$(*F)-${ARCH_XYZ}-${VER_USER}
ln -sf $(OBJDIR)/$(*F) $(SRC_MESONH)/exe/$(*F)${XYZ}

WAUTELET Philippe
committed
endif
rm -f $(SRC_MESONH)/exe/$(*F)_${ARCH_XYZ}~
##########################################################
# #
# EXAMPLES RULES #
# #
##########################################################
PWD_KTEST=$(SRC_MESONH)/MY_RUN/KTEST
EXAMPLES=001_2Drelief 002_3Drelief 003_KW78 004_Reunion 005_ARM 007_16janvier 014_LIMA
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
examples : $(EXAMPLES)
EXAMPLES_CHIMIE=009_ICARTT 011_KW78CHEM
chimie : $(EXAMPLES_CHIMIE)
$(EXAMPLES) $(EXAMPLES_CHIMIE) 012_dust :
cd $(PWD_KTEST)/$@ ; run_$@
EXAMPLES_NCL=004_Reunion 007_16janvier
ncl1_examples : $(patsubst %,%_ncl1,$(EXAMPLES_NCL))
ncl2_examples : $(patsubst %,%_ncl2,$(EXAMPLES_NCL))
examplesclean : $(patsubst %,%_clean,$(EXAMPLES))
%_ncl1 :
cd $(PWD_KTEST)/$(*F) ; run_$(*F) all_ncl_extractdia
%_ncl2 :
cd $(PWD_KTEST)/$(*F) ; run_$(*F) all_ncl_lfi2cdf
%_clean :
cd $(PWD_KTEST)/$(*F) ; $(MAKE) clean
#
# rules to remove spll* source on MASTER directory
#
purgelist : $(patsubst %,purge_%,$(notdir $(PL)))
purge_%.f90 :
cd $(OBJDIR_MASTER) ; grep -l "depfile:$(*F).D" *.f* | xargs rm -f ; rm -f $(*F).D ; rm -f filedepallmaster filemaster
purge_%.fx90 :
cd $(OBJDIR_MASTER) ; grep -l "depfile:$(*F).D" *.f* | xargs rm -f ; rm -f $(*F).D ; rm -f filedepallmaster filemaster
purge_%.f :
cd $(OBJDIR_MASTER) ; grep -l "depfile:$(*F).D" *.f* | xargs rm -f ; rm -f $(*F).D ; rm -f filedepallmaster filemaster
#
# rules to remove spll* source on USER directory
#
purgelistu : $(patsubst %,purgeu_%,$(notdir $(PL)))
purgeu_%.f90 :
cd $(OBJDIR_USER) ; grep -l "depfile:$(*F).D" *.f* | xargs rm -f ; rm -f $(*F).D ; rm -f filedepalluse fileuser
purgeu_%.fx90 :
cd $(OBJDIR_USER) ; grep -l "depfile:$(*F).D" *.f* | xargs rm -f ; rm -f $(*F).D ; rm -f filedepalluse fileuser
purgeu_%.f :
cd $(OBJDIR_USER) ; grep -l "depfile:$(*F).D" *.f* | xargs rm -f ; rm -f $(*F).D ; rm -f filedepalluse fileuser
stat_f90 :
cd $(OBJDIR_MASTER) ; find . -name "*.f90" | wc -l
stat_o :
cd $(OBJDIR_MASTER) ; find . -name "*.o" | wc -l
endif
cleanuser :
test -d $(OBJDIR_USER) && rm -fr $(OBJDIR_USER)
clean : examplesclean eccodes_lib_clean
rm -fr $(OBJDIR_ROOT)
cleanprog :
cd $(OBJDIR_ROOT) ; rm -f $(PROG_LIST)
print :
@echo $(VAR)=$($(VAR))
ARFLAGS=r
#(%.o): %.o
# $(AR) $(ARFLAGS) $(OBJDIR)/$(@F) $(*F).o
# $(RM) $(*F).o
#
# GENERATION OF DEPENDANCE FILES : *.D
#

ESCOBAR MUNOZ Juan
committed
SPLL ?= spll
%.D:%.F90
$(CPP) $(INC) $(CPPFLAGS) $< > $(OBJDIR)/$(*F).f90

ESCOBAR MUNOZ Juan
committed
$(SPLL) $(NSOURCE) $(OBJDIR)/$(*F).f90
rm -f $(OBJDIR)/$(*F).f90
%.D:%.f90
$(CPP) $(INC) $(CPPFLAGS) $< > $(OBJDIR)/$(*F).f90

ESCOBAR MUNOZ Juan
committed
$(SPLL) $(NSOURCE) $(OBJDIR)/$(*F).f90
rm -f $(OBJDIR)/$(*F).f90
%.D:%.fx90
$(CPP) $(INC) $(CPPFLAGS) $< > $(OBJDIR)/$(*F).fx90

ESCOBAR MUNOZ Juan
committed
$(SPLL) $(NSOURCE) $(OBJDIR)/$(*F).fx90
rm -f $(OBJDIR)/$(*F).fx90
%.D:%.f
$(CPP) $(INC) $(CPPFLAGS) $< > $(OBJDIR)/$(*F).f

ESCOBAR MUNOZ Juan
committed
$(SPLL) $(NSOURCE) $(OBJDIR)/$(*F).f
rm -f $(OBJDIR)/$(*F).f
#
# GENERATION OF OBJET FILES : *.o
#

ESCOBAR MUNOZ Juan
committed
#%.o:%.f90
# echo "inc=$(INC)"
# $(F90) -I$(OBJDIR) $(INC) -c $(F90FLAGS) $<
# -mv $(*F).o $(OBJDIR)/. || echo OK $(*F).o

WAUTELET Philippe
committed
echo "inc=$(INC)"
$(F77) -I$(OBJDIR) $(INC) -c $(F77FLAGS) $<
-mv $(*F).o $(OBJDIR)/. || echo OK $(*F).o

ESCOBAR MUNOZ Juan
committed
#%.o:%.fx90
# cp $< $(OBJDIR)/$(*F).f
# $(FX90) -I$(OBJDIR) $(INC) -c $(FX90FLAGS) $(OBJDIR)/$(*F).f
# -mv $(*F).o $(OBJDIR)/. || echo OK $(*F).o

WAUTELET Philippe
committed
$(CC) $(INC) $(CFLAGS) $(CPPFLAGS_C) -c $< -o $(OBJDIR)/$(*F).o
-mv $(*F).o $(OBJDIR)/. || echo OK $(*F).o
ifeq "$(DO_COMP_MASTER)" "YES"
include filedepallmaster
endif
ifeq "$(DO_COMP_USER)" "YES"
include filedepalluser
endif
iso_fortran_env.mod:

WAUTELET Philippe
committed
mpi.mod:
netcdf.mod:
openacc.mod: