From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id qDa0Ovc0TGIDRwEAgWs5BA (envelope-from ) for ; Tue, 05 Apr 2022 14:24:23 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id 6BVCM/c0TGILkQAAG6o9tA (envelope-from ) for ; Tue, 05 Apr 2022 14:24:23 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 348FF262DF for ; Tue, 5 Apr 2022 14:24:23 +0200 (CEST) Received: from localhost ([::1]:54816 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nbiEQ-00034N-6t for larch@yhetil.org; Tue, 05 Apr 2022 08:24:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59706) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nbiCA-0001Zj-CY for guix-patches@gnu.org; Tue, 05 Apr 2022 08:22:03 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:60129) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nbiCA-00039m-3Q for guix-patches@gnu.org; Tue, 05 Apr 2022 08:22:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1nbiC9-0002pW-VU for guix-patches@gnu.org; Tue, 05 Apr 2022 08:22:01 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#54725] [PATCH 1/2] gnu: LLVM, Clang: Add 14.0.0. References: <20220405121811.26289-1-marius@gnu.org> In-Reply-To: <20220405121811.26289-1-marius@gnu.org> Resent-From: Marius Bakke Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 05 Apr 2022 12:22:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 54725 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 54725@debbugs.gnu.org Received: via spool by 54725-submit@debbugs.gnu.org id=B54725.164916126710774 (code B ref 54725); Tue, 05 Apr 2022 12:22:01 +0000 Received: (at 54725) by debbugs.gnu.org; 5 Apr 2022 12:21:07 +0000 Received: from localhost ([127.0.0.1]:54022 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nbiBG-0002nh-PI for submit@debbugs.gnu.org; Tue, 05 Apr 2022 08:21:07 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37812) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nbiBF-0002mo-4K for 54725@debbugs.gnu.org; Tue, 05 Apr 2022 08:21:06 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:58736) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nbiB9-0002xT-O0 for 54725@debbugs.gnu.org; Tue, 05 Apr 2022 08:20:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:Subject:To:From:in-reply-to: references; bh=TSSiSxmnxIyAU5n2cVzVicdRGYoKDbjylmP1cL5cUHk=; b=CDFxdAtst6JhQj tJqgrpwIYEufcAmRRuDVrvZfBq2VgiRQcLn98nfCaP3i/9ipElzhI08MLUgD2o3QnxMxDB/tggh4Q 46GixPCAWldksLB5PGJE2UcGoww+OFnbL4G+xLiQPOXYnsk9F9AUa3Xtp3Wddg2Mk1CMPyMriZZ9t dgV9yn+ikjByxcjE+9+OWSFID3Ix0yoxCkpoU/PRdZvv9Ljb1uXeHW5+kHxFrkNyPcoCuEAcme5mq qJXWYRUSeHEp0LT9f1T7rs1crqLueTxGnMN1B/Te27UuqjD+gR3+jcrb41zhsSPJs+KqpTGj3bXS1 zTVFxEXJCM/FHqiXp5cg==; Received: from eduroam-193-157-181-199.wlan.uio.no ([193.157.181.199]:54010 helo=localhost) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nbiB9-0004qQ-8i for 54725@debbugs.gnu.org; Tue, 05 Apr 2022 08:20:59 -0400 From: Marius Bakke Date: Tue, 5 Apr 2022 14:20:54 +0200 Message-Id: <20220405122055.26649-1-marius@gnu.org> X-Mailer: git-send-email 2.34.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Migadu-Flow: FLOW_IN X-Migadu-To: larch@yhetil.org X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1649161463; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=TSSiSxmnxIyAU5n2cVzVicdRGYoKDbjylmP1cL5cUHk=; b=rfDtUNR4GZEfyenqMISY6nba1WTw1jyk0+/j1RF6wTTbJXu9nAOGclKZF4D2tnfizwQS4X efU9yl3YzfaPBcLfIdM+AIVqGSpDTVzFMeCltBs2qiGajiwRhbytL+YwI7NPjyaPEpAbBq QhESWAyFGtN4msbIkVhxgbLhskpUSx6sFaBKeP06WEjV2dj/KuteUtiVB6oQZKK6692/n5 SFPmpzDWjp739MDAI741+gTVrYzQ3uxDNM1IxVTL1PFYSAP++kdg0UmzW9l+e0HUOFYAG2 VlvVh7d66NgodBK2gHlF4qCfOS7LKUFGaSns3px713D5sIgMdkb/4OhlvYSzsw== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1649161463; a=rsa-sha256; cv=none; b=APRsl1UOvkFAbt360dj8yTc3Xmq2ofpKGUTL+ojUgqLg2jMXLg13gAg6c6Aii17Y/LiQIU pB/cKZq3llF4Z3Q5WGWjO72c3WgQg8Ov3fbmY6+m5jvR/gGp5g4Eotsku67fQk0kMsHJU9 bGpYO6bBrSJIWZW11uKVA6XnSrFfw6HWAFly8Yq70dcoi2QouxJmTcEM/NOuHAsERHGCYx xjXHFLQzT2ZZNgy5T97R+gaIbRuM/BNL1fks5svR7uC3XrWBFw6RdXX/vTOAAxgfsYVxTV bqhXP1/qxvR67IhkAsJsL7FWzJctKIAvc6JT2IgLbj0BybXJfvaaiN402X27Ag== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gnu.org header.s=fencepost-gnu-org header.b=CDFxdAts; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -3.57 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gnu.org header.s=fencepost-gnu-org header.b=CDFxdAts; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 348FF262DF X-Spam-Score: -3.57 X-Migadu-Scanner: scn0.migadu.com X-TUID: NRDk2A8RBoat * gnu/packages/llvm.scm (%llvm-monorepo-hashes, %llvm-patches, llvm-monorepo): New variables. (clang-runtime-from-llvm): Make HASH optional; use monorepo when not present. (clang-from-llvm): Likewise. (llvm-14, clang-runtime-14, clang-14, clang-toolchain-14, lld-14): New variables. (llvm-13): Inherit from LLVM-14. (lld-13): Inherit from LLD-14. (lld): Turn into alias for LLD-14. * gnu/packages/patches/clang-14.0-libc-search-path.patch: New file. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/zig.scm (zig): Change from LLD to LLD-13. --- gnu/local.mk | 1 + gnu/packages/llvm.scm | 229 ++++++++++++------ .../patches/clang-14.0-libc-search-path.patch | 94 +++++++ gnu/packages/zig.scm | 2 +- 4 files changed, 255 insertions(+), 71 deletions(-) create mode 100644 gnu/packages/patches/clang-14.0-libc-search-path.patch diff --git a/gnu/local.mk b/gnu/local.mk index 60ee713508..df8bbc9fbc 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -950,6 +950,7 @@ dist_patch_DATA = \ %D%/packages/patches/clang-11.0-libc-search-path.patch \ %D%/packages/patches/clang-12.0-libc-search-path.patch \ %D%/packages/patches/clang-13.0-libc-search-path.patch \ + %D%/packages/patches/clang-14.0-libc-search-path.patch \ %D%/packages/patches/clang-runtime-asan-build-fixes.patch \ %D%/packages/patches/clang-runtime-esan-build-fixes.patch \ %D%/packages/patches/clang-runtime-9-libsanitizer-mode-field.patch \ diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index eb949bed1b..0011faa50f 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -108,17 +108,21 @@ (define (llvm-uri component version) (define %llvm-release-monitoring-url "https://github.com/llvm/llvm-project/releases") -(define* (clang-runtime-from-llvm llvm hash - #:optional (patches '())) +(define* (clang-runtime-from-llvm llvm + #:optional + hash + (patches '())) (package (name "clang-runtime") (version (package-version llvm)) (source - (origin - (method url-fetch) - (uri (llvm-uri "compiler-rt" version)) - (sha256 (base32 hash)) - (patches (map search-patch patches)))) + (if hash + (origin + (method url-fetch) + (uri (llvm-uri "compiler-rt" version)) + (sha256 (base32 hash)) + (patches (map search-patch patches))) + (llvm-monorepo (package-version llvm)))) (build-system cmake-build-system) (native-inputs (package-native-inputs llvm)) (inputs @@ -162,7 +166,8 @@ (define* (clang-runtime-from-llvm llvm hash ;; doesn't list MIPS as supported. (supported-systems (delete "mips64el-linux" %supported-systems)))) -(define* (clang-from-llvm llvm clang-runtime hash +(define* (clang-from-llvm llvm clang-runtime + #:optional hash #:key (patches '()) tools-extra (properties (append `((release-monitoring-url @@ -176,14 +181,16 @@ (define* (clang-from-llvm llvm clang-runtime hash (name "clang") (version (package-version llvm)) (source - (origin - (method url-fetch) - (uri (llvm-uri (if (version>=? version "9.0.1") - "clang" - "cfe") - version)) - (sha256 (base32 hash)) - (patches (map search-patch patches)))) + (if hash + (origin + (method url-fetch) + (uri (llvm-uri (if (version>=? version "9.0.1") + "clang" + "cfe") + version)) + (sha256 (base32 hash)) + (patches (map search-patch patches))) + (llvm-monorepo (package-version llvm)))) ;; Using cmake allows us to treat llvm as an external library. There ;; doesn't seem to be any way to do this with clang's autotools-based ;; build system. @@ -519,17 +526,27 @@ (define (make-clang-toolchain clang) ("libc-debug" ,glibc "debug") ("libc-static" ,glibc "static"))))) -(define-public llvm-13 +(define %llvm-monorepo-hashes + '(("14.0.0" . "1ixqzjzq4ad3mv1w44gwcg1shy34c2b3i9ja71vx1wa7l2ms2376"))) + +(define %llvm-patches + '(("14.0.0" . ("clang-14.0-libc-search-path.patch")))) + +(define (llvm-monorepo version) + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/llvm/llvm-project") + (commit (string-append "llvmorg-" version)))) + (file-name (git-file-name "llvm-project" version)) + (sha256 (base32 (assoc-ref %llvm-monorepo-hashes version))) + (patches (map search-patch (assoc-ref %llvm-patches version))))) + +(define-public llvm-14 (package (name "llvm") - (version "13.0.1") - (source - (origin - (method url-fetch) - (uri (llvm-uri "llvm" version)) - (sha256 - (base32 - "0d681xiixmx9inwvz14vi3xsznrcryk06a8rvk9cljiq5kc80szc")))) + (version "14.0.0") + (source (llvm-monorepo version)) (build-system cmake-build-system) (outputs '("out" "opt-viewer")) (native-inputs @@ -538,42 +555,46 @@ (define-public llvm-13 (inputs (list libffi)) (propagated-inputs - (list zlib)) ;to use output from llvm-config + (list zlib)) ;to use output from llvm-config (arguments - `(#:configure-flags - ,#~(quasiquote - ;; These options are required for cross-compiling LLVM according to - ;; https://llvm.org/docs/HowToCrossCompileLLVM.html. - (#$@(if (%current-target-system) - #~(,(string-append "-DLLVM_TABLEGEN=" - #+(file-append this-package - "/bin/llvm-tblgen")) - #$(string-append "-DLLVM_DEFAULT_TARGET_TRIPLE=" - (%current-target-system)) - #$(string-append "-DLLVM_TARGET_ARCH=" - (system->llvm-target)) - #$(string-append "-DLLVM_TARGETS_TO_BUILD=" - (system->llvm-target))) - #~()) - "-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-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))))))) + (list + #:configure-flags + #~(list + ;; These options are required for cross-compiling LLVM according + ;; to . + #$@(if (%current-target-system) + #~(,(string-append "-DLLVM_TABLEGEN=" + #+(file-append this-package + "/bin/llvm-tblgen")) + #$(string-append "-DLLVM_DEFAULT_TARGET_TRIPLE=" + (%current-target-system)) + #$(string-append "-DLLVM_TARGET_ARCH=" + (system->llvm-target)) + #$(string-append "-DLLVM_TARGETS_TO_BUILD=" + (system->llvm-target))) + '()) + "-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-after 'unpack 'change-directory + (lambda _ + (chdir "llvm"))) + (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))))))) (home-page "https://www.llvm.org") (synopsis "Optimizing compiler infrastructure") (description @@ -586,6 +607,55 @@ (define-public llvm-13 (license license:asl2.0) (properties `((release-monitoring-url . ,%llvm-release-monitoring-url))))) +(define-public clang-runtime-14 + (let ((template (clang-runtime-from-llvm llvm-14))) + (package + (inherit template) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:phases phases '(@ (guix build cmake-build-system) %standard-phases)) + #~(modify-phases #$phases + (add-after 'unpack 'change-directory + (lambda _ + (chdir "compiler-rt"))))))) + (native-inputs + `(;; FIXME: libfuzzer fails to build with GCC 10. + ("gcc" ,gcc-11) + ,@(package-native-inputs template)))))) + +(define-public clang-14 + (let ((template (clang-from-llvm llvm-14 clang-runtime-14))) + (package + (inherit template) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:phases phases '(@ (guix build cmake-build-system) %standard-phases)) + #~(modify-phases #$phases + (add-after 'unpack 'change-directory + (lambda _ + (chdir "clang")))))))))) + +(define-public clang-toolchain-14 + (make-clang-toolchain clang-14)) + +(define-public llvm-13 + (package + (inherit llvm-14) + (version "13.0.1") + (source + (origin + (method url-fetch) + (uri (llvm-uri "llvm" version)) + (sha256 + (base32 + "0d681xiixmx9inwvz14vi3xsznrcryk06a8rvk9cljiq5kc80szc")))) + (arguments + (substitute-keyword-arguments (package-arguments llvm-14) + ((#:phases phases '%standard-phases) + #~(modify-phases #$phases + (delete 'change-directory))))) + (properties `((release-monitoring-url . ,%llvm-release-monitoring-url))))) + (define-public clang-runtime-13 (clang-runtime-from-llvm llvm-13 @@ -1072,9 +1142,32 @@ (define-public libunwind-headers (properties `((release-monitoring-url . ,%llvm-release-monitoring-url))) (license license:asl2.0))) ;with LLVM exceptions -(define-public lld +(define-public lld-14 (package (name "lld") + (version "14.0.0") + (source (llvm-monorepo version)) + (build-system cmake-build-system) + (inputs + (list llvm-14)) + (arguments + '(#:build-type "Release" + ;; TODO: Tests require the lit tool, which isn't installed by the LLVM + ;; package. + #:tests? #f + #:phases (modify-phases %standard-phases + (add-after 'unpack 'change-directory + (lambda _ + (chdir "lld")))))) + (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 lld-13 + (package + (inherit lld-14) (version "13.0.1") (source (origin (method url-fetch) @@ -1082,7 +1175,6 @@ (define-public lld (sha256 (base32 "1yscckcszfr234k4svhybdbsnz6w65x8pldl6c2nhyxzx12zfsk6")))) - (build-system cmake-build-system) (native-inputs ;; Note: check to see ;; whether this is still necessary. @@ -1090,20 +1182,15 @@ (define-public lld (inputs (list llvm-13)) (arguments - `(#:build-type "Release" + '(#: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.") - (properties `((release-monitoring-url . ,%llvm-release-monitoring-url))) - (license license:asl2.0))) ; With LLVM exception + (properties `((release-monitoring-url . ,%llvm-release-monitoring-url))))) (define-public lld-12 (package - (inherit lld) + (inherit lld-13) (version "12.0.1") (source (origin (method url-fetch) @@ -1114,6 +1201,8 @@ (define-public lld-12 (inputs (modify-inputs (package-inputs lld) (replace "llvm" llvm-12))))) +(define-public lld lld-14) + (define* (make-lld-wrapper lld #:key lld-as-ld?) "Return a LLD wrapper. When LLD-AS-LD? is true, create a 'ld' symlink that points to 'lld'." diff --git a/gnu/packages/patches/clang-14.0-libc-search-path.patch b/gnu/packages/patches/clang-14.0-libc-search-path.patch new file mode 100644 index 0000000000..7e439cd1ef --- /dev/null +++ b/gnu/packages/patches/clang-14.0-libc-search-path.patch @@ -0,0 +1,94 @@ +Clang attempts to guess file names based on the OS and distro (yes!), +but unfortunately, that doesn't work for us. + +This patch makes it easy to insert libc's $libdir so that Clang passes the +correct absolute file name of crt1.o etc. to 'ld'. It also disables all +the distro-specific stuff and removes the hard-coded FHS directory names +to make sure Clang also works on foreign distros. + +diff --git a/clang/lib/Driver/Distro.cpp b/clang/lib/Driver/Distro.cpp +--- a/clang/lib/Driver/Distro.cpp ++++ b/clang/lib/Driver/Distro.cpp +@@ -96,6 +96,10 @@ static Distro::DistroType DetectLsbRelease(llvm::vfs::FileSystem &VFS) { + } + + static Distro::DistroType DetectDistro(llvm::vfs::FileSystem &VFS) { ++ // The compiler should always behave the same, even when used via Guix on a ++ // foreign distro. ++ return Distro::UnknownDistro; ++ + Distro::DistroType Version = Distro::UnknownDistro; + + // Newer freedesktop.org's compilant systemd-based systems +diff --git a/clang/lib/Driver/ToolChains/Cuda.cpp b/clang/lib/Driver/ToolChains/Cuda.cpp +--- a/clang/lib/Driver/ToolChains/Cuda.cpp ++++ b/clang/lib/Driver/ToolChains/Cuda.cpp +@@ -117,6 +117,9 @@ CudaInstallationDetector::CudaInstallationDetector( + const Driver &D, const llvm::Triple &HostTriple, + const llvm::opt::ArgList &Args) + : D(D) { ++ // Don't look for CUDA in /usr. ++ return; ++ + struct Candidate { + std::string Path; + bool StrictChecking; +diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp +--- a/clang/lib/Driver/ToolChains/Linux.cpp ++++ b/clang/lib/Driver/ToolChains/Linux.cpp +@@ -186,6 +186,10 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) + + Generic_GCC::PushPPaths(PPaths); + ++ // Comment out the distro-specific tweaks so that they don't bite when ++ // using Guix on a foreign distro. ++#if 0 ++ + Distro Distro(D.getVFS(), Triple); + + if (Distro.IsAlpineLinux() || Triple.isAndroid()) { +@@ -250,6 +254,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) + + if (IsAndroid || Distro.IsOpenSUSE()) + ExtraOpts.push_back("--enable-new-dtags"); ++#endif + + // The selection of paths to try here is designed to match the patterns which + // the GCC driver itself uses, as this is part of the GCC-compatible driver. +@@ -270,6 +275,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) + } + Generic_GCC::AddMultilibPaths(D, SysRoot, OSLibDir, MultiarchTriple, Paths); + ++#if 0 + addPathIfExists(D, SysRoot + "/lib/" + MultiarchTriple, Paths); + addPathIfExists(D, SysRoot + "/lib/../" + OSLibDir, Paths); + +@@ -298,9 +304,11 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) + addPathIfExists(D, SysRoot + "/" + OSLibDir + "/" + ABIName, Paths); + addPathIfExists(D, SysRoot + "/usr/" + OSLibDir + "/" + ABIName, Paths); + } ++#endif + + Generic_GCC::AddMultiarchPaths(D, SysRoot, OSLibDir, Paths); + ++#if 0 + // Similar to the logic for GCC above, if we are currently running Clang + // inside of the requested system root, add its parent library path to those + // searched. +@@ -313,9 +321,14 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) + if (OSLibDir != "lib") + addPathIfExists(D, D.Dir + "/../" + OSLibDir, Paths); + } ++#endif ++ ++ // Add libc's lib/ directory to the search path, so that crt1.o, crti.o, ++ // and friends can be found. ++ addPathIfExists(D, "@GLIBC_LIBDIR@", Paths); + +- addPathIfExists(D, SysRoot + "/lib", Paths); +- addPathIfExists(D, SysRoot + "/usr/lib", Paths); ++ // Add GCC's lib/ directory so libstdc++.so can be found. ++ addPathIfExists(D, GCCInstallation.getParentLibPath(), Paths); + } + + ToolChain::RuntimeLibType Linux::GetDefaultRuntimeLibType() const { diff --git a/gnu/packages/zig.scm b/gnu/packages/zig.scm index b3de72226b..9db78516cc 100644 --- a/gnu/packages/zig.scm +++ b/gnu/packages/zig.scm @@ -46,7 +46,7 @@ (define-public zig (build-system cmake-build-system) (inputs (list clang-13 ; Clang propagates llvm. - lld)) + lld-13)) ;; Zig compiles fine with GCC, but also needs native LLVM libraries. (native-inputs (list llvm-13)) -- 2.34.0