summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorKei Kebreau <kei@openmailbox.org>2017-07-08 17:36:29 -0400
committerKei Kebreau <kei@openmailbox.org>2017-07-25 07:58:06 -0400
commit5ea8dbf0c906d51779ba0cf775ec9967f5f42382 (patch)
tree0fc668ad34ad82cb7d49048d84517ea3a5d7ff9b /gnu
parentebc9f7050c6912b015395e020fe6a07b0369e3a8 (diff)
downloadguix-5ea8dbf0c906d51779ba0cf775ec9967f5f42382.tar.gz
gnu: gcl: Ensure gcc and binutils are available at runtime.
* gnu/packages/lisp.scm (gcl)[arguments]: Add -fgnu89-inline to CFLAGS.
Add GCC path to make-flags. Modify 'pre-conf' phase. Add 'wrap' phase.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/lisp.scm25
1 files changed, 25 insertions, 0 deletions
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index e92ae2ebfe..224cea56f6 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -88,6 +88,10 @@
      `(#:parallel-build? #f  ; The build system seems not to be thread safe.
        #:tests? #f  ; There does not seem to be make check or anything similar.
        #:configure-flags '("--enable-ansi") ; required for use by the maxima package
+       #:make-flags (list
+                     "CFLAGS=-fgnu89-inline" ; removes inline function warnings
+                     (string-append "GCC=" (assoc-ref %build-inputs "gcc")
+                                    "/bin/gcc"))
        #:phases (modify-phases %standard-phases
                   (add-before 'configure 'pre-conf
                     (lambda _
@@ -104,6 +108,27 @@
                          (string-append "SHELL=" (which "bash")))
                         (("SHELL=/bin/sh")
                          (string-append "SHELL=" (which "sh"))))
+                      (substitute* "h/linux.defs"
+                        (("#CC") "CC")
+                        (("-fwritable-strings") "")
+                        (("-Werror") ""))
+                      #t))
+                  (add-after 'install 'wrap
+                    (lambda* (#:key inputs outputs #:allow-other-keys)
+                      (let* ((gcl (assoc-ref outputs "out"))
+                             (input-path (lambda (lib path)
+                                           (string-append
+                                            (assoc-ref inputs lib) path)))
+                             (binaries '("binutils")))
+                        ;; GCC and the GNU binutils are necessary for GCL to be
+                        ;; able to compile Lisp functions and programs (this is
+                        ;; a standard feature in Common Lisp). While the
+                        ;; the location of GCC is specified in the make-flags,
+                        ;; the GNU binutils must be available in GCL's $PATH.
+                        (wrap-program (string-append gcl "/bin/gcl")
+                          `("PATH" prefix ,(map (lambda (binary)
+                                                  (input-path binary "/bin"))
+                                                binaries))))
                       #t))
                   ;; drop strip phase to make maxima build, see
                   ;; https://www.ma.utexas.edu/pipermail/maxima/2008/009769.html