From cd558c7cb50d59b39353865b003ac9bd97c05ee6 Mon Sep 17 00:00:00 2001 From: suvarchal Date: Mon, 21 Jul 2025 00:35:06 +0200 Subject: [PATCH 1/3] Fix: meshpart, tests to install properly when fesom is used in another project like ifs-bundle --- CMakeLists.txt | 2 ++ mesh_part/CMakeLists.txt | 16 ++++++++++------ tests/CMakeLists.txt | 2 +- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index eb9c496b2..d28fcefeb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,8 @@ endif() project(FESOM2.0) +set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake ${CMAKE_MODULE_PATH}) + set(BUILD_SHARED_LIBS ON CACHE BOOL "Default to using shared libs") set(TOPLEVEL_DIR ${CMAKE_CURRENT_LIST_DIR}) set(FESOM_COUPLED OFF CACHE BOOL "compile fesom standalone or with oasis support (i.e. coupled)") diff --git a/mesh_part/CMakeLists.txt b/mesh_part/CMakeLists.txt index 678376395..05bd5dfde 100644 --- a/mesh_part/CMakeLists.txt +++ b/mesh_part/CMakeLists.txt @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 3.16) project(fesom_meshpart C Fortran) +set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../cmake ${CMAKE_MODULE_PATH}) +include(fesom_setup) # Find required packages find_package(MPI REQUIRED) @@ -7,13 +9,13 @@ find_package(MPI REQUIRED) # Determine source directory - works for both standalone and integrated builds if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) # This is a standalone build - set(src_home ${CMAKE_SOURCE_DIR}/../src) - set(METIS_ROOT ${CMAKE_SOURCE_DIR}/../lib/metis-5.1.0) + set(src_home ${CMAKE_CURRENT_SOURCE_DIR}/../src) + set(METIS_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../lib/metis-5.1.0) message(STATUS "Building as standalone mesh partitioner") # Set default install prefix if not specified if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/.. CACHE PATH "Install path prefix" FORCE) + set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/.. CACHE PATH "Install path prefix" FORCE) endif() # Add uninstall target @@ -27,8 +29,10 @@ if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) endif() else() # This is part of the main FESOM build - set(src_home ${CMAKE_SOURCE_DIR}/src) - set(METIS_ROOT ${CMAKE_SOURCE_DIR}/lib/metis-5.1.0) + set(src_home ${CMAKE_CURRENT_SOURCE_DIR}/../src) + set(METIS_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../lib/metis-5.1.0) + #set(src_home ${CMAKE_SOURCE_DIR}/src) + #set(METIS_ROOT ${CMAKE_SOURCE_DIR}/lib/metis-5.1.0) message(STATUS "Building as part of FESOM main build") endif() @@ -111,7 +115,7 @@ elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU") target_compile_options(${PROJECT_NAME} PRIVATE -fallow-argument-mismatch) endif() endif() -target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}_C MPI::MPI_Fortran) +target_link_libraries(${PROJECT_NAME} PUBLIC ${PROJECT_NAME}_C MPI::MPI_Fortran) set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE Fortran) # Install the executable diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index d280576f1..a0736809a 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -5,7 +5,7 @@ cmake_minimum_required(VERSION 3.16) # Include our testing utilities -include(${CMAKE_SOURCE_DIR}/cmake/FesomTesting.cmake) +include(${CMAKE_CURRENT_SOURCE_DIR}/../cmake/FesomTesting.cmake) # Set up MPI for testing setup_mpi_testing() From 147e70a8b330494029a2160791a126cb3737949f Mon Sep 17 00:00:00 2001 From: suvarchal Date: Tue, 22 Jul 2025 22:21:36 +0200 Subject: [PATCH 2/3] adjust meshpart symlink path in mesh_part/configure.sh --- mesh_part/configure.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mesh_part/configure.sh b/mesh_part/configure.sh index 949b51776..b370ea799 100755 --- a/mesh_part/configure.sh +++ b/mesh_part/configure.sh @@ -57,8 +57,8 @@ fi mkdir -p "${BIN_DIR}" # Create a symlink in the bin directory -ln -sf "${BUILD_DIR}/fesom_meshpart" "${BIN_DIR}/fesom_meshpart" -ln -sf "${BUILD_DIR}/fesom_meshpart" "${BIN_DIR}/fesom_ini.x" +ln -sf "${BUILD_DIR}/bin/fesom_meshpart" "${BIN_DIR}/fesom_meshpart" +ln -sf "${BUILD_DIR}/bin/fesom_meshpart" "${BIN_DIR}/fesom_ini.x" # Install the executable make install From 564e78f3962b5fd76d68925edf752c9df4e36d76 Mon Sep 17 00:00:00 2001 From: suvarchal Date: Wed, 23 Jul 2025 01:17:02 +0200 Subject: [PATCH 3/3] Fix: use symlink for meshpart then copy as it is problematic when used as shared lib for rpath --- .github/workflows/metis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/metis.yml b/.github/workflows/metis.yml index 78ac434d5..db164ac49 100644 --- a/.github/workflows/metis.yml +++ b/.github/workflows/metis.yml @@ -38,5 +38,5 @@ jobs: - name: Run partitioner run: | cd work_pi - cp ../bin/fesom_ini.x . - ./fesom_ini.x \ No newline at end of file + ln ../bin/fesom_ini.x . + ./fesom_ini.x