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 @@ (define* (compiled-modules modules (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 @@ (define build (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 @@ (define (process-entry entry output processed) (compile-file entry #:output-file output #:opts - %auto-compilation-options))) + `(,@%auto-compilation-options + ,@(optimizations-for-level + (ungexp optimization-level)))))) (+ 1 processed))))