forked from reaktoro/reaktoro
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
96 lines (87 loc) · 3.1 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
# Include the ExternalProject module
include(ExternalProject)
# Set the list of compiler flags for the external projects
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Windows")
set(CFLAGS "${CFLAGS} -fPIC")
set(CXXFLAGS "${CXXFLAGS} -fPIC")
else()
set(CFLAGS "${CMAKE_C_FLAGS}")
set(CXXFLAGS "${CMAKE_CXX_FLAGS}")
endif()
separate_arguments(THIRDPARTY_EXTRA_BUILD_ARGS NATIVE_COMMAND "${THIRDPARTY_EXTRA_BUILD_ARGS}")
# Set the common cmake arguments to all external projects
set(THIRDPARTY_COMMON_ARGS
-DCMAKE_GENERATOR=${CMAKE_GENERATOR}
$<$<BOOL:CMAKE_GENERATOR_PLATFORM>:-DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}>
-DCMAKE_INSTALL_PREFIX=${THIRDPARTY_INSTALL_PREFIX}
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_C_FLAGS=${CFLAGS}
-DCMAKE_CXX_FLAGS=${CXXFLAGS}
-DCMAKE_INSTALL_INCLUDEDIR=include
-DCMAKE_INSTALL_LIBDIR=lib
-DCMAKE_INSTALL_BINDIR=bin
-DBUILD_SHARED_LIBS=OFF
-DCMAKE_CXX_STANDARD=14
-DCMAKE_CXX_STANDARD_REQUIRED=ON
# Disables the cmake warning message `Manually-specified
# variables were not used by the project` because of
# unused arguments above
--no-warn-unused-cli
# Allows the specification of extra args via command-line
${THIRDPARTY_COMMON_ARGS}
)
# Build and install the pugixml library
ExternalProject_Add(PUGIXML
PREFIX build
URL ${CMAKE_CURRENT_SOURCE_DIR}/pugixml/pugixml-1.6.tar.gz
SOURCE_DIR build/src/pugixml
BINARY_DIR build/src/pugixml-build
STAMP_DIR build/src/pugixml-stamp
CONFIGURE_COMMAND ${CMAKE_COMMAND} <SOURCE_DIR>/scripts ${THIRDPARTY_COMMON_ARGS}
)
# Build and install the json library
ExternalProject_Add(JSON
PREFIX build
URL https://github.com/nlohmann/json/releases/download/v3.1.2/json.hpp
URL_HASH SHA256=fbdfec4b4cf63b3b565d09f87e6c3c183bdd45c5be1864d3fcb338f6f02c1733
DOWNLOAD_DIR download/nlohmann
DOWNLOAD_NO_EXTRACT TRUE
DOWNLOAD_NO_PROGRESS TRUE
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_CURRENT_BINARY_DIR}/download/nlohmann
${THIRDPARTY_INSTALL_PREFIX}/include/nlohmann
CMAKE_ARGS ${THIRDPARTY_COMMON_ARGS}
)
# Build and install the miniz library
ExternalProject_Add(MINIZ
PREFIX build
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/miniz
CMAKE_ARGS ${THIRDPARTY_COMMON_ARGS}
)
# Build and install the cvode library
ExternalProject_Add(CVODE
PREFIX build
URL ${CMAKE_CURRENT_SOURCE_DIR}/cvode/cvode-2.8.2.tar.gz
SOURCE_DIR build/src/cvode
BINARY_DIR build/src/cvode-build
STAMP_DIR build/src/cvode-stamp
CMAKE_ARGS ${THIRDPARTY_COMMON_ARGS}
-DEXAMPLES_ENABLE=OFF
-DEXAMPLES_INSTALL=OFF
)
# Build and install the Phreeqc library
if(LINK_PHREEQC)
ExternalProject_Add(PHREEQC
PREFIX build
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/phreeqc
CMAKE_ARGS ${THIRDPARTY_COMMON_ARGS})
endif()
# Build and install the Gems library
if(LINK_GEMS)
ExternalProject_Add(GEMS
PREFIX build
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/gems
CMAKE_ARGS ${THIRDPARTY_COMMON_ARGS})
endif()