From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 16EF1C5320E for ; Tue, 20 Aug 2024 19:49:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 79E546B0082; Tue, 20 Aug 2024 15:49:19 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7010B6B0083; Tue, 20 Aug 2024 15:49:19 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 57B5E6B0085; Tue, 20 Aug 2024 15:49:19 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 2DCBB6B0082 for ; Tue, 20 Aug 2024 15:49:19 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id DADD9160521 for ; Tue, 20 Aug 2024 19:49:18 +0000 (UTC) X-FDA: 82473662796.16.4DDEAEE Received: from mail-yw1-f201.google.com (mail-yw1-f201.google.com [209.85.128.201]) by imf28.hostedemail.com (Postfix) with ESMTP id 24280C001D for ; Tue, 20 Aug 2024 19:49:16 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=ZYzfMw1M; spf=pass (imf28.hostedemail.com: domain of 3PPPEZgcKCHMddRliViXffXcV.TfdcZelo-ddbmRTb.fiX@flex--mmaurer.bounces.google.com designates 209.85.128.201 as permitted sender) smtp.mailfrom=3PPPEZgcKCHMddRliViXffXcV.TfdcZelo-ddbmRTb.fiX@flex--mmaurer.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724183277; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=iaH1ZLIse1MjjuwT90Rd2NUzJfAssHJQQ3PmJWNR6mE=; b=ieBjXd49kQFrImdOQHOBrVN2vy2TGmLVpuyo2q7ziWBoTn9a2rUfSx4cUXR4/HkpJ1hx00 fN2pyTRwqcH4/5ttkLCETOdosjmCAMhHhFhMcubfU6sMYNPpMVVsWqGQJ4cmg8PsXuXciS hy7HnMWUQyIjgS75KPmtJgx9BgcHqQk= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724183277; a=rsa-sha256; cv=none; b=inAtev0UbWFh1aqFytm7SkpuHyWqmUfzSs6BljZPiSIDXH0hUzVimVibZz2bZcw9L/1NOR baLVwfTnL/RRhA8CsuT8MbSc56pwUN0JVrhHhMYWYvFiKGaHN0PWQUzmzbieNDgRCIGTuH WfzRgtVWzRqRSpdmcVI4+dV/IqS9TSQ= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=ZYzfMw1M; spf=pass (imf28.hostedemail.com: domain of 3PPPEZgcKCHMddRliViXffXcV.TfdcZelo-ddbmRTb.fiX@flex--mmaurer.bounces.google.com designates 209.85.128.201 as permitted sender) smtp.mailfrom=3PPPEZgcKCHMddRliViXffXcV.TfdcZelo-ddbmRTb.fiX@flex--mmaurer.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-6643016423fso117183777b3.3 for ; Tue, 20 Aug 2024 12:49:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1724183356; x=1724788156; darn=kvack.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=iaH1ZLIse1MjjuwT90Rd2NUzJfAssHJQQ3PmJWNR6mE=; b=ZYzfMw1MdEPQapaRE6bq1eJMwqkwp+qrGKErujutWLWJ4b3RsW5OKlMXeKz8+qfpOD wycJ4/jgFfUXxZKMZmVaZRtTpxPQy9LUqq3qKbO6cmyDYDwohjzumXWOsSd7q5e/5Lkj k8bsmLxioXXKdvhvK4WU/y7h/rlGCJJp9Epx2QS6pUC4ifkumwOmrY7DhhsmHJabcCe7 eNpApSfazMxQbKST6DCp0rXJl0Wma8Hl52oCaGP9lMNcFpwO2SH3OEUrvDs4O7TXAh+2 WhTdlMIFU1MBJMYDSTZx5S8jljGen/H+90jhoSCsTu2qAiU/7tb15Y/es5AxTgbbzdiy HzKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724183356; x=1724788156; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=iaH1ZLIse1MjjuwT90Rd2NUzJfAssHJQQ3PmJWNR6mE=; b=mkFI97/ijzfGnBEFk7QI7t1aINee94w2wBqHRvl8BUKg+1FwOm8iqYH4kci44i4vX7 olMoxEBHiGCI4rba2FyHC85OQu2Hew+RJjdkCG+RbMr1HgkGNiRyK1J/lly5qgk8MN57 NHVgVh5z72+xqYRwGvRQm1az4doTsyNUmfIGJUZ4HQ8WQpxR4ESbzLrmE6c9fFFfWUhz Cs05r3X7wNgBj/CtvWGtWSuUJcqvqo7TamFaOp7d4ROjEoFzTLgG3b3Z8CKnjBDhlOW5 JRoTN1LcEiZKJ3/q5102yWLNR5XJubLSprg2gkNFVFK13ftT+gicbcuZu8vRlRfogqPr Uimw== X-Forwarded-Encrypted: i=1; AJvYcCVrS2VMl3GeMh/2McXgegMiJemIDinShoDpuyEfYjGf4qtw6fiSx7L9F7lCuPSiRROJF4UYDGAQDA==@kvack.org X-Gm-Message-State: AOJu0YydK7wfhJIcMNZSYZHHeBCZ3YrquRU2A7GK+QXIfZdPpggMbzHT 5i4evhQpcz1GXdwgmdtsxV3esqn1N0ip/RkuZQdg302uaGbvXT3qLhIuIRCCDkQKDCHZMyUF2iD 5ArF5kw== X-Google-Smtp-Source: AGHT+IF8OgALjQtKTTwFni7Lx7ggfIQZWs8ZGeUB4Cj9Y3JpdH2/tw6PpjEDsZeBYcnnz1TYn5eZQOxDFr9J X-Received: from anyblade.c.googlers.com ([fda3:e722:ac3:cc00:20:ed76:c0a8:1791]) (user=mmaurer job=sendgmr) by 2002:a05:690c:4813:b0:6be:9d4a:f097 with SMTP id 00721157ae682-6c0a0236c74mr8387b3.7.1724183356156; Tue, 20 Aug 2024 12:49:16 -0700 (PDT) Date: Tue, 20 Aug 2024 19:48:56 +0000 In-Reply-To: <20240820194910.187826-1-mmaurer@google.com> Mime-Version: 1.0 References: <20240820194910.187826-1-mmaurer@google.com> X-Mailer: git-send-email 2.46.0.184.g6999bdac58-goog Message-ID: <20240820194910.187826-2-mmaurer@google.com> Subject: [PATCH v4 1/4] kbuild: rust: Define probing macros for rustc From: Matthew Maurer To: andreyknvl@gmail.com, ojeda@kernel.org, Masahiro Yamada , Alex Gaynor , Wedson Almeida Filho , Nathan Chancellor Cc: dvyukov@google.com, aliceryhl@google.com, samitolvanen@google.com, kasan-dev@googlegroups.com, linux-mm@kvack.org, glider@google.com, ryabinin.a.a@gmail.com, Matthew Maurer , Nicolas Schier , Boqun Feng , Gary Guo , "=?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?=" , Benno Lossin , Andreas Hindborg , Nick Desaulniers , Bill Wendling , Justin Stitt , linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, llvm@lists.linux.dev Content-Type: text/plain; charset="UTF-8" X-Stat-Signature: rom7xrtc4dxtpt1zu53etwj6hc3dh86t X-Rspamd-Queue-Id: 24280C001D X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1724183356-629142 X-HE-Meta: U2FsdGVkX18QNxzEbAd1WzBRKuRxbeHU+z6X6jI8bTu+SOwq+RG0MAzYZANptFxUigWNIZBRzZ2wSQrMLtEBh+sk2OnuecCocwVnZ0BQ8jf2ZswwdVQuWO7eR8MBxr9/l3hFFSax1JsjStUDfAuxfGbS2GixbuHv235f+480eKmZO6GyZ7bhcd6aOme775YhwTjuvyF0KDwmaXQFVEvfo6kRs6p75+BOxSusW9TuntguePnB2AeDUAQbP8dk1GXD1KMN/JzL0PqgHg6rCMBPKxkkMngiXQiY1ti1uxD/b+CrYC6shM1VKHqGBBN0z6eR+WkJ0wQCiCVTaDRXlp+LDphAQNGyZn5O/PtXizi/jSBpeGri/qWxYn/mbysJD1CuoBp4UHwtyWWniQz0pWN5qlfASdGsYaVcG/QaJ8diiSMuXCGa58pNVScP3K1wbxbpiPUnmHZioqe9qkG0DazkE1XQiti+4K9Obn4gYgv+ETTzSrnk8Cn2s9TMrOAsGpXgZTkOUw6q8MbMV3fXTOmvryoyd3E5vxD0ulHghHCgufFHqClrl1K3SpVaL8mIYgsT44L52WcWmaQ73Q+0elIlHPp7Xib8vSBVWFxbYHdctipBqLi0ADSmFU/wmLIzVP/lF5e0l3Un6TUO8ibwv5MUnAsPuuenwpxAOGN+zvhoOUk3q55pUEvQYJW4KA+ka/1z6DRBJ3gsnu4rugT8QaQgRy5JAuksjKz6BAiPdDWrldOUUkEBYnm82vS/TVwBK8xPjSia8IhCwNS56if2L7nH89vtalrEVR/uItMtcPWfDqGhTBPE8QoofnPMAzH+XZx7TinEtiuKWDbGf13wLiihL6o1Oinkf/1w5rLYzRaadpH2vXYdMHc7dCYTpllVj41pBaPD769mY7Pr6msqcv0N63STpr6QZLVg0rCKI63VHnIY6z7WaHQ8J8uaBoOrqTv4edV+a2MfMZRDqkHsUff K2m2+S2f mOVyvU6Zi9zTYyECroxJ7V0S61Xxtuky76dQ0GE9cHW1AjKqqIA5h31q6QyrWHOQNgwn1AaBPZAwElkV1bap8uN9T4KDolYrFwHrn3J5GmrQCXsf/UDD2CrTAunYhqM5UBCOH0kEioH6+8e7K8opXhbyhNvnsVTToYLBhP1Q+lGEQ04U/sLt20Tzv0Oqw5c1dlKbWSEg9Rx9GEdSR0LVZBh5VGC0VFRI/pgDee1N26LBugk8fhacdQtHQT0qCnw3EKQRjmdGbEdUG5Pu/HMta0XEiK+/x6oVeL8gWu6hSugc7QxS2pmJ4cFPleR/AaBtZYtF3EKbNeeaMD1gnLBndLKhOu4++vjuKlPzXB+1/Nh0F2nTJXZQ4GD4XDfu1eAakfCzN+HvblG2gA9wYeOmSbpVxgscXvZeeZcJB+2VO+FOR/xgR8UShrfYxxiw19GoKwlOyyp2JyHINQkDAyCQZZkRNkI6sMROWTMH3GjfexXsH86G87i0mKZ6J47PBtzidQxeYOpHYnWvr8Aua8NOtNj8YCaZIOWT2CO1yaTNPlyD3wFtqhw6+daAo0Y+aoohdGawZcPVMG7alVOSK33115I2V8gd00nSKwmTD X-Bogosity: Ham, tests=bogofilter, spamicity=0.001977, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Creates flag probe macro variants for `rustc`. These are helpful because: 1. The kernel now supports a minimum `rustc` version rather than a single version. 2. `rustc` links against a range of LLVM revisions, occasionally even ones without an official release number. Since the availability of some Rust flags depends on which LLVM it has been linked against, probing is necessary. Signed-off-by: Matthew Maurer --- scripts/Kconfig.include | 8 ++++++++ scripts/Makefile.compiler | 15 +++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/scripts/Kconfig.include b/scripts/Kconfig.include index 3ee8ecfb8c04..bdb187af45fd 100644 --- a/scripts/Kconfig.include +++ b/scripts/Kconfig.include @@ -63,3 +63,11 @@ ld-version := $(shell,set -- $(ld-info) && echo $2) cc-option-bit = $(if-success,$(CC) -Werror $(1) -E -x c /dev/null -o /dev/null,$(1)) m32-flag := $(cc-option-bit,-m32) m64-flag := $(cc-option-bit,-m64) + +# $(rustc-option,) +# Return y if the Rust compiler supports , n otherwise +# Calls to this should be guarded so that they are not evaluated if +# CONFIG_RUST_IS_AVAILABLE is not set. +# If you are testing for unstable features, consider testing RUSTC_VERSION +# instead, as features may have different completeness while available. +rustc-option = $(success,trap "rm -rf .tmp_$$" EXIT; mkdir .tmp_$$; $(RUSTC) $(1) --crate-type=rlib /dev/null --out-dir=.tmp_$$ -o .tmp_$$/tmp.rlib) diff --git a/scripts/Makefile.compiler b/scripts/Makefile.compiler index 92be0c9a13ee..057305eae85c 100644 --- a/scripts/Makefile.compiler +++ b/scripts/Makefile.compiler @@ -72,3 +72,18 @@ clang-min-version = $(call test-ge, $(CONFIG_CLANG_VERSION), $1) # ld-option # Usage: KBUILD_LDFLAGS += $(call ld-option, -X, -Y) ld-option = $(call try-run, $(LD) $(KBUILD_LDFLAGS) $(1) -v,$(1),$(2),$(3)) + +# __rustc-option +# Usage: MY_RUSTFLAGS += $(call __rustc-option,$(RUSTC),$(MY_RUSTFLAGS),-Cinstrument-coverage,-Zinstrument-coverage) +__rustc-option = $(call try-run,\ + $(1) $(2) $(3) --crate-type=rlib /dev/null --out-dir=$$TMPOUT -o "$$TMP",$(3),$(4)) + +# rustc-option +# Usage: rustflags-y += $(call rustc-option,-Cinstrument-coverage,-Zinstrument-coverage) +rustc-option = $(call __rustc-option, $(RUSTC),\ + $(KBUILD_RUSTFLAGS),$(1),$(2)) + +# rustc-option-yn +# Usage: flag := $(call rustc-option-yn,-Cinstrument-coverage) +rustc-option-yn = $(call try-run,\ + $(RUSTC) $(KBUILD_RUSTFLAGS) $(1) --crate-type=rlib /dev/null --out-dir=$$TMPOUT -o "$$TMP",y,n) -- 2.46.0.184.g6999bdac58-goog