diff options
Diffstat (limited to 'gnu/packages/llvm.scm')
-rw-r--r-- | gnu/packages/llvm.scm | 231 |
1 files changed, 125 insertions, 106 deletions
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index 358fbfff0a..c500430dd5 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -87,68 +87,6 @@ as \"x86_64-linux\"." (string-append "https://releases.llvm.org/" version "/" component "-" version ".src.tar.xz"))) -(define-public llvm-10 - (package - (name "llvm") - (version "10.0.0") - (source - (origin - (method url-fetch) - (uri (llvm-uri "llvm" version)) - (sha256 - (base32 - "1pwgm6cr0xr5a0hrbqs1zvsvvjvy0yq1y47c96804wcs795s90yz")))) - (build-system cmake-build-system) - (outputs '("out" "opt-viewer")) - (native-inputs - `(("python" ,python-2) ;bytes->str conversion in clang>=3.7 needs python-2 - ("perl" ,perl))) - (inputs - `(("libffi" ,libffi))) - (propagated-inputs - `(("zlib" ,zlib))) ;to use output from llvm-config - (arguments - `(#:configure-flags '("-DCMAKE_SKIP_BUILD_RPATH=FALSE" - "-DCMAKE_BUILD_WITH_INSTALL_RPATH=FALSE" - "-DBUILD_SHARED_LIBS:BOOL=TRUE" - "-DLLVM_ENABLE_FFI:BOOL=TRUE" - "-DLLVM_REQUIRES_RTTI=1" ; For some third-party utilities - "-DLLVM_INSTALL_UTILS=ON") ; Needed for rustc. - - ;; Don't use '-g' during the build, to save space. - #:build-type "Release" - #:phases - (modify-phases %standard-phases - (add-before 'build 'shared-lib-workaround - ;; Even with CMAKE_SKIP_BUILD_RPATH=FALSE, llvm-tblgen - ;; doesn't seem to get the correct rpath to be able to run - ;; from the build directory. Set LD_LIBRARY_PATH as a - ;; workaround. - (lambda _ - (setenv "LD_LIBRARY_PATH" - (string-append (getcwd) "/lib")) - #t)) - (add-after 'install 'install-opt-viewer - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (opt-viewer-out (assoc-ref outputs "opt-viewer")) - (opt-viewer-share-dir (string-append opt-viewer-out "/share")) - (opt-viewer-dir (string-append opt-viewer-share-dir "/opt-viewer"))) - (mkdir-p opt-viewer-share-dir) - (rename-file (string-append out "/share/opt-viewer") - opt-viewer-dir)) - #t))))) - (home-page "https://www.llvm.org") - (synopsis "Optimizing compiler infrastructure") - (description - "LLVM is a compiler infrastructure designed for compile-time, link-time, -runtime, and idle-time optimization of programs from arbitrary programming -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:asl2.0))) ;with LLVM exceptions, see LICENSE.txt - (define* (clang-runtime-from-llvm llvm hash #:optional (patches '())) (package @@ -512,6 +450,101 @@ output), and Binutils.") ("libc-debug" ,glibc "debug") ("libc-static" ,glibc "static"))))) +(define-public llvm-11 + (package + (name "llvm") + (version "11.0.0") + (source + (origin + (method url-fetch) + (uri (llvm-uri "llvm" version)) + (sha256 + (base32 + "0s94lwil98w7zb7cjrbnxli0z7gklb312pkw74xs1d6zk346hgwi")))) + (build-system cmake-build-system) + (outputs '("out" "opt-viewer")) + (native-inputs + `(("python" ,python-2) ;bytes->str conversion in clang>=3.7 needs python-2 + ("perl" ,perl))) + (inputs + `(("libffi" ,libffi))) + (propagated-inputs + `(("zlib" ,zlib))) ;to use output from llvm-config + (arguments + `(#:configure-flags '("-DCMAKE_SKIP_BUILD_RPATH=FALSE" + "-DCMAKE_BUILD_WITH_INSTALL_RPATH=FALSE" + "-DBUILD_SHARED_LIBS:BOOL=TRUE" + "-DLLVM_ENABLE_FFI:BOOL=TRUE" + "-DLLVM_REQUIRES_RTTI=1" ; For some third-party utilities + "-DLLVM_INSTALL_UTILS=ON") ; Needed for rustc. + + ;; Don't use '-g' during the build, to save space. + #:build-type "Release" + #:phases + (modify-phases %standard-phases + (add-before 'build 'shared-lib-workaround + ;; Even with CMAKE_SKIP_BUILD_RPATH=FALSE, llvm-tblgen + ;; doesn't seem to get the correct rpath to be able to run + ;; from the build directory. Set LD_LIBRARY_PATH as a + ;; workaround. + (lambda _ + (setenv "LD_LIBRARY_PATH" + (string-append (getcwd) "/lib")) + #t)) + (add-after 'install 'install-opt-viewer + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (opt-viewer-out (assoc-ref outputs "opt-viewer")) + (opt-viewer-share-dir (string-append opt-viewer-out "/share")) + (opt-viewer-dir (string-append opt-viewer-share-dir "/opt-viewer"))) + (mkdir-p opt-viewer-share-dir) + (rename-file (string-append out "/share/opt-viewer") + opt-viewer-dir)) + #t))))) + (home-page "https://www.llvm.org") + (synopsis "Optimizing compiler infrastructure") + (description + "LLVM is a compiler infrastructure designed for compile-time, link-time, +runtime, and idle-time optimization of programs from arbitrary programming +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:asl2.0))) ;with LLVM exceptions, see LICENSE.txt + +(define-public clang-runtime-11 + (clang-runtime-from-llvm + llvm-11 + "0d5j5l8phwqjjscmk8rmqn0i2i0abl537gdbkagl8fjpzy1gyjip")) + +(define-public clang-11 + (clang-from-llvm llvm-11 clang-runtime-11 + "02ajkij85966vd150iy246mv16dsaph1kfi0y8wnncp8w6nar5hg" + #:patches '("clang-11.0-libc-search-path.patch") + #:tools-extra + (origin + (method url-fetch) + (uri (llvm-uri "clang-tools-extra" + (package-version llvm-11))) + (sha256 + (base32 + "02bcwwn54661madhq4nxc069s7p7pj5gpqi8ww50w3anbpviilzy"))))) + +(define-public clang-toolchain-11 + (make-clang-toolchain clang-11)) + +(define-public llvm-10 + (package + (inherit llvm-11) + (version "10.0.0") + (source + (origin + (method url-fetch) + (uri (llvm-uri "llvm" version)) + (sha256 + (base32 + "1pwgm6cr0xr5a0hrbqs1zvsvvjvy0yq1y47c96804wcs795s90yz")))))) + (define-public clang-runtime-10 (clang-runtime-from-llvm llvm-10 @@ -564,39 +597,9 @@ output), and Binutils.") (define-public clang-toolchain-9 (make-clang-toolchain clang-9)) -;; Default LLVM and Clang version. -(define-public llvm llvm-9) -(define-public clang-runtime clang-runtime-9) -(define-public clang clang-9) -(define-public clang-toolchain clang-toolchain-9) - -(define-public lld - (package - (name "lld") - (version (package-version llvm-10)) - (source (origin - (method url-fetch) - (uri (llvm-uri "lld" version)) - (sha256 - (base32 - "026pwcbczcg0j5c9h7hxxrn3ki81ia9m9sfn0sy0bvzffv2xg85r")))) - (build-system cmake-build-system) - (inputs - `(("llvm" ,llvm-10))) - (arguments - `(#:build-type "Release" - ;; TODO: Tests require the lit tool, which isn't installed by the LLVM - ;; package. - #:tests? #f)) - (home-page "https://lld.llvm.org/") - (synopsis "Linker from the LLVM project") - (description "LLD is a high-performance linker, built as a set of reusable -components which highly leverage existing libraries in the larger LLVM Project.") - (license license:asl2.0))) ; With LLVM exception - (define-public llvm-8 (package - (inherit llvm) + (inherit llvm-9) (version "8.0.0") (source (origin (method url-fetch) @@ -821,19 +824,35 @@ components which highly leverage existing libraries in the larger LLVM Project." "0846h8vn3zlc00jkmvrmy88gc6ql6014c02l4jv78fpvfigmgssg" #:patches '("clang-3.5-libc-search-path.patch"))) -(define-public llvm-for-extempore - (package (inherit llvm-3.8) - (name "llvm-for-extempore") - (source - (origin - (method url-fetch) - (uri (string-append "http://extempore.moso.com.au/extras/" - "llvm-3.8.0.src-patched-for-extempore.tar.xz")) - (sha256 - (base32 - "1svdl6fxn8l01ni8mpm0bd5h856ahv3h9sdzgmymr6fayckjvqzs")))) - ;; Extempore refuses to build on architectures other than x86_64 - (supported-systems '("x86_64-linux")))) +;; Default LLVM and Clang version. +(define-public llvm llvm-9) +(define-public clang-runtime clang-runtime-9) +(define-public clang clang-9) +(define-public clang-toolchain clang-toolchain-9) + +(define-public lld + (package + (name "lld") + (version "11.0.0") + (source (origin + (method url-fetch) + (uri (llvm-uri "lld" version)) + (sha256 + (base32 + "077xyh7sij6mhp4dc4kdcmp9whrpz332fa12rwxnzp3wgd5bxrzg")))) + (build-system cmake-build-system) + (inputs + `(("llvm" ,llvm-11))) + (arguments + `(#:build-type "Release" + ;; TODO: Tests require the lit tool, which isn't installed by the LLVM + ;; package. + #:tests? #f)) + (home-page "https://lld.llvm.org/") + (synopsis "Linker from the LLVM project") + (description "LLD is a high-performance linker, built as a set of reusable +components which highly leverage existing libraries in the larger LLVM Project.") + (license license:asl2.0))) ; With LLVM exception (define-public libcxx (package |