diff options
Diffstat (limited to 'gnu/packages/llvm.scm')
| -rw-r--r-- | gnu/packages/llvm.scm | 140 | 
1 files changed, 135 insertions, 5 deletions
| diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index d35c20e17c..b510f319f9 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -3,7 +3,7 @@  ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>  ;;; Copyright © 2015, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>  ;;; Copyright © 2016 Dennis Mungai <dmngaie@gmail.com> -;;; Copyright © 2016, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2016, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>  ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>  ;;; Copyright © 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com>  ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> @@ -476,21 +476,21 @@ output), and Binutils.")                ("libc-debug" ,glibc "debug")                ("libc-static" ,glibc "static"))))) -(define-public llvm-11 +(define-public llvm-12    (package      (name "llvm") -    (version "11.0.0") +    (version "12.0.0")      (source       (origin        (method url-fetch)        (uri (llvm-uri "llvm" version))        (sha256         (base32 -        "0s94lwil98w7zb7cjrbnxli0z7gklb312pkw74xs1d6zk346hgwi")))) +        "0l4b79gwfvxild974aigcq1yigypjsk2j5p59syhl6ksd744gp29"))))      (build-system cmake-build-system)      (outputs '("out" "opt-viewer"))      (native-inputs -     `(("python" ,python-2) ;bytes->str conversion in clang>=3.7 needs python-2 +     `(("python" ,python)         ("perl"   ,perl)))      (inputs       `(("libffi" ,libffi))) @@ -538,6 +538,45 @@ 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-12 +  (clang-runtime-from-llvm +   llvm-12 +   "0d444qihq9jhqnfv003cr704v363va72zl6qaw2algj1c85cva45")) + +(define-public clang-12 +  (clang-from-llvm llvm-12 clang-runtime-12 +                   "1vd9rhhrd8ghdg111lac7w8by71y9l14yh5zxfijsm6lj4p4avp2" +                   #:patches '("clang-11.0-libc-search-path.patch") +                   #:tools-extra +                   (origin +                     (method url-fetch) +                     (uri (llvm-uri "clang-tools-extra" +                                    (package-version llvm-12))) +                     (patches +                      (search-patches "clang-12-tools-extra-directory.patch")) +                     (sha256 +                      (base32 +                       "0p3dzr0qa7mar83y66xa5m5apynf6ia0lsdsq6axwnm64ysy0hdd"))))) + +(define-public clang-toolchain-12 +  (make-clang-toolchain clang-12)) + +(define-public llvm-11 +  (package +    (inherit llvm-12) +    (version "11.0.0") +    (source +     (origin +      (method url-fetch) +      (uri (llvm-uri "llvm" version)) +      (sha256 +       (base32 +        "0s94lwil98w7zb7cjrbnxli0z7gklb312pkw74xs1d6zk346hgwi")))) +    (native-inputs +     `(;; TODO: Switch to Python 3 in the next rebuild cycle. +       ("python" ,python-2) +       ("perl"   ,perl))))) +  (define-public clang-runtime-11    (clang-runtime-from-llvm     llvm-11 @@ -956,6 +995,97 @@ use with Clang, targeting C++11, C++14 and above.")       `(("clang" ,clang-6)         ("llvm" ,llvm-6))))) +(define-public libcxxabi-6 +  (package +    (name "libcxxabi") +    (version "6.0.1") +    (source +     (origin +       (method git-fetch) +       (uri (git-reference +             (url "https://github.com/llvm/llvm-project") +             (commit (string-append "llvmorg-" version)))) +       (file-name (git-file-name name version)) +       (sha256 +        (base32 +         "0ki6796b5z08kh3a3rbysr5wwb2dkl6wal5dzd03i4li5xfkvx1g")))) +    (build-system cmake-build-system) +    (arguments +     `(#:configure-flags +       (list (string-append "-DLIBCXXABI_LIBCXX_INCLUDES=" +                            (assoc-ref %build-inputs "libcxx") +                            "/include") +             "-DCMAKE_C_COMPILER=clang" +             "-DCMAKE_CXX_COMPILER=clang++") +       #:phases +       (modify-phases (@ (guix build cmake-build-system) %standard-phases) +         (add-after 'unpack 'chdir +           (lambda _ (chdir "libcxxabi"))) +         (add-after 'set-paths 'adjust-CPLUS_INCLUDE_PATH +           (lambda* (#:key inputs #:allow-other-keys) +             (let ((gcc (assoc-ref inputs  "gcc"))) +               ;; Hide GCC's C++ headers so that they do not interfere with +               ;; the ones we are attempting to build. +               (setenv "CPLUS_INCLUDE_PATH" +                       (string-join +                        (cons (string-append +                               (assoc-ref inputs "libcxx") "/include/c++/v1") +                              (delete (string-append gcc "/include/c++") +                                      (string-split (getenv "CPLUS_INCLUDE_PATH") +                                                    #\:))) +                        ":")) +               (format #true +                       "environment variable `CPLUS_INCLUDE_PATH' changed to ~a~%" +                       (getenv "CPLUS_INCLUDE_PATH"))))) +         (add-after 'install 'install-headers +           (lambda* (#:key outputs #:allow-other-keys) +             (let ((include-dir (string-append +                                 (assoc-ref outputs "out") "/include"))) +               (install-file "../libcxxabi/include/__cxxabi_config.h" include-dir) +               (install-file "../libcxxabi/include/cxxabi.h" include-dir))))))) +    (native-inputs +     `(("clang" ,clang-6) +       ("llvm" ,llvm-6) +       ("libcxx" ,libcxx-6))) +    (home-page "https://libcxxabi.llvm.org") +    (synopsis "C++ standard library support") +    (description +     "This package provides an implementation of low level support for a +standard C++ library.") +    (license license:expat))) + +(define-public libcxx+libcxxabi-6 +  (package +    (inherit libcxx-6) +    (name "libcxx+libcxxabi") +    (version (package-version libcxx-6)) +    (arguments +     `(#:configure-flags +       (list "-DLIBCXX_CXX_ABI=libcxxabi" +             (string-append "-DLIBCXX_CXX_ABI_INCLUDE_PATHS=" +                            (assoc-ref %build-inputs "libcxxabi") +                            "/include")) +       #:phases +       (modify-phases (@ (guix build cmake-build-system) %standard-phases) +         (add-after 'set-paths 'adjust-CPLUS_INCLUDE_PATH +           (lambda* (#:key inputs #:allow-other-keys) +             (let ((gcc (assoc-ref inputs  "gcc"))) +               ;; Hide GCC's C++ headers so that they do not interfere with +               ;; the ones we are attempting to build. +               (setenv "CPLUS_INCLUDE_PATH" +                       (string-join +                        (delete (string-append gcc "/include/c++") +                                (string-split (getenv "CPLUS_INCLUDE_PATH") +                                              #\:)) +                        ":")) +               (format #true +                       "environment variable `CPLUS_INCLUDE_PATH' changed to ~a~%" +                       (getenv "CPLUS_INCLUDE_PATH")))))))) +    (native-inputs +     `(("clang" ,clang-6) +       ("llvm" ,llvm-6) +       ("libcxxabi" ,libcxxabi-6))))) +  (define-public libclc    (package      (name "libclc") | 
