Skip to content

Commit 0e648f1

Browse files
committed
Latest FMS installs a bit differently
1 parent c2fd686 commit 0e648f1

File tree

1 file changed

+29
-25
lines changed

1 file changed

+29
-25
lines changed

external_libraries/FindBaselibs.cmake

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -281,54 +281,58 @@ if (Baselibs_FOUND)
281281
message(STATUS "LIBYAML_LIBRARIES: ${LIBYAML_LIBRARIES}")
282282
endif ()
283283

284+
# - fms_r4
284285
if (FV_PRECISION STREQUAL R4 OR FV_PRECISION STREQUAL R4R8)
285-
# - fms_r4
286-
set (inc_fms_r4 ${BASEDIR}/FMS/include_r4)
287-
set (lib_fms_r4 ${BASEDIR}/FMS/lib/libfms_r4.a)
286+
# Use find_path and find_library to find the include and library
287+
find_path(FMS_INCLUDE_DIR_R4 NAMES fms.mod PATHS ${BASEDIR}/FMS/include_r4)
288+
find_library(FMS_LIBRARIES_R4 NAMES fms_r4 PATHS ${BASEDIR}/FMS/lib ${BASEDIR}/FMS/lib64)
289+
# We also need the path of where the library is for the INTERFACE_LINK_DIRECTORIES
290+
get_filename_component(FMS_LIBRARIES_DIR_R4 ${FMS_LIBRARIES_R4} DIRECTORY)
288291
add_library(FMS::fms_r4 STATIC IMPORTED)
289292
set_target_properties(FMS::fms_r4 PROPERTIES
290-
IMPORTED_LOCATION ${lib_fms_r4}
291-
INCLUDE_DIRECTORIES "${inc_fms_r4}"
292-
INTERFACE_INCLUDE_DIRECTORIES "${inc_fms_r4}"
293+
IMPORTED_LOCATION ${FMS_LIBRARIES_R4}
294+
INCLUDE_DIRECTORIES "${FMS_INCLUDE_DIR_R4}"
295+
INTERFACE_INCLUDE_DIRECTORIES "${FMS_INCLUDE_DIR_R4}"
293296
INTERFACE_LINK_LIBRARIES "NetCDF::NetCDF_Fortran;MPI::MPI_Fortran"
294-
INTERFACE_LINK_DIRECTORIES "${BASEDIR}/FMS/lib"
297+
INTERFACE_LINK_DIRECTORIES "${FMS_LIBRARIES_DIR_R4}"
295298
)
296299
if (FMS_BUILT_WITH_YAML)
297300
target_link_libraries(FMS::fms_r4 INTERFACE ${LIBYAML_LIBRARIES})
298301
endif ()
299-
#add_library(fms_r4 ALIAS FMS::fms_r4)
300-
# We will set FMS_R4_FOUND if both lib_fms_r4 and inc_fms_r4 are found
302+
# We will set FMS_R4_FOUND if both FMS_LIBRARIES_R4 and FMS_INCLUDE_DIR_R4 are found
301303
# and are valid files and directories respectively
302-
if (EXISTS ${lib_fms_r4} AND IS_DIRECTORY ${inc_fms_r4})
303-
message(STATUS "Found FMS::fms_r4: ${lib_fms_r4}")
304-
message(STATUS "FMS::fms_r4 include directory: ${inc_fms_r4}")
305-
set(FMS_R4_FOUND TRUE CACHE BOOL "fms_r8 Found" FORCE)
304+
if (EXISTS ${FMS_LIBRARIES_R4} AND IS_DIRECTORY ${FMS_INCLUDE_DIR_R4})
305+
message(STATUS "Found FMS::fms_r4: ${FMS_LIBRARIES_R4}")
306+
message(STATUS "FMS::fms_r4 include directory: ${FMS_INCLUDE_DIR_R4}")
307+
set(FMS_R4_FOUND TRUE CACHE BOOL "fms_r4 Found" FORCE)
306308
else ()
307-
message(FATAL_ERROR "FMS::fms_r8 not found")
309+
message(FATAL_ERROR "FMS::fms_r4 not found")
308310
endif()
309311
endif()
310312

311313
# - fms_r8
312314
if (FV_PRECISION STREQUAL R8 OR FV_PRECISION STREQUAL R4R8)
313-
set (inc_fms_r8 ${BASEDIR}/FMS/include_r8)
314-
set (lib_fms_r8 ${BASEDIR}/FMS/lib/libfms_r8.a)
315+
# Use find_path and find_library to find the include and library
316+
find_path(FMS_INCLUDE_DIR_R8 NAMES fms.mod PATHS ${BASEDIR}/FMS/include_r8)
317+
find_library(FMS_LIBRARIES_R8 NAMES fms_r8 PATHS ${BASEDIR}/FMS/lib ${BASEDIR}/FMS/lib64)
318+
# We also need the path of where the library is for the INTERFACE_LINK_DIRECTORIES
319+
get_filename_component(FMS_LIBRARIES_DIR_R8 ${FMS_LIBRARIES_R8} DIRECTORY)
315320
add_library(FMS::fms_r8 STATIC IMPORTED)
316321
set_target_properties(FMS::fms_r8 PROPERTIES
317-
IMPORTED_LOCATION ${lib_fms_r8}
318-
INCLUDE_DIRECTORIES "${inc_fms_r8}"
319-
INTERFACE_INCLUDE_DIRECTORIES "${inc_fms_r8}"
322+
IMPORTED_LOCATION ${FMS_LIBRARIES_R8}
323+
INCLUDE_DIRECTORIES "${FMS_INCLUDE_DIR_R8}"
324+
INTERFACE_INCLUDE_DIRECTORIES "${FMS_INCLUDE_DIR_R8}"
320325
INTERFACE_LINK_LIBRARIES "NetCDF::NetCDF_Fortran;MPI::MPI_Fortran"
321-
INTERFACE_LINK_DIRECTORIES "${BASEDIR}/FMS/lib"
326+
INTERFACE_LINK_DIRECTORIES "${FMS_LIBRARIES_DIR_R8}"
322327
)
323328
if (FMS_BUILT_WITH_YAML)
324329
target_link_libraries(FMS::fms_r8 INTERFACE ${LIBYAML_LIBRARIES})
325330
endif ()
326-
#add_library(fms_r8 ALIAS FMS::fms_r8)
327-
# We will set FMS_R8_FOUND if both lib_fms_r8 and inc_fms_r8 are found
331+
# We will set FMS_R8_FOUND if both FMS_LIBRARIES_R8 and FMS_INCLUDE_DIR_R8 are found
328332
# and are valid files and directories respectively
329-
if (EXISTS ${lib_fms_r8} AND IS_DIRECTORY ${inc_fms_r8})
330-
message(STATUS "Found FMS::fms_r8: ${lib_fms_r8}")
331-
message(STATUS "FMS::fms_r8 include directory: ${inc_fms_r8}")
333+
if (EXISTS ${FMS_LIBRARIES_R8} AND IS_DIRECTORY ${FMS_INCLUDE_DIR_R8})
334+
message(STATUS "Found FMS::fms_r8: ${FMS_LIBRARIES_R8}")
335+
message(STATUS "FMS::fms_r8 include directory: ${FMS_INCLUDE_DIR_R8}")
332336
set(FMS_R8_FOUND TRUE CACHE BOOL "fms_r8 Found" FORCE)
333337
else ()
334338
message(FATAL_ERROR "FMS::fms_r8 not found")

0 commit comments

Comments
 (0)