History

Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6

* 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6: kbuild: make KBUILD_NOCMDDEP=1 handle empty built-in.o scripts/kallsyms.c: fix potential segfault scripts/gen_initramfs_list.sh: Convert to a /bin/sh script kbuild: Fix GNU make v3.80 compatibility kbuild: Fix passing -Wno-* options to gcc 4.4+ kbuild: move scripts/basic/docproc.c to scripts/docproc.c kbuild: Fix Makefile.asm-generic for um kbuild: Allow to combine multiple W= levels kbuild: Disable -Wunused-but-set-variable for gcc 4.6.0 Fix handling of backlash character in LINUX_COMPILE_BY name kbuild: asm-generic support kbuild: implement several W= levels kbuild: Fix build with binutils <= 2.19 initramfs: Use KBUILD_BUILD_TIMESTAMP for generated entries kbuild: Allow to override LINUX_COMPILE_BY and LINUX_COMPILE_HOST macros kbuild: Drop unused LINUX_COMPILE_TIME and LINUX_COMPILE_DOMAIN macros kbuild: Use the deterministic mode of ar kbuild: Call gzip with -n kbuild: move KALLSYMS_EXTRA_PASS from Kconfig to Makefile Kconfig: improve KALLSYMS_ALL documentation Fix up trivial conflict in Makefile

Linus Torvalds committed 15 years ago

Commit 2bb732c2 parents f50d1d9 c4d5ee120 files · +287 −108Browse files

Unified · Split

20 files
  1. .gitignore +1 −0
  2. Documentation/DocBook/Makefile +1 −1
  3. Documentation/kbuild/kbuild.txt +13 −0
  4. Documentation/kbuild/makefiles.txt +53 −0
  5. Makefile +37 −13
  6. init/Kconfig +12 −18
  7. scripts/.gitignore +1 −0
  8. scripts/Kbuild.include +12 −0
  9. scripts/Makefile +5 −2
  10. scripts/Makefile.asm-generic +23 −0
  11. scripts/Makefile.build +45 −29
  12. scripts/Makefile.headersinst +9 −1
  13. scripts/Makefile.lib +1 −1
  14. scripts/basic/.gitignore +0 −2
  15. scripts/basic/Makefile +1 −2
  16. scripts/docproc.c +0 −0
  17. scripts/gen_initramfs_list.sh +17 −10
  18. scripts/kallsyms.c +2 −0
  19. scripts/mkcompile_h +14 −16
  20. usr/gen_init_cpio.c +40 −13
.gitignore+1−0
@@ -57,6 +57,7 @@ modules.builtin · 56 unmodified lines
5757 include/config
5858 include/linux/version.h
5959 include/generated
60+arch/*/include/generated
6061
6162 # stgit generated dirs
6263 patches-*
Documentation/DocBook/Makefile+1−1
@@ -73,7 +73,7 @@ installmandocs: mandocs · 72 unmodified lines
7373 ###
7474 #External programs used
7575 KERNELDOC = $(srctree)/scripts/kernel-doc
76−DOCPROC = $(objtree)/scripts/basic/docproc
76+DOCPROC = $(objtree)/scripts/docproc
7777
7878 XMLTOFLAGS = -m $(srctree)/Documentation/DocBook/stylesheet.xsl
7979 XMLTOFLAGS += --skip-validation
Documentation/kbuild/kbuild.txt+13−0
@@ -201,3 +201,16 @@ KBUILD_ENABLE_EXTRA_GCC_CHECKS · 200 unmodified lines
201201 --------------------------------------------------
202202 If enabled over the make command line with "W=1", it turns on additional
203203 gcc -W... options for more extensive build-time checking.
204+
205+KBUILD_BUILD_TIMESTAMP
206+--------------------------------------------------
207+Setting this to a date string overrides the timestamp used in the
208+UTS_VERSION definition (uname -v in the running kernel). The value has to
209+be a string that can be passed to date -d. The default value
210+is the output of the date command at one point during build.
211+
212+KBUILD_BUILD_USER, KBUILD_BUILD_HOST
213+--------------------------------------------------
214+These two variables allow to override the user@host string displayed during
215+boot and in /proc/version. The default value is the output of the commands
216+whoami and host, respectively.
Documentation/kbuild/makefiles.txt+53−0
@@ -40,11 +40,13 @@ This document describes the Linux kernel Makefiles. · 39 unmodified lines
4040 --- 6.6 Commands useful for building a boot image
4141 --- 6.7 Custom kbuild commands
4242 --- 6.8 Preprocessing linker scripts
43+ --- 6.9 Generic header files
4344
4445 === 7 Kbuild syntax for exported headers
4546 --- 7.1 header-y
4647 --- 7.2 objhdr-y
4748 --- 7.3 destination-y
49+ --- 7.4 generic-y
4850
4951 === 8 Kbuild Variables
5052 === 9 Makefile language
@@ -499,6 +501,18 @@ more details, with real examples. · 448 unmodified lines
499501 gcc >= 3.00. For gcc < 3.00, -malign-functions=4 is used.
500502 Note: cc-option-align uses KBUILD_CFLAGS for $(CC) options
501503
504+ cc-disable-warning
505+ cc-disable-warning checks if gcc supports a given warning and returns
506+ the commandline switch to disable it. This special function is needed,
507+ because gcc 4.4 and later accept any unknown -Wno-* option and only
508+ warn about it if there is another warning in the source file.
509+
510+ Example:
511+ KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable)
512+
513+ In the above example, -Wno-unused-but-set-variable will be added to
514+ KBUILD_CFLAGS only if gcc really accepts it.
515+
502516 cc-version
503517 cc-version returns a numerical version of the $(CC) compiler version.
504518 The format is <major><minor> where both are two digits. So for example
@@ -955,6 +969,11 @@ When kbuild executes, the following steps are followed (roughly): · 450 unmodified lines
955969 used when linking modules. This is often a linker script.
956970 From commandline LDFLAGS_MODULE shall be used (see kbuild.txt).
957971
972+ KBUILD_ARFLAGS Options for $(AR) when creating archives
973+
974+ $(KBUILD_ARFLAGS) set by the top level Makefile to "D" (deterministic
975+ mode) if this option is supported by $(AR).
976+
958977 --- 6.2 Add prerequisites to archprepare:
959978
960979 The archprepare: rule is used to list prerequisites that need to be
@@ -1209,6 +1228,14 @@ When kbuild executes, the following steps are followed (roughly): · 248 unmodified lines
12091228 The kbuild infrastructure for *lds file are used in several
12101229 architecture-specific files.
12111230
1231+--- 6.9 Generic header files
1232+
1233+ The directory include/asm-generic contains the header files
1234+ that may be shared between individual architectures.
1235+ The recommended approach how to use a generic header file is
1236+ to list the file in the Kbuild file.
1237+ See "7.4 generic-y" for further info on syntax etc.
1238+
12121239 === 7 Kbuild syntax for exported headers
12131240
12141241 The kernel include a set of headers that is exported to userspace.
@@ -1265,6 +1292,32 @@ See subsequent chapter for the syntax of the Kbuild file. · 50 unmodified lines
12651292 In the example above all exported headers in the Kbuild file
12661293 will be located in the directory "include/linux" when exported.
12671294
1295+ --- 7.4 generic-y
1296+
1297+ If an architecture uses a verbatim copy of a header from
1298+ include/asm-generic then this is listed in the file
1299+ arch/$(ARCH)/include/asm/Kbuild like this:
1300+
1301+ Example:
1302+ #arch/x86/include/asm/Kbuild
1303+ generic-y += termios.h
1304+ generic-y += rtc.h
1305+
1306+ During the prepare phase of the build a wrapper include
1307+ file is generated in the directory:
1308+
1309+ arch/$(ARCH)/include/generated/asm
1310+
1311+ When a header is exported where the architecture uses
1312+ the generic header a similar wrapper is generated as part
1313+ of the set of exported headers in the directory:
1314+
1315+ usr/include/asm
1316+
1317+ The generated wrapper will in both cases look like the following:
1318+
1319+ Example: termios.h
1320+ #include <asm-generic/termios.h>
12681321
12691322 === 8 Kbuild Variables
12701323
Makefile+37−13
@@ -103,7 +103,7 @@ ifeq ("$(origin O)", "command line") · 102 unmodified lines
103103 endif
104104
105105 ifeq ("$(origin W)", "command line")
106− export KBUILD_ENABLE_EXTRA_GCC_CHECKS := 1
106+ export KBUILD_ENABLE_EXTRA_GCC_CHECKS := $(W)
107107 endif
108108
109109 # That's our default target when none is given on the command line
@@ -349,7 +349,8 @@ CFLAGS_GCOV = -fprofile-arcs -ftest-coverage · 239 unmodified lines
349349
350350 # Use LINUXINCLUDE when you must reference the include/ directory.
351351 # Needed to be compatible with the O= option
352−LINUXINCLUDE := -I$(srctree)/arch/$(hdr-arch)/include -Iinclude \
352+LINUXINCLUDE := -I$(srctree)/arch/$(hdr-arch)/include \
353+ -Iarch/$(hdr-arch)/include/generated -Iinclude \
353354 $(if $(KBUILD_SRC), -I$(srctree)/include) \
354355 -include include/generated/autoconf.h
355356
@@ -382,6 +383,7 @@ export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE CFLAGS_GCOV · 26 unmodified lines
382383 export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE
383384 export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE
384385 export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL
386+export KBUILD_ARFLAGS
385387
386388 # When compiling out-of-tree modules, put MODVERDIR in the module
387389 # tree rather than in the kernel tree. The kernel tree might
@@ -416,6 +418,12 @@ ifneq ($(KBUILD_SRC),) · 28 unmodified lines
416418 $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL)
417419 endif
418420
421+# Support for using generic headers in asm-generic
422+PHONY += asm-generic
423+asm-generic:
424+ $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.asm-generic \
425+ obj=arch/$(SRCARCH)/include/generated/asm
426+
419427 # To make sure we do not include .config for any of the *config targets
420428 # catch them early, and hand them over to scripts/kconfig/Makefile
421429 # It is allowed to specify more targets when calling make, including
@@ -559,6 +567,10 @@ ifndef CONFIG_CC_STACKPROTECTOR · 137 unmodified lines
559567 KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector)
560568 endif
561569
570+# This warning generated too much noise in a regular build.
571+# Use make W=1 to enable this warning (see scripts/Makefile.build)
572+KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable)
573+
562574 ifdef CONFIG_FRAME_POINTER
563575 KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
564576 else
@@ -604,7 +616,7 @@ CHECKFLAGS += $(NOSTDINC_FLAGS) · 39 unmodified lines
604616 KBUILD_CFLAGS += $(call cc-option,-Wdeclaration-after-statement,)
605617
606618 # disable pointer signed / unsigned warnings in gcc 4.0
607−KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,)
619+KBUILD_CFLAGS += $(call cc-disable-warning, pointer-sign)
608620
609621 # disable invalid "can't wrap" optimizations for signed / pointers
610622 KBUILD_CFLAGS += $(call cc-option,-fno-strict-overflow)
@@ -612,6 +624,9 @@ KBUILD_CFLAGS += $(call cc-option,-fno-strict-overflow) · 1 unmodified line
612624 # conserve stack if available
613625 KBUILD_CFLAGS += $(call cc-option,-fconserve-stack)
614626
627+# use the deterministic mode of AR if available
628+KBUILD_ARFLAGS := $(call ar-option,D)
629+
615630 # check for 'asm goto'
616631 ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC)), y)
617632 KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO
@@ -797,15 +812,17 @@ ifdef CONFIG_KALLSYMS · 179 unmodified lines
797812 # o The correct .tmp_kallsyms2.o is linked into the final vmlinux.
798813 # o Verify that the System.map from vmlinux matches the map from
799814 # .tmp_vmlinux2, just in case we did not generate kallsyms correctly.
800−# o If CONFIG_KALLSYMS_EXTRA_PASS is set, do an extra pass using
815+# o If 'make KALLSYMS_EXTRA_PASS=1" was used, do an extra pass using
801816 # .tmp_vmlinux3 and .tmp_kallsyms3.o. This is only meant as a
802817 # temporary bypass to allow the kernel to be built while the
803818 # maintainers work out what went wrong with kallsyms.
804819
805−ifdef CONFIG_KALLSYMS_EXTRA_PASS
806−last_kallsyms := 3
807−else
808820 last_kallsyms := 2
821+
822+ifdef KALLSYMS_EXTRA_PASS
823+ifneq ($(KALLSYMS_EXTRA_PASS),0)
824+last_kallsyms := 3
825+endif
809826 endif
810827
811828 kallsyms.o := .tmp_kallsyms$(last_kallsyms).o
@@ -816,7 +833,8 @@ define verify_kallsyms · 4 unmodified lines
816833 $(cmd_sysmap) .tmp_vmlinux$(last_kallsyms) .tmp_System.map
817834 $(Q)cmp -s System.map .tmp_System.map || \
818835 (echo Inconsistent kallsyms data; \
819− echo Try setting CONFIG_KALLSYMS_EXTRA_PASS; \
836+ echo This is a bug - please report about it; \
837+ echo Try "make KALLSYMS_EXTRA_PASS=1" as a workaround; \
820838 rm .tmp_kallsyms* ; /bin/false )
821839 endef
822840
@@ -947,7 +965,7 @@ ifneq ($(KBUILD_SRC),) · 124 unmodified lines
947965 endif
948966
949967 # prepare2 creates a makefile if using a separate output directory
950−prepare2: prepare3 outputmakefile
968+prepare2: prepare3 outputmakefile asm-generic
951969
952970 prepare1: prepare2 include/linux/version.h include/generated/utsrelease.h \
953971 include/config/auto.conf
@@ -1021,7 +1039,7 @@ hdr-inst := -rR -f $(srctree)/scripts/Makefile.headersinst obj · 67 unmodified lines
10211039 hdr-dst = $(if $(KBUILD_HEADERS), dst=include/asm-$(hdr-arch), dst=include/asm)
10221040
10231041 PHONY += __headers
1024−__headers: include/linux/version.h scripts_basic FORCE
1042+__headers: include/linux/version.h scripts_basic asm-generic FORCE
10251043 $(Q)$(MAKE) $(build)=scripts build_unifdef
10261044
10271045 PHONY += headers_install_all
@@ -1136,7 +1154,8 @@ CLEAN_FILES += vmlinux System.map \ · 108 unmodified lines
11361154 .tmp_kallsyms* .tmp_version .tmp_vmlinux* .tmp_System.map
11371155
11381156 # Directories & files removed with 'make mrproper'
1139−MRPROPER_DIRS += include/config usr/include include/generated
1157+MRPROPER_DIRS += include/config usr/include include/generated \
1158+ arch/*/include/generated
11401159 MRPROPER_FILES += .config .config.old .version .old_version \
11411160 include/linux/version.h \
11421161 Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS
@@ -1267,7 +1286,11 @@ help: · 124 unmodified lines
12671286 @echo ' make O=dir [targets] Locate all output files in "dir", including .config'
12681287 @echo ' make C=1 [targets] Check all c source with $$CHECK (sparse by default)'
12691288 @echo ' make C=2 [targets] Force check of all c source with $$CHECK'
1270− @echo ' make W=1 [targets] Enable extra gcc checks'
1289+ @echo ' make W=n [targets] Enable extra gcc checks, n=1,2,3 where'
1290+ @echo ' 1: warnings which may be relevant and do not occur too often'
1291+ @echo ' 2: warnings which occur quite often but may still be relevant'
1292+ @echo ' 3: more obscure warnings, can most likely be ignored'
1293+ @echo ' Multiple levels can be combined with W=12 or W=123'
12711294 @echo ' make RECORDMCOUNT_WARN=1 [targets] Warn about ignored mcount sections'
12721295 @echo ''
12731296 @echo 'Execute "make" or "make all" to build all targets marked with [*] '
@@ -1291,6 +1314,7 @@ $(help-board-dirs): help-%: · 17 unmodified lines
12911314 # Documentation targets
12921315 # ---------------------------------------------------------------------------
12931316 %docs: scripts_basic FORCE
1317+ $(Q)$(MAKE) $(build)=scripts build_docproc
12941318 $(Q)$(MAKE) $(build)=Documentation/DocBook $@
12951319
12961320 else # KBUILD_EXTMOD
@@ -1375,7 +1399,7 @@ endif # KBUILD_EXTMOD · 78 unmodified lines
13751399 clean: $(clean-dirs)
13761400 $(call cmd,rmdirs)
13771401 $(call cmd,rmfiles)
1378− @find $(or $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \
1402+ @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \
13791403 \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
13801404 -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
13811405 -o -name '*.symtypes' -o -name 'modules.order' \
init/Kconfig+12−18
@@ -959,24 +959,18 @@ config KALLSYMS_ALL · 958 unmodified lines
959959 bool "Include all symbols in kallsyms"
960960 depends on DEBUG_KERNEL && KALLSYMS
961961 help
962− Normally kallsyms only contains the symbols of functions, for nicer
963− OOPS messages. Some debuggers can use kallsyms for other
964− symbols too: say Y here to include all symbols, if you need them
965− and you don't care about adding 300k to the size of your kernel.
966−
967− Say N.
968−
969−config KALLSYMS_EXTRA_PASS
970− bool "Do an extra kallsyms pass"
971− depends on KALLSYMS
972− help
973− If kallsyms is not working correctly, the build will fail with
974− inconsistent kallsyms data. If that occurs, log a bug report and
975− turn on KALLSYMS_EXTRA_PASS which should result in a stable build.
976− Always say N here unless you find a bug in kallsyms, which must be
977− reported. KALLSYMS_EXTRA_PASS is only a temporary workaround while
978− you wait for kallsyms to be fixed.
979−
962+ Normally kallsyms only contains the symbols of functions for nicer
963+ OOPS messages and backtraces (i.e., symbols from the text and inittext
964+ sections). This is sufficient for most cases. And only in very rare
965+ cases (e.g., when a debugger is used) all symbols are required (e.g.,
966+ names of variables from the data sections, etc).
967+
968+ This option makes sure that all symbols are loaded into the kernel
969+ image (i.e., symbols from all sections) in cost of increased kernel
970+ size (depending on the kernel configuration, it may be 300KiB or
971+ something like this).
972+
973+ Say N unless you really need all symbols.
980974
981975 config HOTPLUG
982976 bool "Support for hot-pluggable devices" if EXPERT
scripts/.gitignore+1−0
@@ -8,3 +8,4 @@ bin2c · 7 unmodified lines
88 unifdef
99 ihex2fw
1010 recordmcount
11+docproc
scripts/Kbuild.include+12−0
@@ -118,6 +118,11 @@ cc-option-yn = $(call try-run,\ · 117 unmodified lines
118118 cc-option-align = $(subst -functions=0,,\
119119 $(call cc-option,-falign-functions=0,-malign-functions=0))
120120
121+# cc-disable-warning
122+# Usage: cflags-y += $(call cc-disable-warning,unused-but-set-variable)
123+cc-disable-warning = $(call try-run,\
124+ $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) -W$(strip $(1)) -c -xc /dev/null -o "$$TMP",-Wno-$(strip $(1)))
125+
121126 # cc-version
122127 # Usage gcc-ver := $(call cc-version)
123128 cc-version = $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh $(CC))
@@ -141,6 +146,11 @@ cc-ldoption = $(call try-run,\ · 17 unmodified lines
141146 ld-option = $(call try-run,\
142147 $(CC) /dev/null -c -o "$$TMPO" ; $(LD) $(1) "$$TMPO" -o "$$TMP",$(1),$(2))
143148
149+# ar-option
150+# Usage: KBUILD_ARFLAGS := $(call ar-option,D)
151+# Important: no spaces around options
152+ar-option = $(call try-run, $(AR) rc$(1) "$$TMP",$(1),$(2))
153+
144154 ######
145155
146156 ###
@@ -187,6 +197,8 @@ ifneq ($(KBUILD_NOCMDDEP),1) · 40 unmodified lines
187197 # User may override this check using make KBUILD_NOCMDDEP=1
188198 arg-check = $(strip $(filter-out $(cmd_$(1)), $(cmd_$@)) \
189199 $(filter-out $(cmd_$@), $(cmd_$(1))) )
200+else
201+arg-check = $(if $(strip $(cmd_$@)),,1)
190202 endif
191203
192204 # >'< substitution is for echo to work,
scripts/Makefile+5−2
@@ -6,6 +6,7 @@ · 5 unmodified lines
66 # pnmttologo: Convert pnm files to logo files
77 # conmakehash: Create chartable
88 # conmakehash: Create arrays for initializing the kernel console tables
9+# docproc: Used in Documentation/DocBook
910
1011 hostprogs-$(CONFIG_KALLSYMS) += kallsyms
1112 hostprogs-$(CONFIG_LOGO) += pnmtologo
@@ -16,12 +17,14 @@ hostprogs-$(BUILD_C_RECORDMCOUNT) += recordmcount · 4 unmodified lines
1617 always := $(hostprogs-y) $(hostprogs-m)
1718
1819 # The following hostprogs-y programs are only build on demand
19−hostprogs-y += unifdef
20+hostprogs-y += unifdef docproc
2021
21−# This target is used internally to avoid "is up to date" messages
22+# These targets are used internally to avoid "is up to date" messages
2223 PHONY += build_unifdef
2324 build_unifdef: scripts/unifdef FORCE
2425 @:
26+build_docproc: scripts/docproc FORCE
27+ @:
2528
2629 subdir-$(CONFIG_MODVERSIONS) += genksyms
2730 subdir-y += mod
scripts/Makefile.asm-generic+23−0
@@ -0,0 +1,23 @@
1+# include/asm-generic contains a lot of files that are used
2+# verbatim by several architectures.
3+#
4+# This Makefile reads the file arch/$(SRCARCH)/include/asm/Kbuild
5+# and for each file listed in this file with generic-y creates
6+# a small wrapper file in $(obj) (arch/$(SRCARCH)/include/generated/asm)
7+
8+kbuild-file := $(srctree)/arch/$(SRCARCH)/include/asm/Kbuild
9+-include $(kbuild-file)
10+
11+include scripts/Kbuild.include
12+
13+# Create output directory if not already present
14+_dummy := $(shell [ -d $(obj) ] || mkdir -p $(obj))
15+
16+quiet_cmd_wrap = WRAP $@
17+cmd_wrap = echo "\#include <asm-generic/$*.h>" >$@
18+
19+all: $(patsubst %, $(obj)/%, $(generic-y))
20+
21+$(obj)/%.h:
22+ $(call cmd,wrap)
23+
scripts/Makefile.build+45−29
@@ -51,36 +51,52 @@ ifeq ($(KBUILD_NOPEDANTIC),) · 50 unmodified lines
5151 endif
5252
5353 #
54−# make W=1 settings
54+# make W=... settings
5555 #
56−# $(call cc-option... ) handles gcc -W.. options which
56+# W=1 - warnings that may be relevant and does not occur too often
57+# W=2 - warnings that occur quite often but may still be relevant
58+# W=3 - the more obscure warnings, can most likely be ignored
59+#
60+# $(call cc-option, -W...) handles gcc -W.. options which
5761 # are not supported by all versions of the compiler
5862 ifdef KBUILD_ENABLE_EXTRA_GCC_CHECKS
59−KBUILD_EXTRA_WARNINGS := -Wextra
60−KBUILD_EXTRA_WARNINGS += -Wunused -Wno-unused-parameter
61−KBUILD_EXTRA_WARNINGS += -Waggregate-return
62−KBUILD_EXTRA_WARNINGS += -Wbad-function-cast
63−KBUILD_EXTRA_WARNINGS += -Wcast-qual
64−KBUILD_EXTRA_WARNINGS += -Wcast-align
65−KBUILD_EXTRA_WARNINGS += -Wconversion
66−KBUILD_EXTRA_WARNINGS += -Wdisabled-optimization
67−KBUILD_EXTRA_WARNINGS += -Wlogical-op
68−KBUILD_EXTRA_WARNINGS += -Wmissing-declarations
69−KBUILD_EXTRA_WARNINGS += -Wmissing-format-attribute
70−KBUILD_EXTRA_WARNINGS += $(call cc-option, -Wmissing-include-dirs,)
71−KBUILD_EXTRA_WARNINGS += -Wmissing-prototypes
72−KBUILD_EXTRA_WARNINGS += -Wnested-externs
73−KBUILD_EXTRA_WARNINGS += -Wold-style-definition
74−KBUILD_EXTRA_WARNINGS += $(call cc-option, -Woverlength-strings,)
75−KBUILD_EXTRA_WARNINGS += -Wpacked
76−KBUILD_EXTRA_WARNINGS += -Wpacked-bitfield-compat
77−KBUILD_EXTRA_WARNINGS += -Wpadded
78−KBUILD_EXTRA_WARNINGS += -Wpointer-arith
79−KBUILD_EXTRA_WARNINGS += -Wredundant-decls
80−KBUILD_EXTRA_WARNINGS += -Wshadow
81−KBUILD_EXTRA_WARNINGS += -Wswitch-default
82−KBUILD_EXTRA_WARNINGS += $(call cc-option, -Wvla,)
83−KBUILD_CFLAGS += $(KBUILD_EXTRA_WARNINGS)
63+warning- := $(empty)
64+
65+warning-1 := -Wextra -Wunused -Wno-unused-parameter
66+warning-1 += -Wmissing-declarations
67+warning-1 += -Wmissing-format-attribute
68+warning-1 += -Wmissing-prototypes
69+warning-1 += -Wold-style-definition
70+warning-1 += $(call cc-option, -Wmissing-include-dirs)
71+warning-1 += $(call cc-option, -Wunused-but-set-variable)
72+
73+warning-2 := -Waggregate-return
74+warning-2 += -Wcast-align
75+warning-2 += -Wdisabled-optimization
76+warning-2 += -Wnested-externs
77+warning-2 += -Wshadow
78+warning-2 += $(call cc-option, -Wlogical-op)
79+
80+warning-3 := -Wbad-function-cast
81+warning-3 += -Wcast-qual
82+warning-3 += -Wconversion
83+warning-3 += -Wpacked
84+warning-3 += -Wpadded
85+warning-3 += -Wpointer-arith
86+warning-3 += -Wredundant-decls
87+warning-3 += -Wswitch-default
88+warning-3 += $(call cc-option, -Wpacked-bitfield-compat)
89+warning-3 += $(call cc-option, -Wvla)
90+
91+warning := $(warning-$(findstring 1, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
92+warning += $(warning-$(findstring 2, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
93+warning += $(warning-$(findstring 3, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
94+
95+ifeq ("$(strip $(warning))","")
96+ $(error W=$(KBUILD_ENABLE_EXTRA_GCC_CHECKS) is unknown)
97+endif
98+
99+KBUILD_CFLAGS += $(warning)
84100 endif
85101
86102 include scripts/Makefile.lib
@@ -351,7 +367,7 @@ quiet_cmd_link_o_target = LD $@ · 264 unmodified lines
351367 cmd_link_o_target = $(if $(strip $(obj-y)),\
352368 $(LD) $(ld_flags) -r -o $@ $(filter $(obj-y), $^) \
353369 $(cmd_secanalysis),\
354− rm -f $@; $(AR) rcs $@)
370+ rm -f $@; $(AR) rcs$(KBUILD_ARFLAGS) $@)
355371
356372 $(builtin-target): $(obj-y) FORCE
357373 $(call if_changed,link_o_target)
@@ -377,7 +393,7 @@ $(modorder-target): $(subdir-ym) FORCE · 19 unmodified lines
377393 #
378394 ifdef lib-target
379395 quiet_cmd_link_l_target = AR $@
380−cmd_link_l_target = rm -f $@; $(AR) rcs $@ $(lib-y)
396+cmd_link_l_target = rm -f $@; $(AR) rcs$(KBUILD_ARFLAGS) $@ $(lib-y)
381397
382398 $(lib-target): $(lib-y) FORCE
383399 $(call if_changed,link_l_target)
scripts/Makefile.headersinst+9−1
@@ -27,8 +27,13 @@ header-y := $(filter-out %/, $(header-y)) · 26 unmodified lines
2727 install-file := $(install)/.install
2828 check-file := $(install)/.check
2929
30+# generic-y list all files an architecture uses from asm-generic
31+# Use this to build a list of headers which require a wrapper
32+wrapper-files := $(filter $(header-y), $(generic-y))
33+
3034 # all headers files for this dir
31−all-files := $(header-y) $(objhdr-y)
35+header-y := $(filter-out $(generic-y), $(header-y))
36+all-files := $(header-y) $(objhdr-y) $(wrapper-files)
3237 input-files := $(addprefix $(srctree)/$(obj)/,$(header-y)) \
3338 $(addprefix $(objtree)/$(obj)/,$(objhdr-y))
3439 output-files := $(addprefix $(install)/, $(all-files))
@@ -47,6 +52,9 @@ quiet_cmd_install = INSTALL $(printdir) ($(words $(all-files))\ · 12 unmodified lines
4752 cmd_install = \
4853 $(PERL) $< $(srctree)/$(obj) $(install) $(SRCARCH) $(header-y); \
4954 $(PERL) $< $(objtree)/$(obj) $(install) $(SRCARCH) $(objhdr-y); \
55+ for F in $(wrapper-files); do \
56+ echo "\#include <asm-generic/$$F>" > $(install)/$$F; \
57+ done; \
5058 touch $@
5159
5260 quiet_cmd_remove = REMOVE $(unwanted)
scripts/Makefile.lib+1−1
@@ -197,7 +197,7 @@ cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@ · 196 unmodified lines
197197 # ---------------------------------------------------------------------------
198198
199199 quiet_cmd_gzip = GZIP $@
200−cmd_gzip = (cat $(filter-out FORCE,$^) | gzip -f -9 > $@) || \
200+cmd_gzip = (cat $(filter-out FORCE,$^) | gzip -n -f -9 > $@) || \
201201 (rm -f $@ ; false)
202202
203203 # DTC
scripts/basic/.gitignore+0−2
@@ -1,3 +1 @@
1−hash
21 fixdep
3−docproc
scripts/basic/Makefile+1−2
@@ -7,9 +7,8 @@ · 6 unmodified lines
77 # .config is included by main Makefile.
88 # ---------------------------------------------------------------------------
99 # fixdep: Used to generate dependency information during build process
10−# docproc: Used in Documentation/DocBook
1110
12−hostprogs-y := fixdep docproc
11+hostprogs-y := fixdep
1312 always := $(hostprogs-y)
1413
1514 # fixdep is needed to compile other host programs
scripts/docproc.crenamed from scripts/basic/docproc.c+0−0

File renamed without changes.

scripts/gen_initramfs_list.sh+17−10
@@ -1,4 +1,4 @@
1−#!/bin/bash
1+#!/bin/sh
22 # Copyright (C) Martin Schlemmer <azarah@nosferatu.za.org>
33 # Copyright (C) 2006 Sam Ravnborg <sam@ravnborg.org>
44 #
@@ -105,9 +105,9 @@ list_parse() { · 100 unmodified lines
105105 # for links, devices etc the format differs. See gen_init_cpio for details
106106 parse() {
107107 local location="$1"
108− local name="${location/${srcdir}//}"
108+ local name="/${location#${srcdir}}"
109109 # change '//' into '/'
110− name="${name//\/\///}"
110+ name=$(echo "$name" | sed -e 's://*:/:g')
111111 local mode="$2"
112112 local uid="$3"
113113 local gid="$4"
@@ -117,8 +117,8 @@ parse() { · 3 unmodified lines
117117 [ "$root_gid" = "squash" ] && gid=0 || [ "$gid" -eq "$root_gid" ] && gid=0
118118 local str="${mode} ${uid} ${gid}"
119119
120− [ "${ftype}" == "invalid" ] && return 0
121− [ "${location}" == "${srcdir}" ] && return 0
120+ [ "${ftype}" = "invalid" ] && return 0
121+ [ "${location}" = "${srcdir}" ] && return 0
122122
123123 case "${ftype}" in
124124 "file")
@@ -192,7 +192,7 @@ input_file() { · 67 unmodified lines
192192 if [ -f "$1" ]; then
193193 ${dep_list}header "$1"
194194 is_cpio="$(echo "$1" | sed 's/^.*\.cpio\(\..*\)\?/cpio/')"
195− if [ $2 -eq 0 -a ${is_cpio} == "cpio" ]; then
195+ if [ $2 -eq 0 -a ${is_cpio} = "cpio" ]; then
196196 cpio_file=$1
197197 echo "$1" | grep -q '^.*\.cpio\..*' && is_cpio_compressed="compressed"
198198 [ ! -z ${dep_list} ] && echo "$1"
@@ -204,7 +204,7 @@ input_file() { · 5 unmodified lines
204204 else
205205 echo "$1 \\"
206206 cat "$1" | while read type dir file perm ; do
207− if [ "$type" == "file" ]; then
207+ if [ "$type" = "file" ]; then
208208 echo "$file \\";
209209 fi
210210 done
@@ -226,7 +226,7 @@ cpio_list= · 15 unmodified lines
226226 output="/dev/stdout"
227227 output_file=""
228228 is_cpio_compressed=
229−compr="gzip -9 -f"
229+compr="gzip -n -9 -f"
230230
231231 arg="$1"
232232 case "$arg" in
@@ -240,7 +240,7 @@ case "$arg" in · 7 unmodified lines
240240 output_file="$1"
241241 cpio_list="$(mktemp ${TMPDIR:-/tmp}/cpiolist.XXXXXX)"
242242 output=${cpio_list}
243− echo "$output_file" | grep -q "\.gz$" && compr="gzip -9 -f"
243+ echo "$output_file" | grep -q "\.gz$" && compr="gzip -n -9 -f"
244244 echo "$output_file" | grep -q "\.bz2$" && compr="bzip2 -9 -f"
245245 echo "$output_file" | grep -q "\.lzma$" && compr="lzma -9 -f"
246246 echo "$output_file" | grep -q "\.xz$" && \
@@ -287,8 +287,15 @@ done · 40 unmodified lines
287287 # we are careful to delete tmp files
288288 if [ ! -z ${output_file} ]; then
289289 if [ -z ${cpio_file} ]; then
290+ timestamp=
291+ if test -n "$KBUILD_BUILD_TIMESTAMP"; then
292+ timestamp="$(date -d"$KBUILD_BUILD_TIMESTAMP" +%s || :)"
293+ if test -n "$timestamp"; then
294+ timestamp="-t $timestamp"
295+ fi
296+ fi
290297 cpio_tfile="$(mktemp ${TMPDIR:-/tmp}/cpiofile.XXXXXX)"
291− usr/gen_init_cpio ${cpio_list} > ${cpio_tfile}
298+ usr/gen_init_cpio $timestamp ${cpio_list} > ${cpio_tfile}
292299 else
293300 cpio_tfile=${cpio_file}
294301 fi
scripts/kallsyms.c+2−0
@@ -500,6 +500,8 @@ static void optimize_result(void) · 499 unmodified lines
500500
501501 /* find the token with the breates profit value */
502502 best = find_best_token();
503+ if (token_profit[best] == 0)
504+ break;
503505
504506 /* place it in the "best" table */
505507 best_table_len[i] = 2;
scripts/mkcompile_h+14−16
@@ -42,6 +42,16 @@ if [ -z "$KBUILD_BUILD_TIMESTAMP" ]; then · 41 unmodified lines
4242 else
4343 TIMESTAMP=$KBUILD_BUILD_TIMESTAMP
4444 fi
45+if test -z "$KBUILD_BUILD_USER"; then
46+ LINUX_COMPILE_BY=$(whoami | sed 's/\\/\\\\/')
47+else
48+ LINUX_COMPILE_BY=$KBUILD_BUILD_USER
49+fi
50+if test -z "$KBUILD_BUILD_HOST"; then
51+ LINUX_COMPILE_HOST=`hostname`
52+else
53+ LINUX_COMPILE_HOST=$KBUILD_BUILD_HOST
54+fi
4555
4656 UTS_VERSION="#$VERSION"
4757 CONFIG_FLAGS=""
@@ -63,20 +73,8 @@ UTS_TRUNCATE="cut -b -$UTS_LEN" · 15 unmodified lines
6373
6474 echo \#define UTS_VERSION \"`echo $UTS_VERSION | $UTS_TRUNCATE`\"
6575
66− echo \#define LINUX_COMPILE_TIME \"`date +%T`\"
67− echo \#define LINUX_COMPILE_BY \"`whoami`\"
68− echo \#define LINUX_COMPILE_HOST \"`hostname | $UTS_TRUNCATE`\"
69−
70− domain=`dnsdomainname 2> /dev/null`
71− if [ -z "$domain" ]; then
72− domain=`domainname 2> /dev/null`
73− fi
74−
75− if [ -n "$domain" ]; then
76− echo \#define LINUX_COMPILE_DOMAIN \"`echo $domain | $UTS_TRUNCATE`\"
77− else
78− echo \#define LINUX_COMPILE_DOMAIN
79− fi
76+ echo \#define LINUX_COMPILE_BY \"`echo $LINUX_COMPILE_BY | $UTS_TRUNCATE`\"
77+ echo \#define LINUX_COMPILE_HOST \"`echo $LINUX_COMPILE_HOST | $UTS_TRUNCATE`\"
8078
8179 echo \#define LINUX_COMPILER \"`$CC -v 2>&1 | tail -n 1`\"
8280 ) > .tmpcompile
@@ -91,8 +89,8 @@ UTS_TRUNCATE="cut -b -$UTS_LEN" · 8 unmodified lines
9189 # first line.
9290
9391 if [ -r $TARGET ] && \
94− grep -v 'UTS_VERSION\|LINUX_COMPILE_TIME' $TARGET > .tmpver.1 && \
95− grep -v 'UTS_VERSION\|LINUX_COMPILE_TIME' .tmpcompile > .tmpver.2 && \
92+ grep -v 'UTS_VERSION' $TARGET > .tmpver.1 && \
93+ grep -v 'UTS_VERSION' .tmpcompile > .tmpver.2 && \
9694 cmp -s .tmpver.1 .tmpver.2; then
9795 rm -f .tmpcompile
9896 else
usr/gen_init_cpio.c+40−13
@@ -22,6 +22,7 @@ · 21 unmodified lines
2222
2323 static unsigned int offset;
2424 static unsigned int ino = 721;
25+static time_t default_mtime;
2526
2627 struct file_handler {
2728 const char *type;
@@ -102,7 +103,6 @@ static int cpio_mkslink(const char *name, const char *target, · 74 unmodified lines
102103 unsigned int mode, uid_t uid, gid_t gid)
103104 {
104105 char s[256];
105− time_t mtime = time(NULL);
106106
107107 if (name[0] == '/')
108108 name++;
@@ -114,7 +114,7 @@ static int cpio_mkslink(const char *name, const char *target, · 5 unmodified lines
114114 (long) uid, /* uid */
115115 (long) gid, /* gid */
116116 1, /* nlink */
117− (long) mtime, /* mtime */
117+ (long) default_mtime, /* mtime */
118118 (unsigned)strlen(target)+1, /* filesize */
119119 3, /* major */
120120 1, /* minor */
@@ -152,7 +152,6 @@ static int cpio_mkgeneric(const char *name, unsigned int mode, · 31 unmodified lines
152152 uid_t uid, gid_t gid)
153153 {
154154 char s[256];
155− time_t mtime = time(NULL);
156155
157156 if (name[0] == '/')
158157 name++;
@@ -164,7 +163,7 @@ static int cpio_mkgeneric(const char *name, unsigned int mode, · 5 unmodified lines
164163 (long) uid, /* uid */
165164 (long) gid, /* gid */
166165 2, /* nlink */
167− (long) mtime, /* mtime */
166+ (long) default_mtime, /* mtime */
168167 0, /* filesize */
169168 3, /* major */
170169 1, /* minor */
@@ -242,7 +241,6 @@ static int cpio_mknod(const char *name, unsigned int mode, · 71 unmodified lines
242241 unsigned int maj, unsigned int min)
243242 {
244243 char s[256];
245− time_t mtime = time(NULL);
246244
247245 if (dev_type == 'b')
248246 mode |= S_IFBLK;
@@ -259,7 +257,7 @@ static int cpio_mknod(const char *name, unsigned int mode, · 10 unmodified lines
259257 (long) uid, /* uid */
260258 (long) gid, /* gid */
261259 1, /* nlink */
262− (long) mtime, /* mtime */
260+ (long) default_mtime, /* mtime */
263261 0, /* filesize */
264262 3, /* major */
265263 1, /* minor */
@@ -460,7 +458,7 @@ static int cpio_mkfile_line(const char *line) · 194 unmodified lines
460458 static void usage(const char *prog)
461459 {
462460 fprintf(stderr, "Usage:\n"
463− "\t%s <cpio_list>\n"
461+ "\t%s [-t <timestamp>] <cpio_list>\n"
464462 "\n"
465463 "<cpio_list> is a file containing newline separated entries that\n"
466464 "describe the files to be included in the initramfs archive:\n"
@@ -491,7 +489,11 @@ static void usage(const char *prog) · 24 unmodified lines
491489 "nod /dev/console 0600 0 0 c 5 1\n"
492490 "dir /root 0700 0 0\n"
493491 "dir /sbin 0755 0 0\n"
494− "file /sbin/kinit /usr/src/klibc/kinit/kinit 0755 0 0\n",
492+ "file /sbin/kinit /usr/src/klibc/kinit/kinit 0755 0 0\n"
493+ "\n"
494+ "<timestamp> is time in seconds since Epoch that will be used\n"
495+ "as mtime for symlinks, special files and directories. The default\n"
496+ "is to use the current time for these entries.\n",
495497 prog);
496498 }
497499
@@ -529,17 +531,42 @@ int main (int argc, char *argv[]) · 31 unmodified lines
529531 char *args, *type;
530532 int ec = 0;
531533 int line_nr = 0;
534+ const char *filename;
535+
536+ default_mtime = time(NULL);
537+ while (1) {
538+ int opt = getopt(argc, argv, "t:h");
539+ char *invalid;
532540
533− if (2 != argc) {
541+ if (opt == -1)
542+ break;
543+ switch (opt) {
544+ case 't':
545+ default_mtime = strtol(optarg, &invalid, 10);
546+ if (!*optarg || *invalid) {
547+ fprintf(stderr, "Invalid timestamp: %s\n",
548+ optarg);
549+ usage(argv[0]);
550+ exit(1);
551+ }
552+ break;
553+ case 'h':
554+ case '?':
555+ usage(argv[0]);
556+ exit(opt == 'h' ? 0 : 1);
557+ }
558+ }
559+
560+ if (argc - optind != 1) {
534561 usage(argv[0]);
535562 exit(1);
536563 }
537−
538− if (!strcmp(argv[1], "-"))
564+ filename = argv[optind];
565+ if (!strcmp(filename, "-"))
539566 cpio_list = stdin;
540− else if (! (cpio_list = fopen(argv[1], "r"))) {
567+ else if (!(cpio_list = fopen(filename, "r"))) {
541568 fprintf(stderr, "ERROR: unable to open '%s': %s\n\n",
542− argv[1], strerror(errno));
569+ filename, strerror(errno));
543570 usage(argv[0]);
544571 exit(1);
545572 }