diff options
Diffstat (limited to 'gnu/packages/llvm.scm')
-rw-r--r-- | gnu/packages/llvm.scm | 107 |
1 files changed, 80 insertions, 27 deletions
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index cf60d2aa0d..98592ad090 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2016 Dennis Mungai <dmngaie@gmail.com> ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Roel Janssen <roel@gnu.org> +;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com> ;;; ;;; 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,23 +177,49 @@ 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 <glibc>/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. @@ -216,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) @@ -247,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) @@ -269,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) @@ -291,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) @@ -315,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) |