-
Notifications
You must be signed in to change notification settings - Fork 64
/
Copy pathCMakeLists.txt
78 lines (66 loc) · 2.01 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
if(DEFINED TRIBITS_PACKAGE)
include(pkg_tribits.cmake)
return()
endif()
# Package options
option(ENABLE_ZOLTAN "Enable Zoltan interface [ON|OFF]" OFF)
xsdk_add_tpl(ZOLTAN)
message(STATUS "ENABLE_ZOLTAN: " ${ENABLE_ZOLTAN})
if(SCOREC_NO_MPI AND ENABLE_ZOLTAN)
message(FATAL_ERROR "SCOREC_NO_MPI is incompatible with Zoltan.")
endif()
# Let CMake know where to find custom find package implementations
set(CMAKE_MODULE_PATH
${CMAKE_MODULE_PATH}
"${CMAKE_CURRENT_SOURCE_DIR}/../cmake/")
# Check for and enable zoltan support
if(ENABLE_ZOLTAN)
if(Trilinos_PREFIX)
set(ZOLTAN_PREFIX_DEFAULT "${Trilinos_PREFIX}")
message(STATUS "ZOLTAN_PREFIX_DEFAULT ${ZOLTAN_PREFIX_DEFAULT}")
endif()
find_package(Zoltan MODULE REQUIRED)
endif()
# Package sources
if(ENABLE_ZOLTAN)
set(SOURCES
apfInterElement.cc
apfZoltan.cc
apfZoltanMesh.cc
apfZoltanCallbacks.cc
)
else()
set(SOURCES
apfInterElement.cc
apfZoltanEmpty.cc
)
endif()
# Package headers
set(HEADERS apfZoltan.h)
# Add the apf_zoltan library
add_library(apf_zoltan ${SOURCES})
# Include directories
target_include_directories(apf_zoltan INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
)
# Link this package to these libraries
target_link_libraries(apf_zoltan PUBLIC pcu apf)
# Do extra work if zoltan is enabled
if(ENABLE_ZOLTAN)
target_include_directories(apf_zoltan PRIVATE ${ZOLTAN_INCLUDE_DIRS})
target_link_libraries(apf_zoltan PUBLIC ${ZOLTAN_LIBRARIES})
target_compile_definitions(apf_zoltan PUBLIC PUMI_HAS_ZOLTAN)
if(PUMI_HAS_PTSCOTCH)
target_link_libraries(apf_zoltan PUBLIC
SCOTCH::ptscotch SCOTCH::ptscotcherr
)
target_compile_definitions(apf_zoltan PUBLIC PUMI_HAS_PTSCOTCH)
endif()
if(PUMI_HAS_PARMETIS)
target_include_directories(apf_zoltan PRIVATE ${PARMETIS_INCLUDE_DIRS})
target_link_libraries(apf_zoltan PUBLIC ${PARMETIS_LIBRARIES})
target_compile_definitions(apf_zoltan PUBLIC PUMI_HAS_PARMETIS)
endif()
endif()
scorec_export_library(apf_zoltan)
bob_end_subdir()