summaryrefslogtreecommitdiff
path: root/guix/gexp.scm
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 /guix/gexp.scm
parent3c6113a594c55f184cec746acd570ce4ad1747d1 (diff)
downloadguix-patches-331a09654eb7e9f6212b7e8469077fa7393e8b11.tar
guix-patches-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.
Diffstat (limited to 'guix/gexp.scm')
-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))))