From e63597bf792daf0eec00d7c2ac3cc9299c0edb4e Mon Sep 17 00:00:00 2001 From: Annop Wongwathanarat Date: Mon, 11 Sep 2023 15:02:21 +0100 Subject: wrf: fix patches for 4.2 to 4.4.2 for aarch64 config (#39900) --- var/spack/repos/builtin/packages/wrf/package.py | 10 ++- .../packages/wrf/patches/4.2/add_aarch64.patch | 49 +++++++-------- .../wrf/patches/4.2/add_aarch64_acfl.patch | 63 +++++++++++++++++++ .../wrf/patches/4.2/add_tools_flags_acfl2304.patch | 19 ++++++ .../packages/wrf/patches/4.3/add_aarch64.patch | 72 ++++++++++++++++++++++ .../wrf/patches/4.3/add_aarch64_acfl.patch | 72 ++++++++++++++++++++++ 6 files changed, 258 insertions(+), 27 deletions(-) create mode 100644 var/spack/repos/builtin/packages/wrf/patches/4.2/add_aarch64_acfl.patch create mode 100644 var/spack/repos/builtin/packages/wrf/patches/4.2/add_tools_flags_acfl2304.patch create mode 100644 var/spack/repos/builtin/packages/wrf/patches/4.3/add_aarch64.patch create mode 100644 var/spack/repos/builtin/packages/wrf/patches/4.3/add_aarch64_acfl.patch diff --git a/var/spack/repos/builtin/packages/wrf/package.py b/var/spack/repos/builtin/packages/wrf/package.py index 0697ebff52..1fcc8226d7 100644 --- a/var/spack/repos/builtin/packages/wrf/package.py +++ b/var/spack/repos/builtin/packages/wrf/package.py @@ -168,11 +168,19 @@ class Wrf(Package): patch("patches/4.2/var.gen_be.Makefile.patch", when="@4.2:") patch("patches/4.2/Makefile.patch", when="@4.2") patch("patches/4.2/tirpc_detect.patch", when="@4.2") - patch("patches/4.2/add_aarch64.patch", when="@4.2:") + patch("patches/4.2/add_aarch64.patch", when="@4.2:4.3.1 %gcc target=aarch64:") + patch("patches/4.2/add_aarch64_acfl.patch", when="@4.2:4.3.1 %arm target=aarch64:") patch("patches/4.2/configure_aocc_2.3.patch", when="@4.2 %aocc@:2.4.0") patch("patches/4.2/configure_aocc_3.0.patch", when="@4.2: %aocc@3.0.0:3.2.0") patch("patches/4.2/hdf5_fix.patch", when="@4.2: %aocc") patch("patches/4.2/derf_fix.patch", when="@4.2 %aocc") + patch( + "patches/4.2/add_tools_flags_acfl2304.patch", + when="@4.2:4.4.2 %arm@23.04.1: target=aarch64:", + ) + + patch("patches/4.3/add_aarch64.patch", when="@4.3.2:4.4.2 %gcc target=aarch64:") + patch("patches/4.3/add_aarch64_acfl.patch", when="@4.3.2:4.4.2 %arm target=aarch64:") patch("patches/4.4/arch.postamble.patch", when="@4.4:") patch("patches/4.4/configure.patch", when="@4.4:4.4.2") diff --git a/var/spack/repos/builtin/packages/wrf/patches/4.2/add_aarch64.patch b/var/spack/repos/builtin/packages/wrf/patches/4.2/add_aarch64.patch index 065c131b57..58f3085ea2 100644 --- a/var/spack/repos/builtin/packages/wrf/patches/4.2/add_aarch64.patch +++ b/var/spack/repos/builtin/packages/wrf/patches/4.2/add_aarch64.patch @@ -1,17 +1,17 @@ -From 9eb0c715cfcefb3df204200d44f5e8526bd14e31 Mon Sep 17 00:00:00 2001 -From: Phil Tooley -Date: Fri, 16 Oct 2020 13:20:24 +0100 -Subject: [PATCH] add aarch64 gcc support - ---- - arch/configure.defaults | 43 +++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 43 insertions(+) - diff --git a/arch/configure.defaults b/arch/configure.defaults -index 7767a81e..bfd2a802 100644 +index 6e98941a..17a94e48 100644 --- a/arch/configure.defaults +++ b/arch/configure.defaults -@@ -1975,6 +1975,49 @@ LIB_BUNDLED = \ +@@ -44,7 +44,7 @@ RLFLAGS = + CC_TOOLS = cc + + ########################################################### +-#ARCH Linux i486 i586 i686 armv7l aarch64, gfortran compiler with gcc #serial smpar dmpar dm+sm ++#ARCH Linux i486 i586 i686, gfortran compiler with gcc #serial smpar dmpar dm+sm + # + DESCRIPTION = GNU ($SFC/$SCC) + DMPARALLEL = # 1 +@@ -1981,6 +1981,49 @@ LIB_BUNDLED = \ $(WRF_SRC_ROOT_DIR)/frame/module_internal_header_util.o \ $(WRF_SRC_ROOT_DIR)/frame/pack_utils.o @@ -26,7 +26,7 @@ index 7767a81e..bfd2a802 100644 +SFC = gfortran +SCC = gcc +CCOMP = gcc -+DM_FC = mpif90 ++DM_FC = mpif90 +DM_CC = mpicc -DMPI2_SUPPORT +FC = CONFIGURE_FC +CC = CONFIGURE_CC @@ -34,33 +34,30 @@ index 7767a81e..bfd2a802 100644 +RWORDSIZE = CONFIGURE_RWORDSIZE +PROMOTION = #-fdefault-real-8 +ARCH_LOCAL = -DNONSTANDARD_SYSTEM_SUBR -DWRF_USE_CLM -+CFLAGS_LOCAL = -w -O3 -c -march=native -mtune=native -+DFLAGS_LOCAL = -+CPLUSPLUSLIB = ++CFLAGS_LOCAL = -w -O3 -c ++DFLAGS_LOCAL = ++CPLUSPLUSLIB = +ESMF_LDFLAG = $(CPLUSPLUSLIB) -+FCOPTIM = -O3 -ftree-vectorize -funroll-loops -march=native -mtune=native -+FCREDUCEDOPT = $(FCOPTIM) -+FCNOOPT = -O0 ++FCOPTIM = -Ofast -fno-expensive-optimizations -fno-reciprocal-math -fsigned-zeros -fno-unsafe-math-optimizations -funroll-loops ++FCREDUCEDOPT = $(FCOPTIM) ++FCNOOPT = -O0 +FCDEBUG = -g # -g $(FCNOOPT) # -ggdb -fbacktrace -fcheck=bounds,do,mem,pointer -ffpe-trap=invalid,zero,overflow +FORMAT_FIXED = -ffixed-form +FORMAT_FREE = -ffree-form -ffree-line-length-none -+FCSUFFIX = ++FCCOMPAT = +BYTESWAPIO = -fconvert=big-endian -frecord-marker=4 -+FCBASEOPTS_NO_G = -w $(FORMAT_FREE) $(BYTESWAPIO) ++FCBASEOPTS_NO_G = -w $(FORMAT_FREE) $(BYTESWAPIO) $(FCCOMPAT) +FCBASEOPTS = $(FCBASEOPTS_NO_G) $(FCDEBUG) -+MODULE_SRCH_FLAG = ++MODULE_SRCH_FLAG = +TRADFLAG = CONFIGURE_TRADFLAG +CPP = /lib/cpp CONFIGURE_CPPFLAGS +AR = ar +ARFLAGS = ru +M4 = m4 -G +RANLIB = ranlib -+RLFLAGS = -+CC_TOOLS = $(SCC) ++RLFLAGS = ++CC_TOOLS = $(SCC) + #insert new stanza here ########################################################### --- -2.28.0 - diff --git a/var/spack/repos/builtin/packages/wrf/patches/4.2/add_aarch64_acfl.patch b/var/spack/repos/builtin/packages/wrf/patches/4.2/add_aarch64_acfl.patch new file mode 100644 index 0000000000..be2db85ec8 --- /dev/null +++ b/var/spack/repos/builtin/packages/wrf/patches/4.2/add_aarch64_acfl.patch @@ -0,0 +1,63 @@ +diff --git a/arch/configure.defaults b/arch/configure.defaults +index 6e98941a..85d96019 100644 +--- a/arch/configure.defaults ++++ b/arch/configure.defaults +@@ -44,7 +44,7 @@ RLFLAGS = + CC_TOOLS = cc + + ########################################################### +-#ARCH Linux i486 i586 i686 armv7l aarch64, gfortran compiler with gcc #serial smpar dmpar dm+sm ++#ARCH Linux i486 i586 i686, gfortran compiler with gcc #serial smpar dmpar dm+sm + # + DESCRIPTION = GNU ($SFC/$SCC) + DMPARALLEL = # 1 +@@ -1981,6 +1981,49 @@ LIB_BUNDLED = \ + $(WRF_SRC_ROOT_DIR)/frame/module_internal_header_util.o \ + $(WRF_SRC_ROOT_DIR)/frame/pack_utils.o + ++########################################################### ++#ARCH Linux aarch64, armflang compiler #serial smpar dmpar dm+sm ++# ++DESCRIPTION = Arm GNU ($SFC/$SCC): Aarch64 ++DMPARALLEL = # 1 ++OMPCPP = # -D_OPENMP ++OMP = # -fopenmp ++OMPCC = # -fopenmp ++SFC = armflang ++SCC = armclang ++CCOMP = armclang ++DM_FC = mpif90 ++DM_CC = mpicc -DMPI2_SUPPORT ++FC = CONFIGURE_FC ++CC = CONFIGURE_CC ++LD = $(FC) ++RWORDSIZE = CONFIGURE_RWORDSIZE ++PROMOTION = #-fdefault-real-8 ++ARCH_LOCAL = -DNONSTANDARD_SYSTEM_SUBR -DWRF_USE_CLM ++CFLAGS_LOCAL = -w -O3 -c -Wno-error=implicit-function-declaration -Wno-error=implicit-int ++DFLAGS_LOCAL = ++CPLUSPLUSLIB = ++ESMF_LDFLAG = $(CPLUSPLUSLIB) ++FCOPTIM = -Ofast -funroll-loops ++FCREDUCEDOPT = $(FCOPTIM) ++FCNOOPT = -O0 ++FCDEBUG = -g # -g $(FCNOOPT) # -ggdb -fbacktrace -fcheck=bounds,do,mem,pointer -ffpe-trap=invalid,zero,overflow ++FORMAT_FIXED = -ffixed-form ++FORMAT_FREE = -ffree-form -ffree-line-length-0 ++FCCOMPAT = ++BYTESWAPIO = -fconvert=big-endian ++FCBASEOPTS_NO_G = -w $(OMP) $(FORMAT_FREE) $(BYTESWAPIO) $(FCCOMPAT) ++FCBASEOPTS = $(FCBASEOPTS_NO_G) $(FCDEBUG) ++MODULE_SRCH_FLAG = ++TRADFLAG = CONFIGURE_TRADFLAG ++CPP = /lib/cpp CONFIGURE_CPPFLAGS ++AR = ar ++ARFLAGS = ru ++M4 = m4 -G ++RANLIB = ranlib ++RLFLAGS = ++CC_TOOLS = $(SCC) ++ + #insert new stanza here + + ########################################################### diff --git a/var/spack/repos/builtin/packages/wrf/patches/4.2/add_tools_flags_acfl2304.patch b/var/spack/repos/builtin/packages/wrf/patches/4.2/add_tools_flags_acfl2304.patch new file mode 100644 index 0000000000..da9aaec4cc --- /dev/null +++ b/var/spack/repos/builtin/packages/wrf/patches/4.2/add_tools_flags_acfl2304.patch @@ -0,0 +1,19 @@ +*** a/arch/postamble 2023-04-01 15:35:41.729081823 +0000 +--- b/arch/postamble 2023-04-02 07:30:17.031503636 +0000 +*************** INCLUDE_MODULES = $(MODULE_SRCH_FLAG) +*** 56,62 **** + -I$(NETCDFFPATH)/include \ + CONFIGURE_RTTOV_INC CONFIGURE_CTSM_INC + REGISTRY = Registry +! CC_TOOLS_CFLAGS = CONFIGURE_NMM_CORE + + LIB = $(LIB_BUNDLED) $(LIB_EXTERNAL) $(LIB_LOCAL) $(LIB_WRF_HYDRO) CONFIGURE_CTSM_LIB + LDFLAGS = $(OMP) $(FCFLAGS) $(LDFLAGS_LOCAL) CONFIGURE_LDFLAGS +--- 56,62 ---- + -I$(NETCDFFPATH)/include \ + CONFIGURE_RTTOV_INC CONFIGURE_CTSM_INC + REGISTRY = Registry +! CC_TOOLS_CFLAGS = CONFIGURE_NMM_CORE $(CFLAGS_LOCAL) + + LIB = $(LIB_BUNDLED) $(LIB_EXTERNAL) $(LIB_LOCAL) $(LIB_WRF_HYDRO) CONFIGURE_CTSM_LIB + LDFLAGS = $(OMP) $(FCFLAGS) $(LDFLAGS_LOCAL) CONFIGURE_LDFLAGS diff --git a/var/spack/repos/builtin/packages/wrf/patches/4.3/add_aarch64.patch b/var/spack/repos/builtin/packages/wrf/patches/4.3/add_aarch64.patch new file mode 100644 index 0000000000..e24d800938 --- /dev/null +++ b/var/spack/repos/builtin/packages/wrf/patches/4.3/add_aarch64.patch @@ -0,0 +1,72 @@ +diff --git a/arch/configure.defaults b/arch/configure.defaults +index 6aa210d7..eead95fb 100644 +--- a/arch/configure.defaults ++++ b/arch/configure.defaults +@@ -45,7 +45,7 @@ CC_TOOLS = cc + NETCDFPAR_BUILD = CONFIGURE_NETCDFPAR_BUILD + + ########################################################### +-#ARCH Linux i486 i586 i686 armv7l aarch64, gfortran compiler with gcc #serial smpar dmpar dm+sm ++#ARCH Linux i486 i586 i686, gfortran compiler with gcc #serial smpar dmpar dm+sm + # + DESCRIPTION = GNU ($SFC/$SCC) + DMPARALLEL = # 1 +@@ -2023,7 +2023,7 @@ LIB_BUNDLED = \ + $(WRF_SRC_ROOT_DIR)/frame/pack_utils.o + + ########################################################### +-#ARCH Linux armv7l aarch64, gnu OpenMPI #serial smpar dmpar dm+sm ++#ARCH Linux , gnu OpenMPI #serial smpar dmpar dm+sm + # + DESCRIPTION = GNU ($SFC/$SCC) + DMPARALLEL = # 1 +@@ -2066,4 +2066,47 @@ RLFLAGS = + CC_TOOLS = $(SCC) + NETCDFPAR_BUILD = CONFIGURE_NETCDFPAR_BUILD + ++########################################################### ++#ARCH Linux aarch64, gfortran compiler with gcc #serial smpar dmpar dm+sm ++# ++DESCRIPTION = Arm GNU ($SFC/$SCC): Aarch64 ++DMPARALLEL = # 1 ++OMPCPP = # -D_OPENMP ++OMP = # -fopenmp ++OMPCC = # -fopenmp ++SFC = gfortran ++SCC = gcc ++CCOMP = gcc ++DM_FC = mpif90 ++DM_CC = mpicc -DMPI2_SUPPORT ++FC = CONFIGURE_FC ++CC = CONFIGURE_CC ++LD = $(FC) ++RWORDSIZE = CONFIGURE_RWORDSIZE ++PROMOTION = #-fdefault-real-8 ++ARCH_LOCAL = -DNONSTANDARD_SYSTEM_SUBR -DWRF_USE_CLM ++CFLAGS_LOCAL = -w -O3 -c ++DFLAGS_LOCAL = ++CPLUSPLUSLIB = ++ESMF_LDFLAG = $(CPLUSPLUSLIB) ++FCOPTIM = -Ofast -fno-expensive-optimizations -fno-reciprocal-math -fsigned-zeros -fno-unsafe-math-optimizations -funroll-loops ++FCREDUCEDOPT = $(FCOPTIM) ++FCNOOPT = -O0 ++FCDEBUG = -g # -g $(FCNOOPT) # -ggdb -fbacktrace -fcheck=bounds,do,mem,pointer -ffpe-trap=invalid,zero,overflow ++FORMAT_FIXED = -ffixed-form ++FORMAT_FREE = -ffree-form -ffree-line-length-none ++FCCOMPAT = ++BYTESWAPIO = -fconvert=big-endian -frecord-marker=4 ++FCBASEOPTS_NO_G = -w $(FORMAT_FREE) $(BYTESWAPIO) $(FCCOMPAT) ++FCBASEOPTS = $(FCBASEOPTS_NO_G) $(FCDEBUG) ++MODULE_SRCH_FLAG = ++TRADFLAG = CONFIGURE_TRADFLAG ++CPP = /lib/cpp CONFIGURE_CPPFLAGS ++AR = ar ++ARFLAGS = ru ++M4 = m4 -G ++RANLIB = ranlib ++RLFLAGS = ++CC_TOOLS = $(SCC) ++ + #insert new stanza here + + ########################################################### diff --git a/var/spack/repos/builtin/packages/wrf/patches/4.3/add_aarch64_acfl.patch b/var/spack/repos/builtin/packages/wrf/patches/4.3/add_aarch64_acfl.patch new file mode 100644 index 0000000000..0632ac8be9 --- /dev/null +++ b/var/spack/repos/builtin/packages/wrf/patches/4.3/add_aarch64_acfl.patch @@ -0,0 +1,72 @@ +diff --git a/arch/configure.defaults b/arch/configure.defaults +index 6aa210d7..45630015 100644 +--- a/arch/configure.defaults ++++ b/arch/configure.defaults +@@ -45,7 +45,7 @@ CC_TOOLS = cc + NETCDFPAR_BUILD = CONFIGURE_NETCDFPAR_BUILD + + ########################################################### +-#ARCH Linux i486 i586 i686 armv7l aarch64, gfortran compiler with gcc #serial smpar dmpar dm+sm ++#ARCH Linux i486 i586 i686, gfortran compiler with gcc #serial smpar dmpar dm+sm + # + DESCRIPTION = GNU ($SFC/$SCC) + DMPARALLEL = # 1 +@@ -2023,7 +2023,7 @@ LIB_BUNDLED = \ + $(WRF_SRC_ROOT_DIR)/frame/pack_utils.o + + ########################################################### +-#ARCH Linux armv7l aarch64, gnu OpenMPI #serial smpar dmpar dm+sm ++#ARCH Linux , gnu OpenMPI #serial smpar dmpar dm+sm + # + DESCRIPTION = GNU ($SFC/$SCC) + DMPARALLEL = # 1 +@@ -2066,4 +2066,47 @@ RLFLAGS = + CC_TOOLS = $(SCC) + NETCDFPAR_BUILD = CONFIGURE_NETCDFPAR_BUILD + ++########################################################### ++#ARCH Linux aarch64, armflang compiler #serial smpar dmpar dm+sm ++# ++DESCRIPTION = Arm GNU ($SFC/$SCC): Aarch64 ++DMPARALLEL = # 1 ++OMPCPP = # -D_OPENMP ++OMP = # -fopenmp ++OMPCC = # -fopenmp ++SFC = armflang ++SCC = armclang ++CCOMP = armclang ++DM_FC = mpif90 ++DM_CC = mpicc -DMPI2_SUPPORT ++FC = CONFIGURE_FC ++CC = CONFIGURE_CC ++LD = $(FC) ++RWORDSIZE = CONFIGURE_RWORDSIZE ++PROMOTION = #-fdefault-real-8 ++ARCH_LOCAL = -DNONSTANDARD_SYSTEM_SUBR -DWRF_USE_CLM ++CFLAGS_LOCAL = -w -O3 -c -Wno-error=implicit-function-declaration -Wno-error=implicit-int ++DFLAGS_LOCAL = ++CPLUSPLUSLIB = ++ESMF_LDFLAG = $(CPLUSPLUSLIB) ++FCOPTIM = -Ofast -funroll-loops ++FCREDUCEDOPT = $(FCOPTIM) ++FCNOOPT = -O0 ++FCDEBUG = -g # -g $(FCNOOPT) # -ggdb -fbacktrace -fcheck=bounds,do,mem,pointer -ffpe-trap=invalid,zero,overflow ++FORMAT_FIXED = -ffixed-form ++FORMAT_FREE = -ffree-form -ffree-line-length-0 ++FCCOMPAT = ++BYTESWAPIO = -fconvert=big-endian ++FCBASEOPTS_NO_G = -w $(OMP) $(FORMAT_FREE) $(BYTESWAPIO) $(FCCOMPAT) ++FCBASEOPTS = $(FCBASEOPTS_NO_G) $(FCDEBUG) ++MODULE_SRCH_FLAG = ++TRADFLAG = CONFIGURE_TRADFLAG ++CPP = /lib/cpp CONFIGURE_CPPFLAGS ++AR = ar ++ARFLAGS = ru ++M4 = m4 -G ++RANLIB = ranlib ++RLFLAGS = ++CC_TOOLS = $(SCC) ++ + #insert new stanza here + + ########################################################### -- cgit v1.2.3-60-g2f50