Skip to content
Snippets Groups Projects
Commit f6a1b8c9 authored by Praetorius, Simon's avatar Praetorius, Simon
Browse files

Improve the FindPETSc module

parent d0a5e532
Branches
Tags
No related merge requests found
......@@ -13,9 +13,9 @@
#
# Author: Simon Praetorius <simon.praetorius@tu-dresden.de>
include(FindPkgConfig)
find_package(PkgConfig)
if (NOT PKG_CONFIG_FOUND)
if (NOT PkgConfig_FOUND)
message(FATAL_ERROR "Can not find PkgConfig!")
endif()
......@@ -47,42 +47,45 @@ else ()
endif ()
if (PETSC_STATIC_FOUND)
set(_prefix PETSC_STATIC)
set(PETSc_VERSION "${PETSC_STATIC_VERSION}")
elseif (PETSC_FOUND)
set(_prefix PETSC)
set(PETSc_VERSION "${PETSC_VERSION}")
endif ()
set(PETSc_VERSION "${${_prefix}_VERSION}")
if ((PETSC_STATIC_FOUND OR PETSC_FOUND) AND NOT TARGET PETSc::PETSc)
add_library(PETSc::PETSc INTERFACE IMPORTED GLOBAL)
if (${_prefix}_INCLUDE_DIRS)
set_property(TARGET PETSc::PETSc PROPERTY
INTERFACE_INCLUDE_DIRECTORIES "${${_prefix}_INCLUDE_DIRS}")
if (PETSC_INCLUDE_DIRS)
set_property(TARGET PETSc::PETSc PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${PETSC_INCLUDE_DIRS}")
endif ()
if (${_prefix}_LINK_LIBRARIES)
set_property(TARGET PETSc::PETSc PROPERTY
INTERFACE_LINK_LIBRARIES "${${_prefix}_LINK_LIBRARIES}")
include(PkgConfigLinkLibraries)
if (PETSC_LINK_LIBRARIES)
set_property(TARGET PETSc::PETSc PROPERTY INTERFACE_LINK_LIBRARIES "${PETSC_LINK_LIBRARIES}")
else ()
# extract the absolute paths of link libraries from the LDFLAGS
include(PkgConfigLinkLibraries)
pkg_config_link_libraries(${_prefix} _libs)
set_property(TARGET PETSc::PETSc PROPERTY
INTERFACE_LINK_LIBRARIES "${_libs}")
pkg_config_link_libraries(PETSC _libs)
set_property(TARGET PETSc::PETSc PROPERTY INTERFACE_LINK_LIBRARIES "${_libs}")
unset(_libs)
endif ()
if (${_prefix}_LDFLAGS_OTHER)
set_property(TARGET PETSc::PETSc PROPERTY
INTERFACE_LINK_OPTIONS "${${_prefix}_LDFLAGS_OTHER}")
if (PETSC_STATIC_LINK_LIBRARIES)
set_property(TARGET PETSc::PETSc PROPERTY INTERFACE_LINK_LIBRARIES "${PETSC_STATIC_LINK_LIBRARIES}")
else ()
# extract the absolute paths of link libraries from the LDFLAGS
pkg_config_link_libraries(PETSC_STATIC _static_libs)
set_property(TARGET PETSc::PETSc PROPERTY INTERFACE_LINK_LIBRARIES "${_static_libs}")
unset(_static_libs)
endif ()
if (PETSC_LDFLAGS_OTHER)
set_property(TARGET PETSc::PETSc PROPERTY INTERFACE_LINK_OPTIONS "${PETSC_LDFLAGS_OTHER}")
endif ()
if (PETSC_STATIC_LDFLAGS_OTHER)
set_property(TARGET PETSc::PETSc PROPERTY INTERFACE_LINK_OPTIONS "${PETSC_STATIC_LDFLAGS_OTHER}")
endif ()
if (${_prefix}_CFLAGS_OTHER)
set_property(TARGET PETSc::PETSc PROPERTY
INTERFACE_COMPILE_OPTIONS "${${_prefix}_CFLAGS_OTHER}")
if (PETSC_CFLAGS_OTHER)
set_property(TARGET PETSc::PETSc PROPERTY INTERFACE_COMPILE_OPTIONS "${PETSC_CFLAGS_OTHER}")
endif ()
# workaround for PETSc macros redefining MPI functions
set_property(TARGET PETSc::PETSc PROPERTY
INTERFACE_COMPILE_DEFINITIONS "PETSC_HAVE_BROKEN_RECURSIVE_MACRO=1")
set_property(TARGET PETSc::PETSc PROPERTY INTERFACE_COMPILE_DEFINITIONS "PETSC_HAVE_BROKEN_RECURSIVE_MACRO=1")
endif ()
unset(_prefix)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(PETSc
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment