Browse Source

Merge tag 'kbuild-fixes-v4.14-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild

Pull Kbuild fixes from Masahiro Yamada:

 - fix O= building on dash

 - remove unused dependency in Makefile

 - fix default of a choice in Kconfig

 - fix typos and documentation style

 - fix command options unrecognized by sparse

* tag 'kbuild-fixes-v4.14-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
  kbuild: clang: fix build failures with sparse check
  kbuild doc: a bundle of fixes on makefiles.txt
  Makefile: kselftest: fix grammar typo
  kbuild: Fix optimization level choice default
  kbuild: drop unused symverfile in Makefile.modpost
  kbuild: revert $(realpath ...) to $(shell cd ... && /bin/pwd)
Linus Torvalds 7 years ago
parent
commit
25a5d23b47

+ 18 - 13
Documentation/kbuild/makefiles.txt

@@ -1108,14 +1108,6 @@ When kbuild executes, the following steps are followed (roughly):
     ld
     ld
 	Link target. Often, LDFLAGS_$@ is used to set specific options to ld.
 	Link target. Often, LDFLAGS_$@ is used to set specific options to ld.
 
 
-    objcopy
-	Copy binary. Uses OBJCOPYFLAGS usually specified in
-	arch/$(ARCH)/Makefile.
-	OBJCOPYFLAGS_$@ may be used to set additional options.
-
-    gzip
-	Compress target. Use maximum compression to compress target.
-
 	Example:
 	Example:
 		#arch/x86/boot/Makefile
 		#arch/x86/boot/Makefile
 		LDFLAGS_bootsect := -Ttext 0x0 -s --oformat binary
 		LDFLAGS_bootsect := -Ttext 0x0 -s --oformat binary
@@ -1139,6 +1131,19 @@ When kbuild executes, the following steps are followed (roughly):
 	      resulting in the target file being recompiled for no
 	      resulting in the target file being recompiled for no
 	      obvious reason.
 	      obvious reason.
 
 
+    objcopy
+	Copy binary. Uses OBJCOPYFLAGS usually specified in
+	arch/$(ARCH)/Makefile.
+	OBJCOPYFLAGS_$@ may be used to set additional options.
+
+    gzip
+	Compress target. Use maximum compression to compress target.
+
+	Example:
+		#arch/x86/boot/compressed/Makefile
+		$(obj)/vmlinux.bin.gz: $(vmlinux.bin.all-y) FORCE
+			$(call if_changed,gzip)
+
     dtc
     dtc
 	Create flattened device tree blob object suitable for linking
 	Create flattened device tree blob object suitable for linking
 	into vmlinux. Device tree blobs linked into vmlinux are placed
 	into vmlinux. Device tree blobs linked into vmlinux are placed
@@ -1219,7 +1224,7 @@ When kbuild executes, the following steps are followed (roughly):
 	that may be shared between individual architectures.
 	that may be shared between individual architectures.
 	The recommended approach how to use a generic header file is
 	The recommended approach how to use a generic header file is
 	to list the file in the Kbuild file.
 	to list the file in the Kbuild file.
-	See "7.3 generic-y" for further info on syntax etc.
+	See "7.2 generic-y" for further info on syntax etc.
 
 
 --- 6.11 Post-link pass
 --- 6.11 Post-link pass
 
 
@@ -1254,13 +1259,13 @@ A Kbuild file may be defined under arch/<arch>/include/uapi/asm/ and
 arch/<arch>/include/asm/ to list asm files coming from asm-generic.
 arch/<arch>/include/asm/ to list asm files coming from asm-generic.
 See subsequent chapter for the syntax of the Kbuild file.
 See subsequent chapter for the syntax of the Kbuild file.
 
 
-	--- 7.1 no-export-headers
+--- 7.1 no-export-headers
 
 
 	no-export-headers is essentially used by include/uapi/linux/Kbuild to
 	no-export-headers is essentially used by include/uapi/linux/Kbuild to
 	avoid exporting specific headers (e.g. kvm.h) on architectures that do
 	avoid exporting specific headers (e.g. kvm.h) on architectures that do
 	not support it. It should be avoided as much as possible.
 	not support it. It should be avoided as much as possible.
 
 
-	--- 7.2 generic-y
+--- 7.2 generic-y
 
 
 	If an architecture uses a verbatim copy of a header from
 	If an architecture uses a verbatim copy of a header from
 	include/asm-generic then this is listed in the file
 	include/asm-generic then this is listed in the file
@@ -1287,7 +1292,7 @@ See subsequent chapter for the syntax of the Kbuild file.
 		Example: termios.h
 		Example: termios.h
 			#include <asm-generic/termios.h>
 			#include <asm-generic/termios.h>
 
 
-	--- 7.3 generated-y
+--- 7.3 generated-y
 
 
 	If an architecture generates other header files alongside generic-y
 	If an architecture generates other header files alongside generic-y
 	wrappers, generated-y specifies them.
 	wrappers, generated-y specifies them.
@@ -1299,7 +1304,7 @@ See subsequent chapter for the syntax of the Kbuild file.
 			#arch/x86/include/asm/Kbuild
 			#arch/x86/include/asm/Kbuild
 			generated-y += syscalls_32.h
 			generated-y += syscalls_32.h
 
 
-	--- 7.5 mandatory-y
+--- 7.4 mandatory-y
 
 
 	mandatory-y is essentially used by include/uapi/asm-generic/Kbuild.asm
 	mandatory-y is essentially used by include/uapi/asm-generic/Kbuild.asm
 	to define the minimum set of headers that must be exported in
 	to define the minimum set of headers that must be exported in

+ 5 - 5
Makefile

@@ -130,8 +130,8 @@ endif
 ifneq ($(KBUILD_OUTPUT),)
 ifneq ($(KBUILD_OUTPUT),)
 # check that the output directory actually exists
 # check that the output directory actually exists
 saved-output := $(KBUILD_OUTPUT)
 saved-output := $(KBUILD_OUTPUT)
-$(shell [ -d $(KBUILD_OUTPUT) ] || mkdir -p $(KBUILD_OUTPUT))
-KBUILD_OUTPUT := $(realpath $(KBUILD_OUTPUT))
+KBUILD_OUTPUT := $(shell mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) \
+								&& /bin/pwd)
 $(if $(KBUILD_OUTPUT),, \
 $(if $(KBUILD_OUTPUT),, \
      $(error failed to create output directory "$(saved-output)"))
      $(error failed to create output directory "$(saved-output)"))
 
 
@@ -697,11 +697,11 @@ KBUILD_CFLAGS += $(stackp-flag)
 
 
 ifeq ($(cc-name),clang)
 ifeq ($(cc-name),clang)
 ifneq ($(CROSS_COMPILE),)
 ifneq ($(CROSS_COMPILE),)
-CLANG_TARGET	:= -target $(notdir $(CROSS_COMPILE:%-=%))
+CLANG_TARGET	:= --target=$(notdir $(CROSS_COMPILE:%-=%))
 GCC_TOOLCHAIN	:= $(realpath $(dir $(shell which $(LD)))/..)
 GCC_TOOLCHAIN	:= $(realpath $(dir $(shell which $(LD)))/..)
 endif
 endif
 ifneq ($(GCC_TOOLCHAIN),)
 ifneq ($(GCC_TOOLCHAIN),)
-CLANG_GCC_TC	:= -gcc-toolchain $(GCC_TOOLCHAIN)
+CLANG_GCC_TC	:= --gcc-toolchain=$(GCC_TOOLCHAIN)
 endif
 endif
 KBUILD_CFLAGS += $(CLANG_TARGET) $(CLANG_GCC_TC)
 KBUILD_CFLAGS += $(CLANG_TARGET) $(CLANG_GCC_TC)
 KBUILD_AFLAGS += $(CLANG_TARGET) $(CLANG_GCC_TC)
 KBUILD_AFLAGS += $(CLANG_TARGET) $(CLANG_GCC_TC)
@@ -1399,7 +1399,7 @@ help:
 	@echo  '                    Build, install, and boot kernel before'
 	@echo  '                    Build, install, and boot kernel before'
 	@echo  '                    running kselftest on it'
 	@echo  '                    running kselftest on it'
 	@echo  '  kselftest-clean - Remove all generated kselftest files'
 	@echo  '  kselftest-clean - Remove all generated kselftest files'
-	@echo  '  kselftest-merge - Merge all the config dependencies of kselftest to existed'
+	@echo  '  kselftest-merge - Merge all the config dependencies of kselftest to existing'
 	@echo  '                    .config.'
 	@echo  '                    .config.'
 	@echo  ''
 	@echo  ''
 	@echo 'Userspace tools targets:'
 	@echo 'Userspace tools targets:'

+ 1 - 1
init/Kconfig

@@ -1033,7 +1033,7 @@ endif
 
 
 choice
 choice
 	prompt "Compiler optimization level"
 	prompt "Compiler optimization level"
-	default CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE
+	default CC_OPTIMIZE_FOR_PERFORMANCE
 
 
 config CC_OPTIMIZE_FOR_PERFORMANCE
 config CC_OPTIMIZE_FOR_PERFORMANCE
 	bool "Optimize for performance"
 	bool "Optimize for performance"

+ 0 - 1
scripts/Makefile.modpost

@@ -97,7 +97,6 @@ vmlinux.o: FORCE
 	$(call cmd,kernel-mod)
 	$(call cmd,kernel-mod)
 
 
 # Declare generated files as targets for modpost
 # Declare generated files as targets for modpost
-$(symverfile):         __modpost ;
 $(modules:.ko=.mod.c): __modpost ;
 $(modules:.ko=.mod.c): __modpost ;
 
 
 
 

+ 1 - 1
tools/power/cpupower/Makefile

@@ -26,7 +26,7 @@ endif
 
 
 ifneq ($(OUTPUT),)
 ifneq ($(OUTPUT),)
 # check that the output directory actually exists
 # check that the output directory actually exists
-OUTDIR := $(realpath $(OUTPUT))
+OUTDIR := $(shell cd $(OUTPUT) && /bin/pwd)
 $(if $(OUTDIR),, $(error output directory "$(OUTPUT)" does not exist))
 $(if $(OUTDIR),, $(error output directory "$(OUTPUT)" does not exist))
 endif
 endif
 
 

+ 3 - 3
tools/scripts/Makefile.include

@@ -1,7 +1,7 @@
 ifneq ($(O),)
 ifneq ($(O),)
 ifeq ($(origin O), command line)
 ifeq ($(origin O), command line)
-	ABSOLUTE_O := $(realpath $(O))
-	dummy := $(if $(ABSOLUTE_O),,$(error O=$(O) does not exist))
+	dummy := $(if $(shell test -d $(O) || echo $(O)),$(error O=$(O) does not exist),)
+	ABSOLUTE_O := $(shell cd $(O) ; pwd)
 	OUTPUT := $(ABSOLUTE_O)/$(if $(subdir),$(subdir)/)
 	OUTPUT := $(ABSOLUTE_O)/$(if $(subdir),$(subdir)/)
 	COMMAND_O := O=$(ABSOLUTE_O)
 	COMMAND_O := O=$(ABSOLUTE_O)
 ifeq ($(objtree),)
 ifeq ($(objtree),)
@@ -12,7 +12,7 @@ endif
 
 
 # check that the output directory actually exists
 # check that the output directory actually exists
 ifneq ($(OUTPUT),)
 ifneq ($(OUTPUT),)
-OUTDIR := $(realpath $(OUTPUT))
+OUTDIR := $(shell cd $(OUTPUT) && /bin/pwd)
 $(if $(OUTDIR),, $(error output directory "$(OUTPUT)" does not exist))
 $(if $(OUTDIR),, $(error output directory "$(OUTPUT)" does not exist))
 endif
 endif