diff options
Diffstat (limited to 'guix/gexp.scm')
-rw-r--r-- | guix/gexp.scm | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/guix/gexp.scm b/guix/gexp.scm index 764c89a187..2735d25d0c 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -1559,7 +1559,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 @@ -1583,6 +1584,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 '("." "..")))) @@ -1598,17 +1606,14 @@ TARGET, a GNU triplet." (ungexp (* total 2)) entry) - (ungexp-splicing - (if target - (gexp ((with-target (ungexp target) - (lambda () - (compile-file entry - #:output-file output - #:opts - %auto-compilation-options))))) - (gexp ((compile-file entry - #:output-file output - #:opts %auto-compilation-options))))) + (with-target (ungexp (or target (gexp %host-type))) + (lambda () + (compile-file entry + #:output-file output + #:opts + `(,@%auto-compilation-options + ,@(optimizations-for-level + (ungexp optimization-level)))))) (+ 1 processed)))) |