-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
106 lines (85 loc) · 2.84 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
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
cmake_minimum_required(VERSION 3.13)
cmake_policy(SET CMP0135 NEW)
project(lagrange-ng)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
include(FetchContent)
# Find NLopt, otherwise download it
FetchContent_Declare(NLopt
URL https://github.com/stevengj/nlopt/archive/refs/tags/v2.7.1.tar.gz
URL_HASH SHA256=db88232fa5cef0ff6e39943fc63ab6074208831dc0031cf1545f6ecd31ae2a1a
EXCLUDE_FROM_ALL
FIND_PACKAGE_ARGS
)
# Find json lib, otherwise download it
FetchContent_Declare(nlohmann_json
URL https://github.com/ArthurSonzogni/nlohmann_json_cmake_fetchcontent/archive/refs/tags/v3.11.2.tar.gz
URL_HASH SHA256=8221d9885db8af5c48b472fa2971318443a502c41d8ed6c9bce3a88d6834aa9c
EXCLUDE_FROM_ALL
FIND_PACKAGE_ARGS
)
FetchContent_Declare(logger
URL https://github.com/computations/logger/archive/refs/tags/v0.3.0.tar.gz
URL_HASH SHA256=b9b1d79a1735a5064b2c7da27a2a6866be23d1f11bad43c0ae32cc491435fecd
EXCLUDE_FROM_ALL
FIND_PACKAGE_ARGS
)
FetchContent_MakeAvailable(NLopt nlohmann_json logger)
FetchContent_GetProperties(NLopt
POPULATED NLopt_POPULATED
)
if(${NLopt_POPULATED})
set(NLOPT_LIB nlopt)
else()
set(NLOPT_LIB NLopt::nlopt)
endif()
# Find MKL, fallback to OpenBLAS
include(FindMKL)
find_package(MKL)
if (${MKL_FOUND})
set(LAGRANGE_LIBS ${MKL_LIBRARIES})
set(LAGRANGE_INCLUDES ${MKL_INCLUDE_DIRS})
set(LAGRANGE_DEFINES MKL_ENABLED=1)
else()
FetchContent_Declare(OpenBLAS
URL https://github.com/xianyi/OpenBLAS/releases/download/v0.3.23/OpenBLAS-0.3.23.tar.gz
URL_HASH SHA256=5d9491d07168a5d00116cdc068a40022c3455bf9293c7cb86a65b1054d7e5114
EXCLUDE_FROM_ALL
FIND_PACKAGE_ARGS
)
FetchContent_MakeAvailable(OpenBLAS)
set(LAGRANGE_LIBS openblas)
FetchContent_GetProperties(OpenBLAS
POPULATED OpenBLAS_POPULATED
)
if(NOT ${OpenBLAS_FOUND})
set(OpenBLAS_INCLUDE_DIRS
${CMAKE_BINARY_DIR}/
${CMAKE_CURRENT_BINARY_DIR}/generated/
${OpenBLAS_SOURCE_DIR}/lapack-netlib/LAPACKE/include)
endif()
message("Setting include directory for openblas to ${OpenBLAS_INCLUDE_DIRS}")
set(LAGRANGE_INCLUDES ${OpenBLAS_INCLUDE_DIRS})
endif()
find_package(Git)
if(GIT_FOUND)
if(EXISTS ${CMAKE_SOURCE_DIR})
execute_process(
COMMAND ${GIT_EXECUTABLE} describe
WORKING_DIRECTORY "${local_dir}"
OUTPUT_VARIABLE LAGRANGE_BUILD_VERSION
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()
else()
SET(LAGRANGE_BUILD_VERSION "v0.5.1-release")
endif()
set(LAGRANGE_DEFINES ${LAGRANGE_DEFINES} LAGRANGE_BUILD_VERSION=${LAGRANGE_BUILD_VERSION})
add_subdirectory(src)
option(BUILD_TESTS "Enable building the tests" OFF)
if(${BUILD_TESTS})
include(CTest)
enable_testing()
add_subdirectory(tests)
endif()