diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 154 |
1 files changed, 106 insertions, 48 deletions
@@ -41,9 +41,15 @@ ifndef KBUILD_VERBOSE | |||
41 | KBUILD_VERBOSE = 0 | 41 | KBUILD_VERBOSE = 0 |
42 | endif | 42 | endif |
43 | 43 | ||
44 | # Call checker as part of compilation of C files | 44 | # Call a source code checker (by default, "sparse") as part of the |
45 | # Use 'make C=1' to enable checking (sparse, by default) | 45 | # C compilation. |
46 | # Override with 'make C=1 CHECK=checker_executable CHECKFLAGS=....' | 46 | # |
47 | # Use 'make C=1' to enable checking of only re-compiled files. | ||
48 | # Use 'make C=2' to enable checking of *all* source files, regardless | ||
49 | # of whether they are re-compiled or not. | ||
50 | # | ||
51 | # See the file "Documentation/sparse.txt" for more details, including | ||
52 | # where to get the "sparse" utility. | ||
47 | 53 | ||
48 | ifdef C | 54 | ifdef C |
49 | ifeq ("$(origin C)", "command line") | 55 | ifeq ("$(origin C)", "command line") |
@@ -639,12 +645,12 @@ define rule_vmlinux__ | |||
639 | $(call cmd,vmlinux__) | 645 | $(call cmd,vmlinux__) |
640 | $(Q)echo 'cmd_$@ := $(cmd_vmlinux__)' > $(@D)/.$(@F).cmd | 646 | $(Q)echo 'cmd_$@ := $(cmd_vmlinux__)' > $(@D)/.$(@F).cmd |
641 | 647 | ||
642 | $(Q)$(if $($(quiet)cmd_sysmap), \ | 648 | $(Q)$(if $($(quiet)cmd_sysmap), \ |
643 | echo ' $($(quiet)cmd_sysmap) System.map' &&) \ | 649 | echo ' $($(quiet)cmd_sysmap) System.map' &&) \ |
644 | $(cmd_sysmap) $@ System.map; \ | 650 | $(cmd_sysmap) $@ System.map; \ |
645 | if [ $$? -ne 0 ]; then \ | 651 | if [ $$? -ne 0 ]; then \ |
646 | rm -f $@; \ | 652 | rm -f $@; \ |
647 | /bin/false; \ | 653 | /bin/false; \ |
648 | fi; | 654 | fi; |
649 | $(verify_kallsyms) | 655 | $(verify_kallsyms) |
650 | endef | 656 | endef |
@@ -677,12 +683,12 @@ endif | |||
677 | kallsyms.o := .tmp_kallsyms$(last_kallsyms).o | 683 | kallsyms.o := .tmp_kallsyms$(last_kallsyms).o |
678 | 684 | ||
679 | define verify_kallsyms | 685 | define verify_kallsyms |
680 | $(Q)$(if $($(quiet)cmd_sysmap), \ | 686 | $(Q)$(if $($(quiet)cmd_sysmap), \ |
681 | echo ' $($(quiet)cmd_sysmap) .tmp_System.map' &&) \ | 687 | echo ' $($(quiet)cmd_sysmap) .tmp_System.map' &&) \ |
682 | $(cmd_sysmap) .tmp_vmlinux$(last_kallsyms) .tmp_System.map | 688 | $(cmd_sysmap) .tmp_vmlinux$(last_kallsyms) .tmp_System.map |
683 | $(Q)cmp -s System.map .tmp_System.map || \ | 689 | $(Q)cmp -s System.map .tmp_System.map || \ |
684 | (echo Inconsistent kallsyms data; \ | 690 | (echo Inconsistent kallsyms data; \ |
685 | echo Try setting CONFIG_KALLSYMS_EXTRA_PASS; \ | 691 | echo Try setting CONFIG_KALLSYMS_EXTRA_PASS; \ |
686 | rm .tmp_kallsyms* ; /bin/false ) | 692 | rm .tmp_kallsyms* ; /bin/false ) |
687 | endef | 693 | endef |
688 | 694 | ||
@@ -736,6 +742,7 @@ endif # ifdef CONFIG_KALLSYMS | |||
736 | # vmlinux image - including updated kernel symbols | 742 | # vmlinux image - including updated kernel symbols |
737 | vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) $(kallsyms.o) FORCE | 743 | vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) $(kallsyms.o) FORCE |
738 | $(call if_changed_rule,vmlinux__) | 744 | $(call if_changed_rule,vmlinux__) |
745 | $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost $@ | ||
739 | $(Q)rm -f .old_version | 746 | $(Q)rm -f .old_version |
740 | 747 | ||
741 | # The actual objects are generated when descending, | 748 | # The actual objects are generated when descending, |
@@ -753,12 +760,34 @@ $(vmlinux-dirs): prepare scripts | |||
753 | $(Q)$(MAKE) $(build)=$@ | 760 | $(Q)$(MAKE) $(build)=$@ |
754 | 761 | ||
755 | # Build the kernel release string | 762 | # Build the kernel release string |
756 | # The KERNELRELEASE is stored in a file named include/config/kernel.release | ||
757 | # to be used when executing for example make install or make modules_install | ||
758 | # | 763 | # |
759 | # Take the contents of any files called localversion* and the config | 764 | # The KERNELRELEASE value built here is stored in the file |
760 | # variable CONFIG_LOCALVERSION and append them to KERNELRELEASE. | 765 | # include/config/kernel.release, and is used when executing several |
761 | # LOCALVERSION from the command line override all of this | 766 | # make targets, such as "make install" or "make modules_install." |
767 | # | ||
768 | # The eventual kernel release string consists of the following fields, | ||
769 | # shown in a hierarchical format to show how smaller parts are concatenated | ||
770 | # to form the larger and final value, with values coming from places like | ||
771 | # the Makefile, kernel config options, make command line options and/or | ||
772 | # SCM tag information. | ||
773 | # | ||
774 | # $(KERNELVERSION) | ||
775 | # $(VERSION) eg, 2 | ||
776 | # $(PATCHLEVEL) eg, 6 | ||
777 | # $(SUBLEVEL) eg, 18 | ||
778 | # $(EXTRAVERSION) eg, -rc6 | ||
779 | # $(localver-full) | ||
780 | # $(localver) | ||
781 | # localversion* (all localversion* files) | ||
782 | # $(CONFIG_LOCALVERSION) (from kernel config setting) | ||
783 | # $(localver-auto) (only if CONFIG_LOCALVERSION_AUTO is set) | ||
784 | # ./scripts/setlocalversion (SCM tag, if one exists) | ||
785 | # $(LOCALVERSION) (from make command line if provided) | ||
786 | # | ||
787 | # Note how the final $(localver-auto) string is included *only* if the | ||
788 | # kernel config option CONFIG_LOCALVERSION_AUTO is selected. Also, at the | ||
789 | # moment, only git is supported but other SCMs can edit the script | ||
790 | # scripts/setlocalversion and add the appropriate checks as needed. | ||
762 | 791 | ||
763 | nullstring := | 792 | nullstring := |
764 | space := $(nullstring) # end of line | 793 | space := $(nullstring) # end of line |
@@ -892,15 +921,27 @@ depend dep: | |||
892 | INSTALL_HDR_PATH=$(objtree)/usr | 921 | INSTALL_HDR_PATH=$(objtree)/usr |
893 | export INSTALL_HDR_PATH | 922 | export INSTALL_HDR_PATH |
894 | 923 | ||
924 | HDRARCHES=$(filter-out generic,$(patsubst $(srctree)/include/asm-%/Kbuild,%,$(wildcard $(srctree)/include/asm-*/Kbuild))) | ||
925 | |||
926 | PHONY += headers_install_all | ||
927 | headers_install_all: include/linux/version.h scripts_basic FORCE | ||
928 | $(Q)$(MAKE) $(build)=scripts scripts/unifdef | ||
929 | $(Q)for arch in $(HDRARCHES); do \ | ||
930 | $(MAKE) ARCH=$$arch -f $(srctree)/scripts/Makefile.headersinst obj=include BIASMDIR=-bi-$$arch ;\ | ||
931 | done | ||
932 | |||
895 | PHONY += headers_install | 933 | PHONY += headers_install |
896 | headers_install: include/linux/version.h | 934 | headers_install: include/linux/version.h scripts_basic FORCE |
897 | $(Q)unifdef -Ux /dev/null | 935 | @if [ ! -r include/asm-$(ARCH)/Kbuild ]; then \ |
936 | echo '*** Error: Headers not exportable for this architecture ($(ARCH))'; \ | ||
937 | exit 1 ; fi | ||
938 | $(Q)$(MAKE) $(build)=scripts scripts/unifdef | ||
898 | $(Q)rm -rf $(INSTALL_HDR_PATH)/include | 939 | $(Q)rm -rf $(INSTALL_HDR_PATH)/include |
899 | $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.headersinst obj=include | 940 | $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.headersinst obj=include |
900 | 941 | ||
901 | PHONY += headers_check | 942 | PHONY += headers_check |
902 | headers_check: headers_install | 943 | headers_check: headers_install |
903 | $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.headersinst obj=include HDRCHECK=1 | 944 | $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.headersinst obj=include HDRCHECK=1 |
904 | 945 | ||
905 | # --------------------------------------------------------------------------- | 946 | # --------------------------------------------------------------------------- |
906 | # Modules | 947 | # Modules |
@@ -916,7 +957,7 @@ all: modules | |||
916 | PHONY += modules | 957 | PHONY += modules |
917 | modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) | 958 | modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) |
918 | @echo ' Building modules, stage 2.'; | 959 | @echo ' Building modules, stage 2.'; |
919 | $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost | 960 | $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost |
920 | 961 | ||
921 | 962 | ||
922 | # Target to prepare building external modules | 963 | # Target to prepare building external modules |
@@ -942,7 +983,7 @@ _modinst_: | |||
942 | rm -f $(MODLIB)/build ; \ | 983 | rm -f $(MODLIB)/build ; \ |
943 | ln -s $(objtree) $(MODLIB)/build ; \ | 984 | ln -s $(objtree) $(MODLIB)/build ; \ |
944 | fi | 985 | fi |
945 | $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modinst | 986 | $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst |
946 | 987 | ||
947 | # If System.map exists, run depmod. This deliberately does not have a | 988 | # If System.map exists, run depmod. This deliberately does not have a |
948 | # dependency on System.map since that would run the dependency tree on | 989 | # dependency on System.map since that would run the dependency tree on |
@@ -1057,8 +1098,10 @@ boards := $(notdir $(boards)) | |||
1057 | 1098 | ||
1058 | help: | 1099 | help: |
1059 | @echo 'Cleaning targets:' | 1100 | @echo 'Cleaning targets:' |
1060 | @echo ' clean - remove most generated files but keep the config' | 1101 | @echo ' clean - remove most generated files but keep the config and' |
1102 | @echo ' enough build support to build external modules' | ||
1061 | @echo ' mrproper - remove all generated files + config + various backup files' | 1103 | @echo ' mrproper - remove all generated files + config + various backup files' |
1104 | @echo ' distclean - mrproper + remove editor backup and patch files' | ||
1062 | @echo '' | 1105 | @echo '' |
1063 | @echo 'Configuration targets:' | 1106 | @echo 'Configuration targets:' |
1064 | @$(MAKE) -f $(srctree)/scripts/kconfig/Makefile help | 1107 | @$(MAKE) -f $(srctree)/scripts/kconfig/Makefile help |
@@ -1076,13 +1119,17 @@ help: | |||
1076 | @echo ' cscope - Generate cscope index' | 1119 | @echo ' cscope - Generate cscope index' |
1077 | @echo ' kernelrelease - Output the release version string' | 1120 | @echo ' kernelrelease - Output the release version string' |
1078 | @echo ' kernelversion - Output the version stored in Makefile' | 1121 | @echo ' kernelversion - Output the version stored in Makefile' |
1079 | @echo ' headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH' | 1122 | @if [ -r include/asm-$(ARCH)/Kbuild ]; then \ |
1123 | echo ' headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \ | ||
1124 | fi | ||
1080 | @echo ' (default: $(INSTALL_HDR_PATH))' | 1125 | @echo ' (default: $(INSTALL_HDR_PATH))' |
1081 | @echo '' | 1126 | @echo '' |
1082 | @echo 'Static analysers' | 1127 | @echo 'Static analysers' |
1083 | @echo ' checkstack - Generate a list of stack hogs' | 1128 | @echo ' checkstack - Generate a list of stack hogs' |
1084 | @echo ' namespacecheck - Name space analysis on compiled kernel' | 1129 | @echo ' namespacecheck - Name space analysis on compiled kernel' |
1085 | @echo ' headers_check - Sanity check on exported headers' | 1130 | @if [ -r include/asm-$(ARCH)/Kbuild ]; then \ |
1131 | echo ' headers_check - Sanity check on exported headers'; \ | ||
1132 | fi | ||
1086 | @echo '' | 1133 | @echo '' |
1087 | @echo 'Kernel packaging:' | 1134 | @echo 'Kernel packaging:' |
1088 | @$(MAKE) $(build)=$(package-dir) help | 1135 | @$(MAKE) $(build)=$(package-dir) help |
@@ -1100,6 +1147,7 @@ help: | |||
1100 | echo '') | 1147 | echo '') |
1101 | 1148 | ||
1102 | @echo ' make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build' | 1149 | @echo ' make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build' |
1150 | @echo ' make V=2 [targets] 2 => give reason for rebuild of target' | ||
1103 | @echo ' make O=dir [targets] Locate all output files in "dir", including .config' | 1151 | @echo ' make O=dir [targets] Locate all output files in "dir", including .config' |
1104 | @echo ' make C=1 [targets] Check all c source with $$CHECK (sparse by default)' | 1152 | @echo ' make C=1 [targets] Check all c source with $$CHECK (sparse by default)' |
1105 | @echo ' make C=2 [targets] Force check of all c source with $$CHECK' | 1153 | @echo ' make C=2 [targets] Force check of all c source with $$CHECK' |
@@ -1154,7 +1202,7 @@ $(module-dirs): crmodverdir $(objtree)/Module.symvers | |||
1154 | 1202 | ||
1155 | modules: $(module-dirs) | 1203 | modules: $(module-dirs) |
1156 | @echo ' Building modules, stage 2.'; | 1204 | @echo ' Building modules, stage 2.'; |
1157 | $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost | 1205 | $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost |
1158 | 1206 | ||
1159 | PHONY += modules_install | 1207 | PHONY += modules_install |
1160 | modules_install: _emodinst_ _emodinst_post | 1208 | modules_install: _emodinst_ _emodinst_post |
@@ -1163,7 +1211,7 @@ install-dir := $(if $(INSTALL_MOD_DIR),$(INSTALL_MOD_DIR),extra) | |||
1163 | PHONY += _emodinst_ | 1211 | PHONY += _emodinst_ |
1164 | _emodinst_: | 1212 | _emodinst_: |
1165 | $(Q)mkdir -p $(MODLIB)/$(install-dir) | 1213 | $(Q)mkdir -p $(MODLIB)/$(install-dir) |
1166 | $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modinst | 1214 | $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst |
1167 | 1215 | ||
1168 | # Run depmod only is we have System.map and depmod is executable | 1216 | # Run depmod only is we have System.map and depmod is executable |
1169 | quiet_cmd_depmod = DEPMOD $(KERNELRELEASE) | 1217 | quiet_cmd_depmod = DEPMOD $(KERNELRELEASE) |
@@ -1264,6 +1312,31 @@ define all-defconfigs | |||
1264 | $(call find-sources,'defconfig') | 1312 | $(call find-sources,'defconfig') |
1265 | endef | 1313 | endef |
1266 | 1314 | ||
1315 | define xtags | ||
1316 | if $1 --version 2>&1 | grep -iq exuberant; then \ | ||
1317 | $(all-sources) | xargs $1 -a \ | ||
1318 | -I __initdata,__exitdata,__acquires,__releases \ | ||
1319 | -I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL \ | ||
1320 | --extra=+f --c-kinds=+px; \ | ||
1321 | $(all-kconfigs) | xargs $1 -a \ | ||
1322 | --langdef=kconfig \ | ||
1323 | --language-force=kconfig \ | ||
1324 | --regex-kconfig='/^[[:blank:]]*config[[:blank:]]+([[:alnum:]_]+)/\1/'; \ | ||
1325 | $(all-defconfigs) | xargs $1 -a \ | ||
1326 | --langdef=dotconfig \ | ||
1327 | --language-force=dotconfig \ | ||
1328 | --regex-dotconfig='/^#?[[:blank:]]*(CONFIG_[[:alnum:]_]+)/\1/'; \ | ||
1329 | elif $1 --version 2>&1 | grep -iq emacs; then \ | ||
1330 | $(all-sources) | xargs $1 -a; \ | ||
1331 | $(all-kconfigs) | xargs $1 -a \ | ||
1332 | --regex='/^[ \t]*config[ \t]+\([a-zA-Z0-9_]+\)/\1/'; \ | ||
1333 | $(all-defconfigs) | xargs $1 -a \ | ||
1334 | --regex='/^#?[ \t]?\(CONFIG_[a-zA-Z0-9_]+\)/\1/'; \ | ||
1335 | else \ | ||
1336 | $(all-sources) | xargs $1 -a; \ | ||
1337 | fi | ||
1338 | endef | ||
1339 | |||
1267 | quiet_cmd_cscope-file = FILELST cscope.files | 1340 | quiet_cmd_cscope-file = FILELST cscope.files |
1268 | cmd_cscope-file = (echo \-k; echo \-q; $(all-sources)) > cscope.files | 1341 | cmd_cscope-file = (echo \-k; echo \-q; $(all-sources)) > cscope.files |
1269 | 1342 | ||
@@ -1277,31 +1350,16 @@ cscope: FORCE | |||
1277 | quiet_cmd_TAGS = MAKE $@ | 1350 | quiet_cmd_TAGS = MAKE $@ |
1278 | define cmd_TAGS | 1351 | define cmd_TAGS |
1279 | rm -f $@; \ | 1352 | rm -f $@; \ |
1280 | ETAGSF=`etags --version | grep -i exuberant >/dev/null && \ | 1353 | $(call xtags,etags) |
1281 | echo "-I __initdata,__exitdata,__acquires,__releases \ | ||
1282 | -I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL \ | ||
1283 | --extra=+f --c-kinds=+px"`; \ | ||
1284 | $(all-sources) | xargs etags $$ETAGSF -a; \ | ||
1285 | if test "x$$ETAGSF" = x; then \ | ||
1286 | $(all-kconfigs) | xargs etags -a \ | ||
1287 | --regex='/^config[ \t]+\([a-zA-Z0-9_]+\)/\1/'; \ | ||
1288 | $(all-defconfigs) | xargs etags -a \ | ||
1289 | --regex='/^#?[ \t]?\(CONFIG_[a-zA-Z0-9_]+\)/\1/'; \ | ||
1290 | fi | ||
1291 | endef | 1354 | endef |
1292 | 1355 | ||
1293 | TAGS: FORCE | 1356 | TAGS: FORCE |
1294 | $(call cmd,TAGS) | 1357 | $(call cmd,TAGS) |
1295 | 1358 | ||
1296 | |||
1297 | quiet_cmd_tags = MAKE $@ | 1359 | quiet_cmd_tags = MAKE $@ |
1298 | define cmd_tags | 1360 | define cmd_tags |
1299 | rm -f $@; \ | 1361 | rm -f $@; \ |
1300 | CTAGSF=`ctags --version | grep -i exuberant >/dev/null && \ | 1362 | $(call xtags,ctags) |
1301 | echo "-I __initdata,__exitdata,__acquires,__releases \ | ||
1302 | -I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL \ | ||
1303 | --extra=+f --c-kinds=+px"`; \ | ||
1304 | $(all-sources) | xargs ctags $$CTAGSF -a | ||
1305 | endef | 1363 | endef |
1306 | 1364 | ||
1307 | tags: FORCE | 1365 | tags: FORCE |
@@ -1379,7 +1437,7 @@ endif | |||
1379 | %.ko: prepare scripts FORCE | 1437 | %.ko: prepare scripts FORCE |
1380 | $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ | 1438 | $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ |
1381 | $(build)=$(build-dir) $(@:.ko=.o) | 1439 | $(build)=$(build-dir) $(@:.ko=.o) |
1382 | $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost | 1440 | $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost |
1383 | 1441 | ||
1384 | # FIXME Should go into a make.lib or something | 1442 | # FIXME Should go into a make.lib or something |
1385 | # =========================================================================== | 1443 | # =========================================================================== |