diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 197 |
1 files changed, 99 insertions, 98 deletions
@@ -95,7 +95,7 @@ ifdef O | |||
95 | endif | 95 | endif |
96 | 96 | ||
97 | # That's our default target when none is given on the command line | 97 | # That's our default target when none is given on the command line |
98 | .PHONY: _all | 98 | PHONY := _all |
99 | _all: | 99 | _all: |
100 | 100 | ||
101 | ifneq ($(KBUILD_OUTPUT),) | 101 | ifneq ($(KBUILD_OUTPUT),) |
@@ -106,7 +106,7 @@ KBUILD_OUTPUT := $(shell cd $(KBUILD_OUTPUT) && /bin/pwd) | |||
106 | $(if $(KBUILD_OUTPUT),, \ | 106 | $(if $(KBUILD_OUTPUT),, \ |
107 | $(error output directory "$(saved-output)" does not exist)) | 107 | $(error output directory "$(saved-output)" does not exist)) |
108 | 108 | ||
109 | .PHONY: $(MAKECMDGOALS) | 109 | PHONY += $(MAKECMDGOALS) |
110 | 110 | ||
111 | $(filter-out _all,$(MAKECMDGOALS)) _all: | 111 | $(filter-out _all,$(MAKECMDGOALS)) _all: |
112 | $(if $(KBUILD_VERBOSE:1=),@)$(MAKE) -C $(KBUILD_OUTPUT) \ | 112 | $(if $(KBUILD_VERBOSE:1=),@)$(MAKE) -C $(KBUILD_OUTPUT) \ |
@@ -123,7 +123,7 @@ ifeq ($(skip-makefile),) | |||
123 | 123 | ||
124 | # If building an external module we do not care about the all: rule | 124 | # If building an external module we do not care about the all: rule |
125 | # but instead _all depend on modules | 125 | # but instead _all depend on modules |
126 | .PHONY: all | 126 | PHONY += all |
127 | ifeq ($(KBUILD_EXTMOD),) | 127 | ifeq ($(KBUILD_EXTMOD),) |
128 | _all: all | 128 | _all: all |
129 | else | 129 | else |
@@ -137,7 +137,7 @@ objtree := $(CURDIR) | |||
137 | src := $(srctree) | 137 | src := $(srctree) |
138 | obj := $(objtree) | 138 | obj := $(objtree) |
139 | 139 | ||
140 | VPATH := $(srctree) | 140 | VPATH := $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD)) |
141 | 141 | ||
142 | export srctree objtree VPATH TOPDIR | 142 | export srctree objtree VPATH TOPDIR |
143 | 143 | ||
@@ -151,7 +151,7 @@ export srctree objtree VPATH TOPDIR | |||
151 | SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \ | 151 | SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \ |
152 | -e s/arm.*/arm/ -e s/sa110/arm/ \ | 152 | -e s/arm.*/arm/ -e s/sa110/arm/ \ |
153 | -e s/s390x/s390/ -e s/parisc64/parisc/ \ | 153 | -e s/s390x/s390/ -e s/parisc64/parisc/ \ |
154 | -e s/ppc.*/powerpc/ ) | 154 | -e s/ppc.*/powerpc/ -e s/mips.*/mips/ ) |
155 | 155 | ||
156 | # Cross compiling and selecting different set of gcc/bin-utils | 156 | # Cross compiling and selecting different set of gcc/bin-utils |
157 | # --------------------------------------------------------------------------- | 157 | # --------------------------------------------------------------------------- |
@@ -258,38 +258,6 @@ endif | |||
258 | 258 | ||
259 | export quiet Q KBUILD_VERBOSE | 259 | export quiet Q KBUILD_VERBOSE |
260 | 260 | ||
261 | ###### | ||
262 | # cc support functions to be used (only) in arch/$(ARCH)/Makefile | ||
263 | # See documentation in Documentation/kbuild/makefiles.txt | ||
264 | |||
265 | # as-option | ||
266 | # Usage: cflags-y += $(call as-option, -Wa$(comma)-isa=foo,) | ||
267 | |||
268 | as-option = $(shell if $(CC) $(CFLAGS) $(1) -Wa,-Z -c -o /dev/null \ | ||
269 | -xassembler /dev/null > /dev/null 2>&1; then echo "$(1)"; \ | ||
270 | else echo "$(2)"; fi ;) | ||
271 | |||
272 | # cc-option | ||
273 | # Usage: cflags-y += $(call cc-option, -march=winchip-c6, -march=i586) | ||
274 | |||
275 | cc-option = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \ | ||
276 | > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;) | ||
277 | |||
278 | # cc-option-yn | ||
279 | # Usage: flag := $(call cc-option-yn, -march=winchip-c6) | ||
280 | cc-option-yn = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \ | ||
281 | > /dev/null 2>&1; then echo "y"; else echo "n"; fi;) | ||
282 | |||
283 | # cc-option-align | ||
284 | # Prefix align with either -falign or -malign | ||
285 | cc-option-align = $(subst -functions=0,,\ | ||
286 | $(call cc-option,-falign-functions=0,-malign-functions=0)) | ||
287 | |||
288 | # cc-version | ||
289 | # Usage gcc-ver := $(call cc-version $(CC)) | ||
290 | cc-version = $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh \ | ||
291 | $(if $(1), $(1), $(CC))) | ||
292 | |||
293 | 261 | ||
294 | # Look for make include files relative to root of kernel src | 262 | # Look for make include files relative to root of kernel src |
295 | MAKEFLAGS += --include-dir=$(srctree) | 263 | MAKEFLAGS += --include-dir=$(srctree) |
@@ -369,14 +337,14 @@ export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn --exc | |||
369 | # Rules shared between *config targets and build targets | 337 | # Rules shared between *config targets and build targets |
370 | 338 | ||
371 | # Basic helpers built in scripts/ | 339 | # Basic helpers built in scripts/ |
372 | .PHONY: scripts_basic | 340 | PHONY += scripts_basic |
373 | scripts_basic: | 341 | scripts_basic: |
374 | $(Q)$(MAKE) $(build)=scripts/basic | 342 | $(Q)$(MAKE) $(build)=scripts/basic |
375 | 343 | ||
376 | # To avoid any implicit rule to kick in, define an empty command. | 344 | # To avoid any implicit rule to kick in, define an empty command. |
377 | scripts/basic/%: scripts_basic ; | 345 | scripts/basic/%: scripts_basic ; |
378 | 346 | ||
379 | .PHONY: outputmakefile | 347 | PHONY += outputmakefile |
380 | # outputmakefile generate a Makefile to be placed in output directory, if | 348 | # outputmakefile generate a Makefile to be placed in output directory, if |
381 | # using a seperate output directory. This allows convinient use | 349 | # using a seperate output directory. This allows convinient use |
382 | # of make in output directory | 350 | # of make in output directory |
@@ -452,7 +420,7 @@ ifeq ($(KBUILD_EXTMOD),) | |||
452 | # Additional helpers built in scripts/ | 420 | # Additional helpers built in scripts/ |
453 | # Carefully list dependencies so we do not try to build scripts twice | 421 | # Carefully list dependencies so we do not try to build scripts twice |
454 | # in parrallel | 422 | # in parrallel |
455 | .PHONY: scripts | 423 | PHONY += scripts |
456 | scripts: scripts_basic include/config/MARKER | 424 | scripts: scripts_basic include/config/MARKER |
457 | $(Q)$(MAKE) $(build)=$(@) | 425 | $(Q)$(MAKE) $(build)=$(@) |
458 | 426 | ||
@@ -504,13 +472,6 @@ else | |||
504 | CFLAGS += -O2 | 472 | CFLAGS += -O2 |
505 | endif | 473 | endif |
506 | 474 | ||
507 | #Add align options if CONFIG_CC_* is not equal to 0 | ||
508 | add-align = $(if $(filter-out 0,$($(1))),$(cc-option-align)$(2)=$($(1))) | ||
509 | CFLAGS += $(call add-align,CONFIG_CC_ALIGN_FUNCTIONS,-functions) | ||
510 | CFLAGS += $(call add-align,CONFIG_CC_ALIGN_LABELS,-labels) | ||
511 | CFLAGS += $(call add-align,CONFIG_CC_ALIGN_LOOPS,-loops) | ||
512 | CFLAGS += $(call add-align,CONFIG_CC_ALIGN_JUMPS,-jumps) | ||
513 | |||
514 | ifdef CONFIG_FRAME_POINTER | 475 | ifdef CONFIG_FRAME_POINTER |
515 | CFLAGS += -fno-omit-frame-pointer $(call cc-option,-fno-optimize-sibling-calls,) | 476 | CFLAGS += -fno-omit-frame-pointer $(call cc-option,-fno-optimize-sibling-calls,) |
516 | else | 477 | else |
@@ -756,7 +717,7 @@ $(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): $(vmlinux-dirs) ; | |||
756 | # make menuconfig etc. | 717 | # make menuconfig etc. |
757 | # Error messages still appears in the original language | 718 | # Error messages still appears in the original language |
758 | 719 | ||
759 | .PHONY: $(vmlinux-dirs) | 720 | PHONY += $(vmlinux-dirs) |
760 | $(vmlinux-dirs): prepare scripts | 721 | $(vmlinux-dirs): prepare scripts |
761 | $(Q)$(MAKE) $(build)=$@ | 722 | $(Q)$(MAKE) $(build)=$@ |
762 | 723 | ||
@@ -809,10 +770,10 @@ kernelrelease = $(KERNELVERSION)$(localver-full) | |||
809 | # version.h and scripts_basic is processed / created. | 770 | # version.h and scripts_basic is processed / created. |
810 | 771 | ||
811 | # Listed in dependency order | 772 | # Listed in dependency order |
812 | .PHONY: prepare archprepare prepare0 prepare1 prepare2 prepare3 | 773 | PHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3 |
813 | 774 | ||
814 | # prepare-all is deprecated, use prepare as valid replacement | 775 | # prepare-all is deprecated, use prepare as valid replacement |
815 | .PHONY: prepare-all | 776 | PHONY += prepare-all |
816 | 777 | ||
817 | # prepare3 is used to check if we are building in a separate output directory, | 778 | # prepare3 is used to check if we are building in a separate output directory, |
818 | # and if so do: | 779 | # and if so do: |
@@ -853,27 +814,6 @@ prepare prepare-all: prepare0 | |||
853 | 814 | ||
854 | export CPPFLAGS_vmlinux.lds += -P -C -U$(ARCH) | 815 | export CPPFLAGS_vmlinux.lds += -P -C -U$(ARCH) |
855 | 816 | ||
856 | # Single targets | ||
857 | # --------------------------------------------------------------------------- | ||
858 | |||
859 | %.s: %.c scripts FORCE | ||
860 | $(Q)$(MAKE) $(build)=$(@D) $@ | ||
861 | %.i: %.c scripts FORCE | ||
862 | $(Q)$(MAKE) $(build)=$(@D) $@ | ||
863 | %.o: %.c scripts FORCE | ||
864 | $(Q)$(MAKE) $(build)=$(@D) $@ | ||
865 | %.ko: scripts FORCE | ||
866 | $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) $(build)=$(@D) $(@:.ko=.o) | ||
867 | $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost | ||
868 | %/: scripts prepare FORCE | ||
869 | $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) $(build)=$(@D) | ||
870 | %.lst: %.c scripts FORCE | ||
871 | $(Q)$(MAKE) $(build)=$(@D) $@ | ||
872 | %.s: %.S scripts FORCE | ||
873 | $(Q)$(MAKE) $(build)=$(@D) $@ | ||
874 | %.o: %.S scripts FORCE | ||
875 | $(Q)$(MAKE) $(build)=$(@D) $@ | ||
876 | |||
877 | # FIXME: The asm symlink changes when $(ARCH) changes. That's | 817 | # FIXME: The asm symlink changes when $(ARCH) changes. That's |
878 | # hard to detect, but I suppose "make mrproper" is a good idea | 818 | # hard to detect, but I suppose "make mrproper" is a good idea |
879 | # before switching between archs anyway. | 819 | # before switching between archs anyway. |
@@ -914,7 +854,7 @@ include/linux/version.h: $(srctree)/Makefile .config .kernelrelease FORCE | |||
914 | 854 | ||
915 | # --------------------------------------------------------------------------- | 855 | # --------------------------------------------------------------------------- |
916 | 856 | ||
917 | .PHONY: depend dep | 857 | PHONY += depend dep |
918 | depend dep: | 858 | depend dep: |
919 | @echo '*** Warning: make $@ is unnecessary now.' | 859 | @echo '*** Warning: make $@ is unnecessary now.' |
920 | 860 | ||
@@ -929,21 +869,21 @@ all: modules | |||
929 | 869 | ||
930 | # Build modules | 870 | # Build modules |
931 | 871 | ||
932 | .PHONY: modules | 872 | PHONY += modules |
933 | modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) | 873 | modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) |
934 | @echo ' Building modules, stage 2.'; | 874 | @echo ' Building modules, stage 2.'; |
935 | $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost | 875 | $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost |
936 | 876 | ||
937 | 877 | ||
938 | # Target to prepare building external modules | 878 | # Target to prepare building external modules |
939 | .PHONY: modules_prepare | 879 | PHONY += modules_prepare |
940 | modules_prepare: prepare scripts | 880 | modules_prepare: prepare scripts |
941 | 881 | ||
942 | # Target to install modules | 882 | # Target to install modules |
943 | .PHONY: modules_install | 883 | PHONY += modules_install |
944 | modules_install: _modinst_ _modinst_post | 884 | modules_install: _modinst_ _modinst_post |
945 | 885 | ||
946 | .PHONY: _modinst_ | 886 | PHONY += _modinst_ |
947 | _modinst_: | 887 | _modinst_: |
948 | @if [ -z "`$(DEPMOD) -V 2>/dev/null | grep module-init-tools`" ]; then \ | 888 | @if [ -z "`$(DEPMOD) -V 2>/dev/null | grep module-init-tools`" ]; then \ |
949 | echo "Warning: you may need to install module-init-tools"; \ | 889 | echo "Warning: you may need to install module-init-tools"; \ |
@@ -970,7 +910,7 @@ depmod_opts := | |||
970 | else | 910 | else |
971 | depmod_opts := -b $(INSTALL_MOD_PATH) -r | 911 | depmod_opts := -b $(INSTALL_MOD_PATH) -r |
972 | endif | 912 | endif |
973 | .PHONY: _modinst_post | 913 | PHONY += _modinst_post |
974 | _modinst_post: _modinst_ | 914 | _modinst_post: _modinst_ |
975 | if [ -r System.map -a -x $(DEPMOD) ]; then $(DEPMOD) -ae -F System.map $(depmod_opts) $(KERNELRELEASE); fi | 915 | if [ -r System.map -a -x $(DEPMOD) ]; then $(DEPMOD) -ae -F System.map $(depmod_opts) $(KERNELRELEASE); fi |
976 | 916 | ||
@@ -1013,7 +953,7 @@ clean: rm-dirs := $(CLEAN_DIRS) | |||
1013 | clean: rm-files := $(CLEAN_FILES) | 953 | clean: rm-files := $(CLEAN_FILES) |
1014 | clean-dirs := $(addprefix _clean_,$(srctree) $(vmlinux-alldirs)) | 954 | clean-dirs := $(addprefix _clean_,$(srctree) $(vmlinux-alldirs)) |
1015 | 955 | ||
1016 | .PHONY: $(clean-dirs) clean archclean | 956 | PHONY += $(clean-dirs) clean archclean |
1017 | $(clean-dirs): | 957 | $(clean-dirs): |
1018 | $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@) | 958 | $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@) |
1019 | 959 | ||
@@ -1031,7 +971,7 @@ mrproper: rm-dirs := $(wildcard $(MRPROPER_DIRS)) | |||
1031 | mrproper: rm-files := $(wildcard $(MRPROPER_FILES)) | 971 | mrproper: rm-files := $(wildcard $(MRPROPER_FILES)) |
1032 | mrproper-dirs := $(addprefix _mrproper_,Documentation/DocBook scripts) | 972 | mrproper-dirs := $(addprefix _mrproper_,Documentation/DocBook scripts) |
1033 | 973 | ||
1034 | .PHONY: $(mrproper-dirs) mrproper archmrproper | 974 | PHONY += $(mrproper-dirs) mrproper archmrproper |
1035 | $(mrproper-dirs): | 975 | $(mrproper-dirs): |
1036 | $(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@) | 976 | $(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@) |
1037 | 977 | ||
@@ -1041,7 +981,7 @@ mrproper: clean archmrproper $(mrproper-dirs) | |||
1041 | 981 | ||
1042 | # distclean | 982 | # distclean |
1043 | # | 983 | # |
1044 | .PHONY: distclean | 984 | PHONY += distclean |
1045 | 985 | ||
1046 | distclean: mrproper | 986 | distclean: mrproper |
1047 | @find $(srctree) $(RCS_FIND_IGNORE) \ | 987 | @find $(srctree) $(RCS_FIND_IGNORE) \ |
@@ -1057,12 +997,10 @@ distclean: mrproper | |||
1057 | # rpm target kept for backward compatibility | 997 | # rpm target kept for backward compatibility |
1058 | package-dir := $(srctree)/scripts/package | 998 | package-dir := $(srctree)/scripts/package |
1059 | 999 | ||
1060 | .PHONY: %-pkg rpm | ||
1061 | |||
1062 | %pkg: FORCE | 1000 | %pkg: FORCE |
1063 | $(Q)$(MAKE) -f $(package-dir)/Makefile $@ | 1001 | $(Q)$(MAKE) $(build)=$(package-dir) $@ |
1064 | rpm: FORCE | 1002 | rpm: FORCE |
1065 | $(Q)$(MAKE) -f $(package-dir)/Makefile $@ | 1003 | $(Q)$(MAKE) $(build)=$(package-dir) $@ |
1066 | 1004 | ||
1067 | 1005 | ||
1068 | # Brief documentation of the typical targets used | 1006 | # Brief documentation of the typical targets used |
@@ -1094,13 +1032,11 @@ help: | |||
1094 | @echo ' kernelversion - Output the version stored in Makefile' | 1032 | @echo ' kernelversion - Output the version stored in Makefile' |
1095 | @echo '' | 1033 | @echo '' |
1096 | @echo 'Static analysers' | 1034 | @echo 'Static analysers' |
1097 | @echo ' buildcheck - List dangling references to vmlinux discarded sections' | ||
1098 | @echo ' and init sections from non-init sections' | ||
1099 | @echo ' checkstack - Generate a list of stack hogs' | 1035 | @echo ' checkstack - Generate a list of stack hogs' |
1100 | @echo ' namespacecheck - Name space analysis on compiled kernel' | 1036 | @echo ' namespacecheck - Name space analysis on compiled kernel' |
1101 | @echo '' | 1037 | @echo '' |
1102 | @echo 'Kernel packaging:' | 1038 | @echo 'Kernel packaging:' |
1103 | @$(MAKE) -f $(package-dir)/Makefile help | 1039 | @$(MAKE) $(build)=$(package-dir) help |
1104 | @echo '' | 1040 | @echo '' |
1105 | @echo 'Documentation targets:' | 1041 | @echo 'Documentation targets:' |
1106 | @$(MAKE) -f $(srctree)/Documentation/DocBook/Makefile dochelp | 1042 | @$(MAKE) -f $(srctree)/Documentation/DocBook/Makefile dochelp |
@@ -1149,11 +1085,12 @@ else # KBUILD_EXTMOD | |||
1149 | 1085 | ||
1150 | # We are always building modules | 1086 | # We are always building modules |
1151 | KBUILD_MODULES := 1 | 1087 | KBUILD_MODULES := 1 |
1152 | .PHONY: crmodverdir | 1088 | PHONY += crmodverdir |
1153 | crmodverdir: | 1089 | crmodverdir: |
1090 | $(Q)rm -rf $(MODVERDIR) | ||
1154 | $(Q)mkdir -p $(MODVERDIR) | 1091 | $(Q)mkdir -p $(MODVERDIR) |
1155 | 1092 | ||
1156 | .PHONY: $(objtree)/Module.symvers | 1093 | PHONY += $(objtree)/Module.symvers |
1157 | $(objtree)/Module.symvers: | 1094 | $(objtree)/Module.symvers: |
1158 | @test -e $(objtree)/Module.symvers || ( \ | 1095 | @test -e $(objtree)/Module.symvers || ( \ |
1159 | echo; \ | 1096 | echo; \ |
@@ -1162,7 +1099,7 @@ $(objtree)/Module.symvers: | |||
1162 | echo ) | 1099 | echo ) |
1163 | 1100 | ||
1164 | module-dirs := $(addprefix _module_,$(KBUILD_EXTMOD)) | 1101 | module-dirs := $(addprefix _module_,$(KBUILD_EXTMOD)) |
1165 | .PHONY: $(module-dirs) modules | 1102 | PHONY += $(module-dirs) modules |
1166 | $(module-dirs): crmodverdir $(objtree)/Module.symvers | 1103 | $(module-dirs): crmodverdir $(objtree)/Module.symvers |
1167 | $(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@) | 1104 | $(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@) |
1168 | 1105 | ||
@@ -1170,13 +1107,32 @@ modules: $(module-dirs) | |||
1170 | @echo ' Building modules, stage 2.'; | 1107 | @echo ' Building modules, stage 2.'; |
1171 | $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost | 1108 | $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost |
1172 | 1109 | ||
1173 | .PHONY: modules_install | 1110 | PHONY += modules_install |
1174 | modules_install: | 1111 | modules_install: _emodinst_ _emodinst_post |
1112 | |||
1113 | install-dir := $(if $(INSTALL_MOD_DIR),$(INSTALL_MOD_DIR),extra) | ||
1114 | PHONY += _emodinst_ | ||
1115 | _emodinst_: | ||
1116 | $(Q)rm -rf $(MODLIB)/$(install-dir) | ||
1117 | $(Q)mkdir -p $(MODLIB)/$(install-dir) | ||
1175 | $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modinst | 1118 | $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modinst |
1176 | 1119 | ||
1120 | # Run depmod only is we have System.map and depmod is executable | ||
1121 | quiet_cmd_depmod = DEPMOD $(KERNELRELEASE) | ||
1122 | cmd_depmod = if [ -r System.map -a -x $(DEPMOD) ]; then \ | ||
1123 | $(DEPMOD) -ae -F System.map \ | ||
1124 | $(if $(strip $(INSTALL_MOD_PATH)), \ | ||
1125 | -b $(INSTALL_MOD_PATH) -r) \ | ||
1126 | $(KERNELRELEASE); \ | ||
1127 | fi | ||
1128 | |||
1129 | PHONY += _emodinst_post | ||
1130 | _emodinst_post: _emodinst_ | ||
1131 | $(call cmd,depmod) | ||
1132 | |||
1177 | clean-dirs := $(addprefix _clean_,$(KBUILD_EXTMOD)) | 1133 | clean-dirs := $(addprefix _clean_,$(KBUILD_EXTMOD)) |
1178 | 1134 | ||
1179 | .PHONY: $(clean-dirs) clean | 1135 | PHONY += $(clean-dirs) clean |
1180 | $(clean-dirs): | 1136 | $(clean-dirs): |
1181 | $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@) | 1137 | $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@) |
1182 | 1138 | ||
@@ -1196,6 +1152,11 @@ help: | |||
1196 | @echo ' modules_install - install the module' | 1152 | @echo ' modules_install - install the module' |
1197 | @echo ' clean - remove generated files in module directory only' | 1153 | @echo ' clean - remove generated files in module directory only' |
1198 | @echo '' | 1154 | @echo '' |
1155 | |||
1156 | # Dummies... | ||
1157 | PHONY += prepare scripts | ||
1158 | prepare: ; | ||
1159 | scripts: ; | ||
1199 | endif # KBUILD_EXTMOD | 1160 | endif # KBUILD_EXTMOD |
1200 | 1161 | ||
1201 | # Generate tags for editors | 1162 | # Generate tags for editors |
@@ -1296,17 +1257,13 @@ versioncheck: | |||
1296 | -name '*.[hcS]' -type f -print | sort \ | 1257 | -name '*.[hcS]' -type f -print | sort \ |
1297 | | xargs $(PERL) -w scripts/checkversion.pl | 1258 | | xargs $(PERL) -w scripts/checkversion.pl |
1298 | 1259 | ||
1299 | buildcheck: | ||
1300 | $(PERL) $(srctree)/scripts/reference_discarded.pl | ||
1301 | $(PERL) $(srctree)/scripts/reference_init.pl | ||
1302 | |||
1303 | namespacecheck: | 1260 | namespacecheck: |
1304 | $(PERL) $(srctree)/scripts/namespace.pl | 1261 | $(PERL) $(srctree)/scripts/namespace.pl |
1305 | 1262 | ||
1306 | endif #ifeq ($(config-targets),1) | 1263 | endif #ifeq ($(config-targets),1) |
1307 | endif #ifeq ($(mixed-targets),1) | 1264 | endif #ifeq ($(mixed-targets),1) |
1308 | 1265 | ||
1309 | .PHONY: checkstack | 1266 | PHONY += checkstack |
1310 | checkstack: | 1267 | checkstack: |
1311 | $(OBJDUMP) -d vmlinux $$(find . -name '*.ko') | \ | 1268 | $(OBJDUMP) -d vmlinux $$(find . -name '*.ko') | \ |
1312 | $(PERL) $(src)/scripts/checkstack.pl $(ARCH) | 1269 | $(PERL) $(src)/scripts/checkstack.pl $(ARCH) |
@@ -1317,6 +1274,44 @@ kernelrelease: | |||
1317 | kernelversion: | 1274 | kernelversion: |
1318 | @echo $(KERNELVERSION) | 1275 | @echo $(KERNELVERSION) |
1319 | 1276 | ||
1277 | # Single targets | ||
1278 | # --------------------------------------------------------------------------- | ||
1279 | # The directory part is taken from first prerequisite, so this | ||
1280 | # works even with external modules | ||
1281 | %.s: %.c prepare scripts FORCE | ||
1282 | $(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@) | ||
1283 | %.i: %.c prepare scripts FORCE | ||
1284 | $(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@) | ||
1285 | %.o: %.c prepare scripts FORCE | ||
1286 | $(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@) | ||
1287 | %.lst: %.c prepare scripts FORCE | ||
1288 | $(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@) | ||
1289 | %.s: %.S prepare scripts FORCE | ||
1290 | $(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@) | ||
1291 | %.o: %.S prepare scripts FORCE | ||
1292 | $(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@) | ||
1293 | |||
1294 | # For external modules we shall include any directory of the target, | ||
1295 | # but usual case there is no directory part. | ||
1296 | # make M=`pwd` module.o => $(dir $@)=./ | ||
1297 | # make M=`pwd` foo/module.o => $(dir $@)=foo/ | ||
1298 | # make M=`pwd` / => $(dir $@)=/ | ||
1299 | |||
1300 | ifeq ($(KBUILD_EXTMOD),) | ||
1301 | target-dir = $(@D) | ||
1302 | else | ||
1303 | zap-slash=$(filter-out .,$(patsubst %/,%,$(dir $@))) | ||
1304 | target-dir = $(KBUILD_EXTMOD)$(if $(zap-slash),/$(zap-slash)) | ||
1305 | endif | ||
1306 | |||
1307 | / %/: scripts prepare FORCE | ||
1308 | $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ | ||
1309 | $(build)=$(target-dir) | ||
1310 | %.ko: scripts FORCE | ||
1311 | $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ | ||
1312 | $(build)=$(target-dir) $(@:.ko=.o) | ||
1313 | $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost | ||
1314 | |||
1320 | # FIXME Should go into a make.lib or something | 1315 | # FIXME Should go into a make.lib or something |
1321 | # =========================================================================== | 1316 | # =========================================================================== |
1322 | 1317 | ||
@@ -1351,4 +1346,10 @@ clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj | |||
1351 | 1346 | ||
1352 | endif # skip-makefile | 1347 | endif # skip-makefile |
1353 | 1348 | ||
1349 | PHONY += FORCE | ||
1354 | FORCE: | 1350 | FORCE: |
1351 | |||
1352 | |||
1353 | # Declare the contents of the .PHONY variable as phony. We keep that | ||
1354 | # information in a variable se we can use it in if_changed and friends. | ||
1355 | .PHONY: $(PHONY) | ||