Skip to content

Commit 99893a6

Browse files
authored
wrf: fix patches for aarch64 config (#35984)
1 parent 5f8f89b commit 99893a6

File tree

5 files changed

+236
-28
lines changed

5 files changed

+236
-28
lines changed

var/spack/repos/builtin/packages/wrf/package.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,12 +150,16 @@ class Wrf(Package):
150150
patch("patches/4.2/var.gen_be.Makefile.patch", when="@4.2:")
151151
patch("patches/4.2/Makefile.patch", when="@4.2")
152152
patch("patches/4.2/tirpc_detect.patch", when="@4.2")
153-
patch("patches/4.2/add_aarch64.patch", when="@4.2:")
153+
patch("patches/4.2/add_aarch64.patch", when="@4.2:4.3.1 %gcc")
154+
patch("patches/4.2/add_aarch64_acfl.patch", when="@4.2:4.3.1 %arm")
154155
patch("patches/4.2/configure_aocc_2.3.patch", when="@4.2 %aocc@:2.4.0")
155156
patch("patches/4.2/configure_aocc_3.0.patch", when="@4.2: %[email protected]:3.2.0")
156157
patch("patches/4.2/hdf5_fix.patch", when="@4.2: %aocc")
157158
patch("patches/4.2/derf_fix.patch", when="@4.2 %aocc")
158159

160+
patch("patches/4.3/add_aarch64.patch", when="@4.3.2: %gcc")
161+
patch("patches/4.3/add_aarch64_acfl.patch", when="@4.3.2: %arm")
162+
159163
patch("patches/4.4/arch.postamble.patch", when="@4.4:")
160164
patch("patches/4.4/configure.patch", when="@4.4:")
161165
# Various syntax fixes found by FPT tool
@@ -325,7 +329,7 @@ def configure(self, spec, prefix):
325329
# Remove broken default options...
326330
self.do_configure_fixup()
327331

328-
if self.spec.compiler.name not in ["intel", "gcc", "aocc", "fj"]:
332+
if self.spec.compiler.name not in ["intel", "gcc", "aocc", "fj", "arm"]:
329333
raise InstallError(
330334
"Compiler %s not currently supported for WRF build." % self.spec.compiler.name
331335
)
Lines changed: 23 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
From 9eb0c715cfcefb3df204200d44f5e8526bd14e31 Mon Sep 17 00:00:00 2001
2-
From: Phil Tooley <[email protected]>
3-
Date: Fri, 16 Oct 2020 13:20:24 +0100
4-
Subject: [PATCH] add aarch64 gcc support
5-
6-
---
7-
arch/configure.defaults | 43 +++++++++++++++++++++++++++++++++++++++++
8-
1 file changed, 43 insertions(+)
9-
101
diff --git a/arch/configure.defaults b/arch/configure.defaults
11-
index 7767a81e..bfd2a802 100644
2+
index 6e98941a..17a94e48 100644
123
--- a/arch/configure.defaults
134
+++ b/arch/configure.defaults
14-
@@ -1975,6 +1975,49 @@ LIB_BUNDLED = \
5+
@@ -44,7 +44,7 @@ RLFLAGS =
6+
CC_TOOLS = cc
7+
8+
###########################################################
9+
-#ARCH Linux i486 i586 i686 armv7l aarch64, gfortran compiler with gcc #serial smpar dmpar dm+sm
10+
+#ARCH Linux i486 i586 i686, gfortran compiler with gcc #serial smpar dmpar dm+sm
11+
#
12+
DESCRIPTION = GNU ($SFC/$SCC)
13+
DMPARALLEL = # 1
14+
@@ -1981,6 +1981,49 @@ LIB_BUNDLED = \
1515
$(WRF_SRC_ROOT_DIR)/frame/module_internal_header_util.o \
1616
$(WRF_SRC_ROOT_DIR)/frame/pack_utils.o
1717

@@ -26,41 +26,38 @@ index 7767a81e..bfd2a802 100644
2626
+SFC = gfortran
2727
+SCC = gcc
2828
+CCOMP = gcc
29-
+DM_FC = mpif90
29+
+DM_FC = mpif90
3030
+DM_CC = mpicc -DMPI2_SUPPORT
3131
+FC = CONFIGURE_FC
3232
+CC = CONFIGURE_CC
3333
+LD = $(FC)
3434
+RWORDSIZE = CONFIGURE_RWORDSIZE
3535
+PROMOTION = #-fdefault-real-8
3636
+ARCH_LOCAL = -DNONSTANDARD_SYSTEM_SUBR -DWRF_USE_CLM
37-
+CFLAGS_LOCAL = -w -O3 -c -march=native -mtune=native
38-
+DFLAGS_LOCAL =
39-
+CPLUSPLUSLIB =
37+
+CFLAGS_LOCAL = -w -O3 -c
38+
+DFLAGS_LOCAL =
39+
+CPLUSPLUSLIB =
4040
+ESMF_LDFLAG = $(CPLUSPLUSLIB)
41-
+FCOPTIM = -O3 -ftree-vectorize -funroll-loops -march=native -mtune=native
42-
+FCREDUCEDOPT = $(FCOPTIM)
43-
+FCNOOPT = -O0
41+
+FCOPTIM = -Ofast -fno-expensive-optimizations -fno-reciprocal-math -fsigned-zeros -fno-unsafe-math-optimizations -funroll-loops
42+
+FCREDUCEDOPT = $(FCOPTIM)
43+
+FCNOOPT = -O0
4444
+FCDEBUG = -g # -g $(FCNOOPT) # -ggdb -fbacktrace -fcheck=bounds,do,mem,pointer -ffpe-trap=invalid,zero,overflow
4545
+FORMAT_FIXED = -ffixed-form
4646
+FORMAT_FREE = -ffree-form -ffree-line-length-none
47-
+FCSUFFIX =
47+
+FCCOMPAT =
4848
+BYTESWAPIO = -fconvert=big-endian -frecord-marker=4
49-
+FCBASEOPTS_NO_G = -w $(FORMAT_FREE) $(BYTESWAPIO)
49+
+FCBASEOPTS_NO_G = -w $(FORMAT_FREE) $(BYTESWAPIO) $(FCCOMPAT)
5050
+FCBASEOPTS = $(FCBASEOPTS_NO_G) $(FCDEBUG)
51-
+MODULE_SRCH_FLAG =
51+
+MODULE_SRCH_FLAG =
5252
+TRADFLAG = CONFIGURE_TRADFLAG
5353
+CPP = /lib/cpp CONFIGURE_CPPFLAGS
5454
+AR = ar
5555
+ARFLAGS = ru
5656
+M4 = m4 -G
5757
+RANLIB = ranlib
58-
+RLFLAGS =
59-
+CC_TOOLS = $(SCC)
58+
+RLFLAGS =
59+
+CC_TOOLS = $(SCC)
6060
+
6161
#insert new stanza here
6262

6363
###########################################################
64-
--
65-
2.28.0
66-
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
diff --git a/arch/configure.defaults b/arch/configure.defaults
2+
index 6e98941a..85d96019 100644
3+
--- a/arch/configure.defaults
4+
+++ b/arch/configure.defaults
5+
@@ -44,7 +44,7 @@ RLFLAGS =
6+
CC_TOOLS = cc
7+
8+
###########################################################
9+
-#ARCH Linux i486 i586 i686 armv7l aarch64, gfortran compiler with gcc #serial smpar dmpar dm+sm
10+
+#ARCH Linux i486 i586 i686, gfortran compiler with gcc #serial smpar dmpar dm+sm
11+
#
12+
DESCRIPTION = GNU ($SFC/$SCC)
13+
DMPARALLEL = # 1
14+
@@ -1981,6 +1981,49 @@ LIB_BUNDLED = \
15+
$(WRF_SRC_ROOT_DIR)/frame/module_internal_header_util.o \
16+
$(WRF_SRC_ROOT_DIR)/frame/pack_utils.o
17+
18+
+###########################################################
19+
+#ARCH Linux aarch64, armflang compiler #serial smpar dmpar dm+sm
20+
+#
21+
+DESCRIPTION = Arm GNU ($SFC/$SCC): Aarch64
22+
+DMPARALLEL = # 1
23+
+OMPCPP = # -D_OPENMP
24+
+OMP = # -fopenmp
25+
+OMPCC = # -fopenmp
26+
+SFC = armflang
27+
+SCC = armclang
28+
+CCOMP = armclang
29+
+DM_FC = mpif90
30+
+DM_CC = mpicc -DMPI2_SUPPORT
31+
+FC = CONFIGURE_FC
32+
+CC = CONFIGURE_CC
33+
+LD = $(FC)
34+
+RWORDSIZE = CONFIGURE_RWORDSIZE
35+
+PROMOTION = #-fdefault-real-8
36+
+ARCH_LOCAL = -DNONSTANDARD_SYSTEM_SUBR -DWRF_USE_CLM
37+
+CFLAGS_LOCAL = -w -O3 -c
38+
+DFLAGS_LOCAL =
39+
+CPLUSPLUSLIB =
40+
+ESMF_LDFLAG = $(CPLUSPLUSLIB)
41+
+FCOPTIM = -Ofast -funroll-loops
42+
+FCREDUCEDOPT = $(FCOPTIM)
43+
+FCNOOPT = -O0
44+
+FCDEBUG = -g # -g $(FCNOOPT) # -ggdb -fbacktrace -fcheck=bounds,do,mem,pointer -ffpe-trap=invalid,zero,overflow
45+
+FORMAT_FIXED = -ffixed-form
46+
+FORMAT_FREE = -ffree-form -ffree-line-length-0
47+
+FCCOMPAT =
48+
+BYTESWAPIO = -fconvert=big-endian
49+
+FCBASEOPTS_NO_G = -w $(OMP) $(FORMAT_FREE) $(BYTESWAPIO) $(FCCOMPAT)
50+
+FCBASEOPTS = $(FCBASEOPTS_NO_G) $(FCDEBUG)
51+
+MODULE_SRCH_FLAG =
52+
+TRADFLAG = CONFIGURE_TRADFLAG
53+
+CPP = /lib/cpp CONFIGURE_CPPFLAGS
54+
+AR = ar
55+
+ARFLAGS = ru
56+
+M4 = m4 -G
57+
+RANLIB = ranlib
58+
+RLFLAGS =
59+
+CC_TOOLS = $(SCC)
60+
+
61+
#insert new stanza here
62+
63+
###########################################################
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
diff --git a/arch/configure.defaults b/arch/configure.defaults
2+
index 6aa210d7..eead95fb 100644
3+
--- a/arch/configure.defaults
4+
+++ b/arch/configure.defaults
5+
@@ -45,7 +45,7 @@ CC_TOOLS = cc
6+
NETCDFPAR_BUILD = CONFIGURE_NETCDFPAR_BUILD
7+
8+
###########################################################
9+
-#ARCH Linux i486 i586 i686 armv7l aarch64, gfortran compiler with gcc #serial smpar dmpar dm+sm
10+
+#ARCH Linux i486 i586 i686, gfortran compiler with gcc #serial smpar dmpar dm+sm
11+
#
12+
DESCRIPTION = GNU ($SFC/$SCC)
13+
DMPARALLEL = # 1
14+
@@ -2023,7 +2023,7 @@ LIB_BUNDLED = \
15+
$(WRF_SRC_ROOT_DIR)/frame/pack_utils.o
16+
17+
###########################################################
18+
-#ARCH Linux armv7l aarch64, gnu OpenMPI #serial smpar dmpar dm+sm
19+
+#ARCH Linux , gnu OpenMPI #serial smpar dmpar dm+sm
20+
#
21+
DESCRIPTION = GNU ($SFC/$SCC)
22+
DMPARALLEL = # 1
23+
@@ -2066,4 +2066,47 @@ RLFLAGS =
24+
CC_TOOLS = $(SCC)
25+
NETCDFPAR_BUILD = CONFIGURE_NETCDFPAR_BUILD
26+
27+
+###########################################################
28+
+#ARCH Linux aarch64, gfortran compiler with gcc #serial smpar dmpar dm+sm
29+
+#
30+
+DESCRIPTION = Arm GNU ($SFC/$SCC): Aarch64
31+
+DMPARALLEL = # 1
32+
+OMPCPP = # -D_OPENMP
33+
+OMP = # -fopenmp
34+
+OMPCC = # -fopenmp
35+
+SFC = gfortran
36+
+SCC = gcc
37+
+CCOMP = gcc
38+
+DM_FC = mpif90
39+
+DM_CC = mpicc -DMPI2_SUPPORT
40+
+FC = CONFIGURE_FC
41+
+CC = CONFIGURE_CC
42+
+LD = $(FC)
43+
+RWORDSIZE = CONFIGURE_RWORDSIZE
44+
+PROMOTION = #-fdefault-real-8
45+
+ARCH_LOCAL = -DNONSTANDARD_SYSTEM_SUBR -DWRF_USE_CLM
46+
+CFLAGS_LOCAL = -w -O3 -c
47+
+DFLAGS_LOCAL =
48+
+CPLUSPLUSLIB =
49+
+ESMF_LDFLAG = $(CPLUSPLUSLIB)
50+
+FCOPTIM = -Ofast -fno-expensive-optimizations -fno-reciprocal-math -fsigned-zeros -fno-unsafe-math-optimizations -funroll-loops
51+
+FCREDUCEDOPT = $(FCOPTIM)
52+
+FCNOOPT = -O0
53+
+FCDEBUG = -g # -g $(FCNOOPT) # -ggdb -fbacktrace -fcheck=bounds,do,mem,pointer -ffpe-trap=invalid,zero,overflow
54+
+FORMAT_FIXED = -ffixed-form
55+
+FORMAT_FREE = -ffree-form -ffree-line-length-none
56+
+FCCOMPAT =
57+
+BYTESWAPIO = -fconvert=big-endian -frecord-marker=4
58+
+FCBASEOPTS_NO_G = -w $(FORMAT_FREE) $(BYTESWAPIO) $(FCCOMPAT)
59+
+FCBASEOPTS = $(FCBASEOPTS_NO_G) $(FCDEBUG)
60+
+MODULE_SRCH_FLAG =
61+
+TRADFLAG = CONFIGURE_TRADFLAG
62+
+CPP = /lib/cpp CONFIGURE_CPPFLAGS
63+
+AR = ar
64+
+ARFLAGS = ru
65+
+M4 = m4 -G
66+
+RANLIB = ranlib
67+
+RLFLAGS =
68+
+CC_TOOLS = $(SCC)
69+
+
70+
#insert new stanza here
71+
72+
###########################################################
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
diff --git a/arch/configure.defaults b/arch/configure.defaults
2+
index 6aa210d7..45630015 100644
3+
--- a/arch/configure.defaults
4+
+++ b/arch/configure.defaults
5+
@@ -45,7 +45,7 @@ CC_TOOLS = cc
6+
NETCDFPAR_BUILD = CONFIGURE_NETCDFPAR_BUILD
7+
8+
###########################################################
9+
-#ARCH Linux i486 i586 i686 armv7l aarch64, gfortran compiler with gcc #serial smpar dmpar dm+sm
10+
+#ARCH Linux i486 i586 i686, gfortran compiler with gcc #serial smpar dmpar dm+sm
11+
#
12+
DESCRIPTION = GNU ($SFC/$SCC)
13+
DMPARALLEL = # 1
14+
@@ -2023,7 +2023,7 @@ LIB_BUNDLED = \
15+
$(WRF_SRC_ROOT_DIR)/frame/pack_utils.o
16+
17+
###########################################################
18+
-#ARCH Linux armv7l aarch64, gnu OpenMPI #serial smpar dmpar dm+sm
19+
+#ARCH Linux , gnu OpenMPI #serial smpar dmpar dm+sm
20+
#
21+
DESCRIPTION = GNU ($SFC/$SCC)
22+
DMPARALLEL = # 1
23+
@@ -2066,4 +2066,47 @@ RLFLAGS =
24+
CC_TOOLS = $(SCC)
25+
NETCDFPAR_BUILD = CONFIGURE_NETCDFPAR_BUILD
26+
27+
+###########################################################
28+
+#ARCH Linux aarch64, armflang compiler #serial smpar dmpar dm+sm
29+
+#
30+
+DESCRIPTION = Arm GNU ($SFC/$SCC): Aarch64
31+
+DMPARALLEL = # 1
32+
+OMPCPP = # -D_OPENMP
33+
+OMP = # -fopenmp
34+
+OMPCC = # -fopenmp
35+
+SFC = armflang
36+
+SCC = armclang
37+
+CCOMP = armclang
38+
+DM_FC = mpif90
39+
+DM_CC = mpicc -DMPI2_SUPPORT
40+
+FC = CONFIGURE_FC
41+
+CC = CONFIGURE_CC
42+
+LD = $(FC)
43+
+RWORDSIZE = CONFIGURE_RWORDSIZE
44+
+PROMOTION = #-fdefault-real-8
45+
+ARCH_LOCAL = -DNONSTANDARD_SYSTEM_SUBR -DWRF_USE_CLM
46+
+CFLAGS_LOCAL = -w -O3 -c
47+
+DFLAGS_LOCAL =
48+
+CPLUSPLUSLIB =
49+
+ESMF_LDFLAG = $(CPLUSPLUSLIB)
50+
+FCOPTIM = -Ofast -funroll-loops
51+
+FCREDUCEDOPT = $(FCOPTIM)
52+
+FCNOOPT = -O0
53+
+FCDEBUG = -g # -g $(FCNOOPT) # -ggdb -fbacktrace -fcheck=bounds,do,mem,pointer -ffpe-trap=invalid,zero,overflow
54+
+FORMAT_FIXED = -ffixed-form
55+
+FORMAT_FREE = -ffree-form -ffree-line-length-0
56+
+FCCOMPAT =
57+
+BYTESWAPIO = -fconvert=big-endian
58+
+FCBASEOPTS_NO_G = -w $(OMP) $(FORMAT_FREE) $(BYTESWAPIO) $(FCCOMPAT)
59+
+FCBASEOPTS = $(FCBASEOPTS_NO_G) $(FCDEBUG)
60+
+MODULE_SRCH_FLAG =
61+
+TRADFLAG = CONFIGURE_TRADFLAG
62+
+CPP = /lib/cpp CONFIGURE_CPPFLAGS
63+
+AR = ar
64+
+ARFLAGS = ru
65+
+M4 = m4 -G
66+
+RANLIB = ranlib
67+
+RLFLAGS =
68+
+CC_TOOLS = $(SCC)
69+
+
70+
#insert new stanza here
71+
72+
###########################################################

0 commit comments

Comments
 (0)