projects/guix·blob version-1.2.0 · refs

732 lines · 28.1 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2017 Ethan R. Jones <[email protected]>
3;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <[email protected]>
4;;; Copyright © 2018 Fis Trivial <[email protected]>
5;;; Copyright © 2018 Ludovic Courtès <[email protected]>
6;;; Copyright © 2019, 2020 Mathieu Othacehe <[email protected]>
7;;; Copyright © 2019 Pierre Neidhardt <[email protected]>
8;;; Copyright © 2019 Jan Wielkiewicz <[email protected]>
9;;; Copyright © 2020 Nicolò Balzarotti <[email protected]>
10;;; Copyright © 2020 Roel Janssen <[email protected]>
11;;; Copyright © 2020 Ricardo Wurmus <[email protected]>
12;;; Copyright © 2020 Brice Waegeneire <[email protected]>
13;;; Copyright © 2020 Vinicius Monego <[email protected]>
14;;; Copyright © 2020 Marius Bakke <[email protected]>
15;;; Copyright © 2020 Michael Rohleder <[email protected]>
16;;; Copyright © 2020 Alexandros Theodotou <[email protected]>
17;;; Copyright © 2020 Greg Hogan <[email protected]>
18;;; Copyright © 2020 Brett Gilio <[email protected]>
19;;;
20;;; This file is part of GNU Guix.
21;;;
22;;; GNU Guix is free software; you can redistribute it and/or modify it
23;;; under the terms of the GNU General Public License as published by
24;;; the Free Software Foundation; either version 3 of the License, or (at
25;;; your option) any later version.
26;;;
27;;; GNU Guix is distributed in the hope that it will be useful, but
28;;; WITHOUT ANY WARRANTY; without even the implied warranty of
29;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30;;; GNU General Public License for more details.
31;;;
32;;; You should have received a copy of the GNU General Public License
33;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
34
35(define-module (gnu packages cpp)
36 #:use-module ((guix licenses) #:prefix license:)
37 #:use-module (guix packages)
38 #:use-module (guix download)
39 #:use-module (guix git-download)
40 #:use-module (guix build-system cmake)
41 #:use-module (guix build-system gnu)
42 #:use-module (guix build-system python)
43 #:use-module (gnu packages)
44 #:use-module (gnu packages autotools)
45 #:use-module (gnu packages boost)
46 #:use-module (gnu packages check)
47 #:use-module (gnu packages code)
48 #:use-module (gnu packages compression)
49 #:use-module (gnu packages crypto)
50 #:use-module (gnu packages gcc)
51 #:use-module (gnu packages libevent)
52 #:use-module (gnu packages libunwind)
53 #:use-module (gnu packages linux)
54 #:use-module (gnu packages llvm)
55 #:use-module (gnu packages logging)
56 #:use-module (gnu packages maths)
57 #:use-module (gnu packages perl)
58 #:use-module (gnu packages pkg-config)
59 #:use-module (gnu packages popt)
60 #:use-module (gnu packages pretty-print)
61 #:use-module (gnu packages tls)
62 #:use-module (gnu packages web))
63
64(define-public libzen
65 (package
66 (name "libzen")
67 (version "0.4.38")
68 (source (origin
69 (method url-fetch)
70 ;; Warning: This source has proved unreliable 1 time at least.
71 ;; Consider an alternate source or report upstream if this
72 ;; happens again.
73 (uri (string-append "https://mediaarea.net/download/source/"
74 "libzen/" version "/"
75 "libzen_" version ".tar.bz2"))
76 (sha256
77 (base32
78 "1nkygc17sndznpcf71fdrhwpm8z9a3hc9csqlafwswh49axhfkjr"))))
79 (native-inputs
80 `(("autoconf" ,autoconf)
81 ("automake" ,automake)
82 ("libtool" ,libtool)))
83 (build-system gnu-build-system)
84 (arguments
85 '(#:phases
86 ;; The build scripts are not at the root of the archive.
87 (modify-phases %standard-phases
88 (add-after 'unpack 'pre-configure
89 (lambda _
90 (chdir "Project/GNU/Library")
91 #t)))))
92 (home-page "https://github.com/MediaArea/ZenLib")
93 (synopsis "C++ utility library")
94 (description "ZenLib is a C++ utility library. It includes classes for handling
95strings, configuration, bit streams, threading, translation, and cross-platform
96operating system functions.")
97 (license license:zlib)))
98
99(define-public rttr
100 (package
101 (name "rttr")
102 (version "0.9.6")
103 (source
104 (origin
105 (method git-fetch)
106 (uri (git-reference
107 (url "https://github.com/rttrorg/rttr/")
108 (commit (string-append "v" version))))
109 (sha256
110 (base32 "1yxad8sj40wi75hny8w6imrsx8wjasjmsipnlq559n4b6kl84ijp"))
111 (file-name (git-file-name name version))))
112 (build-system cmake-build-system)
113 (arguments
114 '(;; No check target. Setting test-target to "unit_test" runs it twice.
115 #:tests? #f
116 #:configure-flags
117 '("-DBUILD_DOCUMENTATION=OFF" "-DBUILD_EXAMPLES=OFF")
118 #:phases
119 (modify-phases %standard-phases
120 ;; library_test fails in chroot.
121 (add-after 'unpack 'skip-library-test
122 (lambda _
123 (substitute* "src/unit_tests/unit_tests.cmake"
124 (("misc/library_test.cpp") ""))
125 #t)))))
126 (native-inputs `(("pkg-config" ,pkg-config)))
127 (home-page "https://github.com/rttrorg/rttr/")
128 (synopsis "C++ Reflection Library")
129 (description
130 "RTTR stands for Run Time Type Reflection. It describes the ability of a
131computer program to introspect and modify an object at runtime. It is also
132the name of the library itself, which is written in C++.")
133 (license license:expat)))
134
135(define-public rct
136 (let* ((commit "b3e6f41d9844ef64420e628e0c65ed98278a843a")
137 (revision "2"))
138 (package
139 (name "rct")
140 (version (git-version "0.0.0" revision commit))
141 (source (origin
142 (method git-fetch)
143 (uri (git-reference
144 (url "https://github.com/Andersbakken/rct")
145 (commit commit)))
146 (sha256
147 (base32
148 "1m2931jacka27ghnpgf1z1plkkr64z0pga4r4zdrfpp2d7xnrdvb"))
149 (patches (search-patches "rct-add-missing-headers.patch"))
150 (file-name (git-file-name name version))))
151 (build-system cmake-build-system)
152 (arguments
153 '(#:configure-flags
154 '("-DWITH_TESTS=ON" ; To run the test suite
155 "-DRCT_RTTI_ENABLED=ON")))
156 (native-inputs
157 `(("cppunit" ,cppunit)
158 ("pkg-config" ,pkg-config)))
159 (inputs
160 `(("openssl" ,openssl)
161 ("zlib" ,zlib)))
162 (home-page "https://github.com/Andersbakken/rct")
163 (synopsis "C++ library providing Qt-like APIs on top of the STL")
164 (description "Rct is a set of C++ tools that provide nicer (more Qt-like)
165 APIs on top of Standard Template Library (@dfn{STL}) classes.")
166 (license (list license:expat ; cJSON
167 license:bsd-4))))) ; everything else (LICENSE.txt)
168
169(define-public dashel
170 (package
171 (name "dashel")
172 (version "1.3.3")
173 (source
174 (origin
175 (method git-fetch)
176 (uri (git-reference
177 (url "https://github.com/aseba-community/dashel")
178 (commit version)))
179 (sha256
180 (base32 "0anks2l2i2qp0wlzqck1qgpq15a3l6dg8lw2h8s4nsj7f61lffwy"))
181 (file-name (git-file-name name version))))
182 (build-system cmake-build-system)
183 (arguments '(#:tests? #f)) ; no tests
184 (native-inputs `(("pkg-config" ,pkg-config)))
185 (home-page "https://github.com/aseba-community/dashel")
186 (synopsis "Data stream helper encapsulation library")
187 (description
188 "Dashel is a data stream helper encapsulation C++ library. It provides a
189unified access to TCP/UDP sockets, serial ports, console, and files streams.
190It also allows a server application to wait for any activity on any
191combination of these streams.")
192 (license license:bsd-3)))
193
194(define-public xsimd
195 (package
196 (name "xsimd")
197 (version "7.2.3")
198 (source
199 (origin
200 (method git-fetch)
201 (uri (git-reference
202 (url "https://github.com/QuantStack/xsimd")
203 (commit version)))
204 (sha256
205 (base32 "1ny2qin1j4h35mljivh8z52kwdyjxf4yxlzb8j52ji91v2ccc88j"))
206 (file-name (git-file-name name version))))
207 (build-system cmake-build-system)
208 (arguments
209 `(#:configure-flags (list "-DBUILD_TESTS=ON")
210 #:test-target "xtest"))
211 (native-inputs
212 `(("googletest" ,googletest)))
213 (home-page "https://github.com/QuantStack/xsimd")
214 (synopsis "C++ wrappers for SIMD intrinsics and math implementations")
215 (description "xsimd provides a unified means for using SIMD features for
216library authors. Namely, it enables manipulation of batches of numbers with
217the same arithmetic operators as for single values. It also provides
218accelerated implementation of common mathematical functions operating on
219batches.")
220 (license license:bsd-3)))
221
222(define-public chaiscript
223 (package
224 (name "chaiscript")
225 (version "6.1.0")
226 (source
227 (origin
228 (method git-fetch)
229 (uri (git-reference
230 (url "https://github.com/ChaiScript/ChaiScript")
231 (commit (string-append "v" version))))
232 (file-name (git-file-name name version))
233 (sha256
234 (base32 "0i1c88rn1wwz8nf3dpapcdkk4w623m3nksfy5yjai10k9irkzy3c"))))
235 (build-system cmake-build-system)
236 (home-page "https://chaiscript.com/")
237 (synopsis "Embedded scripting language designed for C++")
238 (description
239 "ChaiScript is one of the only embedded scripting language designed from
240the ground up to directly target C++ and take advantage of modern C++
241development techniques. Being a native C++ application, it has some advantages
242over existing embedded scripting languages:
243
244@enumerate
245@item Uses a header-only approach, which makes it easy to integrate with
246existing projects.
247@item Maintains type safety between your C++ application and the user scripts.
248@item Supports a variety of C++ techniques including callbacks, overloaded
249functions, class methods, and stl containers.
250@end enumerate\n")
251 (license license:bsd-3)))
252
253(define-public fifo-map
254 (let* ((commit "0dfbf5dacbb15a32c43f912a7e66a54aae39d0f9")
255 (revision "0")
256 (version (git-version "1.1.1" revision commit)))
257 (package
258 (name "fifo-map")
259 (version version)
260 (home-page "https://github.com/nlohmann/fifo_map")
261 (source (origin
262 (method git-fetch)
263 (uri (git-reference
264 (url home-page)
265 (commit commit)))
266 (sha256
267 (base32
268 "0pi77b75kp0l7z454ihcd14nzpi3nc5m4nyjbsgy5f9bw3676196"))
269 (patches (search-patches "fifo-map-remove-catch.hpp.patch"
270 "fifo-map-fix-flags-for-gcc.patch"))
271 (file-name (git-file-name name version))
272 (modules '((guix build utils)))
273 (snippet '(delete-file-recursively "./test/thirdparty"))))
274 (native-inputs
275 `(("catch2" ,catch-framework2-1)))
276 (build-system cmake-build-system)
277 (arguments
278 `(#:phases
279 (modify-phases %standard-phases
280 (replace 'check
281 (lambda _
282 (invoke "./unit")))
283 (replace 'install
284 (lambda* (#:key outputs #:allow-other-keys)
285 (let* ((out (assoc-ref outputs "out"))
286 (inc (string-append out "/include/fifo_map")))
287 (with-directory-excursion
288 (string-append "../" ,name "-" ,version "-checkout")
289 (install-file "src/fifo_map.hpp" inc)
290 #t)))))))
291 (synopsis "FIFO-ordered associative container for C++")
292 (description "Fifo_map is a C++ header only library for associative
293container which uses the order in which keys were inserted to the container
294as ordering relation.")
295 (license license:expat))))
296
297(define-public json-modern-cxx
298 (package
299 (name "json-modern-cxx")
300 (version "3.9.1")
301 (home-page "https://github.com/nlohmann/json")
302 (source
303 (origin
304 (method git-fetch)
305 (uri (git-reference (url home-page)
306 (commit (string-append "v" version))))
307 (sha256
308 (base32 "0ar4mzp53lskxw3vdzw07f47njcshl3lwid9jfq6l7yx6ds2nyjc"))
309 (file-name (git-file-name name version))
310 (modules '((guix build utils)))
311 (snippet
312 '(begin
313 ;; Delete bundled software. Preserve doctest_compatibility.h, which
314 ;; is a wrapper library added by this package.
315 (install-file "./test/thirdparty/doctest/doctest_compatibility.h" "/tmp")
316 (for-each delete-file-recursively
317 '("./third_party" "./test/thirdparty" "./benchmarks/thirdparty"))
318 (install-file "/tmp/doctest_compatibility.h" "./test/thirdparty/doctest")
319
320 ;; Adjust for the unbundled fifo_map and doctest.
321 (substitute* "./test/thirdparty/doctest/doctest_compatibility.h"
322 (("#include \"doctest\\.h\"")
323 "#include <doctest/doctest.h>"))
324 (with-directory-excursion "test/src"
325 (let ((files (find-files "." "\\.cpp$")))
326 (substitute* files
327 (("#include ?\"(fifo_map.hpp)\"" all fifo-map-hpp)
328 (string-append
329 "#include <fifo_map/" fifo-map-hpp ">")))))
330 #t))))
331 (build-system cmake-build-system)
332 (arguments
333 '(#:configure-flags
334 (list (string-append "-DJSON_TestDataDirectory="
335 (assoc-ref %build-inputs "json_test_data")))
336 #:phases (modify-phases %standard-phases
337 ;; XXX: When tests are enabled, the install phase will cause
338 ;; a needless rebuild without the given configure flags,
339 ;; ultimately creating both $out/lib and $out/lib64. Move
340 ;; the check phase after install to work around it.
341 (delete 'check)
342 (add-after 'install 'check
343 (lambda* (#:key tests? #:allow-other-keys)
344 (if tests?
345 ;; Some tests need git and a full checkout, skip those.
346 (invoke "ctest" "-LE" "git_required")
347 (format #t "test suite not run~%"))
348 #t)))))
349 (native-inputs
350 `(("amalgamate" ,amalgamate)
351 ("doctest" ,doctest)
352 ("json_test_data"
353 ,(let ((version "3.0.0"))
354 (origin
355 (method git-fetch)
356 (uri (git-reference
357 (url "https://github.com/nlohmann/json_test_data")
358 (commit (string-append "v" version))))
359 (file-name (git-file-name "json_test_data" version))
360 (sha256
361 (base32
362 "0nzsjzlvk14dazwh7k2jb1dinb0pv9jbx5jsyn264wvva0y7daiv")))))))
363 (inputs
364 `(("fifo-map" ,fifo-map)))
365 (synopsis "JSON parser and printer library for C++")
366 (description "JSON for Modern C++ is a C++ JSON library that provides
367intuitive syntax and trivial integration.")
368 (license license:expat)))
369
370(define-public nlohmann-json-cpp
371 (deprecated-package "nlohmann-json-cpp" json-modern-cxx))
372
373(define-public xtl
374 (package
375 (name "xtl")
376 (version "0.6.21")
377 (source (origin
378 (method git-fetch)
379 (uri
380 (git-reference
381 (url "https://github.com/QuantStack/xtl")
382 (commit version)))
383 (sha256
384 (base32
385 "08xhyy9fm2ddkdrgb1qyd2bs371a2xr7xzar482pwphz27vr035w"))
386 (file-name (git-file-name name version))))
387 (native-inputs
388 `(("googletest" ,googletest)
389 ("json-modern-cxx" ,json-modern-cxx)))
390 (arguments
391 `(#:configure-flags
392 '("-DBUILD_TESTS=ON")
393 #:phases
394 (modify-phases %standard-phases
395 (replace 'check
396 (lambda* _
397 (with-directory-excursion "test"
398 (invoke "./test_xtl")
399 #t))))))
400 (home-page "https://github.com/QuantStack/xtl")
401 (build-system cmake-build-system)
402 (synopsis "C++ template library providing some basic tools")
403 (description "xtl is a C++ header-only template library providing basic
404tools (containers, algorithms) used by other QuantStack packages.")
405 (license license:bsd-3)))
406
407(define-public ccls
408 (package
409 (name "ccls")
410 (version "0.20201025")
411 (source
412 (origin
413 (method git-fetch)
414 (uri (git-reference
415 (url "https://github.com/MaskRay/ccls")
416 (commit version)))
417 (sha256
418 (base32
419 "13v00q1bz8g0ckw1sv0zyicbc44irc00vhwxdv3vvwlvylm7s21p"))
420 (file-name (git-file-name name version))))
421 (build-system cmake-build-system)
422 (arguments
423 '(#:tests? #f)) ; no check target
424 (inputs
425 `(("rapidjson" ,rapidjson)))
426 (native-inputs
427 `(("clang" ,clang)
428 ("llvm" ,llvm)))
429 (home-page "https://github.com/MaskRay/ccls")
430 (synopsis "C/C++/Objective-C language server")
431 (description
432 "@code{ccls} is a server implementing the Language Server Protocol (LSP)
433for C, C++ and Objective-C languages. It uses @code{clang} to perform static
434code analysis and supports cross references, hierarchies, completion and
435syntax highlighting. @code{ccls} is derived from @code{cquery} which is not
436maintained anymore.")
437 (license license:asl2.0)))
438
439(define-public gperftools
440 (package
441 (name "gperftools")
442 (version "2.8")
443 (source
444 (origin
445 (method git-fetch)
446 (uri (git-reference
447 (url "https://github.com/gperftools/gperftools")
448 (commit (string-append "gperftools-" version))))
449 (sha256
450 (base32 "1rnc53kaxlljgbpsff906vdsry9jl9gcvcnmxgkprwzxq1wipyd0"))
451 (file-name (git-file-name name version))))
452 (build-system gnu-build-system)
453 (native-inputs
454 `(("autoconf" ,autoconf)
455 ("automake" ,automake)
456 ("libtool" ,libtool)
457 ;; For tests.
458 ("perl" ,perl)))
459 (home-page "https://github.com/gperftools/gperftools")
460 (synopsis "Multi-threaded malloc() and performance analysis tools for C++")
461 (description
462 "@code{gperftools} is a collection of a high-performance multi-threaded
463malloc() implementation plus some thread-friendly performance analysis
464tools:
465
466@itemize
467@item tcmalloc,
468@item heap profiler,
469@item heap checker,
470@item CPU checker.
471@end itemize\n")
472 (license license:bsd-3)))
473
474(define-public cpplint
475 (package
476 (name "cpplint")
477 (version "1.4.5")
478 (source
479 (origin
480 (method git-fetch)
481 ;; Fetch from github instead of pypi, since the test cases are not in
482 ;; the pypi archive.
483 (uri (git-reference
484 (url "https://github.com/cpplint/cpplint")
485 (commit version)))
486 (sha256
487 (base32 "1yzcxqx0186sh80p0ydl9z0ld51fn2cdpz9hmhrp15j53g9ira7c"))
488 (file-name (git-file-name name version))))
489 (arguments
490 `(#:phases
491 (modify-phases %standard-phases
492 (add-before 'check 'use-later-pytest
493 (lambda _
494 (substitute* "test-requirements"
495 (("pytest.*") "pytest\n"))
496 #t)))))
497 (build-system python-build-system)
498 (native-inputs
499 `(("python-pytest" ,python-pytest)
500 ("python-pytest-cov" ,python-pytest-cov)
501 ("python-pytest-runner" ,python-pytest-runner)))
502 (home-page "https://github.com/cpplint/cpplint")
503 (synopsis "Static code checker for C++")
504 (description "@code{cpplint} is a command-line tool to check C/C++ files
505for style issues following Google’s C++ style guide. While Google maintains
506it's own version of the tool, this is a fork that aims to be more responsive
507and make @code{cpplint} usable in wider contexts.")
508 (license license:bsd-3)))
509
510(define-public reproc
511 (package
512 (name "reproc")
513 (version "14.1.0")
514 (source
515 (origin
516 (method git-fetch)
517 (uri (git-reference
518 (url "https://github.com/DaanDeMeyer/reproc")
519 (commit (string-append "v" version))))
520 (file-name (git-file-name name version))
521 (sha256
522 (base32
523 "1n71wb50qv2dmhjgw7azx5gigbrp19l2n3d41g9p05l5l0y1qg0q"))))
524 (build-system cmake-build-system)
525 (arguments
526 ;; No tests.
527 `(#:tests? #f
528 ;; Enable building of shared library.
529 #:configure-flags `("-DBUILD_SHARED_LIBS=1")))
530 (native-inputs
531 `(("pkg-config" ,pkg-config)))
532 (synopsis "Process IO library")
533 (description "reproc (Redirected Process) is a C/C++ library that
534simplifies starting, stopping and communicating with external programs. The
535main use case is executing command line applications directly from C or C++
536code and retrieving their output.")
537 (home-page "https://github.com/DaanDeMeyer/reproc")
538 (license license:expat)))
539
540(define-public sobjectizer
541 (package
542 (name "sobjectizer")
543 (version "5.6.1")
544 (source
545 (origin
546 (method git-fetch)
547 (uri (git-reference
548 (url "https://github.com/Stiffstream/sobjectizer")
549 (commit (string-append "v." version))))
550 (sha256
551 (base32 "0jfai7sqxnnjkms38krm7mssj5l79nb3pllkbyj4j581a7l5j6l5"))
552 (file-name (git-file-name name version))))
553 (build-system cmake-build-system)
554 (arguments
555 `(#:tests? #f
556 #:phases
557 (modify-phases %standard-phases
558 (add-after 'unpack 'change-directory
559 (lambda _
560 (chdir "dev")
561 #t)))))
562 (home-page "https://stiffstream.com/en/products/sobjectizer.html")
563 (synopsis "Cross-platform actor framework for C++")
564 (description
565 "SObjectizer is a cross-platform \"actor frameworks\" for C++.
566SObjectizer supports not only the Actor Model but also the Publish-Subscribe
567Model and CSP-like channels. The goal of SObjectizer is to simplify
568development of concurrent and multithreaded applications in C++.")
569 (license license:bsd-3)))
570
571(define-public tweeny
572 (package
573 (name "tweeny")
574 (version "3")
575 (source
576 (origin
577 (method git-fetch)
578 (uri (git-reference
579 (url "https://github.com/mobius3/tweeny")
580 (commit (string-append "v" version))))
581 (file-name (git-file-name name version))
582 (sha256
583 (base32 "1adm4c17pi7xf3kf6sjyxibz5rdg1ka236p72xsm6js4j9gzlbp4"))))
584 (arguments
585 '(#:tests? #f)) ;no check target
586 (build-system cmake-build-system)
587 (home-page "https://mobius3.github.io/tweeny/")
588 (synopsis "Modern C++ tweening library")
589 (description "@code{Tweeny} is an inbetweening library designed for the
590creation of complex animations for games and other beautiful interactive
591software. It leverages features of modern @code{C++} to empower developers with
592an intuitive API for declaring tweenings of any type of value, as long as they
593support arithmetic operations. The goal of @code{Tweeny} is to provide means to
594create fluid interpolations when animating position, scale, rotation, frames or
595other values of screen objects, by setting their values as the tween starting
596point and then, after each tween step, plugging back the result.")
597 (license license:expat)))
598
599(define-public abseil-cpp
600 (package
601 (name "abseil-cpp")
602 (version "20200225.2")
603 (source (origin
604 (method git-fetch)
605 (uri (git-reference
606 (url "https://github.com/abseil/abseil-cpp")
607 (commit version)))
608 (file-name (git-file-name name version))
609 (sha256
610 (base32
611 "0dwxg54pv6ihphbia0iw65r64whd7v8nm4wwhcz219642cgpv54y"))))
612 (build-system cmake-build-system)
613 (arguments
614 `(#:configure-flags (list "-DBUILD_SHARED_LIBS=ON"
615 "-DABSL_RUN_TESTS=ON"
616 ;; Needed, else we get errors like:
617 ;;
618 ;; ld: CMakeFiles/absl_periodic_sampler_test.dir/internal/periodic_sampler_test.cc.o:
619 ;; undefined reference to symbol '_ZN7testing4Mock16UnregisterLockedEPNS_8internal25UntypedFunctionMockerBaseE'
620 ;; ld: /gnu/store/...-googletest-1.10.0/lib/libgmock.so:
621 ;; error adding symbols: DSO missing from command line
622 ;; collect2: error: ld returned 1 exit status
623 "-DCMAKE_EXE_LINKER_FLAGS=-lgtest -lpthread -lgmock")
624 #:phases
625 (modify-phases %standard-phases
626 (add-before 'configure 'remove-gtest-check
627 ;; The CMakeLists fails to find our googletest for some reason, but
628 ;; it works nonetheless.
629 (lambda _
630 (substitute* "CMakeLists.txt"
631 (("check_target\\(gtest\\)") "")
632 (("check_target\\(gtest_main\\)") "")
633 (("check_target\\(gmock\\)") "")))))))
634 (native-inputs
635 `(("googletest" ,googletest)))
636 (home-page "https://abseil.io")
637 (synopsis "Augmented C++ standard library")
638 (description "Abseil is a collection of C++ library code designed to
639augment the C++ standard library. The Abseil library code is collected from
640Google's C++ code base.")
641 (license license:asl2.0)))
642
643(define-public pegtl
644 (package
645 (name "pegtl")
646 (version "2.8.3")
647 (source (origin
648 (method git-fetch)
649 (uri (git-reference
650 (url "https://github.com/taocpp/PEGTL")
651 (commit version)))
652 (file-name (git-file-name name version))
653 (sha256
654 (base32
655 "17crgjfdx55imi2dqnz6xpvsxq07390yfgkz5nd2g77ydkvq9db3"))))
656 (build-system cmake-build-system)
657 (home-page "https://github.com/taocpp/PEGTL")
658 (synopsis "Parsing Expression Grammar template library")
659 (description "The Parsing Expression Grammar Template Library (PEGTL) is
660a zero-dependency C++ header-only parser combinator library for creating
661parsers according to a Parsing Expression Grammar (PEG).")
662 (license license:expat)))
663
664(define-public cxxopts
665 (package
666 (name "cxxopts")
667 (version "2.2.1")
668 (source (origin
669 (method git-fetch)
670 (uri (git-reference
671 (url "https://github.com/jarro2783/cxxopts")
672 (commit (string-append "v" version))))
673 (file-name (git-file-name name version))
674 (sha256
675 (base32
676 "0d3y747lsh1wkalc39nxd088rbypxigm991lk3j91zpn56whrpha"))))
677 (build-system cmake-build-system)
678 (synopsis "Lightweight C++ command line option parser")
679 (description
680 "A lightweight header-only C++ option parser library, supporting the
681standard GNU style syntax for options.")
682 (home-page "https://github.com/jarro2783/cxxopts/wiki")
683 (license license:expat)))
684
685(define-public folly
686 (package
687 (name "folly")
688 (version "2020.10.05.00")
689 (source (origin
690 (method git-fetch)
691 (uri (git-reference
692 (url "https://github.com/facebook/folly")
693 (commit (string-append "v" version))))
694 (file-name (git-file-name name version))
695 (sha256
696 (base32
697 "0q4w4cvjxffc462hvs8h4zryq4965j7015zvkwagcm6cj6wmz3cn"))))
698 (build-system cmake-build-system)
699 (arguments
700 '(;; Tests must be explicitly enabled
701 ;;#:configure-flags '("-DBUILD_TESTS=ON")))
702 ;; Leave tests disabled; see https://github.com/facebook/folly/issues/1456
703 #:tests? #f))
704 (propagated-inputs
705 `(("boost" ,boost)
706 ("gflags" ,gflags)
707 ("glog" ,glog)
708 ("liburing" ,liburing)))
709 (inputs
710 `(("bzip2" ,bzip2)
711 ("double-conversion" ,double-conversion)
712 ("fmt" ,fmt)
713 ("libaio" ,libaio)
714 ("libevent" ,libevent)
715 ("libiberty" ,libiberty)
716 ("libsodium" ,libsodium)
717 ("libunwind" ,libunwind)
718 ("lz4" ,lz4)
719 ("openssl" ,openssl)
720 ("snappy" ,snappy)
721 ("zlib" ,zlib)
722 ("zstd" ,zstd "lib")))
723 (native-inputs
724 `(("googletest" ,googletest)))
725 (synopsis "Collection of C++ components complementing the standard library")
726 (description
727 "Folly (acronymed loosely after Facebook Open Source Library) is a library
728of C++14 components that complements @code{std} and Boost.")
729 (home-page "https://github.com/facebook/folly/wiki")
730 ;; 32-bit is not supported: https://github.com/facebook/folly/issues/103
731 (supported-systems '("aarch64-linux" "x86_64-linux"))
732 (license license:asl2.0)))