From d15a64b74387ad4b6743b66c7961aea54a31fbce Mon Sep 17 00:00:00 2001
From: Juan Escobar <escj@aero.obs-mip.fr>
Date: Thu, 14 Feb 2019 16:41:49 +0100
Subject: [PATCH] Juan 6/02/2019: For CDFAUTO & Forefire , add compilation of
 netcdf-cxx-4.2

---
 conf/profile_mesonh.ihm |  3 ++-
 src/Makefile            | 13 +++++++++++--
 src/Makefile.MESONH.mk  |  2 ++
 src/Rules.LXgfortran.mk |  3 +++
 src/Rules.LXifort.mk    |  7 +++++++
 src/configure           |  6 ++++--
 6 files changed, 29 insertions(+), 5 deletions(-)

diff --git a/conf/profile_mesonh.ihm b/conf/profile_mesonh.ihm
index 576185e85..ca9d6bb8f 100755
--- a/conf/profile_mesonh.ihm
+++ b/conf/profile_mesonh.ihm
@@ -67,6 +67,7 @@ export CONF_DOLLAR=${CONF_DOLLAR}
 #
 export VER_CDF=${VER_CDF}
 export VERSION_CDFC=${VERSION_CDFC}
+export VERSION_CDFCXX=${VERSION_CDFCXX}
 export VERSION_CDFF=${VERSION_CDFF}
 export VERSION_HDF=${VERSION_HDF}
 export VERSION_LIBAEC=${VERSION_LIBAEC}
@@ -125,7 +126,7 @@ export VERSION_NCL=${VERSION_NCL}
 ##########################################################
 ##########################################################
 #
-export XYZ="-\${ARCH}-R\${MNH_REAL}I\${MNH_INT}-\${VERSION_XYZ}\${MNH_ECRAD:+-ECRAD}\${VER_USER:+-\${VER_USER}}-\${VER_MPI}-\${OPTLEVEL}"
+export XYZ="-\${ARCH}-R\${MNH_REAL}I\${MNH_INT}-\${VERSION_XYZ}\${MNH_ECRAD:+-ECRAD}\${MNH_FOREFIRE:+-FF}\${VER_USER:+-\${VER_USER}}-\${VER_MPI}-\${OPTLEVEL}"
 #[ "x\${VER_USER}" != "x" ] && export XYZ="\${XYZ}-\${VER_USER}"
 # PATH to find tools like "makegen, etc ..."
 export BIN_TOOLS=${BIN_TOOLS}
diff --git a/src/Makefile b/src/Makefile
index ef4e4220c..ef5a0b30f 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -339,8 +339,8 @@ gribapi_clean :
 ##########################################################
 ifeq "$(VER_CDF)" "CDFAUTO"
 #
-HDF_OPT    = ${OPT_BASE_I4:-$OPT_BASE}
-NETCDF_OPT = ${OPT_BASE_I4:-$OPT_BASE}
+HDF_OPT    ?= ${OPT_BASE_I4:-$OPT_BASE}
+NETCDF_OPT ?= ${OPT_BASE_I4:-$OPT_BASE}
 #
 cdf : $(CDF_MOD)
 $(CDF_MOD) :
@@ -352,6 +352,12 @@ $(CDF_MOD) :
 	cd ${DIR_CDFC} && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 --disable-dap \
 	CC="$(CC)" CFLAGS="$(NETCDF_OPT)" CPPFLAGS="${INC_NETCDF}" ${CDF_CONF} LDFLAGS="-L${CDF_PATH}/lib64" LIBS="-lhdf5_hl -lhdf5 -lsz -laec -lz" && \
 	$(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 \
 	CC="$(CC)" CFLAGS="$(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" && \
@@ -363,6 +369,9 @@ cleancdf :
 	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
 endif
 ##########################################################
diff --git a/src/Makefile.MESONH.mk b/src/Makefile.MESONH.mk
index bda290237..1a1607808 100644
--- a/src/Makefile.MESONH.mk
+++ b/src/Makefile.MESONH.mk
@@ -252,6 +252,7 @@ OBJS_LISTE_MASTER     += C_ForeFire_Interface.o
 INC                   += $(INC_FOREFIRE)
 VPATH                 += $(DIR_FOREFIRE)
 CPPFLAGS              += -DMNH_FOREFIRE
+ARCH_XYZ    := $(ARCH_XYZ)-FF
 endif
 ##########################################################
 #           Source TOOLS                                 #
@@ -467,6 +468,7 @@ endif
 #
 ifeq "$(VER_CDF)" "CDFAUTO"
 DIR_CDFC?=${SRC_MESONH}/src/LIB/netcdf-${VERSION_CDFC}
+DIR_CDFCXX?=${SRC_MESONH}/src/LIB/netcdf-cxx-${VERSION_CDFCXX}
 DIR_CDFF?=${SRC_MESONH}/src/LIB/netcdf-fortran-${VERSION_CDFF}
 CDF_PATH?=${SRC_MESONH}/src/LIB/netcdf-${ARCH}-R${MNH_REAL}I${MNH_INT}
 CDF_MOD?=${CDF_PATH}/include/netcdf.mod
diff --git a/src/Rules.LXgfortran.mk b/src/Rules.LXgfortran.mk
index 26ff8eee5..cdf8bc938 100644
--- a/src/Rules.LXgfortran.mk
+++ b/src/Rules.LXgfortran.mk
@@ -58,6 +58,7 @@ endif
 #
 #  
 CC = gcc
+CXX = g++
 FC = gfortran 
 ifeq "$(VER_MPI)" "MPIAUTO"
 F90 = mpif90
@@ -97,6 +98,8 @@ CNAME_GRIBEX=_gfortran
 # Netcdf/HDF5 flags
 #
 HDF_CONF= CFLAGS=-std=c99
+HDF_OPT ?= -fPIC
+NETCDF_OPT ?= -fPIC
 #
 ## LIBTOOLS flags
 #
diff --git a/src/Rules.LXifort.mk b/src/Rules.LXifort.mk
index 48b9c5c99..3a3185d5a 100644
--- a/src/Rules.LXifort.mk
+++ b/src/Rules.LXifort.mk
@@ -128,6 +128,7 @@ endif
 #
 #
 CC ?= gcc
+CXX ?= g++
 FC = ifort
 ifeq "$(VER_MPI)" "MPIAUTO"
 ifneq "$(findstring TAU,$(XYZ))" ""
@@ -191,6 +192,12 @@ endif
 TARGET_GRIBEX=linux
 CNAME_GRIBEX=ifort
 #
+# Netcdf/HDF5 flags
+#
+HDF_CONF= CFLAGS=-std=c99
+HDF_OPT ?= -fPIC
+NETCDF_OPT ?= -fPIC
+#
 # LIBTOOLS flags
 #
 #if MNH_TOOLS exists => compile the tools
diff --git a/src/configure b/src/configure
index 4dfbf2c9a..9b3b03bec 100755
--- a/src/configure
+++ b/src/configure
@@ -9,12 +9,13 @@ if [ "x$XYZ" = "x" ]
 then
 # 
 export VERSION_MASTER=${VERSION_MASTER:-MNH-V5-4}
-export VERSION_BUG=${VERSION_BUG:-1}
+export VERSION_BUG=${VERSION_BUG:-2}
 export VERSION_XYZ=${VERSION_XYZ:-${VERSION_MASTER}-${VERSION_BUG}${VER_OASIS:+-${VER_OASIS}}}
 export VERSION_DATE=${VERSION_DATE:-"dd/mm/yyyy"}
 export VERSION_LIBAEC=${VERSION_LIBAEC:-"0.3.2"}
 export VERSION_HDF=${VERSION_HDF:-"1.8.20"}
 export VERSION_CDFC=${VERSION_CDFC:-"4.5.0"}
+export VERSION_CDFCXX=${VERSION_CDFCXX:-"4.2"}
 export VERSION_CDFF=${VERSION_CDFF:-"4.4.4"}
 export VERSION_GRIBAPI=${VERSION_GRIBAPI:-"1.26.0-Source"}
 export MNH_INT=${MNH_INT:-"4"}
@@ -429,7 +430,7 @@ fi
 #
 ${LOCAL}/bin/eval_dollar  profile_mesonh.ihm > profile_mesonh
 chmod +x profile_mesonh
-XYZ=${ARCH}-R${MNH_REAL}I${MNH_INT}-${VERSION_XYZ}${MNH_ECRAD:+-ECRAD}${VER_USER:+-${VER_USER}}-${VER_MPI}-${OPTLEVEL}
+XYZ=${ARCH}-R${MNH_REAL}I${MNH_INT}-${VERSION_XYZ}${MNH_ECRAD:+-ECRAD}${MNH_FOREFIRE:+-FF}${VER_USER:+-${VER_USER}}-${VER_MPI}-${OPTLEVEL}
 cp profile_mesonh profile_mesonh-${XYZ}
 #
 #  Do some post-install stuff
@@ -466,6 +467,7 @@ if [ "x${VER_CDF}" == "xCDFAUTO" ] ;then
 ( cd $LOCAL/src/LIB ; [ ! -d libaec-${VERSION_LIBAEC} ] && tar xvfz libaec-${VERSION_LIBAEC}.tar.gz )
 ( cd $LOCAL/src/LIB ; [ ! -d hdf5-${VERSION_HDF} ] && tar xvfz hdf5-${VERSION_HDF}.tar.gz )
 ( cd $LOCAL/src/LIB ; [ ! -d netcdf-${VERSION_CDFC} ] && tar xvfz netcdf-${VERSION_CDFC}.tar.gz )
+( cd $LOCAL/src/LIB ; [ ! -d netcdf-cxx-${VERSION_CDFCXX} ] && tar xvfz netcdf-cxx-${VERSION_CDFCXX}.tar.gz )
 ( cd $LOCAL/src/LIB ; [ ! -d netcdf-fortran-${VERSION_CDFF} ] && tar xvfz netcdf-fortran-${VERSION_CDFF}.tar.gz )
 fi
 #
-- 
GitLab