~ruther/guix-local

dc9a5257a9aeeb159ceb6cfad816c335586758be — Christopher Rodriguez 3 years ago 4e7c113
gnu: Add cbqn.

* gnu/packages/bqn.scm (cbqn): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
1 files changed, 47 insertions(+), 0 deletions(-)

M gnu/packages/bqn.scm
M gnu/packages/bqn.scm => gnu/packages/bqn.scm +47 -0
@@ 175,3 175,50 @@ by APL.")
      (file-name (git-file-name "singeli-sources" commit))
      (sha256
       (base32 "1rr4l7ijzcg25n2igi1mzya6qllh5wsrf3m5i429rlgwv1fwvfji")))))

(define-public cbqn
  (package
    (inherit cbqn-bootstrap)
    (name "cbqn")
    (outputs '("out" "lib"))
    (arguments
     (list #:make-flags '(list "shared-o3" "o3n-singeli")
           #:phases #~(modify-phases %standard-phases
                        (delete 'configure)
                        (add-before 'build 'link-singeli
                          (lambda* (#:key inputs #:allow-other-keys)
                            (symlink #+singeli-sources "Singeli")))
                        (add-before 'build 'generate-bytecode
                          (lambda* (#:key inputs #:allow-other-keys)
                            (system (string-append #+dbqn
                                                   "/bin/dbqn ./genRuntime "
                                                   #+bqn-sources))))
                        (replace 'check
                          (lambda* (#:key inputs tests? #:allow-other-keys)
                            (when tests?
                              (system (string-append "./BQN -M 1000 \""
                                                     #+bqn-sources
                                                     "/test/this.bqn\""))
                              (map (lambda (x)
                                     (system (string-append "./BQN ./test/" x
                                                            ".bqn")))
                                   '("cmp" "equal" "copy" "random"))
                              (system "make -C test/ffi"))))
                        (replace 'install
                          (lambda* (#:key outputs #:allow-other-keys)
                            (let* ((bin (string-append (assoc-ref outputs
                                                                  "out")
                                                       "/bin"))
                                   (lib (string-append (assoc-ref outputs
                                                                  "lib")
                                                       "/lib")))
                              (mkdir-p bin)
                              (copy-recursively "BQN"
                                                (string-append bin "/bqn"))
                              (install-file "libcbqn.so" lib)))))))
    (native-inputs (list dbqn
                         bqn-sources
                         singeli-sources
                         libffi
                         clang-toolchain
                         linux-libre-headers))))