From 57c7bfec62eb791aadd81916ab8a29ae19b30c69 Mon Sep 17 00:00:00 2001 From: Mathieu Othacehe Date: Thu, 14 Nov 2019 13:25:00 +0100 Subject: gnu: Add clang-toolchain. In the same spirit that gcc-toolchain provides a complete gcc toolchain suitable for user profile installation, add a make-clang-toolchain function and use it to create clang-toolchain, clang-toolchain-7 and clang-toolchain-6 packages. * gnu/packages/llvm.scm (make-clang-toolchain): New method. (clang-toolchain): New public variable defined using previous method, (clang-toolchain-7): ditto, (clang-toolchain-6): ditto. --- gnu/packages/llvm.scm | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) (limited to 'gnu/packages/llvm.scm') diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index d1b1981ad6..a5170a4f10 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -12,6 +12,7 @@ ;;; Copyright © 2018 Pierre Neidhardt ;;; Copyright © 2019 Rutger Helling ;;; Copyright © 2019 David Truby +;;; Copyright © 2019 Mathieu Othacehe ;;; ;;; This file is part of GNU Guix. ;;; @@ -38,7 +39,9 @@ #:use-module (guix build-system cmake) #:use-module (guix build-system emacs) #:use-module (guix build-system python) + #:use-module (guix build-system trivial) #:use-module (gnu packages) + #:use-module (gnu packages base) #:use-module (gnu packages gcc) #:use-module (gnu packages bootstrap) ;glibc-dynamic-linker #:use-module (gnu packages compression) @@ -298,6 +301,51 @@ project includes the Clang front end, the Clang static analyzer, and several code analysis tools.") (license license:ncsa))) +(define (make-clang-toolchain clang) + (package + (name (string-append (package-name clang) "-toolchain")) + (version (package-version clang)) + (source #f) + (build-system trivial-build-system) + (arguments + '(#:modules ((guix build union)) + #:builder (begin + (use-modules (ice-9 match) + (srfi srfi-26) + (guix build union)) + + (let ((out (assoc-ref %outputs "out"))) + + (match %build-inputs + (((names . directories) ...) + (union-build out directories))) + + (union-build (assoc-ref %outputs "debug") + (list (assoc-ref %build-inputs + "libc-debug"))) + (union-build (assoc-ref %outputs "static") + (list (assoc-ref %build-inputs + "libc-static"))) + #t)))) + + (native-search-paths (package-native-search-paths clang)) + (search-paths (package-search-paths clang)) + + (license (package-license clang)) + (home-page "https://clang.llvm.org") + (synopsis "Complete Clang toolchain for C/C++ development") + (description "This package provides a complete Clang toolchain for C/C++ +development to be installed in user profiles. This includes Clang, as well as +libc (headers and binaries, plus debugging symbols in the @code{debug} +output), and Binutils.") + (outputs '("out" "debug" "static")) + (inputs `(("clang" ,clang) + ("ld-wrapper" ,(car (assoc-ref (%final-inputs) "ld-wrapper"))) + ("binutils" ,binutils) + ("libc" ,glibc) + ("libc-debug" ,glibc "debug") + ("libc-static" ,glibc "static"))))) + (define-public libcxx (package (name "libcxx") @@ -407,6 +455,9 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.") "0svk1f70hvpwrjp6x5i9kqwrqwxnmcrw5s7f4cxyd100mdd12k08" #:patches '("clang-7.0-libc-search-path.patch"))) +(define-public clang-toolchain + (make-clang-toolchain clang)) + (define-public llvm-7 (package (inherit llvm) @@ -429,6 +480,9 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.") "067lwggnbg0w1dfrps790r5l6k8n5zwhlsw7zb6zvmfpwpfn4nx4" #:patches '("clang-7.0-libc-search-path.patch"))) +(define-public clang-toolchain-7 + (make-clang-toolchain clang-7)) + (define-public llvm-6 (package (inherit llvm) @@ -451,6 +505,9 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.") "0rxn4rh7rrnsqbdgp4gzc8ishbkryhpl1kd3mpnxzpxxhla3y93w" #:patches '("clang-6.0-libc-search-path.patch"))) +(define-public clang-toolchain-6 + (make-clang-toolchain clang-6)) + ;; Libcxx files specifically used by PySide2. (define-public libcxx-6 (package -- cgit v1.2.3