Skip to content

Commit

Permalink
Merge branch 'NOAA-EMC:develop' into feature/gwdev_issue_2329
Browse files Browse the repository at this point in the history
  • Loading branch information
HenryRWinterbottom authored Mar 13, 2024
2 parents 01d39e3 + ecabf5a commit 11e0fda
Show file tree
Hide file tree
Showing 37 changed files with 2,676 additions and 77 deletions.
10 changes: 4 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,10 @@ find_package(g2 REQUIRED)
find_package(bufr REQUIRED)
find_package(landsfcutil REQUIRED)
find_package(wgrib2 REQUIRED)
#rdbfmsua.fd needs gempak and gfortran
#but gempak is so old, any hopes of a find_package(gempak) is null
#some things ought to wither and die
#find_package(gempak REQUIRED)
#find_package(gfortran REQUIRED)
# rdbfmsua.fd needs gempak and gfortran, but
# make them optional and skip rdbfmsua building if they are not found.
find_package(gempak)
find_package(gfortran)

# See https://github.com/NOAA-EMC/NCEPLIBS-nemsio/pull/22
target_link_libraries(nemsio::nemsio INTERFACE w3emc::w3emc_d bacio::bacio_4)
Expand All @@ -70,4 +69,3 @@ add_subdirectory(src)

# Install utility scripts.
add_subdirectory(ush)

62 changes: 21 additions & 41 deletions cmake/Findgempak.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,7 @@
# - OS_ROOT - root of gempak os installation
#

list( APPEND _libraries appl bridge cgemlib gemlib syslib )

# First find the INCLUDE_DIRS
find_path(
GEMPAK_INCLUDE_DIR
NAMES GEMPRM.PRM BRIDGE.PRM
Expand All @@ -27,6 +26,7 @@ find_path(
DOC "Path to GEMPRM.PRM, BRIDGE.PRM"
)

# FIXME: On Hera, MCHPRM.PRM is linked to GEMINC directory so may cause issues
find_path(
OS_GEMPAK_INCLUDE_DIR
NAMES MCHPRM.PRM
Expand All @@ -38,70 +38,50 @@ find_path(
DOC "Path to MCHPRM.PRM"
)

mark_as_advanced(GEMPAK_INCLUDE_DIR OS_GEMPAK_INCLUDE_DIR)

# if(NOT TARGET gempak::gempak)
# message(DEBUG "[FindGempak.cmake]: creating target gempak::gempak")
# add_library(gempak::gempak UNKNOWN IMPORTED)
# set_target_properties(gempak::gempak PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${GEMPAK_INCLUDE_DIR};${OS_GEMPAK_INCLUDE_DIR}")
# endif()

# Next find the LIBRARY_DIRS and LIBRARIES
list( APPEND _libraries gemlib appl syslib cgemlib bridge )

foreach( _lib IN LISTS _libraries )
find_library(
GEMPAK_${_lib}_LIBRARY
NAMES ${_lib}.a
NAMES ${_lib}.a lib${_lib}.a
HINTS ${GEMPAK_LIBRARY_DIRS}
${GEMPAK} $ENV{GEMPAK}
${OS_ROOT} $ENV{OS_ROOT}
${GEMLIB} $ENV{GEMLIB}
${GEMOLB} $ENV{GEMOLB}
PATH_SUFFIXES lib lib64
DOC "Path to GEMPAK_${_lib}_LIBRARY"
)
endforeach()

# target_link_libraries(gempak::gempak INTERFACE ${GEMPAK_${_lib}_LIBRARY})

if(NOT TARGET gempak::gempak_${_lib})
add_library(gempak::gempak_${_lib} UNKNOWN IMPORTED)
set_target_properties(gempak::gempak_${_lib} PROPERTIES
IMPORTED_LOCATION "${GEMPAK_${_lib}_LIBRARY}"
)
if(EXISTS "${GEMPAK_${_lib}_LIBRARY}")
set_target_properties(gempak::gempak_${_lib} PROPERTIES
IMPORTED_LOCATION "${GEMPAK_${_lib}_LIBRARY}")
endif()
endif()
mark_as_advanced(GEMPAK_INCLUDE_DIR OS_GEMPAK_INCLUDE_DIR GEMPAK_gemlib_LIBRARY GEMPAK_appl_LIBRARY GEMPAK_syslib_LIBRARY GEMPAK_cgemlib_LIBRARY GEMPAK_bridge_LIBRARY)

if(NOT TARGET gempak::gempak)
add_library(gempak::gempak UNKNOWN IMPORTED)
set_target_properties(gempak::gempak PROPERTIES
IMPORTED_LOCATION "${GEMPAK_${_lib}_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${GEMPAK_INCLUDE_DIR};${OS_GEMPAK_INCLUDE_DIR}"
)
if(EXISTS "${GEMPAK_${_lib}_LIBRARY}")
set_target_properties(gempak::gempak PROPERTIES
IMPORTED_LOCATION "${GEMPAK_${_lib}_LIBRARY}")
endif()
endif()
list(APPEND GEMPAK_LIBRARIES "${GEMPAK_${_lib}_LIBRARY}")
message(DEBUG "[Findgempak.cmake]: creating target gempak::gempak")

foreach( _lib IN LISTS _libraries )
list( APPEND GEMPAK_LIBRARIES "${GEMPAK_${_lib}_LIBRARY}" )
add_library(gempak::${_lib} UNKNOWN IMPORTED)
set_target_properties(gempak::${_lib} PROPERTIES IMPORTED_LOCATION "${GEMPAK_${_lib}_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${GEMPAK_INCLUDE_DIR};${OS_GEMPAK_INCLUDE_DIR}")
endforeach()

message(STATUS "GEMPAK_LIBRARIES = ${GEMPAK_LIBRARIES}")
set(GEMPAK_LIBRARIES "${GEMPAK_LIBRARIES}" CACHE STRING "gempak library targets" FORCE)
mark_as_advanced(GEMPAK_LIBRARIES)

message(DEBUG "[FindGempak.cmake]: linking with appl.a bridge.a cgemlib.a gemlib.a syslib.a")
set_target_properties(gempak::gempak PROPERTIES
INTERFACE_LINK_LIBRARIES "${GEMPAK_LIBRARIES}")
add_library(gempak::gempak INTERFACE IMPORTED)
target_link_libraries(gempak::gempak INTERFACE gempak::gemlib gempak::appl gempak::syslib gempak::cgemlib gempak::bridge)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(gempak
REQUIRED_VARS GEMPAK_INCLUDE_DIR OS_GEMPAK_INCLUDE_DIR
REQUIRED_VARS GEMPAK_LIBRARIES GEMPAK_INCLUDE_DIR OS_GEMPAK_INCLUDE_DIR
)

if(gempak_FOUND AND NOT gempak_FIND_QUIETLY)
message(STATUS "FindGempak:")
message(STATUS "Findgempak:")
message(STATUS " - GEMPAK_INCLUDE_DIR: ${GEMPAK_INCLUDE_DIR}")
message(STATUS " - OS_GEMPAK_INCLUDE_DIR: ${OS_GEMPAK_INCLUDE_DIR}")
# message(STATUS " - GEMPAK_LIBRARIES: ${GEMPAK_LIBRARIES}")
message(STATUS " - GEMPAK_LIBRARIES: ${GEMPAK_LIBRARIES}")
endif()

13 changes: 7 additions & 6 deletions cmake/Findgfortran.cmake
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
find_library(
GFORTRAN_LIBRARY
NAMES libgfortran.a
HINTS /apps/gnu/gcc-6.5.0
NAMES libgfortran.so
HINTS ${GFORTRAN_LIBRARY_DIRS}
${gfortran_ROOT} $ENV{gfortran_ROOT}
PATH_SUFFIXES lib lib64
DOC "Path to GFORTRAN_LIBRARY"
)

mark_as_advanced(GFORTRAN_LIBRARY)

message(DEBUG "GFORTRAN_LIBRARY = ${GFORTRAN_LIBRARY}")

message(DEBUG "[Findgfortran.cmake]: creating target gfortran::gfortran")
add_library(gfortran::gfortran UNKNOWN IMPORTED)

message(STATUS "GFORTRAN_LIBRARY = ${GFORTRAN_LIBRARY}")

message(DEBUG "[Findgfortran.cmake]: linking with gfortran.a")
message(DEBUG "[Findgfortran.cmake]: linking with gfortran.so")
set_target_properties(gfortran::gfortran PROPERTIES IMPORTED_LOCATION ${GFORTRAN_LIBRARY})

include(FindPackageHandleStandardArgs)
Expand All @@ -24,4 +25,4 @@ find_package_handle_standard_args(gfortran
if(gfortran_FOUND AND NOT gfortran_FIND_QUIETLY)
message(STATUS "Findgfortran:")
message(STATUS " - GFORTRAN_LIBRARY: ${GFORTRAN_LIBRARY}")
endif()
endif()
2 changes: 0 additions & 2 deletions modulefiles/gfsutils_common.lua
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ local wrf_io_ver=os.getenv("wrf_io_ver") or "1.2.0"
local ncio_ver=os.getenv("ncio_ver") or "1.1.2"
local g2_ver=os.getenv("g2_ver") or "3.4.5"
local landsfcutil_ver=os.getenv("landsfcutil_ver") or "2.4.1"
local gempak_ver=os.getenv("gempak_ver") or "7.14.1"
local wgrib2_ver=os.getenv("wgrib2_ver") or "2.0.8"
local libpng_ver=os.getenv("libpng_ver") or "1.6.37"

Expand All @@ -38,5 +37,4 @@ load(pathJoin("wrf-io", wrf_io_ver))
load(pathJoin("ncio", ncio_ver))
load(pathJoin("g2", g2_ver))
load(pathJoin("landsfcutil", landsfcutil_ver))
--load(pathJoin("gempak", gempak_ver))
load(pathJoin("wgrib2", wgrib2_ver))
6 changes: 6 additions & 0 deletions modulefiles/gfsutils_hera.intel.lua
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,10 @@ load(pathJoin("cmake", cmake_ver))

load("gfsutils_common")

local gempak_ver=os.getenv("gempak_ver") or "7.4.2"
load(pathJoin("gempak", gempak_ver))

-- Used in rdbfmsua.f
setenv("gfortran_ROOT", "/apps/gnu/gcc-9.2.0")

whatis("Description: GFS utilities environment on Hera with Intel Compilers")
6 changes: 6 additions & 0 deletions modulefiles/gfsutils_orion.intel.lua
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,10 @@ load(pathJoin("cmake", cmake_ver))

load("gfsutils_common")

local gempak_ver=os.getenv("gempak_ver") or "7.5.1"
load(pathJoin("gempak", gempak_ver))

-- Used in rdbfmsua.f
setenv("gfortran_ROOT", "/apps/gcc-8/gcc-8.3.0")

whatis("Description: GFS utilities environment on Orion with Intel Compilers")
5 changes: 4 additions & 1 deletion modulefiles/gfsutils_wcoss2.intel.lua
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,12 @@ load(pathJoin("nemsio", nemsio_ver))
load(pathJoin("wrf_io", wrf_io_ver))
load(pathJoin("g2", g2_ver))
load(pathJoin("landsfcutil", landsfcutil_ver))
--load(pathJoin("gempak", gempak_ver))
load(pathJoin("gempak", gempak_ver))
load(pathJoin("wgrib2", wgrib2_ver))

-- Used in rdbfmsua.f
setenv("gfortran_ROOT", "//opt/cray/pe/gcc/10.3.0/snos")

pushenv("HPC_OPT", "/apps/ops/para/libs")
prepend_path("MODULEPATH", "/apps/ops/para/libs/modulefiles/compiler/intel/19.1.3.304")
prepend_path("MODULEPATH", "/apps/ops/para/libs/modulefiles/mpi/intel/19.1.3.304/cray-mpich/8.1.7")
Expand Down
16 changes: 15 additions & 1 deletion src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,21 @@ add_subdirectory(supvit.fd)

add_subdirectory(mkgfsawps.fd)
add_subdirectory(overgridid.fd)
# add_subdirectory(rdbfmsua.fd)
if (gempak_FOUND AND gfortran_FOUND)
add_subdirectory(rdbfmsua.fd)
else()
if(NOT gempak_FOUND)
message(WARNING "GEMPAK not found, skipping rdbfmsua.fd")
endif()
if(NOT gfortran_FOUND)
message(WARNING "gfortran not found, skipping rdbfmsua.fd")
endif()
endif()
add_subdirectory(webtitle.fd)

add_subdirectory(ocnicepost.fd)

add_subdirectory(ensadd.fd)
add_subdirectory(ensppf.fd)
add_subdirectory(ensstat.fd)
add_subdirectory(wave_stat.fd)
12 changes: 12 additions & 0 deletions src/ensadd.fd/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
list(APPEND fortran_src
ENSADD.f90
printinfr.f90
)

set(exe_name ensadd.x)
add_executable(${exe_name} ${fortran_src})
target_link_libraries(${exe_name} PRIVATE bacio::bacio_4
w3emc::w3emc_4
g2::g2_d)

install(TARGETS ${exe_name} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
Loading

0 comments on commit 11e0fda

Please sign in to comment.