Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions palace/cmake/CheckCompilerFeatureSupport.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,11 @@ int main()
set(${_has_std_fs_support} TRUE PARENT_SCOPE)
set(${_extra_fs_libraries} stdc++fs PARENT_SCOPE)
else()
if(NOT STD_FS_TEST_COMPILED)
message(STATUS "std::filesystem test compile output: ${STD_FS_TEST_COMPILE_OUTPUT}")
else()
message(STATUS "std::filesystem test run output: ${STD_FS_TEST_OUTPUT}")
endif()
set(${_has_std_fs_support} FALSE PARENT_SCOPE)
set(${_extra_fs_libraries} "" PARENT_SCOPE)
endif()
Expand Down
40 changes: 26 additions & 14 deletions palace/cmake/PkgConfigHelpers.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ function(find_libceed_pkgconfig _libceed_deps _libceed_target)
set(${_libceed_target} "" PARENT_SCOPE)
endfunction()

function(check_petsc_build _petsc_target _petsc_test_success)
function(check_petsc_build _petsc_target _petsc_test_success _petsc_test_error)
set(PETSC_LIB_TEST_DIR ${CMAKE_BINARY_DIR}/CMakeFiles/try_run)
set(PETSC_LIB_TEST_CPP ${PETSC_LIB_TEST_DIR}/petsc_test_lib.cpp)
file(WRITE ${PETSC_LIB_TEST_CPP}
Expand Down Expand Up @@ -135,6 +135,11 @@ int main()
if(PETSC_TEST_COMPILED AND PETSC_TEST_EXITCODE EQUAL 0)
set(${_petsc_test_success} TRUE PARENT_SCOPE)
else()
if(NOT PETSC_TEST_COMPILED)
set(${_petsc_test_error} "${PETSC_TEST_COMPILE_OUTPUT}" PARENT_SCOPE)
else()
set(${_petsc_test_error} "${PETSC_TEST_OUTPUT}" PARENT_SCOPE)
endif()
set(${_petsc_test_success} FALSE PARENT_SCOPE)
endif()
endfunction()
Expand All @@ -149,7 +154,7 @@ function(find_petsc_pkgconfig _petsc_deps _petsc_target)
return()
endif()
message(STATUS "Found PETSc: ${PETSc_VERSION}")
check_petsc_build("PkgConfig::PETSc;${_petsc_deps}" PETSC_TEST_SUCCESS)
check_petsc_build("PkgConfig::PETSc;${_petsc_deps}" PETSC_TEST_SUCCESS PETSC_TEST_ERROR)
if(PETSC_TEST_SUCCESS)
message(STATUS "PETSc test program - Successful")
set(${_petsc_target} PkgConfig::PETSc PARENT_SCOPE)
Expand All @@ -166,22 +171,25 @@ function(find_petsc_pkgconfig _petsc_deps _petsc_target)
endif()
set(PKG_CONFIG_EXECUTABLE ${PKG_CONFIG_EXECUTABLE_BACKUP})
if(NOT PETSc_STATIC_FOUND)
message(STATUS "PETSc test program output:\n${PETSC_TEST_ERROR}")
set(${_petsc_target} "" PARENT_SCOPE)
return()
endif()
check_petsc_build("PkgConfig::PETSc_STATIC;${_petsc_deps}" PETSC_TEST_SUCCESS)
if(PETSC_TEST_SUCCESS)
check_petsc_build("PkgConfig::PETSc_STATIC;${_petsc_deps}" PETSC_STATIC_TEST_SUCCESS PETSC_STATIC_TEST_ERROR)
if(PETSC_STATIC_TEST_SUCCESS)
message(STATUS "PETSc test program with static linkage - Success")
set(${_petsc_target} PkgConfig::PETSc_STATIC PARENT_SCOPE)
return()
endif()

# Not able to build a PETSc test program
# Not able to build a PETSc test program with either linkage
message(STATUS "PETSc test program with static linkage - Failed")
message(STATUS "PETSc shared linkage output:\n${PETSC_TEST_ERROR}")
message(STATUS "PETSc static linkage output:\n${PETSC_STATIC_TEST_ERROR}")
set(${_petsc_target} "" PARENT_SCOPE)
endfunction()

function(check_slepc_build _slepc_target _slepc_test_success)
function(check_slepc_build _slepc_target _slepc_test_success _slepc_test_error)
set(SLEPC_LIB_TEST_DIR ${CMAKE_BINARY_DIR}/CMakeFiles/try_run)
set(SLEPC_LIB_TEST_CPP ${SLEPC_LIB_TEST_DIR}/slepc_test_lib.cpp)
file(WRITE ${SLEPC_LIB_TEST_CPP}
Expand All @@ -208,13 +216,14 @@ int main()
COMPILE_OUTPUT_VARIABLE SLEPC_TEST_COMPILE_OUTPUT
RUN_OUTPUT_VARIABLE SLEPC_TEST_OUTPUT
)
# message(STATUS "SLEPC_TEST_COMPILE_OUTPUT: ${SLEPC_TEST_COMPILE_OUTPUT}")
# message(STATUS "SLEPC_TEST_OUTPUT: ${SLEPC_TEST_OUTPUT}")
if(SLEPC_TEST_COMPILED AND SLEPC_TEST_EXITCODE EQUAL 0)
# message(STATUS "SLEPc test program - Successful")
set(${_slepc_test_success} TRUE PARENT_SCOPE)
else()
# message(STATUS "SLEPc test program - Failed")
if(NOT SLEPC_TEST_COMPILED)
set(${_slepc_test_error} "${SLEPC_TEST_COMPILE_OUTPUT}" PARENT_SCOPE)
else()
set(${_slepc_test_error} "${SLEPC_TEST_OUTPUT}" PARENT_SCOPE)
endif()
set(${_slepc_test_success} FALSE PARENT_SCOPE)
endif()
endfunction()
Expand All @@ -229,7 +238,7 @@ function(find_slepc_pkgconfig _slepc_deps _slepc_target)
return()
endif()
message(STATUS "Found SLEPc: ${SLEPc_VERSION}")
check_slepc_build("PkgConfig::SLEPc;${_slepc_deps}" SLEPC_TEST_SUCCESS)
check_slepc_build("PkgConfig::SLEPc;${_slepc_deps}" SLEPC_TEST_SUCCESS SLEPC_TEST_ERROR)
if(SLEPC_TEST_SUCCESS)
message(STATUS "SLEPc test program - Success")
set(${_slepc_target} PkgConfig::SLEPc PARENT_SCOPE)
Expand All @@ -246,17 +255,20 @@ function(find_slepc_pkgconfig _slepc_deps _slepc_target)
endif()
set(PKG_CONFIG_EXECUTABLE ${PKG_CONFIG_EXECUTABLE_BACKUP})
if(NOT SLEPc_STATIC_FOUND)
message(STATUS "SLEPc test program output:\n${SLEPC_TEST_ERROR}")
set(${_slepc_target} "" PARENT_SCOPE)
return()
endif()
check_slepc_build("PkgConfig::SLEPc_STATIC;${_slepc_deps}" SLEPC_TEST_SUCCESS)
if(SLEPC_TEST_SUCCESS)
check_slepc_build("PkgConfig::SLEPc_STATIC;${_slepc_deps}" SLEPC_STATIC_TEST_SUCCESS SLEPC_STATIC_TEST_ERROR)
if(SLEPC_STATIC_TEST_SUCCESS)
message(STATUS "SLEPc test program with static linkage - Successful")
set(${_slepc_target} PkgConfig::SLEPc_STATIC PARENT_SCOPE)
return()
endif()

# Not able to build a SLEPc test program
# Not able to build a SLEPc test program with either linkage
message(STATUS "SLEPc test program with static linkage - Failed")
message(STATUS "SLEPc shared linkage output:\n${SLEPC_TEST_ERROR}")
message(STATUS "SLEPc static linkage output:\n${SLEPC_STATIC_TEST_ERROR}")
set(${_slepc_target} "" PARENT_SCOPE)
endfunction()
Loading