;; 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)))))