mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 21:38:07 -05:00
gnu: clang: Move version conditionals out of the builder.
* gnu/packages/llvm.scm (clang-from-llvm)[arguments]: Rewrite phase 'set-glibc-file-names' to use VERSION>=? from (guix utils) and splice in the relevant build code, instead of doing the comparison at build time.
This commit is contained in:
parent
f5cc5de8b6
commit
5041cc28cb
1 changed files with 50 additions and 55 deletions
|
@ -226,18 +226,14 @@ (define* (clang-from-llvm llvm clang-runtime hash
|
|||
(string-append "\"i686-unknown-linux-gnu\", "
|
||||
all)))
|
||||
#t))
|
||||
(add-after
|
||||
'unpack 'set-glibc-file-names
|
||||
(add-after 'unpack 'set-glibc-file-names
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((libc (assoc-ref inputs "libc"))
|
||||
(compiler-rt (assoc-ref inputs "clang-runtime"))
|
||||
(gcc (assoc-ref inputs "gcc"))
|
||||
(version
|
||||
(string->number
|
||||
,(version-major (package-version clang-runtime)))))
|
||||
(cond
|
||||
((> version 3)
|
||||
;; Link to libclang_rt files from clang-runtime.
|
||||
(gcc (assoc-ref inputs "gcc")))
|
||||
,@(cond
|
||||
((version>=? version "6.0")
|
||||
`(;; Link to libclang_rt files from clang-runtime.
|
||||
(substitute* "lib/Driver/ToolChain.cpp"
|
||||
(("getDriver\\(\\)\\.ResourceDir")
|
||||
(string-append "\"" compiler-rt "\"")))
|
||||
|
@ -252,14 +248,15 @@ (define* (clang-from-llvm llvm clang-runtime hash
|
|||
;; location.
|
||||
(("LibStdCXXIncludePathCandidates\\[\\] = \\{")
|
||||
(string-append
|
||||
"LibStdCXXIncludePathCandidates[] = { \"" gcc "/include/c++\","))
|
||||
"LibStdCXXIncludePathCandidates[] = { \"" gcc
|
||||
"/include/c++\","))
|
||||
|
||||
;; Make sure libc's libdir is on the search path, to
|
||||
;; allow crt1.o & co. to be found.
|
||||
(("@GLIBC_LIBDIR@")
|
||||
(string-append libc "/lib"))))
|
||||
(string-append libc "/lib")))))
|
||||
(else
|
||||
(substitute* "lib/Driver/Tools.cpp"
|
||||
`((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")
|
||||
|
@ -268,21 +265,19 @@ (define* (clang-from-llvm llvm clang-runtime hash
|
|||
|
||||
;; 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"
|
||||
,@(if (version>=? version "3.8")
|
||||
'((substitute* "lib/Driver/Tools.cpp"
|
||||
(("TC\\.getDriver\\(\\)\\.ResourceDir")
|
||||
(string-append "\"" compiler-rt "\"")))
|
||||
(substitute* "lib/Driver/ToolChain.cpp"
|
||||
(("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")))))
|
||||
(string-append libc "/lib"))))))
|
||||
#t)))
|
||||
(add-after 'install 'install-clean-up-/share/clang
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
|
|
Loading…
Reference in a new issue