From patchwork Sat Nov 26 22:56:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 26298 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp4857067wrr; Sat, 26 Nov 2022 15:03:07 -0800 (PST) X-Google-Smtp-Source: AA0mqf5D8/tZmLepxSTMXe65o9UfsjOmSq+tllMsqqIFBpUVgXY48fatdzm3gpI21R+KIgxSS//I X-Received: by 2002:a17:906:707:b0:7ba:1ec1:ebfc with SMTP id y7-20020a170906070700b007ba1ec1ebfcmr6407042ejb.768.1669503786930; Sat, 26 Nov 2022 15:03:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669503786; cv=none; d=google.com; s=arc-20160816; b=HdNAB33Z2Hs9ZRmzBhEpFA8HL3QfbfbeCsGSA0dRx+K7HnKZbxqhHYd2uU8n/QWtw7 9UR1ne3s6G3nkYtkMEPJkDfH5/2RAS/X6KXiG5dPMdpIuuDj7rWluwvwsg7QO/Vh2Nms ib+kDSGC97GQDmiax30U0I/lGjDmynGLlz89ZaGR+aeM+u/jNRmVFU+8FFhwC3GffwqW kR3cth5IzjOrpXwninan0Wu36m6ZDxjMXQXXiKmwujnWVWfaSsDXzxsBrSDlBsqzY94L nR59tCIlwJ4NPEIJWh5t5D/7SleSdqRLipgBss4OtYh384llg1hhnqGiF+bxFsG1dCPg 0vtQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=wJe18I0hT/uUhA126Odp+tD16Py42LmNkxC4Hnfo7ts=; b=vVEOESrK6cjBtGBkaR2lbz4rs5H/z7QVBOBFuB3SiXbHIGjTk66vrxU1xppTZYC3v4 gIjbwyeuie40eqYHRyxIRVXzBMlJcHFcGBxOXKsNSr/DFOI6MmDYZH14ybKXJvlVmTcw L4nDIWcHijnv4d1P7bYICi8ixhcjJYpANpIPXkcilqokipKz0cwzw/Q6ie1zg62oULgt 5x5kLRpH0qZIix7hgP+CfbH1apISMT5eR46SYzo/XL8Msowbj3IJBf4O2pgUbnz0wiYz mK0lf8xkdAngPTz7oA+7rfnECBvsrb8qM+wKxAnRG7IvUeEgvWtJbr/PgfoKYxLVsdpE Bywg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=PO2FYMeb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f7-20020a50ee87000000b004618ed2dfe2si6579104edr.6.2022.11.26.15.02.36; Sat, 26 Nov 2022 15:03:06 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=PO2FYMeb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229648AbiKZW4h (ORCPT + 99 others); Sat, 26 Nov 2022 17:56:37 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40768 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229504AbiKZW4g (ORCPT ); Sat, 26 Nov 2022 17:56:36 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1733A14033; Sat, 26 Nov 2022 14:56:35 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 49BE860C68; Sat, 26 Nov 2022 22:56:34 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6F234C433D6; Sat, 26 Nov 2022 22:56:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1669503393; bh=m3ZEUK0zXePJycyJFWyVV/OydFcxPrFRvDSAjxSAbFg=; h=From:To:Cc:Subject:Date:From; b=PO2FYMebNnz4Pbfnw8L4jSaDjHMCbBhjOKGHHL0XHqdTEbi9z/rQObYtc5Y1R8A90 BfP+J0A5NJQO/9ZpskWhGvFqo5+N4UbA0/KELhr4nfVkR0ZcrD5JbPC1XmRdq5UvCz pFFTHtOLfHL63Xa2FRll9c/1SMNrWbyeqdSa70SK2xcfK3idyIdASCNjALTZ63eR3K ohcsiMfWB1/6ELvIZtYDEiD5am3qskj/aG4I3aGJiffQ6/AUoPbLkPFBggduWJ0HJm nCMros1t7GTgCwsh69Z3buA7Ohtivt+nh04MO1b+ORFjDV8YmaxH8p9/yBPTU9m54E 8g2ZlTEp/i1OA== From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Masahiro Yamada , Nicolas Schier , Albert Ou , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Ingo Molnar , Nathan Chancellor , Nick Desaulniers , Palmer Dabbelt , Paul Walmsley , Thomas Gleixner , Tom Rix , linux-riscv@lists.infradead.org, llvm@lists.linux.dev, x86@kernel.org Subject: [PATCH v3 1/5] kbuild: add test-{le,ge,lt,gt} macros Date: Sun, 27 Nov 2022 07:56:20 +0900 Message-Id: <20221126225624.751661-1-masahiroy@kernel.org> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1750601602639909430?= X-GMAIL-MSGID: =?utf-8?q?1750601602639909430?= Because GNU Make is handle strings, it is very hard to perform math in Makefiles. When we compare two integers, we invokes shell. One example is in the top Makefile: ifeq ($(shell test $(CONFIG_LLD_VERSION) -lt 130000; echo $$?),0) This is more expensive than using built-in functions since it forks a process. If we know the two have the same number of digits, we can do better. This commit adds four macros, test-le, test-ge, test-lt, test-gt. $(call test-lt, A, B) is evaluated to 'y' if A is less than B, or empty otherwise. This will replace $(call shell test A -lt B). Again, the limitation is that A and B must have the same number of digits because these macros are based on $(sort ) function. $(call test-lt, 1, 9) --> y (Works!) $(call test-lt, 10, 9) --> y (Not work...) To make the latter work, you need to add '0' prefix to align the number of digits: $(call test-lt, 10, 09) --> empty (Works!) Actually, we can live with this limitation in many places. As for the example above, we know $(CONFIG_LLD_VERSION) is 6-digits because the minimal supported version of LLVM is 11.0.0 (or CONFIG_LLD_VERSION=0 if the linker is not LLD, this case also works.) So, the shell invocation can be replaced with more efficient code: ifeq ($(call test-lt, $(CONFIG_LLD_VERSION), 130000),y) Of course, this assumption will break when LLVM 100 is released, but it will be far in the future. Signed-off-by: Masahiro Yamada Reviewed-by: Nicolas Schier --- Changes in v3: - Ensure the given parameters are not empty Makefile | 2 +- arch/riscv/Makefile | 2 +- arch/x86/Makefile | 2 +- scripts/Kbuild.include | 10 ++++++++++ 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 6f846b1f2618..eb80332f7b51 100644 --- a/Makefile +++ b/Makefile @@ -986,7 +986,7 @@ KBUILD_LDFLAGS += -mllvm -import-instr-limit=5 # Check for frame size exceeding threshold during prolog/epilog insertion # when using lld < 13.0.0. ifneq ($(CONFIG_FRAME_WARN),0) -ifeq ($(shell test $(CONFIG_LLD_VERSION) -lt 130000; echo $$?),0) +ifeq ($(call test-lt, $(CONFIG_LLD_VERSION), 130000),y) KBUILD_LDFLAGS += -plugin-opt=-warn-stack-size=$(CONFIG_FRAME_WARN) endif endif diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile index 0d13b597cb55..faf2c2177094 100644 --- a/arch/riscv/Makefile +++ b/arch/riscv/Makefile @@ -37,7 +37,7 @@ else endif ifeq ($(CONFIG_LD_IS_LLD),y) -ifeq ($(shell test $(CONFIG_LLD_VERSION) -lt 150000; echo $$?),0) +ifeq ($(call test-lt, $(CONFIG_LLD_VERSION), 150000),y) KBUILD_CFLAGS += -mno-relax KBUILD_AFLAGS += -mno-relax ifndef CONFIG_AS_IS_LLVM diff --git a/arch/x86/Makefile b/arch/x86/Makefile index 415a5d138de4..e72c7a49cd59 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile @@ -211,7 +211,7 @@ endif KBUILD_LDFLAGS += -m elf_$(UTS_MACHINE) ifdef CONFIG_LTO_CLANG -ifeq ($(shell test $(CONFIG_LLD_VERSION) -lt 130000; echo $$?),0) +ifeq ($(call test-lt, $(CONFIG_LLD_VERSION), 130000),y) KBUILD_LDFLAGS += -plugin-opt=-stack-alignment=$(if $(CONFIG_X86_32),4,8) endif endif diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include index cbe28744637b..4b8cf464b53b 100644 --- a/scripts/Kbuild.include +++ b/scripts/Kbuild.include @@ -11,6 +11,16 @@ space := $(empty) $(empty) space_escape := _-_SPACE_-_ pound := \# +### +# Comparison macros. +# Usage: $(call test-le, A, B) +# works like shell's "test A -le B", use with care bacause it is ASCII sort. +# If A and B have the same number of digits, it works as expected. +test-le = $(and $(strip $1),$(strip $2),$(filter $1, $(firstword $(sort $1 $2))),y) +test-ge = $(call test-le, $2, $1) +test-lt = $(and $(strip $1),$(strip $2),$(filter-out $2, $(firstword $(sort $1 $2))),y) +test-gt = $(call test-lt, $2, $1) + ### # Name of target with a '.' as filename prefix. foo/bar.o => foo/.bar.o dot-target = $(dir $@).$(notdir $@) From patchwork Sat Nov 26 22:56:21 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 26297 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp4856331wrr; Sat, 26 Nov 2022 15:01:51 -0800 (PST) X-Google-Smtp-Source: AA0mqf4iKsbRoGbA6kSC5Warf+euSC7Kp9btNO4ptb7Kc8KR55FGdtLJBS8PjGycjQAM5q1cLkhv X-Received: by 2002:a17:906:52d3:b0:7bb:4d2c:2192 with SMTP id w19-20020a17090652d300b007bb4d2c2192mr11826023ejn.416.1669503711268; Sat, 26 Nov 2022 15:01:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669503711; cv=none; d=google.com; s=arc-20160816; b=GwLP/li4EHxTGtkjxR86mQr+E6KoLYPXLiCDUWOnAkqsO4Zdh0gg2yGBYUtd8Urju4 /7j7otGl+gRpX6zcP6oZplv6q2wzyjADQAxrET9+5XYgEh9ilXBumqJaPYAU2B3dA6s+ md/oWWWWcKfe6wJUeYNSrnAcbbr3C0BrxDSPeGXqt4AUB5aQU/sAIIgmZ3xNRUtOWQvO D3DT3shCZRhopP06npggMZ8k9sXL7E85ciiSCABn3hWpAlV7QI1Ppn6y3yy4eTN+Ztdd yfKMmSDFNeXu62v63Y5IkHDyn2TdJFGUK8ZSW2fu+iMh5UZ4zBYSR088B19/hoOaUnOZ 5dyg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=v9Zz8mnM0RdnPQu6mhnUJBcTX3OuFi7b2Wf1xBtFSuM=; b=oqyxeSNArpnORlTOk0WyDSsQIdm7NjHVTrCAMtRKRuATdU/m5MXBLwS/+p3ogxOfNk hBvX31xdk7gwW6VASJkXcjetppas6eSv+KCikQBIYL0uzWN+4NY/U7iUyqcYiec3crTt wRnZUo9UAiuoguuTgksaHcQ3UL03jEFZjlEwWbQA9YrTSQIr1VYJIztkvcduD3N1aRBc cH3X+vN7gQCTje90Klvu3sHH6ZTkpKu8Y2r2KnWwf2rs1zOkavKjHGvTrVG2GFCINc0t aC0e4dDFTPeLoll15LX05KYlb4Z3ri/oKZs/DZ5iq28ftK6PRR6ipFM/Uht7/kvad8Yq GHWQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=QKdqSqqz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g20-20020a1709065d1400b007b5ce4a4360si7136064ejt.151.2022.11.26.15.01.25; Sat, 26 Nov 2022 15:01:51 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=QKdqSqqz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229652AbiKZW4i (ORCPT + 99 others); Sat, 26 Nov 2022 17:56:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40774 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229612AbiKZW4h (ORCPT ); Sat, 26 Nov 2022 17:56:37 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9DE08140D7; Sat, 26 Nov 2022 14:56:36 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 3A1DF60C71; Sat, 26 Nov 2022 22:56:36 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2FE6EC4347C; Sat, 26 Nov 2022 22:56:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1669503395; bh=573wZuVHPDdtLI75KSLGQVso6x98GKpafL/MbOBnj84=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QKdqSqqzEeIs2ufMLbTAh2iA7e74VQUHVXj3lZnEJWwTnbXbMQmBJMDwjy6Pi47Yi /rSP9IjrAT4wZRHuaiJMjiK+fA+Ut98b1CIotwdwXJzAsPYIlVL+ByFAWyikTC0KjF 9tEhumT/zYP54EN5Rf6fo2s6Mlk2NaYI75VUuhekMDmUWipvYqZeD3KsS2OGrRDgys +ouivD+Q6bcYcLg/PIEGOlXI8AvzaDUxCZIX+ovO4Sm6F7fYawzk5JL+TBVXfQbS3r nyW/BAL5VeuvxBbI2jX7xAoyYw4vu8UWC8XbJpV2R2JDnjC2rbo7TN87DgrKqGCEFY Ccv6854i8MvPA== From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Masahiro Yamada , Nicolas Schier , Nathan Chancellor , Nick Desaulniers , Tom Rix , llvm@lists.linux.dev Subject: [PATCH v3 2/5] kbuild: implement {gcc,clang}-min-version only with built-in functions Date: Sun, 27 Nov 2022 07:56:21 +0900 Message-Id: <20221126225624.751661-2-masahiroy@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221126225624.751661-1-masahiroy@kernel.org> References: <20221126225624.751661-1-masahiroy@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1750601523814000764?= X-GMAIL-MSGID: =?utf-8?q?1750601523814000764?= Converting clang-min-version is straightforward because the versions are always 6-digit. gcc-min-version is somewhat tricky because the minimal GCC version is GCC 5.1; prepend '0' to the version that is less than 10 so that test-ge is always passed with 6-digit versions. Signed-off-by: Masahiro Yamada Reviewed-by: Nicolas Schier --- Changes in v3: - Add comments Changes in v2: - Covert gcc-min-version in a different way scripts/Makefile.compiler | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/scripts/Makefile.compiler b/scripts/Makefile.compiler index 20d353dcabfb..4c095beda093 100644 --- a/scripts/Makefile.compiler +++ b/scripts/Makefile.compiler @@ -63,11 +63,16 @@ cc-disable-warning = $(call try-run,\ # gcc-min-version # Usage: cflags-$(call gcc-min-version, 70100) += -foo -gcc-min-version = $(shell [ $(CONFIG_GCC_VERSION)0 -ge $(1)0 ] && echo y) + +# Preprend 0 to the version that is less than 10 so test-ge works. +# This will break when GCC 20 is released. Remove this workaround until then. +gcc-min-version = $(call test-ge, \ + $(or $(filter 1%, $(CONFIG_GCC_VERSION)), 0$(CONFIG_GCC_VERSION)), \ + $(or $(filter 1%, $1), 0$(strip $1))) # clang-min-version # Usage: cflags-$(call clang-min-version, 110000) += -foo -clang-min-version = $(shell [ $(CONFIG_CLANG_VERSION)0 -ge $(1)0 ] && echo y) +clang-min-version = $(call test-ge, $(CONFIG_CLANG_VERSION), $1) # ld-option # Usage: KBUILD_LDFLAGS += $(call ld-option, -X, -Y) From patchwork Sat Nov 26 22:56:22 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 26299 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp4857245wrr; Sat, 26 Nov 2022 15:03:29 -0800 (PST) X-Google-Smtp-Source: AA0mqf6uEylL81so6r4RnhVX4U9nHiTl5n4Gq1WpO4xYH3IZrTPU3op0xYeElqO1Sd244BXxEc07 X-Received: by 2002:a05:6402:43c7:b0:468:cd3a:4493 with SMTP id p7-20020a05640243c700b00468cd3a4493mr42104693edc.309.1669503809274; Sat, 26 Nov 2022 15:03:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669503809; cv=none; d=google.com; s=arc-20160816; b=HdUg5speS0rAvhoUWa+KpD0ituGh5WOLMddMcZVIG5Or0FOWB9qWlAzD+MT5YSYLwm 7pJmGG8NRiqxcH5qbjStCV8BSkUjAUMKabqueCj5m+pvLlI17A5Sa7nB1YxiGvOkVYvk slylfupqWJQHdh2/RyASsOyQhWj5ZybQSUJsItrqiasT5inNTmxBYO+KwIsRlVR0cz8d q9eBSiTTRnrWSuetu6AuGtI6pxheKJHlbJzl2ST2pj2VlwjF0u7/TziCkJAJoHrcA1C+ j6KSfNSKmDdzRuH8bzofV+8JHkVuCXyo+C9MP564I4c/n9dYPQYa6XiNPgX1NaWi7D2f YqnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=nRzXiUs+0nc2YiZ6WeF6+8Uazs4XWZr+nP2hKtD6iCI=; b=gfjcUMH7xynTuWeaSXAcipUOGvikG4pR28FZXCwrNvJ8qxMrppSdj3hqHDy5LDT7Z8 MT8WNDn4kWYeemagRfmBKjlPl6hqntEkGjIgH+RlNb9+KZtErdImCYfJrgUGEr8rbj2O bJqxMAiLz4SFb1caKF1IPXtCzEGTlkwhuCOD9TBIvtUOpiq9vgbmDYzmqdqWd4VCxn27 Fhe4cKSn7zMFetWm3NkOZ3WBuhcLwy7wONlOQNC39uUMsZcK+baB+VqWgsRP/m08ivZI g97lcdN1Xwra9gXVq99M1N4bG5Zl0d3rL4sec1IXoBiTKALw+kFUYnL4O2cL3XT7gQ1r RbUQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=tpc49ynO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b30-20020a50ccde000000b0046900e67e24si6250850edj.85.2022.11.26.15.03.04; Sat, 26 Nov 2022 15:03:29 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=tpc49ynO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229555AbiKZW4m (ORCPT + 99 others); Sat, 26 Nov 2022 17:56:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40786 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229612AbiKZW4k (ORCPT ); Sat, 26 Nov 2022 17:56:40 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D7EAE140D7; Sat, 26 Nov 2022 14:56:39 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 95E45B80A36; Sat, 26 Nov 2022 22:56:38 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 22713C43470; Sat, 26 Nov 2022 22:56:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1669503397; bh=AtKhQp8FtKxLMmPcpUUV2Sk+OJL/9nVhE5GmwRmFJ/E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tpc49ynONcF6JHmKmUmDdKQimA5CgkjPa8g75uKF3gIHTiUVOidbUq2NaO6AeRXx0 faxfC5+C9SN6n5m+MPij0NW62dlLfBpi7HxSJroADn90szqn4nHcQu8UBpLs3+rAJB 9LJ1mI9J308cAk3h7csqYE6R7ZI55mERJRQa3DhK0xPqskmehF0MX4MSnYugRxuQTO VkjIj//94z3zPL6+wpocM42sbe1HZIFzsSU/pqLWjQHG0T2tI+uHvCged6RCISfpQ4 ZnUipha/lMiCSMezbryYnutETrFVNA7hX6AMJmPVpT1DvnxMRes6lZCPLwE1tDiNUD g5dUyW76vsYbw== From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Masahiro Yamada , Nicolas Schier , Nathan Chancellor , Nick Desaulniers Subject: [PATCH v3 3/5] kbuild: add read-file macro Date: Sun, 27 Nov 2022 07:56:22 +0900 Message-Id: <20221126225624.751661-3-masahiroy@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221126225624.751661-1-masahiroy@kernel.org> References: <20221126225624.751661-1-masahiroy@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1750601626069239837?= X-GMAIL-MSGID: =?utf-8?q?1750601626069239837?= Since GNU Make 4.2, $(file ...) supports the read operater '<', which is useful to read a file without forking any process. No warning is shown even if the input file is missing. For older Make versions, it falls back to the cat command. The added ifeq will break when GNU Make 4.10 or 10.0 is released. It will take a long time if the current release pace continues. Signed-off-by: Masahiro Yamada Reviewed-by: Nicolas Schier --- (no changes since v1) Makefile | 2 +- scripts/Kbuild.include | 15 +++++++++++++++ scripts/Makefile.modfinal | 2 +- scripts/Makefile.modinst | 2 +- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index eb80332f7b51..60ce9dcafc72 100644 --- a/Makefile +++ b/Makefile @@ -369,7 +369,7 @@ else # !mixed-build include $(srctree)/scripts/Kbuild.include # Read KERNELRELEASE from include/config/kernel.release (if it exists) -KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null) +KERNELRELEASE = $(call read-file, include/config/kernel.release) KERNELVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION) export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include index 4b8cf464b53b..55c2243f91c8 100644 --- a/scripts/Kbuild.include +++ b/scripts/Kbuild.include @@ -10,6 +10,10 @@ empty := space := $(empty) $(empty) space_escape := _-_SPACE_-_ pound := \# +define newline + + +endef ### # Comparison macros. @@ -55,6 +59,17 @@ stringify = $(squote)$(quote)$1$(quote)$(squote) kbuild-dir = $(if $(filter /%,$(src)),$(src),$(srctree)/$(src)) kbuild-file = $(or $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Makefile) +### +# Read a file, replacing newlines with spaces +# +# This ifeq will break when GNU Make 4.10 is released. +# Remove this conditional until then. +ifeq ($(call test-ge, $(MAKE_VERSION), 4.2),y) +read-file = $(subst $(newline),$(space),$(file < $1)) +else +read-file = $(shell cat $1 2>/dev/null) +endif + ### # Easy method for doing a status message kecho := : diff --git a/scripts/Makefile.modfinal b/scripts/Makefile.modfinal index 25bedd83644b..7252f6cf7837 100644 --- a/scripts/Makefile.modfinal +++ b/scripts/Makefile.modfinal @@ -13,7 +13,7 @@ include $(srctree)/scripts/Kbuild.include include $(srctree)/scripts/Makefile.lib # find all modules listed in modules.order -modules := $(sort $(shell cat $(MODORDER))) +modules := $(sort $(call read-file, $(MODORDER))) __modfinal: $(modules) @: diff --git a/scripts/Makefile.modinst b/scripts/Makefile.modinst index a4c987c23750..509d424dbbd2 100644 --- a/scripts/Makefile.modinst +++ b/scripts/Makefile.modinst @@ -9,7 +9,7 @@ __modinst: include include/config/auto.conf include $(srctree)/scripts/Kbuild.include -modules := $(sort $(shell cat $(MODORDER))) +modules := $(sort $(call read-file, $(MODORDER))) ifeq ($(KBUILD_EXTMOD),) dst := $(MODLIB)/kernel From patchwork Sat Nov 26 22:56:23 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 26301 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp4858228wrr; Sat, 26 Nov 2022 15:05:42 -0800 (PST) X-Google-Smtp-Source: AA0mqf4thmEopLFPSTy4cE4IapfUtC54fZQiL2VbGCpv3J5rdncieYR9GDJ6hJCQSShHCGMirMTv X-Received: by 2002:a05:6402:1399:b0:461:53b0:2ac0 with SMTP id b25-20020a056402139900b0046153b02ac0mr40859080edv.153.1669503941977; Sat, 26 Nov 2022 15:05:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669503941; cv=none; d=google.com; s=arc-20160816; b=eTi6du0LfV+/zUulGOFJ4egvjvHpTUO+pPPWWNInbcba16G9Ae5yrqWqc6IABiiOkN 8r7FpozTMz4IFrGEumJlVQM50rh9F2GfiqNOokNaaksvdX2PLyFjDUGoXyquwDQ3pDz/ oWqb5ci0uWbBoMFxBkzaXCezobIkEeVZUgZENZw2JUmyb6fGVphp3qWdLUeyqGpXTauo uIlRgx2waXVY5AP1OIpzsHnEwquVOjgGYLmIuVBcYc95TywpluVAvoT0npcQHSgad5AT 2lo2bei4shY6deHCQ4VciIC+WLJyXETW1K+QOZ1j9YekrbaARDDMVRjTgSWSG4FCRTvp Ycug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=iYzvQVoWUcmey1iQg/XzzDPbvCC7IvPhLZf33g9MIic=; b=AZRGbBQYnLoBqe22idcCrDI/0YbLD0IqIxfsPIy1dAUrm1CHRPbTBGFIKOPs9ZIKDB pBu7sKapDycxZSyoGIPr9cEJaCMlZ8or9EqucrKCBHnidx71SCva+OFt+F/0SelIRPG2 jAlRxZ/9CHDQMzM6PlHQySnhq0gExYBYVhfqzMCIJcSJkRnIP6Ew5Ibsd3F/frpVwc6W Jej3dYHIsLuRqcgFQzAiPkhfEVWCHAl4rqVgbWV5IgBneB+I05Xq/jqTQekfJxkn6L6s gHcjJEhzooPBn8Njo3ODqZQPY9/B6bEkVSnfv9s3t3LCMXzjgNvnxpGYJHqDc0+bzGt8 i+Ew== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=iU09oV6q; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i18-20020a1709064fd200b0078b2fed72b9si6772628ejw.111.2022.11.26.15.05.18; Sat, 26 Nov 2022 15:05:41 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=iU09oV6q; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229673AbiKZW4s (ORCPT + 99 others); Sat, 26 Nov 2022 17:56:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40822 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229670AbiKZW4m (ORCPT ); Sat, 26 Nov 2022 17:56:42 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 40FDF14033; Sat, 26 Nov 2022 14:56:41 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id C1C7BB80990; Sat, 26 Nov 2022 22:56:39 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id BB3BCC43146; Sat, 26 Nov 2022 22:56:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1669503398; bh=wCew/KSYiW5FMRpAcbkMMNoa0Tg0Yys9AnOHzoZ6il8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=iU09oV6qH+haiGzgiXuF0/S4LQyMadKXIFcYKmTSKU7kOMjP5o7K2kFLjGtY4w8Pa FAMmfl9dlKJdVGA8U4FUbnZwE41c3RVhqICFpRrRkcaf8RlP9CZ+7AGaAeACbrRcYJ 4lb8cKx9Klcs267OGILTJR1W8dsyzNumUzs8Xpc7F2/YEMh5SQq5lSW6rBEA9kWFIx AU7DLCb0Le6BX7XwVIj8Uf6MEedqDTXtDib5+AqyA02UK1agU6k81fMQpQ1umOQKQt Kr9684qmU8D4BV6+HNeeEsHsdMfCgFJtjUL/YQ5D+V5aD6r9qaOyZPT17IHaBVRdNE q2vjtoPnsvasg== From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Masahiro Yamada , Nicolas Schier Subject: [PATCH v3 4/5] kconfig: refactor Makefile to reduce process forks Date: Sun, 27 Nov 2022 07:56:23 +0900 Message-Id: <20221126225624.751661-4-masahiroy@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221126225624.751661-1-masahiroy@kernel.org> References: <20221126225624.751661-1-masahiroy@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1750601765309258267?= X-GMAIL-MSGID: =?utf-8?q?1750601765309258267?= Refactor Makefile and use read-file macro. For Make >= 4.2, it can read out a file by using the built-in function. Signed-off-by: Masahiro Yamada Reviewed-by: Nicolas Schier --- (no changes since v1) scripts/kconfig/.gitignore | 4 +++- scripts/kconfig/Makefile | 43 +++++++++++++++++++----------------- scripts/kconfig/gconf-cfg.sh | 7 ++++-- scripts/kconfig/mconf-cfg.sh | 25 ++++++++++++--------- scripts/kconfig/nconf-cfg.sh | 23 ++++++++++--------- scripts/kconfig/qconf-cfg.sh | 10 ++++++--- scripts/remove-stale-files | 2 ++ 7 files changed, 67 insertions(+), 47 deletions(-) diff --git a/scripts/kconfig/.gitignore b/scripts/kconfig/.gitignore index 500e7424b3ef..c8a3f9cd52f0 100644 --- a/scripts/kconfig/.gitignore +++ b/scripts/kconfig/.gitignore @@ -1,5 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only /conf /[gmnq]conf -/[gmnq]conf-cfg +/[gmnq]conf-cflags +/[gmnq]conf-libs +/qconf-bin /qconf-moc.cc diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile index b8ef0fb4bbef..da7da9775a4b 100644 --- a/scripts/kconfig/Makefile +++ b/scripts/kconfig/Makefile @@ -159,11 +159,12 @@ conf-objs := conf.o $(common-objs) hostprogs += nconf nconf-objs := nconf.o nconf.gui.o $(common-objs) -HOSTLDLIBS_nconf = $(shell . $(obj)/nconf-cfg && echo $$libs) -HOSTCFLAGS_nconf.o = $(shell . $(obj)/nconf-cfg && echo $$cflags) -HOSTCFLAGS_nconf.gui.o = $(shell . $(obj)/nconf-cfg && echo $$cflags) +HOSTLDLIBS_nconf = $(call read-file, $(obj)/nconf-libs) +HOSTCFLAGS_nconf.o = $(call read-file, $(obj)/nconf-cflags) +HOSTCFLAGS_nconf.gui.o = $(call read-file, $(obj)/nconf-cflags) -$(obj)/nconf.o $(obj)/nconf.gui.o: $(obj)/nconf-cfg +$(obj)/nconf: | $(obj)/nconf-libs +$(obj)/nconf.o $(obj)/nconf.gui.o: | $(obj)/nconf-cflags # mconf: Used for the menuconfig target based on lxdialog hostprogs += mconf @@ -171,27 +172,28 @@ lxdialog := $(addprefix lxdialog/, \ checklist.o inputbox.o menubox.o textbox.o util.o yesno.o) mconf-objs := mconf.o $(lxdialog) $(common-objs) -HOSTLDLIBS_mconf = $(shell . $(obj)/mconf-cfg && echo $$libs) +HOSTLDLIBS_mconf = $(call read-file, $(obj)/mconf-libs) $(foreach f, mconf.o $(lxdialog), \ - $(eval HOSTCFLAGS_$f = $$(shell . $(obj)/mconf-cfg && echo $$$$cflags))) + $(eval HOSTCFLAGS_$f = $$(call read-file, $(obj)/mconf-cflags))) -$(addprefix $(obj)/, mconf.o $(lxdialog)): $(obj)/mconf-cfg +$(obj)/mconf: | $(obj)/mconf-libs +$(addprefix $(obj)/, mconf.o $(lxdialog)): | $(obj)/mconf-cflags # qconf: Used for the xconfig target based on Qt hostprogs += qconf qconf-cxxobjs := qconf.o qconf-moc.o qconf-objs := images.o $(common-objs) -HOSTLDLIBS_qconf = $(shell . $(obj)/qconf-cfg && echo $$libs) -HOSTCXXFLAGS_qconf.o = $(shell . $(obj)/qconf-cfg && echo $$cflags) -HOSTCXXFLAGS_qconf-moc.o = $(shell . $(obj)/qconf-cfg && echo $$cflags) - -$(obj)/qconf.o: $(obj)/qconf-cfg +HOSTLDLIBS_qconf = $(call read-file, $(obj)/qconf-libs) +HOSTCXXFLAGS_qconf.o = -std=c++11 -fPIC $(call read-file, $(obj)/qconf-cflags) +HOSTCXXFLAGS_qconf-moc.o = -std=c++11 -fPIC $(call read-file, $(obj)/qconf-cflags) +$(obj)/qconf: | $(obj)/qconf-libs +$(obj)/qconf.o $(obj)/qconf-moc.o: | $(obj)/qconf-cflags quiet_cmd_moc = MOC $@ - cmd_moc = $(shell . $(obj)/qconf-cfg && echo $$moc) $< -o $@ + cmd_moc = $(call read-file, $(obj)/qconf-bin)/moc $< -o $@ -$(obj)/qconf-moc.cc: $(src)/qconf.h $(obj)/qconf-cfg FORCE +$(obj)/qconf-moc.cc: $(src)/qconf.h FORCE | $(obj)/qconf-bin $(call if_changed,moc) targets += qconf-moc.cc @@ -200,15 +202,16 @@ targets += qconf-moc.cc hostprogs += gconf gconf-objs := gconf.o images.o $(common-objs) -HOSTLDLIBS_gconf = $(shell . $(obj)/gconf-cfg && echo $$libs) -HOSTCFLAGS_gconf.o = $(shell . $(obj)/gconf-cfg && echo $$cflags) +HOSTLDLIBS_gconf = $(call read-file, $(obj)/gconf-libs) +HOSTCFLAGS_gconf.o = $(call read-file, $(obj)/gconf-cflags) -$(obj)/gconf.o: $(obj)/gconf-cfg +$(obj)/gconf: | $(obj)/gconf-libs +$(obj)/gconf.o: | $(obj)/gconf-cflags # check if necessary packages are available, and configure build flags -filechk_conf_cfg = $(CONFIG_SHELL) $< +cmd_conf_cfg = $< $(addprefix $(obj)/$*conf-, cflags libs bin) -$(obj)/%conf-cfg: $(src)/%conf-cfg.sh FORCE - $(call filechk,conf_cfg) +$(obj)/%conf-cflags $(obj)/%conf-libs $(obj)/%conf-bin: $(src)/%conf-cfg.sh + $(call cmd,conf_cfg) clean-files += *conf-cfg diff --git a/scripts/kconfig/gconf-cfg.sh b/scripts/kconfig/gconf-cfg.sh index cbd90c28c05f..040d8f338820 100755 --- a/scripts/kconfig/gconf-cfg.sh +++ b/scripts/kconfig/gconf-cfg.sh @@ -1,6 +1,9 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0 +cflags=$1 +libs=$2 + PKG="gtk+-2.0 gmodule-2.0 libglade-2.0" if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then @@ -26,5 +29,5 @@ if ! ${HOSTPKG_CONFIG} --atleast-version=2.0.0 gtk+-2.0; then exit 1 fi -echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG)\" -echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\" +${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} +${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} diff --git a/scripts/kconfig/mconf-cfg.sh b/scripts/kconfig/mconf-cfg.sh index 025b565e0b7c..1e61f50a5905 100755 --- a/scripts/kconfig/mconf-cfg.sh +++ b/scripts/kconfig/mconf-cfg.sh @@ -1,19 +1,22 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0 +cflags=$1 +libs=$2 + PKG="ncursesw" PKG2="ncurses" if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then if ${HOSTPKG_CONFIG} --exists $PKG; then - echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG)\" - echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\" + ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} exit 0 fi - if ${HOSTPKG_CONFIG} --exists $PKG2; then - echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG2)\" - echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG2)\" + if ${HOSTPKG_CONFIG} --exists ${PKG2}; then + ${HOSTPKG_CONFIG} --cflags ${PKG2} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG2} > ${libs} exit 0 fi fi @@ -22,22 +25,22 @@ fi # (Even if it is installed, some distributions such as openSUSE cannot # find ncurses by pkg-config.) if [ -f /usr/include/ncursesw/ncurses.h ]; then - echo cflags=\"-D_GNU_SOURCE -I/usr/include/ncursesw\" - echo libs=\"-lncursesw\" + echo -D_GNU_SOURCE -I/usr/include/ncursesw > ${cflags} + echo -lncursesw > ${libs} exit 0 fi if [ -f /usr/include/ncurses/ncurses.h ]; then - echo cflags=\"-D_GNU_SOURCE -I/usr/include/ncurses\" - echo libs=\"-lncurses\" + echo -D_GNU_SOURCE -I/usr/include/ncurses > ${cflags} + echo -lncurses > ${libs} exit 0 fi # As a final fallback before giving up, check if $HOSTCC knows of a default # ncurses installation (e.g. from a vendor-specific sysroot). if echo '#include ' | ${HOSTCC} -E - >/dev/null 2>&1; then - echo cflags=\"-D_GNU_SOURCE\" - echo libs=\"-lncurses\" + echo -D_GNU_SOURCE > ${cflags} + echo -lncurses > ${libs} exit 0 fi diff --git a/scripts/kconfig/nconf-cfg.sh b/scripts/kconfig/nconf-cfg.sh index 3a10bac2adb3..f871a2160e36 100755 --- a/scripts/kconfig/nconf-cfg.sh +++ b/scripts/kconfig/nconf-cfg.sh @@ -1,19 +1,22 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0 +cflags=$1 +libs=$2 + PKG="ncursesw menuw panelw" PKG2="ncurses menu panel" if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then if ${HOSTPKG_CONFIG} --exists $PKG; then - echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG)\" - echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\" + ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} exit 0 fi if ${HOSTPKG_CONFIG} --exists $PKG2; then - echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG2)\" - echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG2)\" + ${HOSTPKG_CONFIG} --cflags ${PKG2} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG2} > ${libs} exit 0 fi fi @@ -22,20 +25,20 @@ fi # (Even if it is installed, some distributions such as openSUSE cannot # find ncurses by pkg-config.) if [ -f /usr/include/ncursesw/ncurses.h ]; then - echo cflags=\"-D_GNU_SOURCE -I/usr/include/ncursesw\" - echo libs=\"-lncursesw -lmenuw -lpanelw\" + echo -D_GNU_SOURCE -I/usr/include/ncursesw > ${cflags} + echo -lncursesw -lmenuw -lpanelw > ${libs} exit 0 fi if [ -f /usr/include/ncurses/ncurses.h ]; then - echo cflags=\"-D_GNU_SOURCE -I/usr/include/ncurses\" - echo libs=\"-lncurses -lmenu -lpanel\" + echo -D_GNU_SOURCE -I/usr/include/ncurses > ${cflags} + echo -lncurses -lmenu -lpanel > ${libs} exit 0 fi if [ -f /usr/include/ncurses.h ]; then - echo cflags=\"-D_GNU_SOURCE\" - echo libs=\"-lncurses -lmenu -lpanel\" + echo -D_GNU_SOURCE > ${cflags} + echo -lncurses -lmenu -lpanel > ${libs} exit 0 fi diff --git a/scripts/kconfig/qconf-cfg.sh b/scripts/kconfig/qconf-cfg.sh index ad652cb53947..117f36e568fc 100755 --- a/scripts/kconfig/qconf-cfg.sh +++ b/scripts/kconfig/qconf-cfg.sh @@ -1,6 +1,10 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0 +cflags=$1 +libs=$2 +bin=$3 + PKG="Qt5Core Qt5Gui Qt5Widgets" if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then @@ -11,9 +15,9 @@ if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then fi if ${HOSTPKG_CONFIG} --exists $PKG; then - echo cflags=\"-std=c++11 -fPIC $(${HOSTPKG_CONFIG} --cflags $PKG)\" - echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\" - echo moc=\"$(${HOSTPKG_CONFIG} --variable=host_bins Qt5Core)/moc\" + ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} + ${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} + ${HOSTPKG_CONFIG} --variable=host_bins Qt5Core > ${bin} exit 0 fi diff --git a/scripts/remove-stale-files b/scripts/remove-stale-files index ccadfa3afb2b..64b14aa5aebf 100755 --- a/scripts/remove-stale-files +++ b/scripts/remove-stale-files @@ -47,3 +47,5 @@ rm -f arch/riscv/purgatory/kexec-purgatory.c rm -f scripts/extract-cert rm -f arch/x86/purgatory/kexec-purgatory.c + +rm -f scripts/kconfig/[gmnq]conf-cfg From patchwork Sat Nov 26 22:56:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 26300 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp4858229wrr; Sat, 26 Nov 2022 15:05:42 -0800 (PST) X-Google-Smtp-Source: AA0mqf4khC/g7AXwAKBEtlfOUPX401Id6XchrQTqn0HFEYMlZGoOJMJerEw8VBSdfFHpGUQFzca2 X-Received: by 2002:a17:906:1641:b0:7ae:7d78:9fa1 with SMTP id n1-20020a170906164100b007ae7d789fa1mr37160744ejd.98.1669503942129; Sat, 26 Nov 2022 15:05:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669503942; cv=none; d=google.com; s=arc-20160816; b=eQoeOzptmBbA+UfgXgPDn6+t3/Bg7PyTbZF95zJIJuhhjk3ucXXwBpmLgYQpZwVBzk 3dyvfWF9yxrOPTlOQyOGQMui1zRly9cYJVdcufIouxOKZ18fli6JPKs2CYW4CiXwGA/r rf7NDzXJ8Dpnz0s38+J59LKk3uL0RXsKZSCzC2KMh3f2Qw+55BNRS3kMrnCfZG6kc/wJ zDGSVxzf2/zIwHhqtnpQLRZCjzQl1g/hBQ7rBP7VHZxarJmxIZL5YBK1te/BXQ7x89oQ ffmVe7lSLO4hYm4Yr+HwvZj3jBHvb04qjlKzVW5suLkOmm6Qkyos9IA4el8+VJ4Iwyts W1BA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=JQTkqzsmToQIpQByxyTfx8UqPJY/8rTsTpC/Mn72WnI=; b=wZdAYlJ0BGIhX0K2KhYdGuE72koMj6vGJTV8HkACOE3dopIH7NCnicVEqHWyCrLwzP vMRjwZLrmi43hVgkBxZ6dCvznSLxZ84NEVS0lOSDCDY0di66Biy44z1MngXRSBvzH5zm NOlkgpJozQJLf7BFliJ3RaU8edhfMZbPvJJZdsvDy0Qo057UbIgT0akGsP07F8ns+FBg jHSnur1D4COlFLgN2bqzo6fzrJWZHC6y+I/oLasFQ2Ru5GFjmABHQdv4hsfyzRWHW6nr pel8wbSzyddAAsXlKI+TF/tctrYjvykN47F8jHUaxkkRyd3mjGbcH+StmM7EQtkhIkfX bEaw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=KkDBMd5k; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w10-20020a05640234ca00b004627d582888si6796706edc.24.2022.11.26.15.05.18; Sat, 26 Nov 2022 15:05:42 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=KkDBMd5k; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229711AbiKZW4u (ORCPT + 99 others); Sat, 26 Nov 2022 17:56:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40828 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229612AbiKZW4n (ORCPT ); Sat, 26 Nov 2022 17:56:43 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 93130140E2; Sat, 26 Nov 2022 14:56:42 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 500FFB80A36; Sat, 26 Nov 2022 22:56:41 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id F1ADDC433D7; Sat, 26 Nov 2022 22:56:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1669503400; bh=1TveETKu7sAKWh+ej+xoHr1gzM/i4XbkZ6CR9I8Eia4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KkDBMd5kPkQdz5ZARbkK/WCiOsJ9+y5NCndrZ6R4AF+8PBvzMpmGGfyj5KOWacYmt sMAhzUN/71rXyWIanUbGX1AwycvLBN9o3zsIcaFbxdTHADU09z6cWP2XjVH3RX/uS0 UFAZcwqybSsiGjXcABxLM4j65dVmNqKDfw1Jhfw6xD5rvYTU0kSyslTOxvKwu/Hcuu 2UEM5dWiHiR3p4xBtUh2tl/NTYMNBavwZYfnrPvLkpSjQyPOYKzo2kTMKMZ8w45rl2 p0tVF47wPnq+K78P3dlgMelmha4kbO+zjC99iuGDVXI2C/1na9d+Xc6xFDPS72UXZW vOqofj2v/SgBA== From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Masahiro Yamada , Nicolas Schier , Nathan Chancellor , Nick Desaulniers Subject: [PATCH v3 5/5] kbuild: check Make version Date: Sun, 27 Nov 2022 07:56:24 +0900 Message-Id: <20221126225624.751661-5-masahiroy@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221126225624.751661-1-masahiroy@kernel.org> References: <20221126225624.751661-1-masahiroy@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1750601765571839162?= X-GMAIL-MSGID: =?utf-8?q?1750601765571839162?= This is implemented based on test-le. It will work until GNU Make 10 is released. Signed-off-by: Masahiro Yamada Reviewed-by: Nicolas Schier --- (no changes since v1) Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile b/Makefile index 60ce9dcafc72..797fafbc1b45 100644 --- a/Makefile +++ b/Makefile @@ -368,6 +368,9 @@ else # !mixed-build include $(srctree)/scripts/Kbuild.include +# Check for the minimal Make version +$(if $(call test-lt, $(MAKE_VERSION), 3.82), $(error Make $(MAKE_VERSION) is too old)) + # Read KERNELRELEASE from include/config/kernel.release (if it exists) KERNELRELEASE = $(call read-file, include/config/kernel.release) KERNELVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)