-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
131 lines (110 loc) · 4.34 KB
/
CMakeLists.txt
File metadata and controls
131 lines (110 loc) · 4.34 KB
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
project(CSPLATT)
cmake_minimum_required(VERSION 2.6.0)
# Get version string from git repo if possible
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git/)
execute_process(COMMAND git --git-dir=${CMAKE_CURRENT_SOURCE_DIR}/.git rev-parse --short HEAD
OUTPUT_VARIABLE SPLATT_COMMIT
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND git --git-dir=${CMAKE_CURRENT_SOURCE_DIR}/.git rev-parse --abbrev-ref HEAD
OUTPUT_VARIABLE SPLATT_BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE)
set(SPLATT_VERSION_STR "${SPLATT_COMMIT}-${SPLATT_BRANCH}")
set(C_DEFINES "${C_DEFINES} -DSPLATT_VERSION_STR=\\\"${SPLATT_VERSION_STR}\\\"")
endif()
find_package(OpenMP REQUIRED)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
# ALL LIBRARIES -- will concatenate to this
set(SPLATT_LIBS splatt m rt)
# check for MPI mode
if (DEFINED USE_MPI)
message("Building with MPI support.")
add_definitions(-DSPLATT_USE_MPI=${USE_MPI})
find_package(MPI REQUIRED)
include_directories(SYSTEM ${MPI_INCLUDE_PATH})
file(GLOB MPI_SOURCES src/mpi/*.c)
set(SPLATT_LIBS ${SPLATT_LIBS} ${MPI_C_LIBRARIES})
else()
set(MPI_SOURCES "")
endif()
# check for ADAP
if (DEFINED USE_ADATM)
message("Building with AdaTM.")
add_definitions(-DSPLATT_USE_ADATM=${USE_ADATM})
else()
message("Building with original SPLATT CSF.")
endif()
# check for debug mode
if (DEFINED DEBUG)
message("Building in DEBUG mode. Assertions enabled.")
add_definitions(-DDEBUG=${DEBUG})
set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g")
else()
message("Building in RELEASE mode.")
set(CMAKE_BUILD_TYPE Release)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3")
endif()
# check for MT-Metis support
if (DEFINED USE_MTMETIS)
message("Building with MT-Metis support.")
add_definitions(-DSPLATT_USE_MTMETIS=${USE_MTMETIS})
set(SPLATT_LIBS ${SPLATT_LIBS} mtmetis)
endif()
# check for PatoH support
if (DEFINED USE_PATOH)
message("Building with PaToH support.")
add_definitions(-DSPLATT_USE_PATOH=${USE_PATOH})
set(SPLATT_LIBS ${SPLATT_LIBS} patoh)
endif()
# check for Ashado support
if (DEFINED USE_ASHADO)
message("Building with Ashado support.")
add_definitions(-DSPLATT_USE_ASHADO=${USE_ASHADO})
set(SPLATT_LIBS ${SPLATT_LIBS} ashado)
endif()
add_definitions(-D_GNU_SOURCE)
set(C_DEFINES "${C_DEFINES}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${C_DEFINES}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=native")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -funroll-loops")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ftree-vectorize")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fgnu89-inline")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstrict-aliasing")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopt-info-vec")
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopt-info-vec-missed")
# Development mode enables much more strict warnings
if(DEFINED DEV_MODE)
add_definitions(-DDEV_MODE=${DEV_MODE})
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-field-initializers")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-parameter")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-variable")
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-result")
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function")
# Unfortunately, these warnings pop up in GCC 5.1 despite our MAX_NMODES checks
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-array-bounds")
else()
# turn off warning entirely for release builds
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w")
endif()
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
file(GLOB SPLATT_SOURCES src/*.c ${MPI_SOURCES})
# Generate splatt library
add_subdirectory(lib)
add_subdirectory(include)
# Compile applications
add_subdirectory(src)
# uninstall
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake_uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY)
add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)