Skip to content

Commit 6595a40

Browse files
committed
More bug fixes in CMakeLists.txt to get the right compiler flags for each file
1 parent 39b535e commit 6595a40

File tree

1 file changed

+13
-19
lines changed

1 file changed

+13
-19
lines changed

CMakeLists.txt

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -127,13 +127,13 @@ if(SCHEMES_OPENMP_OFF)
127127
endif()
128128

129129
# Assign standard floating point precision flags to all remaining schemes and caps
130-
SET_PROPERTY(SOURCE ${SCHEMES} ${CAPS}
131-
APPEND_STRING PROPERTY COMPILE_FLAGS " ${CMAKE_Fortran_FLAGS_PHYSICS}")
132-
133130
if(OPENMP)
134131
# Compile all remaining schemes and caps with OpenMP flags
135-
SET_PROPERTY(SOURCE ${SCHEMES} ${CAPS}
136-
APPEND_STRING PROPERTY COMPILE_FLAGS " ${OpenMP_Fortran_FLAGS}")
132+
SET_PROPERTY(SOURCE ${SCHEMES} ${CAPS}
133+
APPEND_STRING PROPERTY COMPILE_FLAGS " ${CMAKE_Fortran_FLAGS_PHYSICS} ${OpenMP_Fortran_FLAGS}")
134+
else()
135+
SET_PROPERTY(SOURCE ${SCHEMES} ${CAPS}
136+
APPEND_STRING PROPERTY COMPILE_FLAGS " ${CMAKE_Fortran_FLAGS_PHYSICS}")
137137
endif()
138138

139139
# For CAPS, remove bounds checks with Intel Classic (ifort), Intel LLVM (ifx),
@@ -158,28 +158,22 @@ if(CMAKE_BUILD_TYPE STREQUAL "Release" AND (${CMAKE_Fortran_COMPILER_ID} STREQUA
158158
)
159159
foreach(SCHEME_NAME IN LISTS SCHEME_NAMES_LOWER_OPTIMIZATION)
160160
SET_SOURCE_FILES_PROPERTIES(${SCHEME_NAME}
161-
APPEND_STRING PROPERTY COMPILE_FLAGS " -O1")
161+
APPEND_STRING PROPERTY COMPILE_FLAGS " ${CMAKE_Fortran_FLAGS_PHYSICS} ${OpenMP_Fortran_FLAGS} -O1")
162162
endforeach()
163163
endif()
164164

165165
# No optimization for certain schemes when compiling with Intel in Release mode
166166
if(CMAKE_BUILD_TYPE STREQUAL "Release" AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL "Intel" OR ${CMAKE_Fortran_COMPILER_ID} STREQUAL "IntelLLVM"))
167167
# Define a list of schemes that can't be optimized with Intel in Release mode
168-
set(SCHEME_NAMES_NO_OPTIMIZATION
169-
${CMAKE_CURRENT_SOURCE_DIR}/physics/MP/Morrison_Gettelman/aerinterp.F90
170-
${CMAKE_CURRENT_SOURCE_DIR}/physics/GFS_typedefs.F90
171-
)
168+
# Since GFS_typedefs.F90 is provided by the host model, we need to "find" it in the list of SCHEMES
169+
set(SCHEME_NAMES_NO_OPTIMIZATION GFS_typedefs.F90)
172170
foreach(SCHEME_NAME IN LISTS SCHEME_NAMES_NO_OPTIMIZATION)
173-
SET_SOURCE_FILES_PROPERTIES(${SCHEME_NAME}
174-
APPEND_STRING PROPERTY COMPILE_FLAGS " -O0")
171+
set(SCHEMES_TMP ${SCHEMES})
172+
# Need to determine the name of the scheme with its path
173+
list(FILTER SCHEMES_TMP INCLUDE REGEX ".*${SCHEME_NAME}$")
174+
SET_SOURCE_FILES_PROPERTIES(${SCHEMES_TMP}
175+
APPEND_STRING PROPERTY COMPILE_FLAGS " ${CMAKE_Fortran_FLAGS_PHYSICS} ${OpenMP_Fortran_FLAGS} -O0")
175176
endforeach()
176-
# Since GFS_typedefs.F90 is provided by the host model,
177-
# we need to "find" it in the list of SCHEMES
178-
set(SCHEMES_TMP ${SCHEMES})
179-
# Need to determine the name of the scheme with its path
180-
list(FILTER SCHEMES_TMP INCLUDE REGEX ".*GFS_typedefs.F90$")
181-
SET_SOURCE_FILES_PROPERTIES(${SCHEMES_TMP}
182-
APPEND_STRING PROPERTY COMPILE_FLAGS " -O0")
183177
endif()
184178

185179
if(${CMAKE_CURRENT_SOURCE_DIR}/physics/Radiation/mersenne_twister.f IN_LIST SCHEMES)

0 commit comments

Comments
 (0)