summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/base.scm42
1 files changed, 42 insertions, 0 deletions
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index bf1ebfa629..e6a2242cf0 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -1133,4 +1133,46 @@ store.")
       ("gcc" ,gcc-final)
       ("libc" ,glibc-final))))
 
+(define (gcc-toolchain gcc)
+  "Return a complete toolchain for GCC."
+  (package
+    (name "gcc-toolchain")
+    (version (package-version gcc))
+    (source #f)
+    (build-system trivial-build-system)
+    (arguments
+     '(#:modules ((guix build union))
+       #:builder (begin
+                   (use-modules (ice-9 match)
+                                (guix build union))
+
+                   (match %build-inputs
+                     (((names . directories) ...)
+                      (union-build (assoc-ref %outputs "out")
+                                   directories)))
+
+                   (union-build (assoc-ref %outputs "debug")
+                                (list (assoc-ref %build-inputs
+                                                 "libc-debug"))))))
+    (license (package-license gcc))
+    (synopsis "Complete GCC tool chain for C/C++ development")
+    (description
+     "This package provides a complete GCC tool chain for C/C++ development to
+be installed in user profiles.  This includes GCC, as well as libc (headers
+and binaries, plus debugging symbols in the 'debug' output), and Binutils.")
+    (home-page "http://gcc.gnu.org/")
+    (outputs '("out" "debug"))
+
+    ;; The main raison d'ĂȘtre of this "meta-package" is (1) to conveniently
+    ;; install everything that we need, and (2) to make sure ld-wrapper comes
+    ;; before Binutils' ld in the user's profile.
+    (inputs `(("gcc" ,gcc)
+              ("ld-wrapper" ,(car (assoc-ref %final-inputs "ld-wrapper")))
+              ("binutils" ,binutils-final)
+              ("libc" ,glibc-final)
+              ("libc-debug" ,glibc-final "debug")))))
+
+(define-public gcc-toolchain-4.8
+  (gcc-toolchain gcc-final))
+
 ;;; base.scm ends here