diff mbox series

kbuild: Port build system to the future versions of gnu make.

Message ID CAG+Z0CttsBe0_OoPeU3bVh9dg9DN_cUwcX2oC0Mj2uNxurehWA@mail.gmail.com (mailing list archive)
State New, archived
Headers show
Series kbuild: Port build system to the future versions of gnu make. | expand

Commit Message

Dmitry Goncharov Jan. 27, 2024, 10:14 p.m. UTC
Port build system to the future (post make-4.4.1) versions of gnu make.

Starting from https://git.savannah.gnu.org/cgit/make.git/commit/?id=07fcee35f058a876447c8a021f9eb1943f902534
gnu make won't allow conditionals to follow recipe prefix.

For example there is a tab followed by ifeq on line 324 in the root Makefile.
With the new make this conditional causes the following

$ make cpu.o
/home/dgoncharov/src/linux-kbuild/Makefile:2063: *** missing 'endif'.  Stop.
make: *** [Makefile:240: __sub-make] Error 2

See https://savannah.gnu.org/bugs/?64185 and
https://savannah.gnu.org/bugs/?64259 for details.

This patch replaces tabs followed by conditionals with 8 spaces.
In case the mailer program messes up the tabs and spaces in the diff,
i enclosed the same patch in the attachment.

Signed-off-by: Dmitry Goncharov <dgoncharov@users.sf.net>
Reported-by: Martin Dorey <martin.dorey@hitachivantara.com>

regards, Dmitry

Comments

Miguel Ojeda Jan. 28, 2024, 2:11 a.m. UTC | #1
On Sat, Jan 27, 2024 at 11:15 PM Dmitry Goncharov
<dgoncharov@users.sf.net> wrote:
>
> Port build system to the future (post make-4.4.1) versions of gnu make.

Thanks for the heads up!

> This patch replaces tabs followed by conditionals with 8 spaces.
> In case the mailer program messes up the tabs and spaces in the diff,
> i enclosed the same patch in the attachment.

Yeah, it is mangled, and the commit message needs some refactoring to
separate the non-commit bits like this paragraph, but the contents in
the attached diff are what I would expect (I did the changes on my
side grepping for `ifeq`/`ifneq`/`else` and they match yours). So for
the contents themselves:

Reviewed-by: Miguel Ojeda <ojeda@kernel.org>

Cheers,
Miguel
Masahiro Yamada Jan. 28, 2024, 12:40 p.m. UTC | #2
On Sun, Jan 28, 2024 at 7:14 AM Dmitry Goncharov
<dgoncharov@users.sf.net> wrote:
>
> Port build system to the future (post make-4.4.1) versions of gnu make.
>
> Starting from https://git.savannah.gnu.org/cgit/make.git/commit/?id=07fcee35f058a876447c8a021f9eb1943f902534
> gnu make won't allow conditionals to follow recipe prefix.
>
> For example there is a tab followed by ifeq on line 324 in the root Makefile.
> With the new make this conditional causes the following
>
> $ make cpu.o
> /home/dgoncharov/src/linux-kbuild/Makefile:2063: *** missing 'endif'.  Stop.
> make: *** [Makefile:240: __sub-make] Error 2
>
> See https://savannah.gnu.org/bugs/?64185 and
> https://savannah.gnu.org/bugs/?64259 for details.
>
> This patch replaces tabs followed by conditionals with 8 spaces.
> In case the mailer program messes up the tabs and spaces in the diff,
> i enclosed the same patch in the attachment.
>
> Signed-off-by: Dmitry Goncharov <dgoncharov@users.sf.net>
> Reported-by: Martin Dorey <martin.dorey@hitachivantara.com>
>
> regards, Dmitry


Thanks. Looks good to me.

But, the commit subject
"kbuild: Port build system to the future versions of gnu make"
is ambiguous.


Can you describe what the patch is changing?

For example,
"kbuild: avoid using tabs followed by conditionals for future gnu make"
or something similar.




>
>
> diff --git a/Makefile b/Makefile
> index 9869f57c3fb3..12dcc51c586a 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -294,15 +294,15 @@ may-sync-config    := 1
>  single-build    :=
>
>  ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),)
> -    ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
> +        ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
>          need-config :=
> -    endif
> +        endif
>  endif
>
>  ifneq ($(filter $(no-sync-config-targets), $(MAKECMDGOALS)),)
> -    ifeq ($(filter-out $(no-sync-config-targets), $(MAKECMDGOALS)),)
> +        ifeq ($(filter-out $(no-sync-config-targets), $(MAKECMDGOALS)),)
>          may-sync-config :=
> -    endif
> +        endif
>  endif
>
>  need-compiler := $(may-sync-config)
> @@ -323,9 +323,9 @@ endif
>  # We cannot build single targets and the others at the same time
>  ifneq ($(filter $(single-targets), $(MAKECMDGOALS)),)
>      single-build := 1
> -    ifneq ($(filter-out $(single-targets), $(MAKECMDGOALS)),)
> +        ifneq ($(filter-out $(single-targets), $(MAKECMDGOALS)),)
>          mixed-build := 1
> -    endif
> +        endif
>  endif
>
>  # For "make -j clean all", "make -j mrproper defconfig all", etc.
> diff --git a/arch/m68k/Makefile b/arch/m68k/Makefile
> index 43e39040d3ac..76ef1a67c361 100644
> --- a/arch/m68k/Makefile
> +++ b/arch/m68k/Makefile
> @@ -15,10 +15,10 @@
>  KBUILD_DEFCONFIG := multi_defconfig
>
>  ifdef cross_compiling
> -    ifeq ($(CROSS_COMPILE),)
> +        ifeq ($(CROSS_COMPILE),)
>          CROSS_COMPILE := $(call cc-cross-prefix, \
>              m68k-linux-gnu- m68k-linux- m68k-unknown-linux-gnu-)
> -    endif
> +        endif
>  endif
>
>  #
> diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile
> index 920db57b6b4c..7486b3b30594 100644
> --- a/arch/parisc/Makefile
> +++ b/arch/parisc/Makefile
> @@ -50,12 +50,12 @@ export CROSS32CC
>
>  # Set default cross compiler for kernel build
>  ifdef cross_compiling
> -    ifeq ($(CROSS_COMPILE),)
> +        ifeq ($(CROSS_COMPILE),)
>          CC_SUFFIXES = linux linux-gnu unknown-linux-gnu suse-linux
>          CROSS_COMPILE := $(call cc-cross-prefix, \
>              $(foreach a,$(CC_ARCHES), \
>              $(foreach s,$(CC_SUFFIXES),$(a)-$(s)-)))
> -    endif
> +        endif
>  endif
>
>  ifdef CONFIG_DYNAMIC_FTRACE
> diff --git a/arch/x86/Makefile b/arch/x86/Makefile
> index 1a068de12a56..2264db14a25d 100644
> --- a/arch/x86/Makefile
> +++ b/arch/x86/Makefile
> @@ -112,13 +112,13 @@ ifeq ($(CONFIG_X86_32),y)
>          # temporary until string.h is fixed
>          KBUILD_CFLAGS += -ffreestanding
>
> -    ifeq ($(CONFIG_STACKPROTECTOR),y)
> -        ifeq ($(CONFIG_SMP),y)
> +        ifeq ($(CONFIG_STACKPROTECTOR),y)
> +                ifeq ($(CONFIG_SMP),y)
>              KBUILD_CFLAGS += -mstack-protector-guard-reg=fs
> -mstack-protector-guard-symbol=__stack_chk_guard
> -        else
> +                else
>              KBUILD_CFLAGS += -mstack-protector-guard=global
> -        endif
> -    endif
> +                endif
> +        endif
>  else
>          BITS := 64
>          UTS_MACHINE := x86_64
diff mbox series

Patch

diff --git a/Makefile b/Makefile
index 9869f57c3fb3..12dcc51c586a 100644
--- a/Makefile
+++ b/Makefile
@@ -294,15 +294,15 @@  may-sync-config	:= 1
 single-build	:=
 
 ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),)
-	ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
+        ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
 		need-config :=
-	endif
+        endif
 endif
 
 ifneq ($(filter $(no-sync-config-targets), $(MAKECMDGOALS)),)
-	ifeq ($(filter-out $(no-sync-config-targets), $(MAKECMDGOALS)),)
+        ifeq ($(filter-out $(no-sync-config-targets), $(MAKECMDGOALS)),)
 		may-sync-config :=
-	endif
+        endif
 endif
 
 need-compiler := $(may-sync-config)
@@ -323,9 +323,9 @@  endif
 # We cannot build single targets and the others at the same time
 ifneq ($(filter $(single-targets), $(MAKECMDGOALS)),)
 	single-build := 1
-	ifneq ($(filter-out $(single-targets), $(MAKECMDGOALS)),)
+        ifneq ($(filter-out $(single-targets), $(MAKECMDGOALS)),)
 		mixed-build := 1
-	endif
+        endif
 endif
 
 # For "make -j clean all", "make -j mrproper defconfig all", etc.
diff --git a/arch/m68k/Makefile b/arch/m68k/Makefile
index 43e39040d3ac..76ef1a67c361 100644
--- a/arch/m68k/Makefile
+++ b/arch/m68k/Makefile
@@ -15,10 +15,10 @@ 
 KBUILD_DEFCONFIG := multi_defconfig
 
 ifdef cross_compiling
-	ifeq ($(CROSS_COMPILE),)
+        ifeq ($(CROSS_COMPILE),)
 		CROSS_COMPILE := $(call cc-cross-prefix, \
 			m68k-linux-gnu- m68k-linux- m68k-unknown-linux-gnu-)
-	endif
+        endif
 endif
 
 #
diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile
index 920db57b6b4c..7486b3b30594 100644
--- a/arch/parisc/Makefile
+++ b/arch/parisc/Makefile
@@ -50,12 +50,12 @@  export CROSS32CC
 
 # Set default cross compiler for kernel build
 ifdef cross_compiling
-	ifeq ($(CROSS_COMPILE),)
+        ifeq ($(CROSS_COMPILE),)
 		CC_SUFFIXES = linux linux-gnu unknown-linux-gnu suse-linux
 		CROSS_COMPILE := $(call cc-cross-prefix, \
 			$(foreach a,$(CC_ARCHES), \
 			$(foreach s,$(CC_SUFFIXES),$(a)-$(s)-)))
-	endif
+        endif
 endif
 
 ifdef CONFIG_DYNAMIC_FTRACE
diff --git a/arch/x86/Makefile b/arch/x86/Makefile
index 1a068de12a56..2264db14a25d 100644
--- a/arch/x86/Makefile
+++ b/arch/x86/Makefile
@@ -112,13 +112,13 @@  ifeq ($(CONFIG_X86_32),y)
         # temporary until string.h is fixed
         KBUILD_CFLAGS += -ffreestanding
 
-	ifeq ($(CONFIG_STACKPROTECTOR),y)
-		ifeq ($(CONFIG_SMP),y)
+        ifeq ($(CONFIG_STACKPROTECTOR),y)
+                ifeq ($(CONFIG_SMP),y)
 			KBUILD_CFLAGS += -mstack-protector-guard-reg=fs -mstack-protector-guard-symbol=__stack_chk_guard
-		else
+                else
 			KBUILD_CFLAGS += -mstack-protector-guard=global
-		endif
-	endif
+                endif
+        endif
 else
         BITS := 64
         UTS_MACHINE := x86_64