History

Merge tag 'kbuild-v5.1' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild

Pull Kbuild updates from Masahiro Yamada: - do not generate unneeded top-level built-in.a - let git ignore O= directory entirely - optimize scripts/kallsyms slightly - exclude DWARF info from *.s regardless of config options - fix GCC toolchain search path for Clang to prepare ld.lld support - do not generate modules.order when CONFIG_MODULES is disabled - simplify single target rules and remove VPATH for external module build - allow to add optional flags to dpkg-buildpackage when building deb-pkg - move some compiler option tests from Makefile to Kconfig - various Makefile cleanups * tag 'kbuild-v5.1' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (40 commits) kbuild: remove scripts/basic/% build target kbuild: use -Werror=implicit-... instead of -Werror-implicit-... kbuild: clean up scripts/gcc-version.sh kbuild: remove cc-version macro kbuild: update comment block of scripts/clang-version.sh kbuild: remove commented-out INITRD_COMPRESS kbuild: move -gsplit-dwarf, -gdwarf-4 option tests to Kconfig kbuild: [bin]deb-pkg: add DPKG_FLAGS variable kbuild: move ".config not found!" message from Kconfig to Makefile kbuild: invoke syncconfig if include/config/auto.conf.cmd is missing kbuild: simplify single target rules kbuild: remove empty rules for makefiles kbuild: make -r/-R effective in top Makefile for old Make versions kbuild: move tools_silent to a more relevant place kbuild: compute false-positive -Wmaybe-uninitialized cases in Kconfig kbuild: refactor cc-cross-prefix implementation kbuild: hardcode genksyms path and remove GENKSYMS variable scripts/gdb: refactor rules for symlink creation kbuild: create symlink to vmlinux-gdb.py in scripts_gdb target scripts/gdb: do not descend into scripts/gdb from scripts ...

Linus Torvalds committed 7 years ago

Commit ffd602e2 parents 5af7f11 9250d2033 files · +263 −363Browse files

Showing the changes to scripts (18 of 33 files). Show all

Unified · Split

18 files
  1. scripts/Kbuild.include +9 −12
  2. scripts/Kconfig.include +1 −1
  3. scripts/Makefile +1 −2
  4. scripts/Makefile.build +15 −14
  5. scripts/Makefile.host +4 −2
  6. scripts/Makefile.lib +19 −23
  7. scripts/Makefile.modpost +1 −1
  8. scripts/clang-version.sh +3 −7
  9. scripts/gcc-version.sh +7 −20
  10. scripts/gdb/linux/Makefile +13 −12
  11. scripts/kallsyms.c +5 −8
  12. scripts/kconfig/conf.c +0 −13
  13. scripts/link-vmlinux.sh +10 −36
  14. scripts/mkcompile_h +2 −2
  15. scripts/package/Makefile +4 −4
  16. scripts/package/builddeb +5 −5
  17. scripts/package/buildtar +1 −1
  18. scripts/package/mkdebian +4 −2
scripts/Kbuild.include+9−12
@@ -23,6 +23,10 @@ depfile = $(subst $(comma),_,$(dot-target).d) · 22 unmodified lines
2323 # filename of target with directory and extension stripped
2424 basetarget = $(basename $(notdir $@))
2525
26+###
27+# real prerequisites without phony targets
28+real-prereqs = $(filter-out $(PHONY), $^)
29+
2630 ###
2731 # Escape single quote for use in echo statements
2832 escsq = $(subst $(squote),'\$(squote)',$1)
@@ -67,14 +71,10 @@ endef · 38 unmodified lines
6771
6872 # cc-cross-prefix
6973 # Usage: CROSS_COMPILE := $(call cc-cross-prefix, m68k-linux-gnu- m68k-linux-)
70−# Return first prefix where a prefix$(CC) is found in PATH.
71−# If no $(CC) found in PATH with listed prefixes return nothing
72−cc-cross-prefix = \
73− $(word 1, $(foreach c,$(1), \
74− $(shell set -e; \
75− if (which $(strip $(c))$(CC)) > /dev/null 2>&1 ; then \
76− echo $(c); \
77− fi)))
74+# Return first <prefix> where a <prefix>gcc is found in PATH.
75+# If no gcc found in PATH with listed prefixes return nothing
76+cc-cross-prefix = $(firstword $(foreach c, $(filter-out -%, $(1)), \
77+ $(if $(shell which $(c)gcc), $(c))))
7878
7979 # output directory for tests below
8080 TMPOUT := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/)
@@ -134,12 +134,9 @@ cc-option-yn = $(call try-run,\ · 53 unmodified lines
134134 cc-disable-warning = $(call try-run,\
135135 $(CC) -Werror $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) -W$(strip $(1)) -c -x c /dev/null -o "$$TMP",-Wno-$(strip $(1)))
136136
137−# cc-version
138−cc-version = $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh $(CC))
139−
140137 # cc-ifversion
141138 # Usage: EXTRA_CFLAGS += $(call cc-ifversion, -lt, 0402, -O1)
142−cc-ifversion = $(shell [ $(cc-version) $(1) $(2) ] && echo $(3) || echo $(4))
139+cc-ifversion = $(shell [ $(CONFIG_GCC_VERSION)0 $(1) $(2)000 ] && echo $(3) || echo $(4))
143140
144141 # cc-ldoption
145142 # Usage: ldflags += $(call cc-ldoption, -Wl$(comma)--hash-style=both)
scripts/Kconfig.include+1−1
@@ -27,4 +27,4 @@ cc-option = $(success,$(CC) -Werror $(1) -E -x c /dev/null -o /dev/null) · 26 unmodified lines
2727 ld-option = $(success,$(LD) -v $(1))
2828
2929 # gcc version including patch level
30−gcc-version := $(shell,$(srctree)/scripts/gcc-version.sh -p $(CC) | sed 's/^0*//')
30+gcc-version := $(shell,$(srctree)/scripts/gcc-version.sh $(CC))
scripts/Makefile+1−2
@@ -39,7 +39,6 @@ build_unifdef: $(obj)/unifdef · 38 unmodified lines
3939 subdir-$(CONFIG_GCC_PLUGINS) += gcc-plugins
4040 subdir-$(CONFIG_MODVERSIONS) += genksyms
4141 subdir-$(CONFIG_SECURITY_SELINUX) += selinux
42−subdir-$(CONFIG_GDB_SCRIPTS) += gdb
4342
4443 # Let clean descend into subdirs
45−subdir- += basic dtc kconfig mod package
44+subdir- += basic dtc gdb kconfig mod package
scripts/Makefile.build+15−14
@@ -63,7 +63,9 @@ ifneq ($(strip $(real-obj-y) $(need-builtin)),) · 62 unmodified lines
6363 builtin-target := $(obj)/built-in.a
6464 endif
6565
66+ifdef CONFIG_MODULES
6667 modorder-target := $(obj)/modules.order
68+endif
6769
6870 # We keep a list of all modules in $(MODVERDIR)
6971
@@ -104,7 +106,7 @@ modkern_cflags = \ · 34 unmodified lines
104106 quiet_modtag = $(if $(part-of-module),[M], )
105107
106108 quiet_cmd_cc_s_c = CC $(quiet_modtag) $@
107−cmd_cc_s_c = $(CC) $(c_flags) $(DISABLE_LTO) -fverbose-asm -S -o $@ $<
109+ cmd_cc_s_c = $(CC) $(filter-out $(DEBUG_CFLAGS), $(c_flags)) $(DISABLE_LTO) -fverbose-asm -S -o $@ $<
108110
109111 $(obj)/%.s: $(src)/%.c FORCE
110112 $(call if_changed_dep,cc_s_c)
@@ -118,7 +120,7 @@ $(obj)/%.i: $(src)/%.c FORCE · 7 unmodified lines
118120 # These mirror gensymtypes_S and co below, keep them in synch.
119121 cmd_gensymtypes_c = \
120122 $(CPP) -D__GENKSYMS__ $(c_flags) $< | \
121− $(GENKSYMS) $(if $(1), -T $(2)) \
123+ scripts/genksyms/genksyms $(if $(1), -T $(2)) \
122124 $(patsubst y,-R,$(CONFIG_MODULE_REL_CRCS)) \
123125 $(if $(KBUILD_PRESERVE),-p) \
124126 -r $(firstword $(wildcard $(2:.symtypes=.symref) /dev/null))
@@ -312,13 +314,13 @@ $(real-obj-m:.o=.s): modkern_aflags := $(KBUILD_AFLAGS_MODULE) $(AFLAGS_MODULE) · 187 unmodified lines
312314 #
313315 # These mirror gensymtypes_c and co above, keep them in synch.
314316 cmd_gensymtypes_S = \
315− (echo "\#include <linux/kernel.h>" ; \
317+ { echo "\#include <linux/kernel.h>" ; \
316318 echo "\#include <asm/asm-prototypes.h>" ; \
317319 $(CPP) $(a_flags) $< | \
318320 grep "\<___EXPORT_SYMBOL\>" | \
319− sed 's/.*___EXPORT_SYMBOL[[:space:]]*\([a-zA-Z0-9_]*\)[[:space:]]*,.*/EXPORT_SYMBOL(\1);/' ) | \
321+ sed 's/.*___EXPORT_SYMBOL[[:space:]]*\([a-zA-Z0-9_]*\)[[:space:]]*,.*/EXPORT_SYMBOL(\1);/' ; } | \
320322 $(CPP) -D__GENKSYMS__ $(c_flags) -xc - | \
321− $(GENKSYMS) $(if $(1), -T $(2)) \
323+ scripts/genksyms/genksyms $(if $(1), -T $(2)) \
322324 $(patsubst y,-R,$(CONFIG_MODULE_REL_CRCS)) \
323325 $(if $(KBUILD_PRESERVE),-p) \
324326 -r $(firstword $(wildcard $(2:.symtypes=.symref) /dev/null))
@@ -394,17 +396,12 @@ $(obj)/%.asn1.c $(obj)/%.asn1.h: $(src)/%.asn1 $(objtree)/scripts/asn1_compiler · 69 unmodified lines
394396 $(sort $(subdir-obj-y)): $(subdir-ym) ;
395397
396398 #
397−# Rule to compile a set of .o files into one .o file
399+# Rule to compile a set of .o files into one .a file (without symbol table)
398400 #
399401 ifdef builtin-target
400402
401−# built-in.a archives are made with no symbol table or index which
402−# makes them small and fast, but unable to be used by the linker.
403−# scripts/link-vmlinux.sh builds an aggregate built-in.a with a symbol
404−# table and index.
405403 quiet_cmd_ar_builtin = AR $@
406− cmd_ar_builtin = rm -f $@; \
407− $(AR) rcSTP$(KBUILD_ARFLAGS) $@ $(filter $(real-obj-y), $^)
404+ cmd_ar_builtin = rm -f $@; $(AR) rcSTP$(KBUILD_ARFLAGS) $@ $(real-prereqs)
408405
409406 $(builtin-target): $(real-obj-y) FORCE
410407 $(call if_changed,ar_builtin)
@@ -426,13 +423,13 @@ $(modorder-target): $(subdir-ym) FORCE · 15 unmodified lines
426423 $(Q)(cat /dev/null; $(modorder-cmds)) > $@
427424
428425 #
429−# Rule to compile a set of .o files into one .a file
426+# Rule to compile a set of .o files into one .a file (with symbol table)
430427 #
431428 ifdef lib-target
432429 quiet_cmd_link_l_target = AR $@
433430
434431 # lib target archives do get a symbol table and index
435−cmd_link_l_target = rm -f $@; $(AR) rcsTP$(KBUILD_ARFLAGS) $@ $(lib-y)
432+cmd_link_l_target = rm -f $@; $(AR) rcsTP$(KBUILD_ARFLAGS) $@ $(real-prereqs)
436433
437434 $(lib-target): $(lib-y) FORCE
438435 $(call if_changed,link_l_target)
@@ -457,6 +454,10 @@ targets += $(obj)/lib-ksyms.o · 18 unmodified lines
457454
458455 endif
459456
457+# NOTE:
458+# Do not replace $(filter %.o,^) with $(real-prereqs). When a single object
459+# module is turned into a multi object module, $^ will contain header file
460+# dependencies recorded in the .*.cmd file.
460461 quiet_cmd_link_multi-m = LD [M] $@
461462 cmd_link_multi-m = $(LD) $(ld_flags) -r -o $@ $(filter %.o,$^) $(cmd_secanalysis)
462463
scripts/Makefile.host+4−2
@@ -67,13 +67,15 @@ _hostc_flags = $(KBUILD_HOSTCFLAGS) $(HOST_EXTRACFLAGS) \ · 66 unmodified lines
6767 _hostcxx_flags = $(KBUILD_HOSTCXXFLAGS) $(HOST_EXTRACXXFLAGS) \
6868 $(HOSTCXXFLAGS_$(basetarget).o)
6969
70−ifeq ($(KBUILD_SRC),)
7170 __hostc_flags = $(_hostc_flags)
7271 __hostcxx_flags = $(_hostcxx_flags)
73−else
72+
73+ifeq ($(KBUILD_EXTMOD),)
74+ifneq ($(KBUILD_SRC),)
7475 __hostc_flags = -I$(obj) $(call flags,_hostc_flags)
7576 __hostcxx_flags = -I$(obj) $(call flags,_hostcxx_flags)
7677 endif
78+endif
7779
7880 hostc_flags = -Wp,-MD,$(depfile) $(__hostc_flags)
7981 hostcxx_flags = -Wp,-MD,$(depfile) $(__hostcxx_flags)
scripts/Makefile.lib+19−23
@@ -137,14 +137,14 @@ _c_flags += $(if $(patsubst n%,, \ · 136 unmodified lines
137137 $(CFLAGS_KCOV))
138138 endif
139139
140−# If building the kernel in a separate objtree expand all occurrences
141−# of -Idir to -I$(srctree)/dir except for absolute paths (starting with '/').
142−
143−ifeq ($(KBUILD_SRC),)
144140 __c_flags = $(_c_flags)
145141 __a_flags = $(_a_flags)
146142 __cpp_flags = $(_cpp_flags)
147−else
143+
144+# If building the kernel in a separate objtree expand all occurrences
145+# of -Idir to -I$(srctree)/dir except for absolute paths (starting with '/').
146+ifeq ($(KBUILD_EXTMOD),)
147+ifneq ($(KBUILD_SRC),)
148148
149149 # -I$(obj) locates generated .h files
150150 # $(call addtree,-I$(obj)) locates .h files in srctree, from generated .c files
@@ -155,6 +155,7 @@ __c_flags = $(if $(obj),$(call addtree,-I$(src)) -I$(obj)) \ · 4 unmodified lines
155155 __a_flags = $(call flags,_a_flags)
156156 __cpp_flags = $(call flags,_cpp_flags)
157157 endif
158+endif
158159
159160 c_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(LINUXINCLUDE) \
160161 -include $(srctree)/include/linux/compiler_types.h \
@@ -230,7 +231,7 @@ $(obj)/%: $(src)/%_shipped · 69 unmodified lines
230231 # ---------------------------------------------------------------------------
231232
232233 quiet_cmd_ld = LD $@
233−cmd_ld = $(LD) $(ld_flags) $(filter-out FORCE,$^) -o $@
234+ cmd_ld = $(LD) $(ld_flags) $(real-prereqs) -o $@
234235
235236 # Objcopy
236237 # ---------------------------------------------------------------------------
@@ -242,7 +243,7 @@ cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@ · 5 unmodified lines
242243 # ---------------------------------------------------------------------------
243244
244245 quiet_cmd_gzip = GZIP $@
245− cmd_gzip = cat $(filter-out FORCE,$^) | gzip -n -f -9 > $@
246+ cmd_gzip = cat $(real-prereqs) | gzip -n -f -9 > $@
246247
247248 # DTC
248249 # ---------------------------------------------------------------------------
@@ -270,7 +271,7 @@ DTC_FLAGS += $(DTC_FLAGS_$(basetarget)) · 21 unmodified lines
270271 # Generate an assembly file to wrap the output of the device tree compiler
271272 quiet_cmd_dt_S_dtb= DTB $@
272273 cmd_dt_S_dtb= \
273−( \
274+{ \
274275 echo '\#include <asm-generic/vmlinux.lds.h>'; \
275276 echo '.section .dtb.init.rodata,"a"'; \
276277 echo '.balign STRUCT_ALIGNMENT'; \
@@ -280,7 +281,7 @@ cmd_dt_S_dtb= \ · 3 unmodified lines
280281 echo '__dtb_$(subst -,_,$(*F))_end:'; \
281282 echo '.global __dtb_$(subst -,_,$(*F))_end'; \
282283 echo '.balign STRUCT_ALIGNMENT'; \
283−) > $@
284+} > $@
284285
285286 $(obj)/%.dtb.S: $(obj)/%.dtb FORCE
286287 $(call if_changed,dt_S_dtb)
@@ -320,7 +321,7 @@ dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp) · 33 unmodified lines
320321 # append the size as a 32-bit littleendian number as gzip does.
321322 size_append = printf $(shell \
322323 dec_size=0; \
323−for F in $1; do \
324+for F in $(real-prereqs); do \
324325 fsize=$$($(CONFIG_SHELL) $(srctree)/scripts/file-size.sh $$F); \
325326 dec_size=$$(expr $$dec_size + $$fsize); \
326327 done; \
@@ -334,23 +335,20 @@ printf "%08x\n" $$dec_size | \ · 7 unmodified lines
334335 )
335336
336337 quiet_cmd_bzip2 = BZIP2 $@
337−cmd_bzip2 = (cat $(filter-out FORCE,$^) | \
338− bzip2 -9 && $(call size_append, $(filter-out FORCE,$^))) > $@
338+ cmd_bzip2 = { cat $(real-prereqs) | bzip2 -9 && $(size_append); } > $@
339339
340340 # Lzma
341341 # ---------------------------------------------------------------------------
342342
343343 quiet_cmd_lzma = LZMA $@
344−cmd_lzma = (cat $(filter-out FORCE,$^) | \
345− lzma -9 && $(call size_append, $(filter-out FORCE,$^))) > $@
344+ cmd_lzma = { cat $(real-prereqs) | lzma -9 && $(size_append); } > $@
346345
347346 quiet_cmd_lzo = LZO $@
348−cmd_lzo = (cat $(filter-out FORCE,$^) | \
349− lzop -9 && $(call size_append, $(filter-out FORCE,$^))) > $@
347+ cmd_lzo = { cat $(real-prereqs) | lzop -9 && $(size_append); } > $@
350348
351349 quiet_cmd_lz4 = LZ4 $@
352−cmd_lz4 = (cat $(filter-out FORCE,$^) | \
353− lz4c -l -c1 stdin stdout && $(call size_append, $(filter-out FORCE,$^))) > $@
350+ cmd_lz4 = { cat $(real-prereqs) | lz4c -l -c1 stdin stdout && \
351+ $(size_append); } > $@
354352
355353 # U-Boot mkimage
356354 # ---------------------------------------------------------------------------
@@ -392,13 +390,11 @@ quiet_cmd_uimage = UIMAGE $@ · 35 unmodified lines
392390 # big dictionary would increase the memory usage too much in the multi-call
393391 # decompression mode. A BCJ filter isn't used either.
394392 quiet_cmd_xzkern = XZKERN $@
395−cmd_xzkern = (cat $(filter-out FORCE,$^) | \
396− sh $(srctree)/scripts/xz_wrap.sh && \
397− $(call size_append, $(filter-out FORCE,$^))) > $@
393+ cmd_xzkern = { cat $(real-prereqs) | sh $(srctree)/scripts/xz_wrap.sh && \
394+ $(size_append); } > $@
398395
399396 quiet_cmd_xzmisc = XZMISC $@
400−cmd_xzmisc = (cat $(filter-out FORCE,$^) | \
401− xz --check=crc32 --lzma2=dict=1MiB) > $@
397+ cmd_xzmisc = cat $(real-prereqs) | xz --check=crc32 --lzma2=dict=1MiB > $@
402398
403399 # ASM offsets
404400 # ---------------------------------------------------------------------------
scripts/Makefile.modpost+1−1
@@ -122,7 +122,7 @@ quiet_cmd_ld_ko_o = LD [M] $@ · 121 unmodified lines
122122 cmd_ld_ko_o = \
123123 $(LD) -r $(KBUILD_LDFLAGS) \
124124 $(KBUILD_LDFLAGS_MODULE) $(LDFLAGS_MODULE) \
125− -o $@ $(filter-out FORCE,$^) ; \
125+ -o $@ $(real-prereqs) ; \
126126 $(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true)
127127
128128 $(modules): %.ko :%.o %.mod.o FORCE
scripts/clang-version.sh+3−7
@@ -1,14 +1,10 @@
11 #!/bin/sh
22 # SPDX-License-Identifier: GPL-2.0
33 #
4−# clang-version [-p] clang-command
5−#
6−# Prints the compiler version of `clang-command' in a canonical 4-digit form
7−# such as `0500' for clang-5.0 etc.
8−#
9−# With the -p option, prints the patchlevel as well, for example `050001' for
10−# clang-5.0.1 etc.
4+# clang-version clang-command
115 #
6+# Print the compiler version of `clang-command' in a 5 or 6-digit form
7+# such as `50001' for clang-5.0.1 etc.
128
139 compiler="$*"
1410
scripts/gcc-version.sh+7−20
@@ -1,33 +1,20 @@
11 #!/bin/sh
22 # SPDX-License-Identifier: GPL-2.0
33 #
4−# gcc-version [-p] gcc-command
5−#
6−# Prints the gcc version of `gcc-command' in a canonical 4-digit form
7−# such as `0295' for gcc-2.95, `0303' for gcc-3.3, etc.
8−#
9−# With the -p option, prints the patchlevel as well, for example `029503' for
10−# gcc-2.95.3, `030301' for gcc-3.3.1, etc.
4+# gcc-version gcc-command
115 #
12−
13−if [ "$1" = "-p" ] ; then
14− with_patchlevel=1;
15− shift;
16−fi
6+# Print the gcc version of `gcc-command' in a 5 or 6-digit form
7+# such as `29503' for gcc-2.95.3, `30301' for gcc-3.3.1, etc.
178
189 compiler="$*"
1910
2011 if [ ${#compiler} -eq 0 ]; then
21− echo "Error: No compiler specified."
22− printf "Usage:\n\t$0 <gcc-command>\n"
12+ echo "Error: No compiler specified." >&2
13+ printf "Usage:\n\t$0 <gcc-command>\n" >&2
2314 exit 1
2415 fi
2516
2617 MAJOR=$(echo __GNUC__ | $compiler -E -x c - | tail -n 1)
2718 MINOR=$(echo __GNUC_MINOR__ | $compiler -E -x c - | tail -n 1)
28−if [ "x$with_patchlevel" != "x" ] ; then
29− PATCHLEVEL=$(echo __GNUC_PATCHLEVEL__ | $compiler -E -x c - | tail -n 1)
30− printf "%02d%02d%02d\\n" $MAJOR $MINOR $PATCHLEVEL
31−else
32− printf "%02d%02d\\n" $MAJOR $MINOR
33−fi
19+PATCHLEVEL=$(echo __GNUC_PATCHLEVEL__ | $compiler -E -x c - | tail -n 1)
20+printf "%d%02d%02d\\n" $MAJOR $MINOR $PATCHLEVEL
scripts/gdb/linux/Makefile+13−12
@@ -1,24 +1,25 @@
11 # SPDX-License-Identifier: GPL-2.0
2−always := gdb-scripts
32
4−SRCTREE := $(abspath $(srctree))
5−
6−$(obj)/gdb-scripts:
73 ifneq ($(KBUILD_SRC),)
8− $(Q)ln -fsn $(SRCTREE)/$(obj)/*.py $(objtree)/$(obj)
4+
5+symlinks := $(patsubst $(srctree)/$(src)/%,%,$(wildcard $(srctree)/$(src)/*.py))
6+
7+quiet_cmd_symlink = SYMLINK $@
8+ cmd_symlink = ln -fsn $(patsubst $(obj)/%,$(abspath $(srctree))/$(src)/%,$@) $@
9+
10+extra-y += $(symlinks)
11+$(addprefix $(obj)/, $(symlinks)): FORCE
12+ $(call if_changed,symlink)
13+
914 endif
10− @:
1115
1216 quiet_cmd_gen_constants_py = GEN $@
1317 cmd_gen_constants_py = \
1418 $(CPP) -E -x c -P $(c_flags) $< > $@ ;\
1519 sed -i '1,/<!-- end-c-headers -->/d;' $@
1620
17−targets += constants.py
18−$(obj)/constants.py: $(SRCTREE)/$(obj)/constants.py.in FORCE
21+extra-y += constants.py
22+$(obj)/constants.py: $(src)/constants.py.in FORCE
1923 $(call if_changed_dep,gen_constants_py)
2024
21−build_constants_py: $(obj)/constants.py
22− @:
23−
24−clean-files := *.pyc *.pyo $(if $(KBUILD_SRC),*.py) $(obj)/constants.py
25+clean-files := *.pyc *.pyo
scripts/kallsyms.c+5−8
@@ -62,11 +62,11 @@ static int all_symbols = 0; · 61 unmodified lines
6262 static int absolute_percpu = 0;
6363 static int base_relative = 0;
6464
65−int token_profit[0x10000];
65+static int token_profit[0x10000];
6666
6767 /* the table that holds the result of the compression */
68−unsigned char best_table[256][2];
69−unsigned char best_table_len[256];
68+static unsigned char best_table[256][2];
69+static unsigned char best_table_len[256];
7070
7171
7272 static void usage(void)
@@ -80,7 +80,7 @@ static void usage(void) · 7 unmodified lines
8080 * This ignores the intensely annoying "mapping symbols" found
8181 * in ARM ELF files: $a, $t and $d.
8282 */
83−static inline int is_arm_mapping_symbol(const char *str)
83+static int is_arm_mapping_symbol(const char *str)
8484 {
8585 return str[0] == '$' && strchr("axtd", str[1])
8686 && (str[2] == '\0' || str[2] == '.');
@@ -331,7 +331,7 @@ static void write_src(void) · 244 unmodified lines
331331 unsigned int *markers;
332332 char buf[KSYM_NAME_LEN];
333333
334− printf("#include <asm/types.h>\n");
334+ printf("#include <asm/bitsperlong.h>\n");
335335 printf("#if BITS_PER_LONG == 64\n");
336336 printf("#define PTR .quad\n");
337337 printf("#define ALGN .balign 8\n");
@@ -596,9 +596,6 @@ static void insert_real_symbols_in_table(void) · 258 unmodified lines
596596 {
597597 unsigned int i, j, c;
598598
599− memset(best_table, 0, sizeof(best_table));
600− memset(best_table_len, 0, sizeof(best_table_len));
601−
602599 for (i = 0; i < table_cnt; i++) {
603600 for (j = 0; j < table[i].len; j++) {
604601 c = table[i].sym[j];
scripts/kconfig/conf.c+0−13
@@ -488,7 +488,6 @@ int main(int ac, char **av) · 487 unmodified lines
488488 const char *progname = av[0];
489489 int opt;
490490 const char *name, *defconfig_file = NULL /* gcc uninit */;
491− struct stat tmpstat;
492491 int no_conf_write = 0;
493492
494493 tty_stdio = isatty(0) && isatty(1);
@@ -560,18 +559,6 @@ int main(int ac, char **av) · 65 unmodified lines
560559 name = av[optind];
561560 conf_parse(name);
562561 //zconfdump(stdout);
563− if (sync_kconfig) {
564− name = conf_get_configname();
565− if (stat(name, &tmpstat)) {
566− fprintf(stderr, "***\n"
567− "*** Configuration file \"%s\" not found!\n"
568− "***\n"
569− "*** Please run some configurator (e.g. \"make oldconfig\" or\n"
570− "*** \"make menuconfig\" or \"make xconfig\").\n"
571− "***\n", name);
572− exit(1);
573− }
574− }
575562
576563 switch (input_mode) {
577564 case defconfig:
scripts/link-vmlinux.sh+10−36
@@ -3,22 +3,17 @@ · 2 unmodified lines
33 #
44 # link vmlinux
55 #
6−# vmlinux is linked from the objects selected by $(KBUILD_VMLINUX_INIT) and
7−# $(KBUILD_VMLINUX_MAIN) and $(KBUILD_VMLINUX_LIBS). Most are built-in.a files
8−# from top-level directories in the kernel tree, others are specified in
9−# arch/$(ARCH)/Makefile. Ordering when linking is important, and
10−# $(KBUILD_VMLINUX_INIT) must be first. $(KBUILD_VMLINUX_LIBS) are archives
11−# which are linked conditionally (not within --whole-archive), and do not
12−# require symbol indexes added.
6+# vmlinux is linked from the objects selected by $(KBUILD_VMLINUX_OBJS) and
7+# $(KBUILD_VMLINUX_LIBS). Most are built-in.a files from top-level directories
8+# in the kernel tree, others are specified in arch/$(ARCH)/Makefile.
9+# $(KBUILD_VMLINUX_LIBS) are archives which are linked conditionally
10+# (not within --whole-archive), and do not require symbol indexes added.
1311 #
1412 # vmlinux
1513 # ^
1614 # |
17−# +-< $(KBUILD_VMLINUX_INIT)
18−# | +--< init/version.o + more
19−# |
20−# +--< $(KBUILD_VMLINUX_MAIN)
21−# | +--< drivers/built-in.a mm/built-in.a + more
15+# +--< $(KBUILD_VMLINUX_OBJS)
16+# | +--< init/built-in.a drivers/built-in.a mm/built-in.a + more
2217 # |
2318 # +--< $(KBUILD_VMLINUX_LIBS)
2419 # | +--< lib/lib.a + more
@@ -44,24 +39,6 @@ info() · 19 unmodified lines
4439 fi
4540 }
4641
47−# Thin archive build here makes a final archive with symbol table and indexes
48−# from vmlinux objects INIT and MAIN, which can be used as input to linker.
49−# KBUILD_VMLINUX_LIBS archives should already have symbol table and indexes
50−# added.
51−#
52−# Traditional incremental style of link does not require this step
53−#
54−# built-in.a output file
55−#
56−archive_builtin()
57−{
58− info AR built-in.a
59− rm -f built-in.a;
60− ${AR} rcsTP${KBUILD_ARFLAGS} built-in.a \
61− ${KBUILD_VMLINUX_INIT} \
62− ${KBUILD_VMLINUX_MAIN}
63−}
64−
6542 # Link of vmlinux.o used for section mismatch analysis
6643 # ${1} output file
6744 modpost_link()
@@ -69,7 +46,7 @@ modpost_link() · 1 unmodified line
6946 local objects
7047
7148 objects="--whole-archive \
72− built-in.a \
49+ ${KBUILD_VMLINUX_OBJS} \
7350 --no-whole-archive \
7451 --start-group \
7552 ${KBUILD_VMLINUX_LIBS} \
@@ -88,7 +65,7 @@ vmlinux_link() · 12 unmodified lines
8865
8966 if [ "${SRCARCH}" != "um" ]; then
9067 objects="--whole-archive \
91− built-in.a \
68+ ${KBUILD_VMLINUX_OBJS} \
9269 --no-whole-archive \
9370 --start-group \
9471 ${KBUILD_VMLINUX_LIBS} \
@@ -99,7 +76,7 @@ vmlinux_link() · 4 unmodified lines
9976 -T ${lds} ${objects}
10077 else
10178 objects="-Wl,--whole-archive \
102− built-in.a \
79+ ${KBUILD_VMLINUX_OBJS} \
10380 -Wl,--no-whole-archive \
10481 -Wl,--start-group \
10582 ${KBUILD_VMLINUX_LIBS} \
@@ -160,7 +137,6 @@ cleanup() · 54 unmodified lines
160137 rm -f .tmp_System.map
161138 rm -f .tmp_kallsyms*
162139 rm -f .tmp_vmlinux*
163− rm -f built-in.a
164140 rm -f System.map
165141 rm -f vmlinux
166142 rm -f vmlinux.o
@@ -217,8 +193,6 @@ fi; · 50 unmodified lines
217193 # final build of init/
218194 ${MAKE} -f "${srctree}/scripts/Makefile.build" obj=init
219195
220−archive_builtin
221−
222196 #link vmlinux.o
223197 info LD vmlinux.o
224198 modpost_link vmlinux.o
scripts/mkcompile_h+2−2
@@ -62,7 +62,7 @@ UTS_TRUNCATE="cut -b -$UTS_LEN" · 61 unmodified lines
6262
6363 # Generate a temporary compile.h
6464
65−( echo /\* This file is auto generated, version $VERSION \*/
65+{ echo /\* This file is auto generated, version $VERSION \*/
6666 if [ -n "$CONFIG_FLAGS" ] ; then echo "/* $CONFIG_FLAGS */"; fi
6767
6868 echo \#define UTS_MACHINE \"$ARCH\"
@@ -73,7 +73,7 @@ UTS_TRUNCATE="cut -b -$UTS_LEN" · 4 unmodified lines
7373 echo \#define LINUX_COMPILE_HOST \"`echo $LINUX_COMPILE_HOST | $UTS_TRUNCATE`\"
7474
7575 echo \#define LINUX_COMPILER \"`$CC -v 2>&1 | grep ' version ' | sed 's/[[:space:]]*$//'`\"
76−) > .tmpcompile
76+} > .tmpcompile
7777
7878 # Only replace the real compile.h if the new one is different,
7979 # in order to preserve the timestamp and avoid unnecessary
scripts/package/Makefile+4−4
@@ -59,7 +59,7 @@ rpm-pkg: FORCE · 58 unmodified lines
5959 # binrpm-pkg
6060 # ---------------------------------------------------------------------------
6161 binrpm-pkg: FORCE
62− $(MAKE) KBUILD_SRC=
62+ $(MAKE) -f $(srctree)/Makefile
6363 $(CONFIG_SHELL) $(MKSPEC) prebuilt > $(objtree)/binkernel.spec
6464 +rpmbuild $(RPMOPTS) --define "_builddir $(objtree)" --target \
6565 $(UTS_MACHINE) -bb $(objtree)/binkernel.spec
@@ -72,11 +72,11 @@ deb-pkg: FORCE · 6 unmodified lines
7272 $(call cmd,src_tar,$(KDEB_SOURCENAME))
7373 origversion=$$(dpkg-parsechangelog -SVersion |sed 's/-[^-]*$$//');\
7474 mv $(KDEB_SOURCENAME).tar.gz ../$(KDEB_SOURCENAME)_$${origversion}.orig.tar.gz
75− +dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) -i.git -us -uc
75+ +dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) $(DPKG_FLAGS) -i.git -us -uc
7676
7777 bindeb-pkg: FORCE
7878 $(CONFIG_SHELL) $(srctree)/scripts/package/mkdebian
79− +dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) -b -nc -uc
79+ +dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) $(DPKG_FLAGS) -b -nc -uc
8080
8181 intdeb-pkg: FORCE
8282 +$(CONFIG_SHELL) $(srctree)/scripts/package/builddeb
@@ -102,7 +102,7 @@ clean-dirs += $(objtree)/snap/ · 19 unmodified lines
102102 # tarball targets
103103 # ---------------------------------------------------------------------------
104104 tar%pkg: FORCE
105− $(MAKE) KBUILD_SRC=
105+ $(MAKE) -f $(srctree)/Makefile
106106 $(CONFIG_SHELL) $(srctree)/scripts/package/buildtar $@
107107
108108 clean-dirs += $(objtree)/tar-install/
scripts/package/builddeb+5−5
@@ -86,12 +86,12 @@ cp "$($MAKE -s -f $srctree/Makefile image_name)" "$tmpdir/$installed_image_path" · 85 unmodified lines
8686 if grep -q "^CONFIG_OF_EARLY_FLATTREE=y" $KCONFIG_CONFIG ; then
8787 # Only some architectures with OF support have this target
8888 if [ -d "${srctree}/arch/$SRCARCH/boot/dts" ]; then
89− $MAKE KBUILD_SRC= INSTALL_DTBS_PATH="$tmpdir/usr/lib/$packagename" dtbs_install
89+ $MAKE -f $srctree/Makefile INSTALL_DTBS_PATH="$tmpdir/usr/lib/$packagename" dtbs_install
9090 fi
9191 fi
9292
9393 if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then
94− INSTALL_MOD_PATH="$tmpdir" $MAKE KBUILD_SRC= modules_install
94+ INSTALL_MOD_PATH="$tmpdir" $MAKE -f $srctree/Makefile modules_install
9595 rm -f "$tmpdir/lib/modules/$version/build"
9696 rm -f "$tmpdir/lib/modules/$version/source"
9797 if [ "$ARCH" = "um" ] ; then
@@ -113,14 +113,14 @@ if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then · 15 unmodified lines
113113 # resign stripped modules
114114 MODULE_SIG_ALL="$(grep -s '^CONFIG_MODULE_SIG_ALL=y' $KCONFIG_CONFIG || true)"
115115 if [ -n "$MODULE_SIG_ALL" ]; then
116− INSTALL_MOD_PATH="$tmpdir" $MAKE KBUILD_SRC= modules_sign
116+ INSTALL_MOD_PATH="$tmpdir" $MAKE -f $srctree/Makefile modules_sign
117117 fi
118118 fi
119119 fi
120120
121121 if [ "$ARCH" != "um" ]; then
122− $MAKE headers_check KBUILD_SRC=
123− $MAKE headers_install KBUILD_SRC= INSTALL_HDR_PATH="$libc_headers_dir/usr"
122+ $MAKE -f $srctree/Makefile headers_check
123+ $MAKE -f $srctree/Makefile headers_install INSTALL_HDR_PATH="$libc_headers_dir/usr"
124124 fi
125125
126126 # Install the maintainer scripts
scripts/package/buildtar+1−1
@@ -57,7 +57,7 @@ dirs=boot · 56 unmodified lines
5757 # Try to install modules
5858 #
5959 if grep -q '^CONFIG_MODULES=y' "${KCONFIG_CONFIG}"; then
60− make ARCH="${ARCH}" O="${objtree}" KBUILD_SRC= INSTALL_MOD_PATH="${tmpdir}" modules_install
60+ make ARCH="${ARCH}" -f ${srctree}/Makefile INSTALL_MOD_PATH="${tmpdir}" modules_install
6161 dirs="$dirs lib"
6262 fi
6363
scripts/package/mkdebian+4−2
@@ -205,13 +205,15 @@ EOF · 204 unmodified lines
205205 cat <<EOF > debian/rules
206206 #!$(command -v $MAKE) -f
207207
208+srctree ?= .
209+
208210 build:
209211 \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} \
210− KBUILD_BUILD_VERSION=${revision} KBUILD_SRC=
212+ KBUILD_BUILD_VERSION=${revision} -f \$(srctree)/Makefile
211213
212214 binary-arch:
213215 \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} \
214− KBUILD_BUILD_VERSION=${revision} KBUILD_SRC= intdeb-pkg
216+ KBUILD_BUILD_VERSION=${revision} -f \$(srctree)/Makefile intdeb-pkg
215217
216218 clean:
217219 rm -rf debian/*tmp debian/files