;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Ethan R. Jones <doubleplusgood23@gmail.com>
-;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
;;; Copyright © 2020 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2020 Alexandros Theodotou <alex@zrythm.org>
+;;; Copyright © 2020, 2021 Greg Hogan <code@greghogan.com>
+;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
+;;; Copyright © 2020 Milkey Mouse <milkeymouse@meme.institute>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
+ #:use-module (guix modules)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages boost)
+ #:use-module (gnu packages c)
#:use-module (gnu packages check)
#:use-module (gnu packages code)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages crypto)
+ #:use-module (gnu packages curl)
+ #:use-module (gnu packages documentation)
+ #:use-module (gnu packages gcc)
+ #:use-module (gnu packages libevent)
+ #:use-module (gnu packages libunwind)
+ #:use-module (gnu packages linux)
#:use-module (gnu packages llvm)
+ #:use-module (gnu packages logging)
+ #:use-module (gnu packages maths)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages popt)
+ #:use-module (gnu packages pretty-print)
#:use-module (gnu packages tls)
#:use-module (gnu packages web))
+(define-public range-v3
+ (package
+ (name "range-v3")
+ (version "0.11.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://github.com/ericniebler/range-v3.git")
+ (commit version)))
+ (file-name
+ (git-file-name name version))
+ (sha256
+ (base32 "18230bg4rq9pmm5f8f65j444jpq56rld4fhmpham8q3vr1c1bdjh"))))
+ (build-system cmake-build-system)
+ (native-inputs
+ `(("doxygen" ,doxygen)
+ ("perl" ,perl)))
+ (inputs
+ `(("boost" ,boost)))
+ (synopsis "Range library for C++14/17/20")
+ (description "Range-v3 is an extension of the Standard Template Library that
+makes its iterators and algorithms more powerful by making them composable.
+Unlike other range-like solutions which, seek to do away with iterators, in
+range-v3 ranges are an abstraction layer on top of iterators.")
+ (home-page "https://github.com/ericniebler/range-v3/")
+ (license
+ (list
+ ;; Elements of Programming
+ (license:x11-style "file:///LICENSE.txt")
+ ;; SGI STL
+ license:sgifreeb2.0
+ ;;; LibC++ (dual-licensed)
+ license:expat
+ license:ncsa
+ ;; Others
+ license:boost1.0))))
+
+(define-public c++-gsl
+ (package
+ (name "c++-gsl")
+ (version "3.1.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://github.com/microsoft/GSL.git")
+ (commit
+ (string-append "v" version))))
+ (file-name
+ (git-file-name name version))
+ (patches
+ (search-patches
+ "c++-gsl-find-system-gtest.patch"))
+ (sha256
+ (base32 "0gbvr48f03830g3154bjhw92b8ggmg6wwh5xyb8nppk9v6w752l0"))))
+ (build-system cmake-build-system)
+ (native-inputs
+ `(("googletest" ,googletest)
+ ("pkg-config" ,pkg-config)))
+ (synopsis "Guidelines Support Library")
+ (description "c++-gsl contains functions and types that are suggested for
+use by the C++ Core Guidelines maintained by the Standard C++ Foundation.")
+ (home-page "https://github.com/microsoft/GSL/")
+ (license license:expat)))
+
(define-public libzen
(package
(name "libzen")
- (version "0.4.37")
+ (version "0.4.38")
(source (origin
(method url-fetch)
;; Warning: This source has proved unreliable 1 time at least.
;; Consider an alternate source or report upstream if this
;; happens again.
(uri (string-append "https://mediaarea.net/download/source/"
- name "/" version "/"
- name "_" version ".tar.bz2"))
+ "libzen/" version "/"
+ "libzen_" version ".tar.bz2"))
(sha256
(base32
- "1dkqbgabzpa6bd7dkqrvd35sdxrhr6qxalb88f3dw0afk65xqb0k"))))
+ "1nkygc17sndznpcf71fdrhwpm8z9a3hc9csqlafwswh49axhfkjr"))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
(build-system gnu-build-system)
(arguments
'(#:phases
- ;; build scripts not in root of archive
+ ;; The build scripts are not at the root of the archive.
(modify-phases %standard-phases
(add-after 'unpack 'pre-configure
(lambda _
operating system functions.")
(license license:zlib)))
+(define-public rttr
+ (package
+ (name "rttr")
+ (version "0.9.6")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/rttrorg/rttr/")
+ (commit (string-append "v" version))))
+ (sha256
+ (base32 "1yxad8sj40wi75hny8w6imrsx8wjasjmsipnlq559n4b6kl84ijp"))
+ (file-name (git-file-name name version))))
+ (build-system cmake-build-system)
+ (arguments
+ '(;; No check target. Setting test-target to "unit_test" runs it twice.
+ #:tests? #f
+ #:configure-flags
+ '("-DBUILD_DOCUMENTATION=OFF" "-DBUILD_EXAMPLES=OFF")
+ #:phases
+ (modify-phases %standard-phases
+ ;; library_test fails in chroot.
+ (add-after 'unpack 'skip-library-test
+ (lambda _
+ (substitute* "src/unit_tests/unit_tests.cmake"
+ (("misc/library_test.cpp") ""))
+ #t)))))
+ (native-inputs `(("pkg-config" ,pkg-config)))
+ (home-page "https://github.com/rttrorg/rttr/")
+ (synopsis "C++ Reflection Library")
+ (description
+ "RTTR stands for Run Time Type Reflection. It describes the ability of a
+computer program to introspect and modify an object at runtime. It is also
+the name of the library itself, which is written in C++.")
+ (license license:expat)))
+
(define-public rct
(let* ((commit "b3e6f41d9844ef64420e628e0c65ed98278a843a")
(revision "2"))
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/aseba-community/dashel.git")
+ (url "https://github.com/aseba-community/dashel")
(commit version)))
(sha256
(base32 "0anks2l2i2qp0wlzqck1qgpq15a3l6dg8lw2h8s4nsj7f61lffwy"))
(define-public xsimd
(package
(name "xsimd")
- (version "7.2.3")
+ (version "7.4.9")
(source
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/QuantStack/xsimd.git")
+ (url "https://github.com/QuantStack/xsimd")
(commit version)))
(sha256
- (base32 "1ny2qin1j4h35mljivh8z52kwdyjxf4yxlzb8j52ji91v2ccc88j"))
+ (base32 "11by8gbshm4vv6flqp0ihff8c6nmbaqq7ms93b38rrq68bigcply"))
(file-name (git-file-name name version))))
(build-system cmake-build-system)
(arguments
`(("googletest" ,googletest)))
(home-page "https://github.com/QuantStack/xsimd")
(synopsis "C++ wrappers for SIMD intrinsics and math implementations")
- (description "xsimd provides a unified means for using SIMD features for
-library authors. Namely, it enables manipulation of batches of numbers with
-the same arithmetic operators as for single values. It also provides
-accelerated implementation of common mathematical functions operating on
-batches.")
+ (description
+ "xsimd provides a unified means for using @acronym{SIMD, single instruction
+multiple data} features for library authors. Namely, it enables manipulation of
+batches of numbers with the same arithmetic operators as for single values.
+It also provides accelerated implementation of common mathematical functions
+operating on batches.")
+ (license license:bsd-3)))
+
+(define-public chaiscript
+ (package
+ (name "chaiscript")
+ (version "6.1.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ChaiScript/ChaiScript")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0i1c88rn1wwz8nf3dpapcdkk4w623m3nksfy5yjai10k9irkzy3c"))))
+ (build-system cmake-build-system)
+ (home-page "https://chaiscript.com/")
+ (synopsis "Embedded scripting language designed for C++")
+ (description
+ "ChaiScript is one of the only embedded scripting language designed from
+the ground up to directly target C++ and take advantage of modern C++
+development techniques. Being a native C++ application, it has some advantages
+over existing embedded scripting languages:
+
+@enumerate
+@item Uses a header-only approach, which makes it easy to integrate with
+existing projects.
+@item Maintains type safety between your C++ application and the user scripts.
+@item Supports a variety of C++ techniques including callbacks, overloaded
+functions, class methods, and stl containers.
+@end enumerate\n")
(license license:bsd-3)))
(define-public fifo-map
(define-public json-modern-cxx
(package
(name "json-modern-cxx")
- (version "3.7.3")
+ (version "3.9.1")
(home-page "https://github.com/nlohmann/json")
(source
(origin
(uri (git-reference (url home-page)
(commit (string-append "v" version))))
(sha256
- (base32
- "04rry1xzis71z5gj1ylcj8b4li5q18zxhcwaviwvi3hx0frzxl9w"))
+ (base32 "0ar4mzp53lskxw3vdzw07f47njcshl3lwid9jfq6l7yx6ds2nyjc"))
(file-name (git-file-name name version))
(modules '((guix build utils)))
(snippet
(string-append
"#include <fifo_map/" fifo-map-hpp ">")))))
#t))))
+ (build-system cmake-build-system)
+ (arguments
+ '(#:configure-flags
+ (list "-DJSON_MultipleHeaders=ON" ; For json_fwd.hpp.
+ (string-append "-DJSON_TestDataDirectory="
+ (assoc-ref %build-inputs "json_test_data")))
+ #:phases (modify-phases %standard-phases
+ ;; XXX: When tests are enabled, the install phase will cause
+ ;; a needless rebuild without the given configure flags,
+ ;; ultimately creating both $out/lib and $out/lib64. Move
+ ;; the check phase after install to work around it.
+ (delete 'check)
+ (add-after 'install 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ ;; Some tests need git and a full checkout, skip those.
+ (invoke "ctest" "-LE" "git_required")
+ (format #t "test suite not run~%"))
+ #t)))))
(native-inputs
`(("amalgamate" ,amalgamate)
- ("doctest" ,doctest)))
+ ("doctest" ,doctest)
+ ("json_test_data"
+ ,(let ((version "3.0.0"))
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/nlohmann/json_test_data")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name "json_test_data" version))
+ (sha256
+ (base32
+ "0nzsjzlvk14dazwh7k2jb1dinb0pv9jbx5jsyn264wvva0y7daiv")))))))
(inputs
`(("fifo-map" ,fifo-map)))
- (build-system cmake-build-system)
(synopsis "JSON parser and printer library for C++")
(description "JSON for Modern C++ is a C++ JSON library that provides
intuitive syntax and trivial integration.")
(define-public xtl
(package
(name "xtl")
- (version "0.6.8")
+ (version "0.6.23")
(source (origin
(method git-fetch)
(uri
(git-reference
- (url "https://github.com/QuantStack/xtl.git")
+ (url "https://github.com/QuantStack/xtl")
(commit version)))
(sha256
(base32
- "13gm8vm1b9nzvlcc632f9khnjw1xdjqj6c7k51r173y1hlk0div7"))
+ "1kd9zl4h6nrsg29hq13vwp4zhfj8sa90vj40726lpw6vxz48k4di"))
(file-name (git-file-name name version))))
(native-inputs
`(("googletest" ,googletest)
(define-public ccls
(package
(name "ccls")
- (version "0.20190823.5")
+ (version "0.20201025")
(source
(origin
(method git-fetch)
(url "https://github.com/MaskRay/ccls")
(commit version)))
(sha256
- (base32 "0b2pkpzn576b92zcxpwchpkyw2fww6s69818rx4g9z34kzm35zy5"))
+ (base32
+ "13v00q1bz8g0ckw1sv0zyicbc44irc00vhwxdv3vvwlvylm7s21p"))
(file-name (git-file-name name version))))
(build-system cmake-build-system)
(arguments
- '(#:tests? #f)) ; no check target.
+ '(#:tests? #f)) ; no check target
(inputs
`(("rapidjson" ,rapidjson)))
(native-inputs
(define-public gperftools
(package
(name "gperftools")
- (version "2.7")
+ (version "2.8.1")
(source
(origin
(method git-fetch)
(url "https://github.com/gperftools/gperftools")
(commit (string-append "gperftools-" version))))
(sha256
- (base32 "0amvwrzn5qc0b0jpxpy5g6zkmj97zjh4hhjrd130hsg2lwwcwhy1"))
+ (base32 "19bj2vlsbfwq7m826v2ccqg47kd7cb5vcz1yw2x0v5qzhaxbakk1"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
+ (arguments
+ ;; The tests are flaky when run in parallel. For more info:
+ ;; https://bugs.gnu.org/46562
+ '(#:parallel-tests? #f))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)
- ;; For tests:
+ ;; For tests.
("perl" ,perl)))
(home-page "https://github.com/gperftools/gperftools")
(synopsis "Multi-threaded malloc() and performance analysis tools for C++")
(define-public cpplint
(package
(name "cpplint")
- (version "1.4.4")
+ (version "1.4.5")
(source
(origin
(method git-fetch)
(url "https://github.com/cpplint/cpplint")
(commit version)))
(sha256
- (base32 "1ns9wbizr10w7rpyp106d7ip68s5nyskr54vw9bij11sci9z0v3j"))
+ (base32 "1yzcxqx0186sh80p0ydl9z0ld51fn2cdpz9hmhrp15j53g9ira7c"))
(file-name (git-file-name name version))))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'use-later-pytest
+ (lambda _
+ (substitute* "test-requirements"
+ (("pytest.*") "pytest\n"))
+ #t)))))
(build-system python-build-system)
+ (native-inputs
+ `(("python-pytest" ,python-pytest)
+ ("python-pytest-cov" ,python-pytest-cov)
+ ("python-pytest-runner" ,python-pytest-runner)))
(home-page "https://github.com/cpplint/cpplint")
(synopsis "Static code checker for C++")
(description "@code{cpplint} is a command-line tool to check C/C++ files
and make @code{cpplint} usable in wider contexts.")
(license license:bsd-3)))
+(define-public reproc
+ (package
+ (name "reproc")
+ (version "14.1.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/DaanDeMeyer/reproc")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1n71wb50qv2dmhjgw7azx5gigbrp19l2n3d41g9p05l5l0y1qg0q"))))
+ (build-system cmake-build-system)
+ (arguments
+ ;; No tests.
+ `(#:tests? #f
+ ;; Enable building of shared library.
+ #:configure-flags `("-DBUILD_SHARED_LIBS=1")))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (synopsis "Process IO library")
+ (description "reproc (Redirected Process) is a C/C++ library that
+simplifies starting, stopping and communicating with external programs. The
+main use case is executing command line applications directly from C or C++
+code and retrieving their output.")
+ (home-page "https://github.com/DaanDeMeyer/reproc")
+ (license license:expat)))
+
(define-public sobjectizer
(package
(name "sobjectizer")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/Stiffstream/sobjectizer.git")
+ (url "https://github.com/Stiffstream/sobjectizer")
(commit (string-append "v." version))))
(sha256
(base32 "0jfai7sqxnnjkms38krm7mssj5l79nb3pllkbyj4j581a7l5j6l5"))
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/mobius3/tweeny.git")
+ (url "https://github.com/mobius3/tweeny")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(define-public abseil-cpp
(package
(name "abseil-cpp")
- (version "20200225")
+ (version "20200225.2")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/abseil/abseil-cpp.git")
+ (url "https://github.com/abseil/abseil-cpp")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
- "0wb04pszzrl39ny1pz9jvvq8lbbm355dd60jspcyqfwxnk6njgd1"))))
+ "0dwxg54pv6ihphbia0iw65r64whd7v8nm4wwhcz219642cgpv54y"))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags (list "-DBUILD_SHARED_LIBS=ON"
augment the C++ standard library. The Abseil library code is collected from
Google's C++ code base.")
(license license:asl2.0)))
+
+(define-public pegtl
+ (package
+ (name "pegtl")
+ (version "2.8.3")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/taocpp/PEGTL")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "17crgjfdx55imi2dqnz6xpvsxq07390yfgkz5nd2g77ydkvq9db3"))))
+ (build-system cmake-build-system)
+ (home-page "https://github.com/taocpp/PEGTL")
+ (synopsis "Parsing Expression Grammar template library")
+ (description "The Parsing Expression Grammar Template Library (PEGTL) is
+a zero-dependency C++ header-only parser combinator library for creating
+parsers according to a Parsing Expression Grammar (PEG).")
+ (license license:expat)))
+
+(define-public cxxopts
+ (package
+ (name "cxxopts")
+ (version "2.2.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/jarro2783/cxxopts")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0d3y747lsh1wkalc39nxd088rbypxigm991lk3j91zpn56whrpha"))))
+ (build-system cmake-build-system)
+ (synopsis "Lightweight C++ command line option parser")
+ (description
+ "A lightweight header-only C++ option parser library, supporting the
+standard GNU style syntax for options.")
+ (home-page "https://github.com/jarro2783/cxxopts/wiki")
+ (license license:expat)))
+
+(define-public folly
+ (package
+ (name "folly")
+ (version "2021.01.25.00")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/facebook/folly")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "14dl1g6vf7mc90mcync5h2lp14fwcx8n9h91pmiq6rfgv1fjjrwz"))))
+ (build-system cmake-build-system)
+ (arguments
+ '(;; Tests must be explicitly enabled
+ ;;#:configure-flags '("-DBUILD_TESTS=ON")))
+ ;; Leave tests disabled; see https://github.com/facebook/folly/issues/1456
+ #:tests? #f))
+ (propagated-inputs
+ `(("boost" ,boost)
+ ("gflags" ,gflags)
+ ("glog" ,glog)
+ ("liburing" ,liburing)))
+ (inputs
+ `(("bzip2" ,bzip2)
+ ("double-conversion" ,double-conversion)
+ ("fmt" ,fmt)
+ ("libaio" ,libaio)
+ ("libevent" ,libevent)
+ ("libiberty" ,libiberty)
+ ("libsodium" ,libsodium)
+ ("libunwind" ,libunwind)
+ ("lz4" ,lz4)
+ ("openssl" ,openssl)
+ ("snappy" ,snappy)
+ ("zlib" ,zlib)
+ ("zstd" ,zstd "lib")))
+ (native-inputs
+ `(("googletest" ,googletest)))
+ (synopsis "Collection of C++ components complementing the standard library")
+ (description
+ "Folly (acronymed loosely after Facebook Open Source Library) is a library
+of C++14 components that complements @code{std} and Boost.")
+ (home-page "https://github.com/facebook/folly/wiki")
+ ;; 32-bit is not supported: https://github.com/facebook/folly/issues/103
+ (supported-systems '("aarch64-linux" "x86_64-linux"))
+ (license license:asl2.0)))
+
+(define-public aws-sdk-cpp
+ (package
+ (name "aws-sdk-cpp")
+ (version "1.8.102")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/aws/aws-sdk-cpp")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1w8x2vakg5ngjyyg08n4g3dqy8wqnz0k3gkrlqrh460s2pvdivba"))))
+ (build-system cmake-build-system)
+ (arguments
+ '(;; Tests are run during the build phase.
+ #:tests? #f
+ #:configure-flags
+ '("-DBUILD_SHARED_LIBS=OFF"
+ "-DBUILD_DEPS=OFF")))
+ (propagated-inputs
+ `(("aws-c-common" ,aws-c-common)
+ ("aws-c-event-stream" ,aws-c-event-stream)))
+ (inputs
+ `(("aws-checksums" ,aws-checksums)
+ ("curl" ,curl)
+ ("openssl" ,openssl)
+ ("zlib" ,zlib)))
+ (synopsis "Amazon Web Services SDK for C++")
+ (description
+ "The AWS SDK for C++ provides a C++11 interface to the @acronym{AWS,Amazon
+Web Services} API. AWS provides on-demand computing infrastructure and software
+services including database, analytic, and machine learning technologies.")
+ (home-page "https://github.com/aws/aws-sdk-cpp")
+ (license license:asl2.0)))
+
+(define-public libexpected
+ (package
+ (name "libexpected")
+ (version "1.0.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/TartanLlama/expected")
+ (commit (string-append "v" version))
+ ;; NOTE: Requires TL_CMAKE from custom
+ ;; repository. Should not affect reproducibility.
+ (recursive? #t)))
+ (file-name (git-file-name name version))
+ ;; NOTE: This patch will be unnecessary on subsequent tags.
+ (patches (search-patches "libexpected-nofetch.patch"))
+ (sha256
+ (base32 "1ckzfrljzzdw9wf8hvdfjz4wjx5na57iwxc48mbv9rf5067m21a5"))))
+ (build-system cmake-build-system)
+ ;; TODO: Clean up install phase.
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (invoke "./tests"))))))
+ (native-inputs
+ `(("catch2" ,catch-framework2)))
+ (synopsis "C++11/14/17 std::expected with functional-style extensions")
+ (description "@code{std::expected} is proposed as the preferred way to
+represent objects which will either have an expected value, or an unexpected
+value giving information about why something failed. Unfortunately, chaining
+together many computations which may fail can be verbose, as error-checking
+code will be mixed in with the actual programming logic. This implementation
+provides a number of utilities to make coding with expected cleaner.")
+ (home-page "https://tl.tartanllama.xyz/")
+ (license license:cc0)))
+
+(define-public magic-enum
+ (package
+ (name "magic-enum")
+ (version "0.7.2")
+ (home-page "https://github.com/Neargye/magic_enum")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "07j5zdf3vkliwrcv6k663k35akn7qp23794sz2mnvkj9hbv9s8cx"))))
+ (build-system cmake-build-system)
+ (native-inputs
+ `(("gcc" ,gcc-9)))
+ (synopsis "C++17 header only library for compile time reflection of enums")
+ (description "Magic Enum offers static reflection of enums, with
+conversions to and from strings, iteration and related functionality.")
+ (license license:expat)))
+
+(define-public cli11
+ (package
+ (name "cli11")
+ (version "1.9.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/CLIUtils/CLI11")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0hbch0vk8irgmiaxnfqlqys65v1770rxxdfn3d23m2vqyjh0j9l6"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin (delete-file-recursively "extern")
+ #t))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags
+ '("-DCLI11_SINGLE_FILE=OFF"
+ "-DCLI11_BUILD_EXAMPLES=OFF")
+ #:imported-modules ,%cmake-build-system-modules
+ #:modules ((guix build cmake-build-system)
+ (guix build utils))
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'no-vendor-gtest
+ (lambda _
+ (substitute* "tests/CMakeLists.txt"
+ ;; We provide our own googletest, so this is not really a
+ ;; problem.
+ (("message\\(FATAL_ERROR \"You have requested")
+ "message(TRACE \"You have requested"))
+ (substitute* "cmake/AddGoogletest.cmake"
+ (("^add_subdirectory\\(.*googletest.*$") "find_package(GTest REQUIRED)")
+ (("^set_target_properties\\(gtest gtest_main gmock gmock_main") "")
+ (("^ PROPERTIES FOLDER \"Extern\"\\)") ""))
+ #t)))))
+ (native-inputs
+ `(("doxygen" ,doxygen)
+ ("googletest" ,googletest)))
+ (synopsis "Command line parser for C++11")
+ (description
+ "CLI11 is a command line parser for C++11 and beyond that provides a rich
+feature set with a simple and intuitive interface.")
+ (home-page "https://cliutils.github.io/CLI11/book/")
+ (license license:bsd-3)))
+
+(define-public caf
+ (package
+ (name "caf")
+ (version "0.18.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/actor-framework/actor-framework")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1c3spd6vm1h9qhlk5c4fdwi6nbqx5vwz2zvv6qp0rj1hx6xpq3cx"))))
+ (build-system cmake-build-system)
+ (arguments
+ '(#:configure-flags
+ '("-DCAF_ENABLE_EXAMPLES=OFF")))
+ (inputs
+ `(("openssl" ,openssl)))
+ (synopsis "C++ implementation of the actor model")
+ (description "The C++ Actor Framework (CAF) offers a high-level C++17
+programming environment using the actor model for concurrent, distributed
+computation.")
+ (home-page "https://www.actor-framework.org/")
+ (license license:bsd-3)))
+
+(define-public pcg-cpp
+ (let ((commit "5b5cac8d61339e810c5dbb4692d868a1d7ca1b2d")
+ (revision "1"))
+ (package
+ (name "pcg-cpp")
+ (version (git-version "0.98.1" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/imneme/pcg-cpp")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1s9dcd4iydlc1xj9m6f7c52nlyx99klk043sk7arqy6kp7gdaa33"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:test-target "test"
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure))
+ #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
+ (synopsis "C++11 header only library for random number generation")
+ (description "The Permuted Congruential Generator (PCG) extends the
+Linear Congruential Generator (LCG) with a permutation function to increase
+output randomness while retaining speed, simplicity, and conciseness.")
+ (home-page "https://www.pcg-random.org")
+ (license (list license:expat license:asl2.0))))) ; dual licensed