From 496bbeee7a0afbf1c7cbcc0de8c33c2111cb661f Mon Sep 17 00:00:00 2001 From: David Truby Date: Wed, 13 Nov 2019 16:56:04 +0000 Subject: gnu: clang-from-llvm: Fix libstdc++ header location search. Make clang use libstdc++ from gcc package. In the future, the build of clang could be parametrized to build clang with libstdc++ support or with libcxx support. * gnu/packages/llvm.scm (clang-from-llvm)[arguments]: Make clang look for libstdc++ in the right location, which is gcc c++ includes directory. Signed-off-by: Mathieu Othacehe --- gnu/packages/llvm.scm | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'gnu/packages/llvm.scm') diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index 33fb53d65e..d1b1981ad6 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -11,6 +11,7 @@ ;;; Copyright © 2018 Tim Gesthuizen ;;; Copyright © 2018 Pierre Neidhardt ;;; Copyright © 2019 Rutger Helling +;;; Copyright © 2019 David Truby ;;; ;;; This file is part of GNU Guix. ;;; @@ -202,6 +203,7 @@ compiler. In LLVM this library is called \"compiler-rt\".") (lambda* (#:key inputs #:allow-other-keys) (let ((libc (assoc-ref inputs "libc")) (compiler-rt (assoc-ref inputs "clang-runtime")) + (gcc (assoc-ref inputs "gcc")) (version (string->number ,(version-major (package-version clang-runtime))))) @@ -218,6 +220,12 @@ compiler. In LLVM this library is called \"compiler-rt\".") (("(^[[:blank:]]+LibDir = ).*" _ declaration) (string-append declaration "\"" libc "/lib\";\n")) + ;; Make clang look for libstdc++ in the right + ;; location. + (("LibStdCXXIncludePathCandidates\\[\\] = \\{") + (string-append + "LibStdCXXIncludePathCandidates[] = { \"" gcc "/include/c++\",")) + ;; Make sure libc's libdir is on the search path, to ;; allow crt1.o & co. to be found. (("@GLIBC_LIBDIR@") -- cgit v1.2.3 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 From 5dea5cbc62547f50a793ce905cdd4d1a62be60e1 Mon Sep 17 00:00:00 2001 From: Mathieu Othacehe Date: Tue, 19 Nov 2019 16:20:40 +0100 Subject: gnu: llvm: Change copyright holder. * gnu/packages/llvm.scm: Change David Truby to Arm Ltd as copyright holder as requested here: https://issues.guix.gnu.org/issue/32773#18. --- gnu/packages/llvm.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gnu/packages/llvm.scm') diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index a5170a4f10..863d43d7d6 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -11,7 +11,7 @@ ;;; Copyright © 2018 Tim Gesthuizen ;;; Copyright © 2018 Pierre Neidhardt ;;; Copyright © 2019 Rutger Helling -;;; Copyright © 2019 David Truby +;;; Copyright © 2019 Arm Ltd ;;; Copyright © 2019 Mathieu Othacehe ;;; ;;; This file is part of GNU Guix. -- cgit v1.2.3 From 96d5a206074c126bc42e463d9b17d49dd2e49e7c Mon Sep 17 00:00:00 2001 From: David Truby Date: Tue, 19 Nov 2019 17:15:42 +0000 Subject: gnu: Add llvm-9, clang-9 and clang-toolchain-9. * gnu/packages/llvm.scm (llvm-9): New variable. (clang-runtime-9): New variable. (clang-9): New variable. (clang-toolchain-9): New variable. Signed-off-by: Mathieu Othacehe --- gnu/packages/llvm.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'gnu/packages/llvm.scm') diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index 863d43d7d6..082e6e96ca 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -458,6 +458,31 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.") (define-public clang-toolchain (make-clang-toolchain clang)) +(define-public llvm-9 + (package + (inherit llvm) + (version "9.0.0") + (source (origin + (method url-fetch) + (uri (string-append "https://llvm.org/releases/" + version "/llvm-" version ".src.tar.xz")) + (sha256 + (base32 + "117ymdz1by2nkfq1c2p9m4050dp848kbjbiv6nsfj8hzy9f5d86n")))) + (license license:asl2.0))) + +(define-public clang-runtime-9 + (clang-runtime-from-llvm + llvm-9 + "03ni43lbkp63lr3p6sc94dphqmvnz5av5mml0xmk930xvnbcvr2n")) + +(define-public clang-9 + (clang-from-llvm llvm-9 clang-runtime-9 + "0426ma80i41qsgzm1qdz81mjskck426diygxi2k5vji2gkpixa3v")) + +(define-public clang-toolchain-9 + (make-clang-toolchain clang-9)) + (define-public llvm-7 (package (inherit llvm) -- cgit v1.2.3