From fed36328129def5f10b1d1f3e4ea8886916fd22a Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 23 Nov 2019 22:43:40 +0100 Subject: compile: Adjust for Guile 2.9.5. * guix/build/compile.scm (optimizations-for-level): New procedure. Include '%lightweight-optimizations' and '%default-optimizations'. (optimization-options): Use 'optimizations-for-level'. --- guix/build/compile.scm | 49 ++++++++++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/guix/build/compile.scm b/guix/build/compile.scm index 06ed57c9d7..3781e148ce 100644 --- a/guix/build/compile.scm +++ b/guix/build/compile.scm @@ -39,25 +39,32 @@ ;;; ;;; Code: -(define %default-optimizations - ;; Default optimization options (equivalent to -O2 on Guile 2.2). - (append (if (defined? 'tree-il-default-optimization-options) - (tree-il-default-optimization-options) ;Guile 2.2 - (tree-il-optimizations)) ;Guile 3 - (if (defined? 'cps-default-optimization-options) - (cps-default-optimization-options) ;Guile 2.2 - (cps-optimizations)))) ;Guile 3 - -(define %lightweight-optimizations - ;; Lightweight optimizations (like -O0, but with partial evaluation). - (let loop ((opts %default-optimizations) - (result '())) - (match opts - (() (reverse result)) - ((#:partial-eval? _ rest ...) - (loop rest `(#t #:partial-eval? ,@result))) - ((kw _ rest ...) - (loop rest `(#f ,kw ,@result)))))) +(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 + (let () ;Guile 2.2 + (define %default-optimizations + ;; Default optimization options (equivalent to -O2 on Guile 2.2). + (append (tree-il-default-optimization-options) + (cps-default-optimization-options))) + + (define %lightweight-optimizations + ;; Lightweight optimizations (like -O0, but with partial evaluation). + (let loop ((opts %default-optimizations) + (result '())) + (match opts + (() (reverse result)) + ((#:partial-eval? _ rest ...) + (loop rest `(#t #:partial-eval? ,@result))) + ((kw _ rest ...) + (loop rest `(#f ,kw ,@result)))))) + + (lambda (level) + (if (<= level 1) + %lightweight-optimizations + %default-optimizations))))) (define (supported-warning-type? type) "Return true if TYPE, a symbol, denotes a supported warning type." @@ -80,8 +87,8 @@ (define (optimization-options file) "Return the default set of optimizations options for FILE." (if (string-contains file "gnu/packages/") - %lightweight-optimizations ;build faster - '())) + (optimizations-for-level 1) ;build faster + (optimizations-for-level 3))) (define (scm->go file) "Strip the \".scm\" suffix from FILE, and append \".go\"." -- cgit v1.2.3