-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathCMakeLists.txt
67 lines (52 loc) · 2.15 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
cmake_minimum_required(VERSION 3.2.0)
include(CheckCXXCompilerFlag)
project(blanczos)
set (BLANCZOS_VERSION "0.0.1")
set (BLANCZOS_AUTHORS "Sebastian Wouters")
set (BLANCZOS_LICENSE "BSD 3-Clause License")
set (BLANCZOS_LIB_SOVERSION 0)
set (CMAKE_VERBOSE_MAKEFILE ON)
if (NOT CMAKE_BUILD_TYPE)
set (CMAKE_BUILD_TYPE "Release" CACHE STRING "Debug|Release|RelWithDebInfo|MinSizeRel" FORCE)
endif()
check_cxx_compiler_flag (-Wall HAS_WALL)
if (HAS_WALL)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
endif()
find_package (OpenMP)
if (OpenMP_CXX_FOUND)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
endif()
check_cxx_compiler_flag (-xHost HAS_XHOST)
check_cxx_compiler_flag (-march=native HAS_MARCH_NATIVE)
if (HAS_XHOST)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xHost")
elseif (HAS_MARCH_NATIVE)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
endif()
check_cxx_compiler_flag (-ipo HAS_IPO)
if (HAS_IPO)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ipo")
endif()
check_cxx_compiler_flag (-flto HAS_FLTO)
if (HAS_FLTO)
set (CMAKE_CXX_FLAGS "-flto ${CMAKE_CXX_FLAGS}")
endif()
set (BLANCZOS_SOURCE_FILES "src/blanczos.cpp")
add_library (blanczos-base OBJECT ${BLANCZOS_SOURCE_FILES})
target_include_directories (blanczos-base PRIVATE ${CMAKE_SOURCE_DIR}/src)
set_target_properties (blanczos-base PROPERTIES POSITION_INDEPENDENT_CODE 1)
add_library (blanczos-shared SHARED $<TARGET_OBJECTS:blanczos-base>)
set_target_properties (blanczos-shared PROPERTIES #SOVERSION ${BLANCZOS_LIB_SOVERSION}
#MACOSX_RPATH ON
OUTPUT_NAME "blanczos"
EXPORT_NAME "blanczos")
set (BLANCZOS_TESTS "test1" "test2")
foreach (ITEM ${BLANCZOS_TESTS})
add_executable (${ITEM} tests/${ITEM}.cpp)
target_link_libraries (${ITEM} blanczos-shared)
target_include_directories (${ITEM} PRIVATE ${CMAKE_SOURCE_DIR}/src)
endforeach()
enable_testing()
add_test(sparse test1)
add_test(blanczos test2)