Skip to content

Commit a2997ef

Browse files
committed
Merge branch 'feature/porting' into develop
2 parents 8c24b99 + 1c734c4 commit a2997ef

File tree

11 files changed

+100
-131
lines changed

11 files changed

+100
-131
lines changed

build_config/Darwin.gfortranclang.default/build_rules.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ endif
198198
############################################################
199199
# OpenMP compiler and linker flags
200200
#
201-
ESMF_OPENMP=OFF
201+
ESMF_OPENMPDEFAULT=OFF
202202
ESMF_OPENMP_F90COMPILEOPTS += -fopenmp
203203
# As of 2022-12-05, Apple's clang doesn't support -fopenmp directly; instead, it requires
204204
# -Xpreprocessor -fopenmp. In addition, you will need to install libomp and explicitly add

build_config/Darwin.intelclang.default/build_rules.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ endif
167167
############################################################
168168
# OpenMP compiler and linker flags
169169
#
170-
ESMF_OPENMP=OFF
170+
ESMF_OPENMPDEFAULT=OFF
171171

172172
############################################################
173173
# Set rpath syntax

build_config/Darwin.intelgcc.default/build_rules.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ endif
172172
# OpenMP compiler and linker flags
173173
#
174174
ifeq ($(ESMF_CLANGSTR), clang)
175-
ESMF_OPENMP=OFF
175+
ESMF_OPENMPDEFAULT=OFF
176176
else
177177
ifeq ($(shell [ $(ESMF_F90MAJORVERSION) -ge 16 ] && echo true), true)
178178
ESMF_OPENMP_F90COMPILEOPTS += -qopenmp

build_config/Linux.aocc.default/build_rules.mk

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,6 @@ endif
211211
############################################################
212212
# OpenMP compiler and linker flags
213213
#
214-
ESMF_OPENMP=ON
215214
ESMF_OPENMP_F90COMPILEOPTS += -fopenmp
216215
ESMF_OPENMP_CXXCOMPILEOPTS += -fopenmp
217216
ESMF_OPENMP_F90LINKOPTS += -fopenmp

build_config/Linux.arm.default/build_rules.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ endif
218218
############################################################
219219
# OpenMP compiler and linker flags
220220
#
221-
ESMF_OPENMP=OFF
221+
ESMF_OPENMPDEFAULT=OFF
222222
# ESMF_OPENMP_F90COMPILEOPTS += -fopenmp
223223
# ESMF_OPENMP_CXXCOMPILEOPTS += -fopenmp
224224
# ESMF_OPENMP_F90LINKOPTS += -fopenmp

build_config/Linux.nag.default/build_rules.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ endif
139139
############################################################
140140
# OpenMP compiler and linker flags
141141
#
142-
ESMF_OPENMP=OFF
142+
ESMF_OPENMPDEFAULT=OFF
143143
ESMF_OPENMP_F90COMPILEOPTS += -openmp
144144
ESMF_OPENMP_CXXCOMPILEOPTS += -fopenmp
145145
ESMF_OPENMP_F90LINKOPTS += -openmp

build_config/Unicos.aocc.default/build_rules.mk

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@
99
ESMF_F90DEFAULT = ftn
1010
ESMF_CXXDEFAULT = CC
1111
ESMF_CDEFAULT = cc
12+
ESMF_CPPDEFAULT = gcc -E -P -x c
13+
14+
ESMF_CXXCOMPILECPPFLAGS += -x c++
15+
16+
# Need this until __aocc__ macro shows up in Fortran preprocessing
17+
ESMF_CPPFLAGS += -DESMF_COMPILER_AOCC
1218

1319
############################################################
1420
# Default MPI setting.
@@ -92,28 +98,20 @@ ESMF_CXXCOMPILECPPFLAGS += -DESMF_NO_POSIXIPC
9298
ifeq ($(ESMF_PTHREADS),ON)
9399
ESMF_F90COMPILEOPTS += -pthread
94100
ESMF_CXXCOMPILEOPTS += -pthread
101+
ESMF_CCOMPILEOPTS += -pthread
95102
ESMF_F90LINKOPTS += -pthread
96103
ESMF_CXXLINKOPTS += -pthread
104+
ESMF_CLINKOPTS += -pthread
97105
endif
98106

99107
############################################################
100108
# OpenMP compiler and linker flags
101109
#
102-
ESMF_OPENMP=ON
103110
ESMF_OPENMP_F90COMPILEOPTS += -fopenmp
104111
ESMF_OPENMP_CXXCOMPILEOPTS += -fopenmp
105112
ESMF_OPENMP_F90LINKOPTS += -fopenmp
106113
ESMF_OPENMP_CXXLINKOPTS += -fopenmp
107114

108-
############################################################
109-
# OpenACC compiler and linker flags
110-
#
111-
ESMF_OPENACCDEFAULT = OFF
112-
ESMF_OPENACC_F90COMPILEOPTS += -fopenacc
113-
ESMF_OPENACC_CXXCOMPILEOPTS += -fopenacc
114-
ESMF_OPENACC_F90LINKOPTS += -fopenacc
115-
ESMF_OPENACC_CXXLINKOPTS += -fopenacc
116-
117115
############################################################
118116
# Explicit flags for handling specific format and cpp combos
119117
#
@@ -137,6 +135,13 @@ ESMF_F90LINKLIBS += -lrt -lstdc++ -ldl
137135
#
138136
ESMF_CXXLINKLIBS += -lrt -lflang -lflangrti -lpgmath -ldl
139137

138+
############################################################
139+
# Linker option that ensures that the specified libraries are
140+
# used to also resolve symbols needed by other libraries.
141+
#
142+
ESMF_F90LINKOPTS += -Wl,--no-as-needed
143+
ESMF_CXXLINKOPTS += -Wl,--no-as-needed
144+
140145
############################################################
141146
# Shared library options
142147
#
@@ -159,8 +164,3 @@ ESMF_SO_CXXLINKOPTSEXE = -Wl,-export-dynamic
159164
# TODO: WebService testing is robust enough to work on all systems.
160165
#
161166
ESMF_NOWEBSERVTESTING = TRUE
162-
163-
############################################################
164-
# Override default C preprocessor on this platform
165-
#
166-
ESMF_CPPDEFAULT = gcc -E -P -x c

src/addon/ESMX/Comps/ESMX_Data/CMakeLists.txt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,26 @@ if(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
2121
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
2222
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -fbacktrace -O2")
2323
set(CMAKE_Fortran_FLAGS_DEBUG "-g -fbacktrace -O0 -fcheck=all -ffpe-trap=invalid,zero,overflow,underflow")
24+
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "Cray")
25+
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
26+
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -O2")
27+
set(CMAKE_Fortran_FLAGS_DEBUG "-g")
28+
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "Flang")
29+
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
30+
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -O2")
31+
set(CMAKE_Fortran_FLAGS_DEBUG "-g")
2432
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "Intel")
2533
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
2634
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -traceback -O2")
2735
set(CMAKE_Fortran_FLAGS_DEBUG "-g -traceback -O0 -check all -fpe0 -ftrapuv -init=snan,arrays")
36+
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "IntelLLVM")
37+
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
38+
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -traceback -O2")
39+
set(CMAKE_Fortran_FLAGS_DEBUG "-g -traceback -O0 -check all -fpe0 -ftrapuv -init=snan,arrays")
40+
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "NAG")
41+
set(CMAKE_Fortran_FLAGS_RELEASE "")
42+
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -gline")
43+
set(CMAKE_Fortran_FLAGS_DEBUG "-g -gline -C=all")
2844
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "NVHPC")
2945
set(CMAKE_Fortran_FLAGS_RELEASE "-O2 -fast")
3046
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -traceback -O2 -fast")

src/addon/ESMX/Driver/CMakeLists.txt

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,15 +121,32 @@ message("ESMX_DISABLE_COMPS .......... ${ESMX_DISABLE_COMPS}")
121121
message("")
122122

123123
# compiler options
124-
if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
124+
if(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
125+
set(CMAKE_Fortran_FLAGS -ffree-line-length-none)
125126
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
126127
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -fbacktrace -O2")
127128
set(CMAKE_Fortran_FLAGS_DEBUG "-g -fbacktrace -O0 -fcheck=all -ffpe-trap=invalid,zero,overflow,underflow")
128-
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "Intel")
129+
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "Cray")
130+
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
131+
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -O2")
132+
set(CMAKE_Fortran_FLAGS_DEBUG "-g")
133+
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "Flang")
134+
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
135+
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -O2")
136+
set(CMAKE_Fortran_FLAGS_DEBUG "-g")
137+
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "Intel")
138+
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
139+
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -traceback -O2")
140+
set(CMAKE_Fortran_FLAGS_DEBUG "-g -traceback -O0 -check all -fpe0 -ftrapuv -init=snan,arrays")
141+
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "IntelLLVM")
129142
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
130143
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -traceback -O2")
131144
set(CMAKE_Fortran_FLAGS_DEBUG "-g -traceback -O0 -check all -fpe0 -ftrapuv -init=snan,arrays")
132-
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "NVHPC")
145+
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "NAG")
146+
set(CMAKE_Fortran_FLAGS_RELEASE "")
147+
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -gline")
148+
set(CMAKE_Fortran_FLAGS_DEBUG "-g -gline -C=all")
149+
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "NVHPC")
133150
set(CMAKE_Fortran_FLAGS_RELEASE "-O2 -fast")
134151
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -traceback -O2 -fast")
135152
set(CMAKE_Fortran_FLAGS_DEBUG "-g -traceback -O0")

src/addon/ESMX/Driver/ESMX_Driver.F90

Lines changed: 6 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -19,37 +19,11 @@ module ESMX_Driver
1919

2020
public SetServices, SetVM, HConfigCreateFoundNode
2121

22-
#if defined (__NVCOMPILER)
23-
!TODO: remove once NVHPC and PGI compilers work correctly w/o work-around
24-
25-
abstract interface
26-
recursive subroutine SetServicesRoutine(gridcomp, rc)
27-
use ESMF
28-
implicit none
29-
type(ESMF_GridComp) :: gridcomp ! must not be optional
30-
integer, intent(out) :: rc ! must not be optional
31-
end subroutine
32-
recursive subroutine SetVMRoutine(gridcomp, rc)
33-
use ESMF
34-
implicit none
35-
type(ESMF_GridComp) :: gridcomp ! must not be optional
36-
integer, intent(out) :: rc ! must not be optional
37-
end subroutine
38-
end interface
39-
40-
type type_CompDef
41-
procedure(SetServicesRoutine), pointer, nopass :: ssPtr => null()
42-
procedure(SetVMRoutine), pointer, nopass :: svPtr => null()
43-
character(ESMF_MAXSTR) :: name = "__uninitialized__"
44-
end type
45-
46-
#else
4722
type type_CompDef
48-
procedure(SetServices), pointer, nopass :: ssPtr => null()
49-
procedure(SetVM), pointer, nopass :: svPtr => null()
23+
procedure(SetServicesInterfaceGridComp), pointer, nopass :: ssPtr => null()
24+
procedure(SetVMInterfaceGridComp), pointer, nopass :: svPtr => null()
5025
character(ESMF_MAXSTR) :: name = "__uninitialized__"
5126
end type
52-
#endif
5327

5428
include "compCnt.inc"
5529

@@ -386,8 +360,8 @@ subroutine SetModelServices(driver, rc)
386360

387361
if (inCompDef) then
388362
! add child component with SetVM and SetServices in CompDef
389-
#if defined (__INTEL_LLVM_COMPILER) || defined (__NVCOMPILER) || defined (NAGFOR)
390-
!TODO: remove once IFX, NVHPC, and NAG compilers work correctly w/o work-around
363+
#if defined (NAGFOR)
364+
!TODO: remove once NAG compiler works correctly w/o work-around
391365
call NUOPC_DriverAddGridCompPtr(driver, trim(compLabel), hconfig=hconfig, &
392366
compSetServicesRoutine=CompDef(j)%ssPtr, compSetVMRoutine=CompDef(j)%svPtr, &
393367
info=info, petList=petList, devList=devList, comp=comp, rc=rc)
@@ -396,7 +370,8 @@ subroutine SetModelServices(driver, rc)
396370
"' to driver via Fortran module.", &
397371
line=__LINE__, file=FILENAME)) return ! bail out
398372
#else
399-
call NUOPC_DriverAddComp(driver, trim(compLabel), hconfig=hconfig, &
373+
!TODO: call through generic NUOPC_DriverAddComp() once AOCC issues resolved
374+
call NUOPC_DriverAddGridComp(driver, trim(compLabel), hconfig=hconfig, &
400375
compSetServicesRoutine=CompDef(j)%ssPtr, compSetVMRoutine=CompDef(j)%svPtr, &
401376
info=info, petList=petList, devList=devList, comp=comp, rc=rc)
402377
if (ESMF_LogFoundError(rcToCheck=rc, &

0 commit comments

Comments
 (0)