Skip to content

Commit ef13770

Browse files
committed
detect required Zoltan dependency
- cmake/FindZoltan.cmake: fix find_path/find_library when ZOLTAN_PREFIX not specified. since it is always defined, check instead for truthiness. - add FATAL_ERROR if Zoltan is not found. - add debug message with found Zoltan location. - find Zoltan_config.h and search for #define HAVE_PARMETIS and #define HAVE_SCOTCH. use the results to determine which libraries are required. - set the PUMI_HAS_PARMETIS and PUMI_HAS_PTSCOTCH from this file. - zoltan/CMakeLists.txt: remove ENABLE_PARMETIS and ENABLE_PTSCOTCH cache options. - replace ENABLE_PTSCOTCH/ENABLE_PARMETIS with PUMI_HAS_PARMETIS/PUMI_HAS_PTSCOTCH which are detected in FindZoltan.cmake. Signed-off-by: Aiden Woodruff <[email protected]>
1 parent 41fe028 commit ef13770

File tree

2 files changed

+31
-13
lines changed

2 files changed

+31
-13
lines changed

Diff for: cmake/FindZoltan.cmake

+28-5
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ if(ZOLTAN_PREFIX)
1010
message(STATUS "ZOLTAN_PREFIX ${ZOLTAN_PREFIX}")
1111
endif()
1212

13-
if(DEFINED ZOLTAN_PREFIX)
13+
if(ZOLTAN_PREFIX)
1414
find_path(ZOLTAN_INCLUDE_DIR zoltan.h
1515
PATHS "${ZOLTAN_PREFIX}/include"
1616
NO_DEFAULT_PATH
@@ -23,14 +23,37 @@ else()
2323
find_path(ZOLTAN_INCLUDE_DIR zoltan.h)
2424
find_library(ZOLTAN_LIBRARY zoltan)
2525
endif()
26+
if (ZOLTAN_INCLUDE_DIR)
27+
message(DEBUG "ZOLTAN_INCLUDE_DIR ${ZOLTAN_INCLUDE_DIR}")
28+
else()
29+
message(FATAL_ERROR "Zoltan not found.")
30+
endif()
2631

2732
set(ZOLTAN_LIBRARIES ${ZOLTAN_LIBRARY} )
2833
set(ZOLTAN_INCLUDE_DIRS ${ZOLTAN_INCLUDE_DIR} )
2934

30-
if(ENABLE_PTSCOTCH)
31-
find_package(SCOTCH CONFIG REQUIRED)
32-
elseif(ENABLE_PARMETIS)
35+
find_file(ZOLTAN_CONFIG_FILE Zoltan_config.h
36+
"${ZOLTAN_INCLUDE_DIRS}"
37+
NO_DEFAULT_PATH
38+
)
39+
message(DEBUG "ZOLTAN_CONFIG_FILE ${ZOLTAN_CONFIG_FILE}")
40+
file(READ "${ZOLTAN_CONFIG_FILE}" ZOLTAN_CONFIG_TEXT)
41+
string(FIND
42+
"${ZOLTAN_CONFIG_TEXT}" "#define HAVE_PARMETIS"
43+
ZOLTAN_FIND_PARMETIS
44+
)
45+
string(FIND
46+
"${ZOLTAN_CONFIG_TEXT}" "#define HAVE_SCOTCH"
47+
ZOLTAN_FIND_PTSCOTCH
48+
)
49+
50+
if(NOT ZOLTAN_FIND_PARMETIS EQUAL -1)
3351
find_package(Parmetis MODULE REQUIRED)
52+
set(PUMI_HAS_PARMETIS TRUE)
53+
endif()
54+
if(NOT ZOLTAN_FIND_PTSCOTCH EQUAL -1)
55+
find_package(SCOTCH CONFIG REQUIRED)
56+
set(PUMI_HAS_PTSCOTCH TRUE)
3457
endif()
3558

3659
include(FindPackageHandleStandardArgs)
@@ -42,4 +65,4 @@ find_package_handle_standard_args(
4265
ZOLTAN_LIBRARY ZOLTAN_INCLUDE_DIR
4366
)
4467

45-
mark_as_advanced(ZOLTAN_INCLUDE_DIR ZOLTAN_LIBRARY )
68+
mark_as_advanced(ZOLTAN_INCLUDE_DIR ZOLTAN_LIBRARY ZOLTAN_CONFIG_FILE)

Diff for: zoltan/CMakeLists.txt

+3-8
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,8 @@ endif()
55

66
# Package options
77
option(ENABLE_ZOLTAN "Enable Zoltan interface [ON|OFF]" OFF)
8-
option(ENABLE_PARMETIS "Enable ParMETIS for Zoltan [ON|OFF]" OFF)
9-
option(ENABLE_PTSCOTCH "Enable PT-Scotch for Zoltan [ON|OFF]" OFF)
108
xsdk_add_tpl(ZOLTAN)
11-
xsdk_add_tpl(PARMETIS)
12-
xsdk_add_tpl(PTSCOTCH)
139
message(STATUS "ENABLE_ZOLTAN: " ${ENABLE_ZOLTAN})
14-
message(STATUS "ENABLE_PARMETIS: " ${ENABLE_PARMETIS})
15-
message(STATUS "ENABLE_PTSCOTCH: " ${ENABLE_PTSCOTCH})
1610

1711
if(SCOREC_NO_MPI AND ENABLE_ZOLTAN)
1812
message(FATAL_ERROR "SCOREC_NO_MPI is incompatible with Zoltan.")
@@ -66,12 +60,13 @@ if(ENABLE_ZOLTAN)
6660
target_include_directories(apf_zoltan PRIVATE ${ZOLTAN_INCLUDE_DIRS})
6761
target_link_libraries(apf_zoltan PUBLIC ${ZOLTAN_LIBRARIES})
6862
target_compile_definitions(apf_zoltan PUBLIC PUMI_HAS_ZOLTAN)
69-
if(ENABLE_PTSCOTCH)
63+
if(PUMI_HAS_PTSCOTCH)
7064
target_link_libraries(apf_zoltan PUBLIC
7165
SCOTCH::ptscotch SCOTCH::ptscotcherr
7266
)
7367
target_compile_definitions(apf_zoltan PUBLIC PUMI_HAS_PTSCOTCH)
74-
elseif(ENABLE_PARMETIS)
68+
endif()
69+
if(PUMI_HAS_PARMETIS)
7570
target_include_directories(apf_zoltan PRIVATE ${PARMETIS_INCLUDE_DIRS})
7671
target_link_libraries(apf_zoltan PUBLIC ${PARMETIS_LIBRARIES})
7772
target_compile_definitions(apf_zoltan PUBLIC PUMI_HAS_PARMETIS)

0 commit comments

Comments
 (0)