configure: Use GUILD_OPTIMIZE=-O1 for Guile-3. master
authorJan (janneke) Nieuwenhuizen <janneke@gnu.org>
Wed, 7 Oct 2020 11:55:06 +0000 (13:55 +0200)
committerJan (janneke) Nieuwenhuizen <janneke@gnu.org>
Wed, 7 Oct 2020 12:09:24 +0000 (14:09 +0200)
* configure (main): Set guild_optimize to "-O1" for Guile-3.
* build-aux/config.make.in (GUILD_OPTIMIZE): New variable.
* build-aux/export.make (GUILD_OPTIMIZE): Export if set.
* build-aux/config.sh.in (GUILD_OPTIMIZE): New variable.
* build-aux/build-guile.sh: Use it.

build-aux/build-guile.sh
build-aux/config.make.in
build-aux/config.sh.in
build-aux/export.make
configure

index 4cee61e5edcd9bc24b65c92c4f8c0bf40735cb51..dfbef4104ab3b64f0454d8c10c4ab6e5d7bc3ea6 100755 (executable)
@@ -62,6 +62,6 @@ for i in $SCM_FILES $SCRIPTS; do
     go=${i%%.scm}.go
     f=${srcdest}$i
     if test $f -nt $go; then
-        trace "GUILEC     $f" $GUILD compile -L ${srcdest}module -L ${srcdest}build-aux -L ${srcdest}scripts -o $go $f
+        trace "GUILEC     $f" $GUILD compile $GUILD_OPTIMIZE -L ${srcdest}module -L ${srcdest}build-aux -L ${srcdest}scripts -o $go $f
     fi
 done
index 1e250e5efda5539a24daf7e7cf1935ccc66b2ddf..82c62e1e1bce523012c1d1ec7485820231b7f5e9 100644 (file)
@@ -26,6 +26,7 @@ DIFF:=@DIFF@
 DOT:=@DOT@
 GIT:=@GIT@
 GUILD:=@GUILD@
+GUILD_OPTIMIZE:=@GUILD_OPTIMIZE@
 GUILE:=@GUILE@
 GUILE_EFFECTIVE_VERSION:=@GUILE_EFFECTIVE_VERSION@
 GUILE_LOAD_PATH:=@GUILE_LOAD_PATH@
index f2cc63d9d7ebe8a24dbdca2be41fb0f0d3094f7d..2e821903bd30b8b2d1bc76062937f219dd4a8fee 100644 (file)
@@ -27,6 +27,7 @@ DIFF=${DIFF-@DIFF@}
 DOT="@DOT@"
 GIT="@GIT@"
 GUILD="@GUILD@"
+GUILD_OPTIMIZE="${GUILD_OPTIMIZE-@GUILD_OPTIMIZE@}"
 GUILE="@GUILE@"
 GUILE_EFFECTIVE_VERSION="@GUILE_EFFECTIVE_VERSION@"
 GUILE_LOAD_PATH="@GUILE_LOAD_PATH@"
index 7cab133902d559f1ced64b68f229a1e6cb519803..505d5a6eedab48bb986cca5d6ddb42d0e3985554 100644 (file)
@@ -119,6 +119,10 @@ ifdef SHELL
 export SHELL
 endif
 
+ifdef GUILD_OPTIMIZE
+export GUILD_OPTIMIZE
+endif
+
 ifdef GUILE_LOAD_PATH
 export GUILE_LOAD_PATH
 endif
index 00c926ef3adf6990d445ae6596837ab680d98fae..8c1db2ac61e061553c9fab66512bd7e740c23f76 100755 (executable)
--- a/configure
+++ b/configure
@@ -388,6 +388,7 @@ Some influential environment variables:
   LDFLAGS           C linker flags
   GUILE             guile command
   GUILD             guild command
+  GUILD_OPTIMIZE    guild compile optimization
   GUILE_LOAD_PATH   guile load path; where to find Nyacc
   MES_FOR_BUILD     build system MES [can be mes or guile]
 " PACKAGE VERSION (getenv "prefix")))
@@ -476,6 +477,9 @@ Some influential environment variables:
                              (make-dep "help2man" #:version '(1 47) #:optional? #t)
                              (make-dep "perl" #:version '(5) #:optional? #t))))
            (guile (file-name "guile" deps))
+           ;; See https://bugs.gnu.org/43831; use -O1 with Guile-3
+           (guild-optimize (let ((guile-version (and=> (find-dep "guile" deps) dependency-version-found)))
+                             (and guile-version (tuple< '(2) guile-version) "-O1")))
            (deps (if guile (cons (check-program-version (make-dep "nyacc" #:version '(0 99 0) #:commands (list (string-append guile " -c '(use-modules (nyacc lalr)) (display *nyacc-version*)'")) #:file-name #t #:version-option #f))
                                  deps)
                      deps))
@@ -626,6 +630,7 @@ See \"Porting GNU Mes\" in the manual, or try --with-courage\n" mes-system)
                      ("@DIFF@" . ,(or (file-name "diff" deps) (string-append abs-top-builddir "/pre-inst-env diff.scm")))
                      ("@DOT@" . ,(or (file-name "dot" deps) ""))
                      ("@GIT@" . ,(or (file-name "git" deps) ""))
+                     ("@GUILD_OPTIMIZE@" . ,(or (getenv "GUILD_OPTIMIZE") guild-optimize ""))
                      ("@GUILE@" . ,guile)
                      ("@GUILE_EFFECTIVE_VERSION@" . ,(effective-version))
                      ("@GUILE_LOAD_PATH@" . ,(string-join guile-load-path ":"))