aboutsummaryrefslogtreecommitdiff
path: root/gn/packages/datastructures.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gn/packages/datastructures.scm')
-rw-r--r--gn/packages/datastructures.scm117
1 files changed, 117 insertions, 0 deletions
diff --git a/gn/packages/datastructures.scm b/gn/packages/datastructures.scm
new file mode 100644
index 0000000..1744420
--- /dev/null
+++ b/gn/packages/datastructures.scm
@@ -0,0 +1,117 @@
+;; Datastructures module
+
+(define-module (gn packages datastructures)
+ #:use-module (guix packages)
+ #:use-module (guix gexp)
+ #:use-module (guix utils)
+ #:use-module (gnu packages datastructures))
+
+(define sdsl-lite-x86-64-v2
+ (package/inherit sdsl-lite
+ (name "sdsl-lite-x86-64-v2")
+ (arguments
+ (substitute-keyword-arguments (package-arguments sdsl-lite)
+ ((#:configure-flags flags #~'())
+ #~(append (list "-DCMAKE_CXX_FLAGS=-march=x86-64-v2"
+ "-DCMAKE_INSTALL_LIBDIR=lib/glibc-hwcaps/x86-64-v2"
+ (string-append "-DCMAKE_INSTALL_RPATH=" #$output
+ "/lib/glibc-hwcaps/x86-64-v2"))
+ #$flags))
+ ;; The building machine can't necessarily run the code produced.
+ ((#:tests? _ #t) #f)
+ ((#:phases phases #~%standard-phases)
+ #~(modify-phases #$phases
+ (add-after 'install 'remove-extra-files
+ (lambda _
+ (delete-file-recursively (string-append #$output "/include"))))
+ (replace 'install-static-library
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((lib "/lib/glibc-hwcaps/x86-64-v2/libsdsl.a"))
+ (mkdir-p (dirname (string-append #$output:static lib)))
+ (copy-file "lib/libsdsl_static.a"
+ (string-append #$output:static lib)))))))))
+ (supported-systems '("x86_64-linux"))
+ (properties `((hidden? . #t)))))
+
+(define sdsl-lite-x86-64-v3
+ (package/inherit sdsl-lite
+ (name "sdsl-lite-x86-64-v3")
+ (arguments
+ (substitute-keyword-arguments (package-arguments sdsl-lite)
+ ((#:configure-flags flags #~'())
+ #~(append (list "-DCMAKE_CXX_FLAGS=-march=x86-64-v3"
+ "-DCMAKE_INSTALL_LIBDIR=lib/glibc-hwcaps/x86-64-v3"
+ (string-append "-DCMAKE_INSTALL_RPATH=" #$output
+ "/lib/glibc-hwcaps/x86-64-v3"))
+ #$flags))
+ ;; The building machine can't necessarily run the code produced.
+ ((#:tests? _ #t) #f)
+ ((#:phases phases #~%standard-phases)
+ #~(modify-phases #$phases
+ (add-after 'install 'remove-extra-files
+ (lambda _
+ (delete-file-recursively (string-append #$output "/include"))))
+ (replace 'install-static-library
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((lib "/lib/glibc-hwcaps/x86-64-v3/libsdsl.a"))
+ (mkdir-p (dirname (string-append #$output:static lib)))
+ (copy-file "lib/libsdsl_static.a"
+ (string-append #$output:static lib)))))))))
+ (supported-systems '("x86_64-linux"))
+ (properties `((hidden? . #t)))))
+
+(define sdsl-lite-x86-64-v4
+ (package/inherit sdsl-lite
+ (name "sdsl-lite-x86-64-v4")
+ (arguments
+ (substitute-keyword-arguments (package-arguments sdsl-lite)
+ ((#:configure-flags flags #~'())
+ #~(append (list "-DCMAKE_CXX_FLAGS=-march=x86-64-v4"
+ "-DCMAKE_INSTALL_LIBDIR=lib/glibc-hwcaps/x86-64-v4"
+ (string-append "-DCMAKE_INSTALL_RPATH=" #$output
+ "/lib/glibc-hwcaps/x86-64-v4"))
+ #$flags))
+ ;; The building machine can't necessarily run the code produced.
+ ((#:tests? _ #t) #f)
+ ((#:phases phases #~%standard-phases)
+ #~(modify-phases #$phases
+ (add-after 'install 'remove-extra-files
+ (lambda _
+ (delete-file-recursively (string-append #$output "/include"))))
+ (replace 'install-static-library
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((lib "/lib/glibc-hwcaps/x86-64-v4/libsdsl.a"))
+ (mkdir-p (dirname (string-append #$output:static lib)))
+ (copy-file "lib/libsdsl_static.a"
+ (string-append #$output:static lib)))))))))
+ (supported-systems '("x86_64-linux"))
+ (properties `((hidden? . #t)))))
+
+(define-public sdsl-lite-hwcaps
+ (package/inherit sdsl-lite
+ (name "sdsl-lite-hwcaps")
+ (arguments
+ (substitute-keyword-arguments (package-arguments sdsl-lite)
+ ((#:phases phases #~%standard-phases)
+ #~(modify-phases #$phases
+ (add-after 'install 'install-optimized-libraries
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((hwcaps "/lib/glibc-hwcaps"))
+ (copy-recursively
+ (string-append (assoc-ref inputs "sdsl-lite-x86-64-v2")
+ hwcaps "/x86-64-v2")
+ (string-append #$output hwcaps "/x86-64-v2"))
+ (copy-recursively
+ (string-append (assoc-ref inputs "sdsl-lite-x86-64-v3")
+ hwcaps "/x86-64-v3")
+ (string-append #$output hwcaps "/x86-64-v3"))
+ (copy-recursively
+ (string-append (assoc-ref inputs "sdsl-lite-x86-64-v4")
+ hwcaps "/x86-64-v4")
+ (string-append #$output hwcaps "/x86-64-v4")))))))))
+ (native-inputs
+ (modify-inputs (package-native-inputs sdsl-lite)
+ (append sdsl-lite-x86-64-v2
+ sdsl-lite-x86-64-v3
+ sdsl-lite-x86-64-v4)))
+ (properties `((tunable? . #f)))))