Skip to content

Commit

Permalink
Merge pull request #182 from esmf-org/fix/esmx-link-package
Browse files Browse the repository at this point in the history
ESMX_LINK_PACKAGES to work with package namespaces and other minor clean-up
  • Loading branch information
theurich authored Sep 6, 2023
2 parents 8843d07 + ab5a17d commit d6dc119
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 11 deletions.
10 changes: 7 additions & 3 deletions src/addon/ESMX/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 3.22)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/Driver/cmake")

# Find ESMF
find_package(ESMF 8.5.0 MODULE REQUIRED)
find_package(ESMF 8.6.0 MODULE REQUIRED)

# Set compilers consistent with ESMF
set(CMAKE_Fortran_COMPILER "${ESMF_F90COMPILER}")
Expand All @@ -22,12 +22,16 @@ add_subdirectory(Driver)

if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -fbacktrace -02")
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -fbacktrace -O2")
set(CMAKE_Fortran_FLAGS_DEBUG "-g -fbacktrace -O0 -fcheck=all -ffpe-trap=invalid,zero,overflow,underflow")
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "Intel")
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -traceback -O2")
set(CMAKE_Fortran_FLAGS_DEBUG "-g -traceback -O0 -check all -fpe0 -ftrapuv -init=snan,arrays")
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "NVHPC")
set(CMAKE_Fortran_FLAGS_RELEASE "-O2 -fast")
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -traceback -O2 -fast")
set(CMAKE_Fortran_FLAGS_DEBUG "-g -traceback -O0")
else()
message(WARNING "${CMAKE_Fortran_COMPILER_ID} Fortran compiler will be used with default options")
endif()
Expand All @@ -41,7 +45,7 @@ endif()
add_executable(${ESMX_EXE_NAME} ESMX_App.F90)
target_include_directories(${ESMX_EXE_NAME} PUBLIC ${PROJECT_BINARY_DIR})
target_link_libraries(${ESMX_EXE_NAME} PUBLIC esmx_driver)
set_target_properties(${ESMX_EXE_NAME} PROPERTIES INSTALL_RPATH_USE_LINK_PATH TRUE)
set_target_properties(${ESMX_EXE_NAME} PROPERTIES INSTALL_RPATH_USE_LINK_PATH TRUE)

# Install executable
install(
Expand Down
8 changes: 6 additions & 2 deletions src/addon/ESMX/Comps/ESMX_Data/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.22)

list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
find_package(ESMF 8.5.0 MODULE REQUIRED)
find_package(ESMF 8.6.0 MODULE REQUIRED)

if(NOT DEFINED CMAKE_Fortran_COMPILER)
set(CMAKE_Fortran_COMPILER "${ESMF_F90COMPILER}")
Expand All @@ -17,12 +17,16 @@ project(ESMX_Data
if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
set(CMAKE_Fortran_FLAGS -ffree-line-length-none)
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -fbacktrace -02")
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -fbacktrace -O2")
set(CMAKE_Fortran_FLAGS_DEBUG "-g -fbacktrace -O0 -fcheck=all -ffpe-trap=invalid,zero,overflow,underflow")
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "Intel")
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -traceback -O2")
set(CMAKE_Fortran_FLAGS_DEBUG "-g -traceback -O0 -check all -fpe0 -ftrapuv -init=snan,arrays")
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "NVHPC")
set(CMAKE_Fortran_FLAGS_RELEASE "-O2 -fast")
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -traceback -O2 -fast")
set(CMAKE_Fortran_FLAGS_DEBUG "-g -traceback -O0")
else()
message(WARNING "${CMAKE_Fortran_COMPILER_ID} Fortran compiler will be used with default options")
endif()
Expand Down
15 changes: 9 additions & 6 deletions src/addon/ESMX/Driver/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.22)
# load packages and modules
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake)
find_package(Python 3.5 REQUIRED COMPONENTS Interpreter)
find_package(ESMF 8.5.0 MODULE REQUIRED)
find_package(ESMF 8.6.0 MODULE REQUIRED)
include(FetchContent)

# esmx functions
Expand Down Expand Up @@ -90,12 +90,16 @@ endif()
# compiler options
if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -fbacktrace -02")
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -fbacktrace -O2")
set(CMAKE_Fortran_FLAGS_DEBUG "-g -fbacktrace -O0 -fcheck=all -ffpe-trap=invalid,zero,overflow,underflow")
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "Intel")
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -traceback -O2")
set(CMAKE_Fortran_FLAGS_DEBUG "-g -traceback -O0 -check all -fpe0 -ftrapuv -init=snan,arrays")
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "NVHPC")
set(CMAKE_Fortran_FLAGS_RELEASE "-O2 -fast")
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -traceback -O2 -fast")
set(CMAKE_Fortran_FLAGS_DEBUG "-g -traceback -O0")
else()
message(WARNING "${CMAKE_Fortran_COMPILER_ID} Fortran compiler will be used with default options")
endif()
Expand Down Expand Up @@ -125,7 +129,6 @@ endforeach()
# link packages
foreach(ESMX_LINK_PACKAGE IN ITEMS ${ESMX_LINK_PACKAGES})
find_package(${ESMX_LINK_PACKAGE} REQUIRED)
target_link_libraries(esmx_driver ${ESMX_LINK_PACKAGE})
endforeach()

# link external libraries
Expand Down Expand Up @@ -290,7 +293,7 @@ foreach(CMP IN ITEMS ${COMPS})

# build component with cmake
if(${CMP_BUILD_TYPE} STREQUAL "cmake")
message(STATUS "Building (CMAKE) - ${CMP} - ${CMP_SOURCE_DIR}")
message(STATUS "ESMX building (CMAKE) - ${CMP} - ${CMP_SOURCE_DIR}")
find_file(FND_CMAKE_LISTS
NAMES CMakeLists.txt cmakelists.txt CMAKELISTS.txt
PATHS ${CMP_SOURCE_DIR}
Expand Down Expand Up @@ -332,7 +335,7 @@ foreach(CMP IN ITEMS ${COMPS})

# build component with make
elseif(${CMP_BUILD_TYPE} STREQUAL "make")
message(STATUS "Building (MAKE) - ${CMP} - ${CMP_SOURCE_DIR}")
message(STATUS "ESMX building (MAKE) - ${CMP} - ${CMP_SOURCE_DIR}")
find_file(FND_MAKE_FILE
NAMES Makefile makefile MAKEFILE
PATHS ${CMP_SOURCE_DIR}
Expand All @@ -358,7 +361,7 @@ foreach(CMP IN ITEMS ${COMPS})

# build component with script
elseif(${CMP_BUILD_TYPE} STREQUAL "script")
message(STATUS "Building (SCRIPT) - ${CMP} - ${CMP_SOURCE_DIR}")
message(STATUS "ESMX building (SCRIPT) - ${CMP} - ${CMP_SOURCE_DIR}")
find_file(FND_BUILD_SCRIPT
NAMES ${CMP_BUILD_SCRIPT}
PATHS ${CMP_SOURCE_DIR}
Expand Down

0 comments on commit d6dc119

Please sign in to comment.