[bug#78102,v2,1/3] build/cmake: Add #:implicit-inputs? and #:implicit-cross-inputs? arguments.

Message ID 7e9be31603f35d063e9568fe7650be901e671951.1745940699.git.maxim.cournoyer@gmail.com
State New
Headers
Series [bug#78102,v2,1/3] build/cmake: Add #:implicit-inputs? and #:implicit-cross-inputs? arguments. |

Commit Message

Maxim Cournoyer April 29, 2025, 3:31 p.m. UTC
  * guix/build-system/cmake.scm (lower) <#:implicit-inputs?>
<#:implicit-cross-inputs?>: New arguments.

Change-Id: I1f077f78f5836ce325827e7ef8d58ba554a8ed4f
---
 guix/build-system/cmake.scm | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)


base-commit: 2b4680c6c17bd6470f78a1f39d2f7af8b05e279f
  

Patch

diff --git a/guix/build-system/cmake.scm b/guix/build-system/cmake.scm
index 9d757c0d061..8b1889e36bc 100644
--- a/guix/build-system/cmake.scm
+++ b/guix/build-system/cmake.scm
@@ -3,6 +3,7 @@ 
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2025 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -65,12 +66,14 @@  (define (default-cmake target)
 
 (define* (lower name
                 #:key source inputs native-inputs outputs system target
+                (implicit-inputs? #t) (implicit-cross-inputs? #t)
                 (cmake (default-cmake target))
                 #:allow-other-keys
                 #:rest arguments)
   "Return a bag for NAME."
   (define private-keywords
     `(#:cmake #:inputs #:native-inputs
+      #:implicit-inputs? #:implicit-cross-inputs?
       ,@(if target '() '(#:target))))
 
   (bag
@@ -83,13 +86,15 @@  (define* (lower name
                     ,@`(("cmake" ,cmake))
                     ,@native-inputs
                     ,@(if target '() inputs)
-                    ,@(if target
+                    ,@(if (and target implicit-cross-inputs?)
                           ;; Use the standard cross inputs of
                           ;; 'gnu-build-system'.
                           (standard-cross-packages target 'host)
                           '())
                     ;; Keep the standard inputs of 'gnu-build-system'.
-                    ,@(standard-packages)))
+                    ,@(if implicit-inputs?
+                          (standard-packages system)
+                          '())))
     (host-inputs (if target inputs '()))
 
     ;; The cross-libc is really a target package, but for bootstrapping
@@ -97,7 +102,7 @@  (define* (lower name
     ;; native package, so it would end up using a "native" variant of
     ;; 'cross-libc' (built with 'gnu-build'), whereas all the other packages
     ;; would use a target variant (built with 'gnu-cross-build'.)
-    (target-inputs (if target
+    (target-inputs (if (and target implicit-cross-inputs?)
                        (standard-cross-packages target 'target)
                        '()))
     (outputs outputs)