lkml.org 
[lkml]   [2021]   [Jun]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/2] Kbuild: lto: add make-version macros
    Date
    To check the GNU make version. Used by the LTO Kconfig.

    LTO with MODVERSION will fail in generating correct CRC because
    the makefile rule doesn't work for make with version 3.8X.[1]

    Thus we need to check make version during selecting on LTO Kconfig.
    The MAKE_VERSION_INT means MAKE_VERSION in canonical digits integer and
    implemnted by imitating CLANG_VERSION.

    [1] https://lore.kernel.org/lkml/20210616080252.32046-1-lecopzer.chen@mediatek.com/
    Signed-off-by: Lecopzer Chen <lecopzer.chen@mediatek.com>
    ---
    Makefile | 2 +-
    init/Kconfig | 4 ++++
    scripts/Kconfig.include | 3 +++
    scripts/make-version.sh | 13 +++++++++++++
    4 files changed, 21 insertions(+), 1 deletion(-)
    create mode 100755 scripts/make-version.sh

    diff --git a/Makefile b/Makefile
    index 88888fff4c62..2402745b2ba9 100644
    --- a/Makefile
    +++ b/Makefile
    @@ -516,7 +516,7 @@ CLANG_FLAGS :=

    export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC
    export CPP AR NM STRIP OBJCOPY OBJDUMP READELF PAHOLE RESOLVE_BTFIDS LEX YACC AWK INSTALLKERNEL
    -export PERL PYTHON3 CHECK CHECKFLAGS MAKE UTS_MACHINE HOSTCXX
    +export PERL PYTHON3 CHECK CHECKFLAGS MAKE MAKE_VERSION UTS_MACHINE HOSTCXX
    export KGZIP KBZIP2 KLZOP LZMA LZ4 XZ ZSTD
    export KBUILD_HOSTCXXFLAGS KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS LDFLAGS_MODULE

    diff --git a/init/Kconfig b/init/Kconfig
    index a61c92066c2e..9f2b71fdf23e 100644
    --- a/init/Kconfig
    +++ b/init/Kconfig
    @@ -83,6 +83,10 @@ config TOOLS_SUPPORT_RELR
    config CC_HAS_ASM_INLINE
    def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null)

    +config MAKE_VERSION_INT
    + int
    + default $(make-version)
    +
    config CONSTRUCTORS
    bool

    diff --git a/scripts/Kconfig.include b/scripts/Kconfig.include
    index 0496efd6e117..f956953d0236 100644
    --- a/scripts/Kconfig.include
    +++ b/scripts/Kconfig.include
    @@ -63,3 +63,6 @@ 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)
    +
    +# Get the GNU make version with a canonical digit.
    +make-version := $(shell,$(srctree)/scripts/make-version.sh $(MAKE_VERSION))
    diff --git a/scripts/make-version.sh b/scripts/make-version.sh
    new file mode 100755
    index 000000000000..ce5af96696cc
    --- /dev/null
    +++ b/scripts/make-version.sh
    @@ -0,0 +1,13 @@
    +#!/bin/sh
    +# SPDX-License-Identifier: GPL-2.0
    +#
    +# Print the linker name and its version in a 5 or 6-digit form.
    +
    +set -e
    +
    +# Convert the version string x.y.z to a canonical 5 or 6-digit form.
    +IFS=.
    +set -- $1
    +
    +# If the 2nd or 3rd field is missing, fill it with a zero.
    +echo $((10000 * $1 + 100 * ${2:-0} + ${3:-0}))
    --
    2.18.0
    \
     
     \ /
      Last update: 2021-06-30 14:16    [W:2.801 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site