From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mathieu Othacehe Subject: bug#32773: [PATCH] Fix clang libstdc++ header location search Date: Thu, 14 Nov 2019 14:40:30 +0100 Message-ID: <871rua60fl.fsf@gmail.com> References: <19ece273-ea75-fc9d-4e4b-aa3a68deab6d@yahoo.de> <20191113165516.56228-1-david.truby@arm.com> <874kz6698w.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:35725) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVFMu-0003Qw-1t for bug-guix@gnu.org; Thu, 14 Nov 2019 08:41:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iVFMs-0001ro-Kl for bug-guix@gnu.org; Thu, 14 Nov 2019 08:41:03 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:52311) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iVFMs-0001rg-H8 for bug-guix@gnu.org; Thu, 14 Nov 2019 08:41:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1iVFMs-00082h-Ee for bug-guix@gnu.org; Thu, 14 Nov 2019 08:41:02 -0500 Sender: "Debbugs-submit" Resent-Message-ID: In-reply-to: List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: "bug-Guix" To: David Truby Cc: nd , "32773@debbugs.gnu.org" <32773@debbugs.gnu.org>, "guix-patches@gnu.org" --=-=-= Content-Type: text/plain > I think adding gcc-toolchain to propagated-inputs should work in > principle, other than the fact that the gcc used for gcc-lib and > libstdc++ need to be the same as the propagated gcc-toolchain. I did > have a fix for this but I'm not sure if it's the best way of writing > it. > I'll send another patch with the fix though so at least others can > comment on it! Yes propagating gcc-toolchain would work but, would also cause gcc to be available as a side effect. Maybe the patch attached, on top of yours, would work? Thanks, Mathieu --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-gnu-Add-clang-toolchain.patch >From ea662ff1ed62183ae0036242f53a14bb0889cb47 Mon Sep 17 00:00:00 2001 From: Mathieu Othacehe Date: Thu, 14 Nov 2019 13:25:00 +0100 Subject: [PATCH] gnu: Add clang-toolchain. * gnu/packages/llvm.scm (make-clang-toolchain): New method. (clang-toolchain): New public variable defined using previous method. --- gnu/packages/llvm.scm | 50 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index 0a7efe980f..8c47b884ae 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -37,7 +37,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) @@ -295,6 +297,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") @@ -404,6 +451,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) -- 2.24.0 --=-=-=--