-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
187 lines (168 loc) · 6.29 KB
/
CMakeLists.txt
File metadata and controls
187 lines (168 loc) · 6.29 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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
if(NOT WIN32)
add_subdirectory(netlib)
endif()
add_subdirectory(yy_double)
#add_subdirectory(grisu2)
find_library(MATH_LIBRARY m)
include(FetchContent)
include(ExternalProject)
if (NOT CYGWIN)
set(ABSL_PROPAGATE_CXX_STD ON)
set(ABSL_ENABLE_INSTALL ON)
set(ABSL_RUN_TEST OFF CACHE INTERNAL "")
set(ABSL_USE_GOOGLETEST_HEAD OFF CACHE INTERNAL "")
FetchContent_Declare(abseil
URL https://github.com/abseil/abseil-cpp/archive/d9e4955.zip
URL_HASH SHA256=b8292600560c7562cd4e96ba397ee205c0450af352061d9303d1e20d15ef8b6b)
FetchContent_GetProperties(abseil)
if(NOT abseil_POPULATED)
set(BUILD_TESTING OFF)
FetchContent_MakeAvailable(abseil)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${abseil_SOURCE_DIR}/absl/copts)
include(${abseil_SOURCE_DIR}/absl/copts/AbseilConfigureCopts.cmake)
endif()
endif()
set(CMAKE_WARN_DEPRECATED OFF CACHE BOOL "Disable deprecation warnings" FORCE)
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
FetchContent_Declare(
doubleconversion
URL https://github.com/google/double-conversion/archive/101e1ba89dc41ceb75090831da97c43a76cd2906.zip
URL_HASH SHA256=be99800f12675849023235c77058c3f272cb0222891c9ac17101c2fbeed00c24
)
FetchContent_MakeAvailable(doubleconversion)
FetchContent_Declare(
teju_jagua
GIT_REPOSITORY https://github.com/jaja360/teju_jagua.git
GIT_TAG 990e89aa886a19d29c5b2e0f93d150f74c0b0d4e
GIT_SHALLOW TRUE
)
FetchContent_MakeAvailable(teju_jagua)
get_property(teju_has_uint128 DIRECTORY ${teju_jagua_SOURCE_DIR} PROPERTY teju_has_uint128)
# When teju_has_float128 is set, then we will need teju_boost_multiprecision
get_property(teju_has_float128 DIRECTORY ${teju_jagua_SOURCE_DIR} PROPERTY teju_has_float128)
if(teju_has_float128)
message(STATUS "support for 128-bit floats detected by teju")
else()
message(STATUS "support for 128-bit floats NOT detected by teju")
endif()
#CPMAddPackage("gh:ulfjack/ryu@2.0")
FetchContent_Declare(
ryu
GIT_REPOSITORY https://github.com/ulfjack/ryu
GIT_TAG 1264a946ba66eab320e927bfd2362e0c8580c42f
GIT_SHALLOW TRUE
)
FetchContent_MakeAvailable(ryu)
set(ryu_SOURCE_DIR ${ryu_SOURCE_DIR} PARENT_SCOPE)
message(STATUS "ryu source directory: ${ryu_SOURCE_DIR}")
FetchContent_Declare(
grisu-exact
GIT_REPOSITORY https://github.com/jk-jeon/Grisu-Exact
GIT_TAG 4279e63faa301c03112f56f9ee4ed8bdff947fee
GIT_SHALLOW TRUE
)
FetchContent_MakeAvailable(grisu-exact)
set(grisu-exact_SOURCE_DIR ${grisu-exact_SOURCE_DIR} PARENT_SCOPE)
message(STATUS "grisu source directory: ${grisu-exact_SOURCE_DIR}")
FetchContent_Declare(
zmij
GIT_REPOSITORY https://github.com/vitaut/zmij
GIT_TAG tags/v1.0
GIT_SHALLOW TRUE
)
FetchContent_Populate(zmij)
set(zmij_SOURCE_DIR ${zmij_SOURCE_DIR} PARENT_SCOPE)
message(STATUS "zmij source directory: ${zmij_SOURCE_DIR}")
FetchContent_Declare(
dragonbox
GIT_REPOSITORY https://github.com/jk-jeon/dragonbox
GIT_TAG tags/1.1.3
GIT_SHALLOW TRUE
)
FetchContent_MakeAvailable(dragonbox)
message(STATUS "dragonbox source directory: ${dragonbox_SOURCE_DIR}")
FetchContent_Declare(
dragon4
GIT_REPOSITORY https://github.com/lemire/Dragon4.git
GIT_TAG 0ce72aa
GIT_SHALLOW TRUE
)
FetchContent_GetProperties(dragon4)
if(NOT dragon4)
FetchContent_Populate(dragon4) # Downloads code to ${dragon4_SOURCE_DIR}
endif()
set(dragon4_SOURCE_DIR ${dragon4_SOURCE_DIR} PARENT_SCOPE)
message(STATUS "dragon4 source directory: ${dragon4_SOURCE_DIR}")
add_library(dragon4_lib STATIC
${dragon4_SOURCE_DIR}/Dragon4.cpp
${dragon4_SOURCE_DIR}/DragonMath.cpp
${dragon4_SOURCE_DIR}/PrintFloat.cpp
)
if(MATH_LIBRARY)
message(STATUS "Using math library")
target_link_libraries(dragon4_lib PUBLIC ${MATH_LIBRARY})
endif()
target_include_directories(dragon4_lib PUBLIC
${dragon4_SOURCE_DIR}
)
# Swift code may not build under Windows without extra care.
if(NOT WIN32)
message(STATUS "Grabbing Swift code")
FetchContent_Declare(
swift
URL https://github.com/swiftlang/swift/archive/6a862d2eb7128ff1f317b07e8ad1a6da939775f3.tar.gz
URL_HASH SHA256=281673f70a1695ce26f5463ac43842ffdb546d6d888338f488f71015564e51a0
)
FetchContent_GetProperties(swift)
if(NOT swift)
FetchContent_Populate(swift) # Downloads code to ${dragon4_SOURCE_DIR}
endif()
set(swift_SOURCE_DIR ${swift_SOURCE_DIR} PARENT_SCOPE)
message(STATUS "Swift directory: ${swift_SOURCE_DIR}")
add_library(swift_lib STATIC
${swift_SOURCE_DIR}/stdlib/public/runtime/SwiftDtoa.cpp
)
if(MATH_LIBRARY)
target_link_libraries(swift_lib PUBLIC ${MATH_LIBRARY})
endif()
target_include_directories(swift_lib PUBLIC
${swift_SOURCE_DIR}/include
)
endif(NOT WIN32)
FetchContent_Declare(
drachennest # for schubfach
URL https://github.com/abolz/Drachennest/archive/e6714a39ad331b4489d0b6aaf3968635bff4eb5e.zip
URL_HASH SHA256=6a5526d17b47c8e8c264133d717d99693f01783aa4a50e144d7a0e28363647bb
)
FetchContent_GetProperties(drachennest)
if(NOT drachennest_POPULATED)
FetchContent_Populate(drachennest) # Downloads code to ${drachennest_SOURCE_DIR}
endif()
set(drachennest_SOURCE_DIR/src ${drachennest_SOURCE_DIR}/src PARENT_SCOPE)
message(STATUS "drachennest directory: ${drachennest_SOURCE_DIR}")
add_library(dragon_schubfach_lib STATIC
${drachennest_SOURCE_DIR}/src/dragon4.cc
${drachennest_SOURCE_DIR}/src/schubfach_32.cc
${drachennest_SOURCE_DIR}/src/schubfach_64.cc
${drachennest_SOURCE_DIR}/src/grisu3.cc
${drachennest_SOURCE_DIR}/src/grisu2.cc
)
target_include_directories(dragon_schubfach_lib PUBLIC
${drachennest_SOURCE_DIR}/src
)
CPMAddPackage("gh:fmtlib/fmt#11.1.4")
CPMAddPackage(
GITHUB_REPOSITORY jarro2783/cxxopts
VERSION 3.2.0
OPTIONS "CXXOPTS_BUILD_EXAMPLES NO" "CXXOPTS_BUILD_TESTS NO" "CXXOPTS_ENABLE_INSTALL YES"
)
if(NOT WIN32)
CPMAddPackage(
NAME errol
GITHUB_REPOSITORY marcandrysco/Errol
GIT_TAG 5364de4
DOWNLOAD_ONLY ON
)
add_library(errol STATIC "${errol_SOURCE_DIR}/lib/errol.c")
target_include_directories(errol SYSTEM PUBLIC "${errol_SOURCE_DIR}/lib")
endif()