From 9bdbabe963e48bcac11c053a38d990873ca48dca Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Sat, 31 Mar 2018 22:04:44 +0200 Subject: gnu: llvm, clang: Update to 6.0.0. * gnu/packages/llvm.scm (llvm, clang-runtime, clang): Update to 6.0.0. (clang-from-llvm)(patches): Set to empty list. [arguments]: Adjust substitutions depending on major version. (llvm-3.8, clang-runtime-3.8, clang-3.8): New public variables. (clang-3.7, clang-3.6, clang-3.5)(patches): Add 'clang-3.5-libc-search-path.patch'. (clang-3.9.1)(patches): Add 'clang-3.8-libc-search-path.patch'. * gnu/packages/patches/clang-6.0-libc-search-path.patch: New file. * gnu/packages/patches/clang-libc-search-path.patch: Rename to ... * gnu/packages/patches/clang-3.5-libc-search-path.patch: ... this. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. --- gnu/packages/llvm.scm | 109 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 82 insertions(+), 27 deletions(-) (limited to 'gnu/packages/llvm.scm') diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index 2dddbc4361..98592ad090 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2016 Dennis Mungai ;;; Copyright © 2016 Ricardo Wurmus ;;; Copyright © 2017 Roel Janssen +;;; Copyright © 2018 Marius Bakke ;;; ;;; This file is part of GNU Guix. ;;; @@ -40,7 +41,7 @@ (define-public llvm (package (name "llvm") - (version "3.8.1") + (version "6.0.0") (source (origin (method url-fetch) @@ -48,7 +49,7 @@ version "/llvm-" version ".src.tar.xz")) (sha256 (base32 - "1ybmnid4pw2hxn12ax5qa5kl1ldfns0njg8533y3mzslvd5cx0kf")))) + "0224xvfg6h40y5lrbnb9qaq3grmdc5rg00xq03s1wxjfbf8krx8z")))) (build-system cmake-build-system) (native-inputs `(("python" ,python-2) ;bytes->str conversion in clang>=3.7 needs python-2 @@ -131,7 +132,7 @@ compiler. In LLVM this library is called \"compiler-rt\".") (supported-systems (delete "mips64el-linux" %supported-systems)))) (define* (clang-from-llvm llvm clang-runtime hash - #:key (patches '("clang-libc-search-path.patch"))) + #:key (patches '())) (package (name "clang") (version (package-version llvm)) @@ -176,22 +177,50 @@ 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"))) - (substitute* "lib/Driver/Tools.cpp" - ;; Patch the 'getLinuxDynamicLinker' function to that - ;; it uses the right dynamic linker file name. - (("/lib64/ld-linux-x86-64.so.2") - (string-append libc - ,(glibc-dynamic-linker))) - - ;; Link to libclang_rt files from clang-runtime. - (("TC\\.getDriver\\(\\)\\.ResourceDir") - (string-append "\"" compiler-rt "\""))) - - ;; Same for libc's libdir, to allow crt1.o & co. to be - ;; found. - (substitute* "lib/Driver/ToolChains.cpp" - (("@GLIBC_LIBDIR@") - (string-append libc "/lib"))))))))) + (case (string->number ,(version-major + (package-version clang-runtime))) + ((6) + ;; Link to libclang_rt files from clang-runtime. + (substitute* "lib/Driver/ToolChain.cpp" + (("getDriver\\(\\)\\.ResourceDir") + (string-append "\"" compiler-rt "\""))) + + ;; Make "LibDir" refer to /lib so that it + ;; uses the right dynamic linker file name. + (substitute* "lib/Driver/ToolChains/Linux.cpp" + (("(^[[:blank:]]+LibDir = ).*" _ declaration) + (string-append declaration "\"" libc "/lib\";\n")) + + ;; Make sure libc's libdir is on the search path, to + ;; allow crt1.o & co. to be found. + (("@GLIBC_LIBDIR@") + (string-append libc "/lib")))) + ((3) + (substitute* "lib/Driver/Tools.cpp" + ;; Patch the 'getLinuxDynamicLinker' function so that + ;; it uses the right dynamic linker file name. + (("/lib64/ld-linux-x86-64.so.2") + (string-append libc + ,(glibc-dynamic-linker)))) + + ;; Link to libclang_rt files from clang-runtime. + ;; This substitution needed slight adjustment in 3.8. + (if (< 3.8 (string->number ,(version-major+minor + (package-version + clang-runtime)))) + (substitute* "lib/Driver/Tools.cpp" + (("TC\\.getDriver\\(\\)\\.ResourceDir") + (string-append "\"" compiler-rt "\""))) + (substitute* "lib/Driver/ToolChain.cpp" + (("getDriver\\(\\)\\.ResourceDir") + (string-append "\"" compiler-rt "\"")))) + + ;; Make sure libc's libdir is on the search path, to + ;; allow crt1.o & co. to be found. + (substitute* "lib/Driver/ToolChains.cpp" + (("@GLIBC_LIBDIR@") + (string-append libc "/lib"))))) + #t)))))) ;; Clang supports the same environment variables as GCC. (native-search-paths @@ -214,13 +243,12 @@ code analysis tools.") (define-public clang-runtime (clang-runtime-from-llvm llvm - "0p0y85c7izndbpg2l816z7z7558axq11d5pwkm4h11sdw7d13w0d" - '("clang-runtime-asan-build-fixes.patch"))) + "16m7rvh3w6vq10iwkjrr1nn293djld3xm62l5zasisaprx117k6h")) (define-public clang (clang-from-llvm llvm clang-runtime - "1prc72xmkgx8wrzmrr337776676nhsp1qd3mw2bvb22bzdnq7lsc" - #:patches '("clang-3.8-libc-search-path.patch"))) + "0cnznvfyl3hgbg8gj58pmwf0pvd2sv5k3ccbivy6q6ggv7c6szg0" + #:patches '("clang-6.0-libc-search-path.patch"))) (define-public llvm-3.9.1 (package (inherit llvm) @@ -245,7 +273,31 @@ code analysis tools.") (define-public clang-3.9.1 (clang-from-llvm llvm-3.9.1 clang-runtime-3.9.1 "0qsyyb40iwifhhlx9a3drf8z6ni6zwyk3bvh0kx2gs6yjsxwxi76" - #:patches '())) + #:patches '("clang-3.8-libc-search-path.patch"))) + +(define-public llvm-3.8 + (package (inherit llvm) + (name "llvm") + (version "3.8.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://llvm.org/releases/" + version "/llvm-" version ".src.tar.xz")) + (sha256 + (base32 + "1ybmnid4pw2hxn12ax5qa5kl1ldfns0njg8533y3mzslvd5cx0kf")))))) + +(define-public clang-runtime-3.8 + (clang-runtime-from-llvm + llvm-3.8 + "0p0y85c7izndbpg2l816z7z7558axq11d5pwkm4h11sdw7d13w0d" + '("clang-runtime-asan-build-fixes.patch"))) + +(define-public clang-3.8 + (clang-from-llvm llvm-3.8 clang-runtime-3.8 + "1prc72xmkgx8wrzmrr337776676nhsp1qd3mw2bvb22bzdnq7lsc" + #:patches '("clang-3.8-libc-search-path.patch"))) (define-public llvm-3.7 (package (inherit llvm) @@ -267,7 +319,8 @@ code analysis tools.") (define-public clang-3.7 (clang-from-llvm llvm-3.7 clang-runtime-3.7 - "0x065d0w9b51xvdjxwfzjxng0gzpbx45fgiaxpap45ragi61dqjn")) + "0x065d0w9b51xvdjxwfzjxng0gzpbx45fgiaxpap45ragi61dqjn" + #:patches '("clang-3.5-libc-search-path.patch"))) (define-public llvm-3.6 (package (inherit llvm) @@ -289,7 +342,8 @@ code analysis tools.") (define-public clang-3.6 (clang-from-llvm llvm-3.6 clang-runtime-3.6 - "1wwr8s6lzr324hv4s1k6na4j5zv6n9kdhi14s4kb9b13d93814df")) + "1wwr8s6lzr324hv4s1k6na4j5zv6n9kdhi14s4kb9b13d93814df" + #:patches '("clang-3.5-libc-search-path.patch"))) (define-public llvm-3.5 (package (inherit llvm) @@ -313,7 +367,8 @@ code analysis tools.") (define-public clang-3.5 (clang-from-llvm llvm-3.5 clang-runtime-3.5 - "0846h8vn3zlc00jkmvrmy88gc6ql6014c02l4jv78fpvfigmgssg")) + "0846h8vn3zlc00jkmvrmy88gc6ql6014c02l4jv78fpvfigmgssg" + #:patches '("clang-3.5-libc-search-path.patch"))) (define-public llvm-for-extempore (package (inherit llvm-3.7) -- cgit v1.2.3