From 10f65dc422f98e2d679754e194ea7c70328b7784 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 24 Sep 2023 15:23:03 +0300 Subject: Provide copy of sdsl-lite with glibc-hwcaps --- gn/packages/datastructures.scm | 117 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 gn/packages/datastructures.scm (limited to 'gn/packages/datastructures.scm') 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))))) -- cgit v1.2.3