summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-08-26 16:01:37 +0200
committerLudovic Courtès <ludo@gnu.org>2020-08-26 16:02:38 +0200
commit331a09654eb7e9f6212b7e8469077fa7393e8b11 (patch)
tree7ef8499517417a0436bea92664fdf1b97398ce44
parent3c6113a594c55f184cec746acd570ce4ad1747d1 (diff)
downloadguix-331a09654eb7e9f6212b7e8469077fa7393e8b11.tar.gz
gexp: 'compiled-modules' defaults to '-O1'.
* guix/gexp.scm (compiled-modules): Add #:optimization-level.
[build](optimizations-for-level): New variable.
(process-entry): Use it.
-rw-r--r--guix/gexp.scm14
1 files changed, 12 insertions, 2 deletions
diff --git a/guix/gexp.scm b/guix/gexp.scm
index 42a5e7f442..7132ca899b 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -1507,7 +1507,8 @@ last one is created from the given <scheme-file> object."
                            (guile (%guile-for-build))
                            (module-path %load-path)
                            (extensions '())
-                           (deprecation-warnings #f))
+                           (deprecation-warnings #f)
+                           (optimization-level 1))
   "Return a derivation that builds a tree containing the `.go' files
 corresponding to MODULES.  All the MODULES are built in a context where
 they can refer to each other.  When TARGET is true, cross-compile MODULES for
@@ -1531,6 +1532,13 @@ TARGET, a GNU triplet."
                       (system base target)
                       (system base compile))
 
+         (define optimizations-for-level
+           (or (and=> (false-if-exception
+                       (resolve-interface '(system base optimize)))
+                      (lambda (iface)
+                        (module-ref iface 'optimizations-for-level))) ;Guile 3.0
+               (const '())))
+
          (define (regular? file)
            (not (member file '("." ".."))))
 
@@ -1551,7 +1559,9 @@ TARGET, a GNU triplet."
                      (compile-file entry
                                    #:output-file output
                                    #:opts
-                                   %auto-compilation-options)))
+                                   `(,@%auto-compilation-options
+                                     ,@(optimizations-for-level
+                                        (ungexp optimization-level))))))
 
                  (+ 1 processed))))