@@ -11,7 +11,7 @@ if(NOT CMAKE_BUILD_TYPE)
11
11
FORCE)
12
12
endif ()
13
13
14
- project (heyoka VERSION 7.2.2 LANGUAGES CXX C)
14
+ project (heyoka VERSION 7.3.0 LANGUAGES CXX C)
15
15
16
16
list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR} /cmake" "${CMAKE_CURRENT_SOURCE_DIR} /cmake/yacma" )
17
17
@@ -32,6 +32,7 @@ include(YACMACompilerLinkerSettings)
32
32
option (HEYOKA_BUILD_TESTS "Build unit tests." OFF )
33
33
option (HEYOKA_BUILD_BENCHMARKS "Build benchmarks." OFF )
34
34
option (HEYOKA_BUILD_TUTORIALS "Build tutorials." OFF )
35
+ option (HEYOKA_BUILD_UTILS "Build utilities." OFF )
35
36
option (HEYOKA_WITH_MPPP "Enable features relying on mp++." OFF )
36
37
option (HEYOKA_WITH_SLEEF "Enable features relying on SLEEF." OFF )
37
38
option (HEYOKA_BUILD_STATIC_LIBRARY "Build heyoka as a static library, instead of dynamic." OFF )
@@ -205,6 +206,10 @@ set(HEYOKA_SRC_FILES
205
206
"${CMAKE_CURRENT_SOURCE_DIR} /src/lagrangian.cpp"
206
207
"${CMAKE_CURRENT_SOURCE_DIR} /src/hamiltonian.cpp"
207
208
"${CMAKE_CURRENT_SOURCE_DIR} /src/logging.cpp"
209
+ "${CMAKE_CURRENT_SOURCE_DIR} /src/eop_data.cpp"
210
+ "${CMAKE_CURRENT_SOURCE_DIR} /src/eop_data_download.cpp"
211
+ "${CMAKE_CURRENT_SOURCE_DIR} /src/eop_data_iers_rapid.cpp"
212
+ "${CMAKE_CURRENT_SOURCE_DIR} /src/eop_data_iers_long_term.cpp"
208
213
# VSOP2013 details.
209
214
"${CMAKE_CURRENT_SOURCE_DIR} /src/detail/vsop2013/vsop2013_1_1.cpp"
210
215
"${CMAKE_CURRENT_SOURCE_DIR} /src/detail/vsop2013/vsop2013_1_2.cpp"
@@ -266,6 +271,8 @@ set(HEYOKA_SRC_FILES
266
271
"${CMAKE_CURRENT_SOURCE_DIR} /src/detail/elp2000/elp2000_10_15.cpp"
267
272
"${CMAKE_CURRENT_SOURCE_DIR} /src/detail/elp2000/elp2000_16_21.cpp"
268
273
"${CMAKE_CURRENT_SOURCE_DIR} /src/detail/elp2000/elp2000_22_36.cpp"
274
+ # EOP data details.
275
+ "${CMAKE_CURRENT_SOURCE_DIR} /src/detail/eop_data/builtin_eop_data.cpp"
269
276
# Models.
270
277
"${CMAKE_CURRENT_SOURCE_DIR} /src/model/pendulum.cpp"
271
278
"${CMAKE_CURRENT_SOURCE_DIR} /src/model/nbody.cpp"
@@ -280,6 +287,9 @@ set(HEYOKA_SRC_FILES
280
287
"${CMAKE_CURRENT_SOURCE_DIR} /src/model/nrlmsise00_tn.cpp"
281
288
"${CMAKE_CURRENT_SOURCE_DIR} /src/model/jb08_tn.cpp"
282
289
"${CMAKE_CURRENT_SOURCE_DIR} /src/model/sgp4.cpp"
290
+ "${CMAKE_CURRENT_SOURCE_DIR} /src/model/time_conversions.cpp"
291
+ "${CMAKE_CURRENT_SOURCE_DIR} /src/model/frame_transformations.cpp"
292
+ "${CMAKE_CURRENT_SOURCE_DIR} /src/model/era.cpp"
283
293
# Callbacks.
284
294
"${CMAKE_CURRENT_SOURCE_DIR} /src/callback/angle_reducer.cpp"
285
295
# Math functions.
@@ -330,7 +340,7 @@ if(HEYOKA_WITH_SLEEF)
330
340
endif ()
331
341
332
342
# Setup the heyoka ABI version number.
333
- set (HEYOKA_ABI_VERSION 34 )
343
+ set (HEYOKA_ABI_VERSION 35 )
334
344
335
345
if (HEYOKA_BUILD_STATIC_LIBRARY)
336
346
# Setup of the heyoka static library.
@@ -501,36 +511,26 @@ find_package(TBB REQUIRED CONFIG)
501
511
target_link_libraries (heyoka PRIVATE TBB::tbb)
502
512
503
513
# Mandatory dependency on Boost.
504
- # NOTE: need 1.69 for safe numerics .
505
- set (_HEYOKA_MIN_BOOST_VERSION "1.69 " )
514
+ # NOTE: need 1.85 for charconv .
515
+ set (_HEYOKA_MIN_BOOST_VERSION "1.85 " )
506
516
# NOTE: we look for Boost in CONFIG mode first, as that has become the official supported way
507
517
# of locating Boost in recent Boost/CMake versions. If we fail, we try again in
508
518
# MODULE mode as last resort.
509
- find_package (Boost ${_HEYOKA_MIN_BOOST_VERSION} QUIET COMPONENTS serialization CONFIG)
519
+ find_package (Boost ${_HEYOKA_MIN_BOOST_VERSION} QUIET COMPONENTS serialization charconv CONFIG)
510
520
if (NOT ${Boost_FOUND} )
511
521
message (STATUS "Boost not found in CONFIG mode, retrying in MODULE mode." )
512
- find_package (Boost ${_HEYOKA_MIN_BOOST_VERSION} QUIET MODULE COMPONENTS serialization)
522
+ find_package (Boost ${_HEYOKA_MIN_BOOST_VERSION} QUIET MODULE COMPONENTS serialization charconv )
513
523
endif ()
514
524
if (NOT ${Boost_FOUND} )
515
525
message (FATAL_ERROR "Could not locate Boost in either CONFIG or MODULE mode." )
516
526
endif ()
517
527
message (STATUS "Found Boost version ${Boost_VERSION} ." )
518
528
target_link_libraries (heyoka PUBLIC Boost::boost Boost::serialization)
529
+ target_link_libraries (heyoka PRIVATE Boost::charconv)
519
530
# NOTE: quench warnings from Boost when building the library.
520
531
target_compile_definitions (heyoka PRIVATE BOOST_ALLOW_DEPRECATED_HEADERS)
521
-
522
- # NOTE: recent versions of libcxx remove std::unary_function/std::binary_function
523
- # (which have been deprecated since long) in C++17 mode. This breaks, e.g., hashing
524
- # functionality on older Boost versions. See:
525
- # https://github.com/boostorg/container_hash/issues/22
526
- # Note that the better approach here would be to detect libcxx rather than
527
- # just Apple, but at this time it seems like there's no easy way to detect
528
- # the stdlib implementation/version from CMake.
529
- if (APPLE AND Boost_VERSION VERSION_LESS "1.81.0" )
530
- # NOTE: make this a PUBLIC definition just to err on the side
531
- # of caution.
532
- target_compile_definitions (heyoka PUBLIC BOOST_NO_CXX98_FUNCTION_BASE)
533
- endif ()
532
+ # NOTE: make sure we do not use deprecated ASIO bits.
533
+ target_compile_definitions (heyoka PRIVATE BOOST_ASIO_NO_DEPRECATED)
534
534
535
535
# Optional dependency on mp++.
536
536
set (_HEYOKA_MIN_SUPPORTED_MPPP_VERSION 2)
@@ -571,6 +571,10 @@ if(HEYOKA_WITH_SLEEF)
571
571
target_link_libraries (heyoka PRIVATE heyoka::SLEEF)
572
572
endif ()
573
573
574
+ # Mandatory private dependency on openssl.
575
+ find_package (OpenSSL REQUIRED CONFIG)
576
+ target_link_libraries (heyoka PRIVATE OpenSSL::SSL OpenSSL::Crypto)
577
+
574
578
# Configure config.hpp.
575
579
configure_file ("${CMAKE_CURRENT_SOURCE_DIR} /config.hpp.in" "${CMAKE_CURRENT_BINARY_DIR} /include/heyoka/config.hpp" @ONLY)
576
580
@@ -627,3 +631,7 @@ endif()
627
631
if (HEYOKA_BUILD_TUTORIALS)
628
632
add_subdirectory (tutorial)
629
633
endif ()
634
+
635
+ if (HEYOKA_BUILD_UTILS)
636
+ add_subdirectory (utils)
637
+ endif ()
0 commit comments