kbuild: sync with Linux Kernel v3.15-rc1
PATCH 1/1 kbuild: sync with Linux Kernel v3.15-rc1
This commit imports Kbuild-related updates
from v3.14 to v3.15-rc1.
- commit 3d3d6b8474204b6819688c9800774d52d370a538
kbuild: LLVMLinux: Adapt warnings for compilation with clang
- commit 61163efae02040f66a95c8ed17f4407951ba58fa
kbuild: LLVMLinux: Add Kbuild support for building kernel with Clang
- commit 79192ca8ebd9a25c583aa46024a250fef1e7766f
scripts: objdiff: detect object code changes between two commits
- commit 1c9e70a55b088d97a59241744fe459409d0c3582
kbuild: create a build directory automatically for out-of-tree build
- commit a03fcb50e816a69acffb13b5e56db75063aeba8a
kbuild: remove redundant '.*.cmd' pattern from make distclean
- commit 13338935f1574a2dcd1c891461b0dcc42f8cff42
kbuild: move "quote" to Kbuild.include to be consistent
- commit bfdfaeae500a3b194b73b01e92a8034791a58b7f
kbuild: specify build_docproc as a phony target
- commit f4d4ffc03efc864645b990e1d579bbe1b8e358a4
kbuild: dtbs_install: new make target
- commit 1e64ff42ea3d8d2fc8aa71f9717b3c1cb6c2f893
Kbuild, lto: Disable LTO for asm-offsets.c
- commit ccbef1674a1579842c7dbdf554efca85d2cd245a
Kbuild, lto: add ld-version and ld-ifversion macros
- commit ae63b2d7bdd9bd66b88843be0daf8e37d8f0b574 scripts/tags.sh: Ignore *.mod.c
- commit e36aaea28972c57a32a3ba5365e61633739719b9
kbuild: Fix silent builds with make-4
--- Makefile | 49 ++++++++++++++--- scripts/Kbuild.include | 10 ++++ scripts/Makefile | 2 +- scripts/Makefile.build | 14 ++++- scripts/Makefile.lib | 16 ++++-- scripts/ld-version.sh | 8 +++ scripts/objdiff | 141 +++++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 227 insertions(+), 13 deletions(-) create mode 100755 scripts/ld-version.sh create mode 100755 scripts/objdiff
Makefile +43 -6
@@ -127,7 +127,7 @@ saved-output := $(KBUILD_OUTPUT) KBUILD_OUTPUT := $(shell mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) \ && /bin/pwd) $(if $(KBUILD_OUTPUT),, \ - $(error output directory "$(saved-output)" does not exist)) + $(error failed to create output directory "$(saved-output)")) PHONY += $(MAKECMDGOALS) sub-make
@@ -205,7 +205,14 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ else echo sh; fi ; fi) HOSTCC = gcc +HOSTCXX = g++ HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer +HOSTCXXFLAGS = -O2 + +ifeq ($(shell $(HOSTCC) -v 2>&1 | grep -c "clang version"), 1) +HOSTCFLAGS += -Wno-unused-value -Wno-unused-parameter \ + -Wno-missing-field-initializers -fno-delete-null-pointer-checks +endif ifeq ($(HOSTOS),cygwin) HOSTCFLAGS += -ansi
@@ -301,12 +308,26 @@ endif # If the user is running make -s (silent mode), suppress echoing of # commands +ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4 +ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),) + quiet=silent_ +endif +else # make-3.8x ifneq ($(filter s% -s%,$(MAKEFLAGS)),) quiet=silent_ endif +endif export quiet Q KBUILD_VERBOSE +ifneq ($(CC),) +ifeq ($(shell $(CC) -v 2>&1 | grep -c "clang version"), 1) +COMPILER := clang +else +COMPILER := gcc +endif +export COMPILER +endif # Look for make include files relative to root of kernel src MAKEFLAGS += --include-dir=$(srctree)
@@ -368,8 +389,9 @@ export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_ve # Files to ignore in find ... statements -RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS \ - -o -name .pc -o -name .hg -o -name .git \) -prune -o +export RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o \ + -name CVS -o -name .pc -o -name .hg -o -name .git \) \ + -prune -o export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \ --exclude CVS --exclude .pc --exclude .hg --exclude .git
@@ -523,6 +545,20 @@ endif KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector) +ifeq ($(COMPILER),clang) +KBUILD_CPPFLAGS += $(call cc-option,-Qunused-arguments,) +KBUILD_CPPFLAGS += $(call cc-option,-Wno-unknown-warning-option,) +KBUILD_CFLAGS += $(call cc-disable-warning, unused-variable) +KBUILD_CFLAGS += $(call cc-disable-warning, format-invalid-specifier) +KBUILD_CFLAGS += $(call cc-disable-warning, gnu) +# Quiet clang warning: comparison of unsigned expression < 0 is always false +KBUILD_CFLAGS += $(call cc-disable-warning, tautological-compare) +# CLANG uses a _MergedGlobals as optimization, but this breaks modpost, as the +# source of a reference will be _MergedGlobals and not on of the whitelisted names. +# See modpost pattern 2 +KBUILD_CFLAGS += $(call cc-option, -mno-global-merge,) +endif + KBUILD_CFLAGS += -g # $(KBUILD_AFLAGS) sets -g, which causes gcc to pass a suitable -g<format> # option to the assembler.
@@ -1168,7 +1204,8 @@ CLOBBER_DIRS += $(patsubst %,spl/%, $(filter-out Makefile, \ CLOBBER_FILES += u-boot* MLO* SPL System.map nand_spl/u-boot* # Directories & files removed with 'make mrproper' -MRPROPER_DIRS += include/config include/generated +MRPROPER_DIRS += include/config include/generated \ + .tmp_objdiff MRPROPER_FILES += .config .config.old \ tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \ include/config.h include/config.mk
@@ -1234,8 +1271,8 @@ distclean: mrproper @find $(srctree) $(RCS_FIND_IGNORE) \ \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ - -o -name '.*.rej' -o -name '*.pyc' \ - -o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \ + -o -name '.*.rej' -o -name '*%' -o -name 'core' \ + -o -name '*.pyc' \) \ -type f -print | xargs rm -f backup:
scripts/Kbuild.include +10 -0
@@ -3,6 +3,7 @@ # Convenient variables comma := , +quote := " squote := ' empty := space := $(empty) $(empty)
@@ -161,6 +162,15 @@ ld-option = $(call try-run,\ # Important: no spaces around options ar-option = $(call try-run, $(AR) rc$(1) "$$TMP",$(1),$(2)) +# ld-version +# Usage: $(call ld-version) +# Note this is mainly for HJ Lu's 3 number binutil versions +ld-version = $(shell $(LD) --version | $(srctree)/scripts/ld-version.sh) + +# ld-ifversion +# Usage: $(call ld-ifversion, -ge, 22252, y) +ld-ifversion = $(shell [ $(call ld-version) $(1) $(2) ] && echo $(3)) + ###### ###
scripts/Makefile +1 -1
@@ -9,7 +9,7 @@ hostprogs-y += docproc # These targets are used internally to avoid "is up to date" messages PHONY += build_docproc -build_docproc: scripts/docproc +build_docproc: $(obj)/docproc @: # Let clean descend into subdirs
scripts/Makefile.build +12 -2
@@ -90,12 +90,22 @@ warning- := $(empty) warning-1 := -Wextra -Wunused -Wno-unused-parameter warning-1 += -Wmissing-declarations warning-1 += -Wmissing-format-attribute -warning-1 += -Wmissing-prototypes +warning-1 += $(call cc-option, -Wmissing-prototypes) warning-1 += -Wold-style-definition warning-1 += $(call cc-option, -Wmissing-include-dirs) warning-1 += $(call cc-option, -Wunused-but-set-variable) warning-1 += $(call cc-disable-warning, missing-field-initializers) +# Clang +warning-1 += $(call cc-disable-warning, initializer-overrides) +warning-1 += $(call cc-disable-warning, unused-value) +warning-1 += $(call cc-disable-warning, format) +warning-1 += $(call cc-disable-warning, unknown-warning-option) +warning-1 += $(call cc-disable-warning, sign-compare) +warning-1 += $(call cc-disable-warning, format-zero-length) +warning-1 += $(call cc-disable-warning, uninitialized) +warning-1 += $(call cc-option, -fcatch-undefined-behavior) + warning-2 := -Waggregate-return warning-2 += -Wcast-align warning-2 += -Wdisabled-optimization
@@ -225,7 +235,7 @@ $(multi-objs-y:.o=.s) : modname = $(modname-multi) $(multi-objs-y:.o=.lst) : modname = $(modname-multi) quiet_cmd_cc_s_c = CC $(quiet_modtag) $@ -cmd_cc_s_c = $(CC) $(c_flags) -fverbose-asm -S -o $@ $< +cmd_cc_s_c = $(CC) $(c_flags) $(DISABLE_LTO) -fverbose-asm -S -o $@ $< $(obj)/%.s: $(src)/%.c FORCE $(call if_changed_dep,cc_s_c)
scripts/Makefile.lib +12 -4
@@ -273,6 +273,18 @@ $(obj)/%.dtb: $(src)/%.dts FORCE dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp) +# Helper targets for Installing DTBs into the boot directory +quiet_cmd_dtb_install = INSTALL $< + cmd_dtb_install = cp $< $(2) + +_dtbinst_pre_: + $(Q)if [ -d $(INSTALL_DTBS_PATH).old ]; then rm -rf $(INSTALL_DTBS_PATH).old; fi + $(Q)if [ -d $(INSTALL_DTBS_PATH) ]; then mv $(INSTALL_DTBS_PATH) $(INSTALL_DTBS_PATH).old; fi + $(Q)mkdir -p $(INSTALL_DTBS_PATH) + +%.dtb_dtbinst_: $(obj)/%.dtb _dtbinst_pre_ + $(call cmd,dtb_install,$(INSTALL_DTBS_PATH)) + # Bzip2 # ---------------------------------------------------------------------------
@@ -367,7 +379,3 @@ quiet_cmd_xzmisc = XZMISC $@ cmd_xzmisc = (cat $(filter-out FORCE,$^) | \ xz --check=crc32 --lzma2=dict=1MiB) > $@ || \ (rm -f $@ ; false) - -# misc stuff -# --------------------------------------------------------------------------- -quote:="
scripts/ld-version.sh new file +8 -0
@@ -0,0 +1,8 @@ +#!/usr/bin/awk -f +# extract linker version number from stdin and turn into single number + { + gsub(".*)", ""); + split($1,a, "."); + print a[1]*10000000 + a[2]*100000 + a[3]*10000 + a[4]*100 + a[5]; + exit + }
scripts/objdiff new file +141 -0
141 lines not on this page · raw message
Signature · 1 line
1.8.3.2
PATCH 1/1 kbuild: sync with Linux Kernel v3.15-rc1
Quoted 28 lines · Masahiro Yamada
This commit imports Kbuild-related updates
from v3.14 to v3.15-rc1.- commit
3d3d6b8474204b6819688c9800774d52d370a538
kbuild: LLVMLinux: Adapt warnings for compilation with clang
- commit61163efae02040f66a95c8ed17f4407951ba58fa
kbuild: LLVMLinux: AddKbuildsupport for building kernel with Clang
- commit79192ca8ebd9a25c583aa46024a250fef1e7766f
scripts: objdiff: detect object code changes between two commits
- commit1c9e70a55b088d97a59241744fe459409d0c3582
kbuild: create a build directory automatically for out-of-tree build
- commita03fcb50e816a69acffb13b5e56db75063aeba8a
kbuild: remove redundant '.*.cmd' pattern from make distclean
- commit13338935f1574a2dcd1c891461b0dcc42f8cff42
kbuild: move "quote" to Kbuild.include to be consistent
- commitbfdfaeae500a3b194b73b01e92a8034791a58b7f
kbuild: specifybuild_docprocas a phony target
- commitf4d4ffc03efc864645b990e1d579bbe1b8e358a4
kbuild:dtbs_install: new make target
- commit1e64ff42ea3d8d2fc8aa71f9717b3c1cb6c2f893
Kbuild, lto: Disable LTO forasm-offsets.c
- commitccbef1674a1579842c7dbdf554efca85d2cd245a
Kbuild, lto: add ld-version and ld-ifversion macros
- commitae63b2d7bdd9bd66b88843be0daf8e37d8f0b574scripts/tags.sh: Ignore *.mod.c
- commite36aaea28972c57a32a3ba5365e61633739719b9
kbuild: Fix silent builds with make-4
Quoted 1 line
Signed-off-by Masahiro Yamada <[email protected]>
OK, did this get generated backwards or something? It only applies, cleanly with patch -R. Please re-submit a v2, thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140418/0d28fbdc/attachment.pgp>
PATCH 1/1 kbuild: sync with Linux Kernel v3.15-rc1
Quoted 30 lines · Tom Rini
Quoted 28 lines · Masahiro Yamada
This commit imports Kbuild-related updates
from v3.14 to v3.15-rc1.- commit
3d3d6b8474204b6819688c9800774d52d370a538
kbuild: LLVMLinux: Adapt warnings for compilation with clang
- commit61163efae02040f66a95c8ed17f4407951ba58fa
kbuild: LLVMLinux: AddKbuildsupport for building kernel with Clang
- commit79192ca8ebd9a25c583aa46024a250fef1e7766f
scripts: objdiff: detect object code changes between two commits
- commit1c9e70a55b088d97a59241744fe459409d0c3582
kbuild: create a build directory automatically for out-of-tree build
- commita03fcb50e816a69acffb13b5e56db75063aeba8a
kbuild: remove redundant '.*.cmd' pattern from make distclean
- commit13338935f1574a2dcd1c891461b0dcc42f8cff42
kbuild: move "quote" to Kbuild.include to be consistent
- commitbfdfaeae500a3b194b73b01e92a8034791a58b7f
kbuild: specifybuild_docprocas a phony target
- commitf4d4ffc03efc864645b990e1d579bbe1b8e358a4
kbuild:dtbs_install: new make target
- commit1e64ff42ea3d8d2fc8aa71f9717b3c1cb6c2f893
Kbuild, lto: Disable LTO forasm-offsets.c
- commitccbef1674a1579842c7dbdf554efca85d2cd245a
Kbuild, lto: add ld-version and ld-ifversion macros
- commitae63b2d7bdd9bd66b88843be0daf8e37d8f0b574scripts/tags.sh: Ignore *.mod.c
- commite36aaea28972c57a32a3ba5365e61633739719b9
kbuild: Fix silent builds with make-4
Quoted 4 lines
Quoted 1 line
Signed-off-by Masahiro Yamada <[email protected]>OK, did this get generated backwards or something? It only applies, cleanly with patch -R. Please re-submit a v2, thanks!
Local error, please disregard.
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140418/7f9c3d38/attachment.pgp>
Quoted 28 lines · Masahiro Yamada
This commit imports Kbuild-related updates
from v3.14 to v3.15-rc1.- commit
3d3d6b8474204b6819688c9800774d52d370a538
kbuild: LLVMLinux: Adapt warnings for compilation with clang
- commit61163efae02040f66a95c8ed17f4407951ba58fa
kbuild: LLVMLinux: AddKbuildsupport for building kernel with Clang
- commit79192ca8ebd9a25c583aa46024a250fef1e7766f
scripts: objdiff: detect object code changes between two commits
- commit1c9e70a55b088d97a59241744fe459409d0c3582
kbuild: create a build directory automatically for out-of-tree build
- commita03fcb50e816a69acffb13b5e56db75063aeba8a
kbuild: remove redundant '.*.cmd' pattern from make distclean
- commit13338935f1574a2dcd1c891461b0dcc42f8cff42
kbuild: move "quote" to Kbuild.include to be consistent
- commitbfdfaeae500a3b194b73b01e92a8034791a58b7f
kbuild: specifybuild_docprocas a phony target
- commitf4d4ffc03efc864645b990e1d579bbe1b8e358a4
kbuild:dtbs_install: new make target
- commit1e64ff42ea3d8d2fc8aa71f9717b3c1cb6c2f893
Kbuild, lto: Disable LTO forasm-offsets.c
- commitccbef1674a1579842c7dbdf554efca85d2cd245a
Kbuild, lto: add ld-version and ld-ifversion macros
- commitae63b2d7bdd9bd66b88843be0daf8e37d8f0b574scripts/tags.sh: Ignore *.mod.c
- commite36aaea28972c57a32a3ba5365e61633739719b9
kbuild: Fix silent builds with make-4
Quoted 1 line
Signed-off-by Masahiro Yamada <[email protected]>
Applied to u-boot/master, thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140418/8d95c14f/attachment.pgp>