summary refs log tree commit diff
path: root/gnu/packages/llvm.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/llvm.scm')
-rw-r--r--gnu/packages/llvm.scm343
1 files changed, 172 insertions, 171 deletions
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index a6f779e7f8..e819625a46 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016 Dennis Mungai <dmngaie@gmail.com>
 ;;; Copyright © 2016, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
@@ -76,18 +76,24 @@ as \"x86_64-linux\"."
              ("x86_64"      => "X86")
              ("i686"        => "X86"))))
 
-(define-public llvm-8
+(define (llvm-download-uri component version)
+  (if (version>=? version "9.0.1")
+      (string-append "https://github.com/llvm/llvm-project/releases/download"
+                     "/llvmorg-" version "/" component "-" version ".src.tar.xz")
+      (string-append "https://releases.llvm.org/" version "/" component "-"
+                     version ".src.tar.xz")))
+
+(define-public llvm
   (package
     (name "llvm")
-    (version "8.0.0")
+    (version "9.0.1")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "https://llvm.org/releases/"
-                          version "/llvm-" version ".src.tar.xz"))
+      (uri (llvm-download-uri "llvm" version))
       (sha256
        (base32
-        "0k124sxkfhfi1rca6kzkdraf4axhx99x3cw2rk55056628dvwwl8"))))
+        "16hwp3qa54c3a3v7h8nlw0fh5criqh0hlr1skybyk0cz70gyx880"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("python" ,python-2) ;bytes->str conversion in clang>=3.7 needs python-2
@@ -125,9 +131,7 @@ languages.  It currently supports compilation of C and C++ programs, using
 front-ends derived from GCC 4.0.1.  A new front-end for the C family of
 languages is in development.  The compiler infrastructure includes mirror sets
 of programming tools as well as libraries with equivalent functionality.")
-    (license license:ncsa)))
-
-(define-public llvm llvm-8)
+    (license license:asl2.0)))  ;with LLVM exceptions, see LICENSE.txt
 
 (define* (clang-runtime-from-llvm llvm hash
                                   #:optional (patches '()))
@@ -137,8 +141,7 @@ of programming tools as well as libraries with equivalent functionality.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://llvm.org/releases/"
-                           version "/compiler-rt-" version ".src.tar.xz"))
+       (uri (llvm-download-uri "compiler-rt" version))
        (sha256 (base32 hash))
        (patches (map search-patch patches))))
     (build-system cmake-build-system)
@@ -156,7 +159,7 @@ of programming tools as well as libraries with equivalent functionality.")
 functions for C and C++ programs.  It also provides header files that allow C
 and C++ source code to interface with the \"sanitization\" passes of the clang
 compiler.  In LLVM this library is called \"compiler-rt\".")
-    (license license:ncsa)
+    (license (package-license llvm))
 
     ;; <https://compiler-rt.llvm.org/> doesn't list MIPS as supported.
     (supported-systems (delete "mips64el-linux" %supported-systems))))
@@ -169,8 +172,10 @@ compiler.  In LLVM this library is called \"compiler-rt\".")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://llvm.org/releases/"
-                           version "/cfe-" version ".src.tar.xz"))
+       (uri (llvm-download-uri (if (version>=? version "9.0.1")
+                                   "clang"
+                                   "cfe")
+                               version))
        (sha256 (base32 hash))
        (patches (map search-patch patches))))
     ;; Using cmake allows us to treat llvm as an external library.  There
@@ -300,7 +305,9 @@ compiler.  In LLVM this library is called \"compiler-rt\".")
 Objective-C++ programming languages.  It uses LLVM as its back end.  The Clang
 project includes the Clang front end, the Clang static analyzer, and several
 code analysis tools.")
-    (license license:ncsa)))
+    (license (if (version>=? version "9.0")
+                 license:asl2.0         ;with LLVM exceptions
+                 license:ncsa))))
 
 (define (make-clang-toolchain clang)
   (package
@@ -347,151 +354,56 @@ output), and Binutils.")
               ("libc-debug" ,glibc "debug")
               ("libc-static" ,glibc "static")))))
 
-(define-public libcxx
-  (package
-    (name "libcxx")
-    (version (package-version llvm))
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "http://llvm.org/releases/"
-                           version "/libcxx-" version ".src.tar.xz"))
-       (sha256
-        (base32
-         "1qlx3wlxrnc5cwc1fcfc2vhfsl7j4294hi8y5kxj8hy8wxsjd462"))))
-    (build-system cmake-build-system)
-    (native-inputs
-     `(("clang" ,clang)
-       ("llvm" ,llvm)))
-    (home-page "https://libcxx.llvm.org")
-    (synopsis "C++ standard library")
-    (description
-     "This package provides an implementation of the C++ standard library for
-use with Clang, targeting C++11, C++14 and above.")
-    (license license:expat)))
-
-(define-public libclc
-  (package
-    (name "libclc")
-    (version (package-version llvm))
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/llvm/llvm-project.git")
-             (commit (string-append "llvmorg-" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "052h16wjcnqginzp7ki4il2xmm25v9nyk0wcz7cg03gbryhl7aqa"))))
-    (build-system cmake-build-system)
-    (arguments
-     `(#:configure-flags
-       (list (string-append "-DLLVM_CLANG="
-                            (assoc-ref %build-inputs "clang")
-                            "/bin/clang")
-             (string-append "-DPYTHON="
-                            (assoc-ref %build-inputs "python")
-                            "/bin/python3"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'chdir
-           (lambda _ (chdir "libclc") #t)))))
-    (native-inputs
-     `(("clang" ,clang)
-       ("llvm" ,llvm)
-       ("python" ,python)))
-    (home-page "https://libclc.llvm.org")
-    (synopsis "Libraries for the OpenCL programming language")
-    (description
-     "This package provides an implementation of the OpenCL library
-requirements according to version 1.1 of the OpenCL specification.")
-    ;; Apache license 2.0 with LLVM exception
-    (license license:asl2.0)))
-
-(define-public libomp
-  (package
-    (name "libomp")
-    (version (package-version llvm))
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://releases.llvm.org/"
-                                  version  "/openmp-" version
-                                  ".src.tar.xz"))
-              (sha256
-               (base32
-                "1mf9cpgvix34xlpv0inkgl3qmdvgvp96f7sksqizri0n5xfp1cgp"))
-              (file-name (string-append "libomp-" version ".tar.xz"))))
-    (build-system cmake-build-system)
-    ;; XXX: Note this gets built with GCC because building with Clang itself
-    ;; fails (missing <atomic>, even when libcxx is added as an input.)
-    (arguments
-     '(#:configure-flags '("-DLIBOMP_USE_HWLOC=ON"
-                           "-DOPENMP_TEST_C_COMPILER=clang"
-                           "-DOPENMP_TEST_CXX_COMPILER=clang++")
-       #:test-target "check-libomp"))
-    (native-inputs
-     `(("clang" ,clang)
-       ("llvm" ,llvm)
-       ("perl" ,perl)
-       ("pkg-config" ,pkg-config)))
-    (inputs
-     `(("hwloc" ,hwloc "lib")))
-    (home-page "https://openmp.llvm.org")
-    (synopsis "OpenMP run-time support library")
-    (description
-     "This package provides the run-time support library developed by the LLVM
-project for the OpenMP multi-theaded programming extension.  This package
-notably provides @file{libgomp.so}, which is has a binary interface compatible
-with that of libgomp, the GNU Offloading and Multi Processing Library.")
-    (license license:expat)))
-
 (define-public clang-runtime
   (clang-runtime-from-llvm
    llvm
-   "1c919wsm17xnv7lr8bhpq2wkq8113lzlw6hzhfr737j59x3wfddl"))
+   "0xwh79g3zggdabxgnd0bphry75asm1qz7mv3hcqihqwqr6aspgy2"))
 
 (define-public clang
   (clang-from-llvm llvm clang-runtime
-                   "0svk1f70hvpwrjp6x5i9kqwrqwxnmcrw5s7f4cxyd100mdd12k08"
-                   #:patches '("clang-7.0-libc-search-path.patch")))
+                   "0ls2h3iv4finqyflyhry21qhc9cm9ga7g1zq21020p065qmm2y2p"
+                   #:patches '("clang-9.0-libc-search-path.patch")))
 
 (define-public clang-toolchain
   (make-clang-toolchain clang))
 
-(define-public llvm-9
+(define-public llvm-9 llvm)
+(define-public clang-runtime-9 clang-runtime)
+(define-public clang-9 clang)
+(define-public clang-toolchain-9 clang-toolchain)
+
+(define-public llvm-8
   (package
     (inherit llvm)
-    (version "9.0.0")
+    (version "8.0.0")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://llvm.org/releases/"
-                                  version "/llvm-" version ".src.tar.xz"))
+              (uri (llvm-download-uri "llvm" version))
               (sha256
                (base32
-                "117ymdz1by2nkfq1c2p9m4050dp848kbjbiv6nsfj8hzy9f5d86n"))))
-    (license license:asl2.0)))
+                "0k124sxkfhfi1rca6kzkdraf4axhx99x3cw2rk55056628dvwwl8"))))
+    (license license:ncsa)))
 
-(define-public clang-runtime-9
+(define-public clang-runtime-8
   (clang-runtime-from-llvm
-   llvm-9
-   "03ni43lbkp63lr3p6sc94dphqmvnz5av5mml0xmk930xvnbcvr2n"))
+   llvm-8
+   "1c919wsm17xnv7lr8bhpq2wkq8113lzlw6hzhfr737j59x3wfddl"))
 
-(define-public clang-9
-  (clang-from-llvm llvm-9 clang-runtime-9
-                   "0426ma80i41qsgzm1qdz81mjskck426diygxi2k5vji2gkpixa3v"))
+(define-public clang-8
+  (clang-from-llvm llvm-8 clang-runtime-8
+                   "0svk1f70hvpwrjp6x5i9kqwrqwxnmcrw5s7f4cxyd100mdd12k08"
+                   #:patches '("clang-7.0-libc-search-path.patch")))
 
-(define-public clang-toolchain-9
-  (make-clang-toolchain clang-9))
+(define-public clang-toolchain-8
+  (make-clang-toolchain clang-8))
 
 (define-public llvm-7
   (package
-    (inherit llvm)
+    (inherit llvm-8)
     (version "7.0.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://llvm.org/releases/"
-                                  version "/llvm-" version ".src.tar.xz"))
+              (uri (llvm-download-uri "llvm" version))
               (sha256
                (base32
                 "16s196wqzdw4pmri15hadzqgdi926zln3an2viwyq0kini6zr3d3"))))))
@@ -502,7 +414,7 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
    "065ybd8fsc4h2hikbdyricj6pyv4r7r7kpcikhb2y5zf370xybkq"))
 
 (define-public clang-7
-  (clang-from-llvm llvm-7 clang-runtime
+  (clang-from-llvm llvm-7 clang-runtime-7
                    "067lwggnbg0w1dfrps790r5l6k8n5zwhlsw7zb6zvmfpwpfn4nx4"
                    #:patches '("clang-7.0-libc-search-path.patch")))
 
@@ -511,12 +423,11 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
 
 (define-public llvm-6
   (package
-    (inherit llvm)
+    (inherit llvm-7)
     (version "6.0.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://llvm.org/releases/"
-                                  version "/llvm-" version ".src.tar.xz"))
+              (uri (llvm-download-uri "llvm" version))
               (sha256
                (base32
                 "1qpls3vk85lydi5b4axl0809fv932qgsqgdgrk098567z4jc7mmn"))))))
@@ -527,39 +438,21 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
    "1fcr3jn24yr8lh36nc0c4ikli4744i2q9m1ik67p1jymwwaixkgl"))
 
 (define-public clang-6
-  (clang-from-llvm llvm-6 clang-runtime
+  (clang-from-llvm llvm-6 clang-runtime-6
                    "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
-    (inherit libcxx)
-    (version (package-version llvm-6))
-    (source
-     (origin
-       (inherit (package-source libcxx))
-       (uri (string-append "http://llvm.org/releases/"
-                           version "/libcxx-" version ".src.tar.xz"))
-       (sha256
-        (base32
-         "0rzw4qvxp6qx4l4h9amrq02gp7hbg8lw4m0sy3k60f50234gnm3n"))))
-    (native-inputs
-     `(("clang" ,clang-6)
-       ("llvm" ,llvm-6)))))
-
 (define-public llvm-3.9.1
-  (package (inherit llvm)
+  (package (inherit llvm-6)
     (name "llvm")
     (version "3.9.1")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "https://llvm.org/releases/"
-                          version "/llvm-" version ".src.tar.xz"))
+      (uri (llvm-download-uri "llvm" version))
       (sha256
        (base32
         "1vi9sf7rx1q04wj479rsvxayb6z740iaz3qniwp266fgp5a07n8z"))))))
@@ -578,14 +471,13 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
                    #:patches '("clang-3.8-libc-search-path.patch")))
 
 (define-public llvm-3.8
-  (package (inherit llvm)
+  (package (inherit llvm-3.9.1)
     (name "llvm")
     (version "3.8.1")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "https://llvm.org/releases/"
-                          version "/llvm-" version ".src.tar.xz"))
+      (uri (llvm-download-uri "llvm" version))
       (sha256
        (base32
         "1ybmnid4pw2hxn12ax5qa5kl1ldfns0njg8533y3mzslvd5cx0kf"))))))
@@ -603,13 +495,12 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
                    #:patches '("clang-3.8-libc-search-path.patch")))
 
 (define-public llvm-3.7
-  (package (inherit llvm)
+  (package (inherit llvm-3.8)
     (version "3.7.1")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://llvm.org/releases/"
-                           version "/llvm-" version ".src.tar.xz"))
+       (uri (llvm-download-uri "llvm" version))
        (sha256
         (base32
          "1masakdp9g2dan1yrazg7md5am2vacbkb3nahb3dchpc1knr8xxy"))))))
@@ -627,13 +518,12 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
                    #:patches '("clang-3.5-libc-search-path.patch")))
 
 (define-public llvm-3.6
-  (package (inherit llvm)
+  (package (inherit llvm-3.7)
     (version "3.6.2")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://llvm.org/releases/"
-                           version "/llvm-" version ".src.tar.xz"))
+       (uri (llvm-download-uri "llvm" version))
        (sha256
         (base32
          "153vcvj8gvgwakzr4j0kndc0b7wn91c2g1vy2vg24s6spxcc23gn"))))))
@@ -650,13 +540,12 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
                    #:patches '("clang-3.5-libc-search-path.patch")))
 
 (define-public llvm-3.5
-  (package (inherit llvm)
+  (package (inherit llvm-3.6)
     (version "3.5.2")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://llvm.org/releases/"
-                           version "/llvm-" version ".src.tar.xz"))
+       (uri (llvm-download-uri "llvm" version))
        (patches
         (search-patches "llvm-3.5-fix-clang-build-with-gcc5.patch"))
        (sha256
@@ -685,6 +574,118 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
     ;; Extempore refuses to build on architectures other than x86_64
     (supported-systems '("x86_64-linux"))))
 
+(define-public libcxx
+  (package
+    (name "libcxx")
+    (version "9.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (llvm-download-uri "libcxx" version))
+       (sha256
+        (base32
+         "0d2bj5i6mk4caq7skd5nsdmz8c2m5w5anximl5wz3x32p08zz089"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("clang" ,clang)
+       ("llvm" ,llvm)))
+    (home-page "https://libcxx.llvm.org")
+    (synopsis "C++ standard library")
+    (description
+     "This package provides an implementation of the C++ standard library for
+use with Clang, targeting C++11, C++14 and above.")
+    (license license:expat)))
+
+;; Libcxx files specifically used by PySide2.
+(define-public libcxx-6
+  (package
+    (inherit libcxx)
+    (version (package-version llvm-6))
+    (source
+     (origin
+       (inherit (package-source libcxx))
+       (uri (llvm-download-uri "libcxx" version))
+       (sha256
+        (base32
+         "0rzw4qvxp6qx4l4h9amrq02gp7hbg8lw4m0sy3k60f50234gnm3n"))))
+    (native-inputs
+     `(("clang" ,clang-6)
+       ("llvm" ,llvm-6)))))
+
+(define-public libclc
+  (package
+    (name "libclc")
+    (version "9.0.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/llvm/llvm-project.git")
+             (commit (string-append "llvmorg-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1d1qayvrvvc1di7s7jfxnjvxq2az4lwq1sw1b2gq2ic0nksvajz0"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "-DLLVM_CLANG="
+                            (assoc-ref %build-inputs "clang")
+                            "/bin/clang")
+             (string-append "-DPYTHON="
+                            (assoc-ref %build-inputs "python")
+                            "/bin/python3"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'chdir
+           (lambda _ (chdir "libclc") #t)))))
+    (native-inputs
+     `(("clang" ,clang)
+       ("llvm" ,llvm)
+       ("python" ,python)))
+    (home-page "https://libclc.llvm.org")
+    (synopsis "Libraries for the OpenCL programming language")
+    (description
+     "This package provides an implementation of the OpenCL library
+requirements according to version 1.1 of the OpenCL specification.")
+    ;; Apache license 2.0 with LLVM exception
+    (license license:asl2.0)))
+
+(define-public libomp
+  (package
+    (name "libomp")
+    (version "9.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (llvm-download-uri "openmp" version))
+              (sha256
+               (base32
+                "1knafnpp0f7hylx8q20lkd6g1sf0flly572dayc5d5kghh7hd52w"))
+              (file-name (string-append "libomp-" version ".tar.xz"))))
+    (build-system cmake-build-system)
+    ;; XXX: Note this gets built with GCC because building with Clang itself
+    ;; fails (missing <atomic>, even when libcxx is added as an input.)
+    (arguments
+     '(#:configure-flags '("-DLIBOMP_USE_HWLOC=ON"
+                           "-DOPENMP_TEST_C_COMPILER=clang"
+                           "-DOPENMP_TEST_CXX_COMPILER=clang++")
+       #:test-target "check-libomp"))
+    (native-inputs
+     `(("clang" ,clang)
+       ("llvm" ,llvm)
+       ("perl" ,perl)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("hwloc" ,hwloc "lib")))
+    (home-page "https://openmp.llvm.org")
+    (synopsis "OpenMP run-time support library")
+    (description
+     "This package provides the run-time support library developed by the LLVM
+project for the OpenMP multi-theaded programming extension.  This package
+notably provides @file{libgomp.so}, which is has a binary interface compatible
+with that of libgomp, the GNU Offloading and Multi Processing Library.")
+    (license license:expat)))
+
 (define-public python-llvmlite
   (package
     (name "python-llvmlite")