X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/792c3db553a02714f32fdfad639c6e168b30033b..295b4f7e17e76d0fea929047287e0e84bdca890b:/gnu/packages/cpp.scm diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm index 7870184a52..5e83bb69f6 100644 --- a/gnu/packages/cpp.scm +++ b/gnu/packages/cpp.scm @@ -1,12 +1,17 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 Ethan R. Jones -;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice +;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice ;;; Copyright © 2018 Fis Trivial ;;; Copyright © 2018 Ludovic Courtès -;;; Copyright © 2019 Mathieu Othacehe +;;; Copyright © 2019, 2020 Mathieu Othacehe ;;; Copyright © 2019 Pierre Neidhardt ;;; Copyright © 2019 Jan Wielkiewicz -;;; Copyright © 2019 Brett Gilio +;;; Copyright © 2020 Nicolò Balzarotti +;;; Copyright © 2020 Roel Janssen +;;; Copyright © 2020 Ricardo Wurmus +;;; Copyright © 2020 Brice Waegeneire +;;; Copyright © 2020 Vinicius Monego +;;; Copyright © 2020 Marius Bakke ;;; ;;; This file is part of GNU Guix. ;;; @@ -36,9 +41,7 @@ #:use-module (gnu packages check) #:use-module (gnu packages code) #:use-module (gnu packages compression) - #:use-module (gnu packages gcc) #:use-module (gnu packages llvm) - #:use-module (gnu packages ncurses) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages tls) @@ -47,18 +50,18 @@ (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) @@ -66,7 +69,7 @@ (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 _ @@ -121,7 +124,7 @@ operating system functions.") (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")) @@ -146,7 +149,7 @@ combination of these streams.") (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")) @@ -166,6 +169,37 @@ 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 (let* ((commit "0dfbf5dacbb15a32c43f912a7e66a54aae39d0f9") (revision "0") @@ -188,7 +222,7 @@ batches.") (modules '((guix build utils))) (snippet '(delete-file-recursively "./test/thirdparty")))) (native-inputs - `(("catch2" ,catch-framework2))) + `(("catch2" ,catch-framework2-1))) (build-system cmake-build-system) (arguments `(#:phases @@ -213,7 +247,7 @@ as ordering relation.") (define-public json-modern-cxx (package (name "json-modern-cxx") - (version "3.7.3") + (version "3.9.0") (home-page "https://github.com/nlohmann/json") (source (origin @@ -222,7 +256,7 @@ as ordering relation.") (commit (string-append "v" version)))) (sha256 (base32 - "04rry1xzis71z5gj1ylcj8b4li5q18zxhcwaviwvi3hx0frzxl9w")) + "06wmbnwbisbq3rqdbmi297hidvq6q8vs6j4z0a9qpr4sm721lwa6")) (file-name (git-file-name name version)) (modules '((guix build utils))) (snippet @@ -245,12 +279,51 @@ as ordering relation.") (string-append "#include "))))) #t)))) + (build-system cmake-build-system) + (arguments + '(#:configure-flags + (list (string-append "-DJSON_TestDataDirectory=" + (assoc-ref %build-inputs "json_test_data"))) + #:phases (modify-phases %standard-phases + (add-after 'unpack 'fix-pkg-config-install + (lambda _ + ;; This phase can be removed for versions >= 3.9.1. + (substitute* "CMakeLists.txt" + ;; Look for the generated .pc in the right place ... + (("\\$\\{CMAKE_BINARY_DIR\\}/\\$\\{PROJECT_NAME\\}\\.pc") + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc") + ;; ... and install it to the libdir. + (("DESTINATION lib/pkgconfig") + "DESTINATION \"${CMAKE_INSTALL_LIBDIR}/pkgconfig\"")) + #t)) + ;; 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.") @@ -262,16 +335,16 @@ intuitive syntax and trivial integration.") (define-public xtl (package (name "xtl") - (version "0.6.8") + (version "0.6.15") (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")) + "0kq88cbcsvgq4hinrzxirqfpfnm3c5a0x0n2309l9zawh8vm33j4")) (file-name (git-file-name name version)))) (native-inputs `(("googletest" ,googletest) @@ -296,7 +369,7 @@ tools (containers, algorithms) used by other QuantStack packages.") (define-public ccls (package (name "ccls") - (version "0.20190823.5") + (version "0.20190823.6") (source (origin (method git-fetch) @@ -304,21 +377,16 @@ tools (containers, algorithms) used by other QuantStack packages.") (url "https://github.com/MaskRay/ccls") (commit version))) (sha256 - (base32 "0b2pkpzn576b92zcxpwchpkyw2fww6s69818rx4g9z34kzm35zy5")) + (base32 "11h5nwk4qqshf3i8yr4bxpnvmidrhkzd0zxhf1xqv8cv6r08k47f")) (file-name (git-file-name name version)))) (build-system cmake-build-system) (arguments - `(#:tests? #f ; no check target. - #:configure-flags - (list (string-append "-DCMAKE_CXX_FLAGS='-isystem " - (assoc-ref %build-inputs "gcc") - "/include/c++'")))) - (inputs - `(("clang" ,clang) - ("ncurses" ,ncurses))) + '(#:tests? #f)) ; no check target + (inputs + `(("rapidjson" ,rapidjson))) (native-inputs - `(("rapidjson" ,rapidjson) - ("gcc" ,gcc))) + `(("clang" ,clang) + ("llvm" ,llvm))) (home-page "https://github.com/MaskRay/ccls") (synopsis "C/C++/Objective-C language server") (description @@ -332,7 +400,7 @@ maintained anymore.") (define-public gperftools (package (name "gperftools") - (version "2.7") + (version "2.8") (source (origin (method git-fetch) @@ -340,14 +408,14 @@ maintained anymore.") (url "https://github.com/gperftools/gperftools") (commit (string-append "gperftools-" version)))) (sha256 - (base32 "0amvwrzn5qc0b0jpxpy5g6zkmj97zjh4hhjrd130hsg2lwwcwhy1")) + (base32 "1rnc53kaxlljgbpsff906vdsry9jl9gcvcnmxgkprwzxq1wipyd0")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (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++") @@ -367,7 +435,7 @@ tools: (define-public cpplint (package (name "cpplint") - (version "1.4.4") + (version "1.4.5") (source (origin (method git-fetch) @@ -377,9 +445,21 @@ tools: (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 @@ -396,7 +476,7 @@ and make @code{cpplint} usable in wider contexts.") (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")) @@ -418,3 +498,96 @@ SObjectizer supports not only the Actor Model but also the Publish-Subscribe Model and CSP-like channels. The goal of SObjectizer is to simplify development of concurrent and multithreaded applications in C++.") (license license:bsd-3))) + +(define-public tweeny + (package + (name "tweeny") + (version "3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mobius3/tweeny") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1adm4c17pi7xf3kf6sjyxibz5rdg1ka236p72xsm6js4j9gzlbp4")))) + (arguments + '(#:tests? #f)) ;no check target + (build-system cmake-build-system) + (home-page "https://mobius3.github.io/tweeny/") + (synopsis "Modern C++ tweening library") + (description "@code{Tweeny} is an inbetweening library designed for the +creation of complex animations for games and other beautiful interactive +software. It leverages features of modern @code{C++} to empower developers with +an intuitive API for declaring tweenings of any type of value, as long as they +support arithmetic operations. The goal of @code{Tweeny} is to provide means to +create fluid interpolations when animating position, scale, rotation, frames or +other values of screen objects, by setting their values as the tween starting +point and then, after each tween step, plugging back the result.") + (license license:expat))) + +(define-public abseil-cpp + (package + (name "abseil-cpp") + (version "20200225.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/abseil/abseil-cpp") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0dwxg54pv6ihphbia0iw65r64whd7v8nm4wwhcz219642cgpv54y")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags (list "-DBUILD_SHARED_LIBS=ON" + "-DABSL_RUN_TESTS=ON" + ;; Needed, else we get errors like: + ;; + ;; ld: CMakeFiles/absl_periodic_sampler_test.dir/internal/periodic_sampler_test.cc.o: + ;; undefined reference to symbol '_ZN7testing4Mock16UnregisterLockedEPNS_8internal25UntypedFunctionMockerBaseE' + ;; ld: /gnu/store/...-googletest-1.10.0/lib/libgmock.so: + ;; error adding symbols: DSO missing from command line + ;; collect2: error: ld returned 1 exit status + "-DCMAKE_EXE_LINKER_FLAGS=-lgtest -lpthread -lgmock") + #:phases + (modify-phases %standard-phases + (add-before 'configure 'remove-gtest-check + ;; The CMakeLists fails to find our googletest for some reason, but + ;; it works nonetheless. + (lambda _ + (substitute* "CMakeLists.txt" + (("check_target\\(gtest\\)") "") + (("check_target\\(gtest_main\\)") "") + (("check_target\\(gmock\\)") ""))))))) + (native-inputs + `(("googletest" ,googletest))) + (home-page "https://abseil.io") + (synopsis "Augmented C++ standard library") + (description "Abseil is a collection of C++ library code designed to +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)))