dannym pushed a commit to branch master
in repository guix.

commit 5d46903b4c1982e6ee1959c1578c57020bd0773a
Author: Danny Milosavljevic <[email protected]>
AuthorDate: Mon Jan 20 00:56:27 2025 +0100

    gnu: Add aklomp-base64.
    
    * gnu/packages/cpp.scm (aklomp-base64): New variable.
    
    Change-Id: I95d1e254abf190c526ac06c2a52ebc3b656dee45
---
 gnu/packages/cpp.scm | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 89 insertions(+)

diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 3146cfea64..17b1c514d5 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -3562,3 +3562,92 @@ Specification for URL parser can be found from the 
WHATWG website.")
      "This is a simple C++ library that facilitates parsing command line
 arguments in a type independent manner.")
     (license license:expat)))
+
+(define-public aklomp-base64
+  (package
+    (name "aklomp-base64")
+    (version "0.5.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/aklomp/base64.git";)
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0xc541vhq44d9i1vf5hyrznqd1kyad9qbvsghcfr17pk1xyqv1kl"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list #:tests? #t
+           #:phases
+           #~(modify-phases %standard-phases
+               (replace 'check
+                 (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
+                   (if tests?
+                       (invoke "ctest" "-VV" "--build-config" "Release" 
"--output-on-failure")
+                       (format #t "test suite not run~%")))))
+
+           #:configure-flags
+           #~(append
+              (list "-DBASE64_BUILD_TESTS=ON"
+                    "-DCMAKE_BUILD_TYPE=Release")
+              (let ((system #$(or (%current-target-system)
+                                  (%current-system))))
+                (cond
+                 ;; ARM 64-bit (aarch64)
+                 ((string-prefix? "aarch64-" system)
+                  (list
+                   "-DCMAKE_C_FLAGS=-march=armv8-a"
+                   "-DNEON64_CFLAGS= "
+                   "-DBASE64_WITH_NEON64=ON"
+                   "-DBASE64_WITH_AVX2=OFF"
+                   "-DBASE64_WITH_SSSE3=OFF"
+                   "-DBASE64_WITH_SSE41=OFF"
+                   "-DBASE64_WITH_SSE42=OFF"
+                   "-DBASE64_WITH_AVX=OFF"
+                   "-DBASE64_WITH_AVX512=OFF"))
+                 ;; ARM 32-bit (armhf)
+                 ((string-prefix? "armhf-" system)
+                  (list
+                   "-DCMAKE_C_FLAGS=-march=armv7 -mfpu=neon"
+                   "-DNEON32_CFLAGS=-march=armv7 -mfpu=neon"
+                   "-DBASE64_WITH_NEON32=ON"
+                   "-DBASE64_WITH_AVX2=OFF"
+                   "-DBASE64_WITH_SSSE3=OFF"
+                   "-DBASE64_WITH_SSE41=OFF"
+                   "-DBASE64_WITH_SSE42=OFF"
+                   "-DBASE64_WITH_AVX=OFF"
+                   "-DBASE64_WITH_AVX512=OFF"))
+                 ;; x86_64 (with all extensions except AVX512).
+                 ((string-prefix? "x86_64-" system)
+                  (list
+                   "-DAVX2_CFLAGS=-mavx2"
+                   "-DSSSE3_CFLAGS=-mssse3"
+                   "-DSSE41_CFLAGS=-msse4.1"
+                   "-DSSE42_CFLAGS=-msse4.2"
+                   "-DAVX_CFLAGS=-mavx"
+                   "-DBASE64_WITH_AVX512=OFF"))
+                 ;; i686 (32-bit x86, limited extensions)
+                 ((string-prefix? "i686-" system)
+                  (list
+                   "-DSSE41_CFLAGS=-msse4.1"
+                   "-DSSE42_CFLAGS=-msse4.2"
+                   "-DBASE64_WITH_AVX=OFF"
+                   "-DBASE64_WITH_AVX2=OFF"
+                   "-DBASE64_WITH_AVX512=OFF"))
+                 (else
+                  (list
+                   "-DBASE64_WITH_AVX2=OFF"
+                   "-DBASE64_WITH_SSSE3=OFF"
+                   "-DBASE64_WITH_SSE41=OFF"
+                   "-DBASE64_WITH_SSE42=OFF"
+                   "-DBASE64_WITH_AVX=OFF"
+                   "-DBASE64_WITH_AVX512=OFF"
+                   "-DBASE64_WITH_NEON32=OFF"
+                   "-DBASE64_WITH_NEON64=OFF")))))))
+    (synopsis "Fast base64 stream encoder/decoder")
+    (description "This package provides a base64 stream encoder/decoder
+written in C99.")
+    (properties `((tunable? . #t)))
+    (home-page "https://github.com/aklomp/base64";)
+    (license license:bsd-2)))

Reply via email to