-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
74 lines (54 loc) · 2.39 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
cmake_minimum_required(VERSION 3.10) #not sure what we really need
project(HybridMST)
include(cmake_helpers/target_link_libraries_system.cmake)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_BUILD_TYPE RELEASE)
set(RQUICK_WITHOUT_OPENMP ON)
find_package(MPI REQUIRED)
find_package(TBB REQUIRED)
find_package(OpenMP REQUIRED)
find_package(Threads REQUIRED)
add_subdirectory(external/tlx EXCLUDE_FROM_ALL)
add_subdirectory(external/graphs EXCLUDE_FROM_ALL)
add_subdirectory(external/parlay EXCLUDE_FROM_ALL)
add_subdirectory(external/backward EXCLUDE_FROM_ALL)
add_library(growt INTERFACE)
target_include_directories(growt SYSTEM INTERFACE external/growt/)
add_library(base_target INTERFACE)
target_compile_definitions(kadis PRIVATE RQUICK_WITHOUT_OPENMP)
list( APPEND WARNING_FLAGS
"-Wall"
"-Wextra"
"-Wpedantic"
"-Wnon-virtual-dtor"
"-Woverloaded-virtual"
"-Wshadow"
"-Wundef"
"-Wunreachable-code"
"-Wunused"
)
target_compile_options(base_target INTERFACE ${WARNING_FLAGS} -DPARLAY_OPENMP -O3 -march=native -mcx16 -Wno-psabi)
target_compile_definitions(base_target INTERFACE NDEBUG USE_ASSERTIONS)
target_compile_features(base_target INTERFACE cxx_std_17)
target_link_libraries(base_target INTERFACE MPI::MPI_CXX TBB::tbb OpenMP::OpenMP_CXX)
target_link_libraries_system(base_target INTERFACE parlay)
target_link_libraries_system(base_target INTERFACE kadis)
OPTION(USE_THREAD_SANITIZER "Compile with Thread Sanitizer enabled" OFF)
if (USE_THREAD_SANITIZER)
target_compile_options(base_target INTERFACE -fsanitize=thread -g -fno-omit-frame-pointer)
target_link_options(base_target INTERFACE -fsanitize=thread)
endif()
OPTION(USE_ADDRESS_SANITIZER "Compile with Thread Sanitizer enabled" OFF)
if (USE_ADDRESS_SANITIZER)
message("USE_ADDRESS_SANITIZER: " ${USE_ADDRESS_SANITIZER})
target_compile_options(base_target INTERFACE -fsanitize=address -g -fno-omit-frame-pointer)
target_link_options(base_target INTERFACE -fsanitize=address)
endif()
target_link_libraries(base_target INTERFACE tlx atomic)
target_link_libraries(base_target INTERFACE growt)
target_include_directories(base_target SYSTEM INTERFACE
${CMAKE_CURRENT_SOURCE_DIR}/external/)
target_include_directories(base_target INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include)
add_library(timer ${CMAKE_CURRENT_SOURCE_DIR}/include/util/timer.cpp)
target_link_libraries(timer PRIVATE base_target)
add_subdirectory(benchmarks)