Rewrite FindMETIS to provide imported targets
Summary
This MR adds imported-targets to the FindMETIS.cmake
module, following modern cmake guidelines.
Details
Instead of exporting include directories and libraries as variables, the find modules exports an imported target that contains all the necessary information to include and link METIS. The find module introduces the imported target: METIS::METIS
.
Scotch-METIS
If you want to use scotch-metis is (partially) compatible library replacement, you have to set the option ENABLE_SCOTCH_METIS
to true. It is an explicit option, since the scotch-metis library is not really compatible to metis. It provides only a small subset of the functions, with slightly different parameters and in some versions a missing return value. So, you have to program scotch-metis differently from METIS. If enabled, the Scotch library is search for by FindPTScotch
and METIS is linked against PTScotch::Scotch
if found. In this case the preprocessor constant HAVE_SCOTCH_METIS
is set.
Depending the version of Scotch, a different METIS API version is provided. Scotch < 6.0.7 provides only METIS API 3, but with Scotch 6.0.9 both APIs (3 or 5) are possible. Whether Scotch ships a compiled METIS API 5 or 3 depends on how scotchmetis was compiled. For recent Scotch libraries you have to provide the additional cmake variable SCOTCH_METIS_VERSION=(3|5)
to tell cmake how Scotch is compiled. The API version of METIS is provided as preprocessor constant METIS_API_VERSION
and typically corresponds to the METIS major version.
Depends on !820 (merged) for linking against PTScotch::Scotch
ToDo
-
Check for the failing Pipelines -
Design a proper test for the functionality of METIS -
Test Scotch backend for METIS