X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=scripts%2FMakefile.build;h=db38ef465a632dfd268826fc532a1a281773923b;hb=d84876f9f8042d5536050b83674c4f348ca3c4df;hp=7fd6055bedfddc6a6687f1ccc3cced4cab8c3d34;hpb=973ed7c49a5c2271a10ce54ac06bba5617fca3a8;p=powerpc.git diff --git a/scripts/Makefile.build b/scripts/Makefile.build index 7fd6055bed..db38ef465a 100644 --- a/scripts/Makefile.build +++ b/scripts/Makefile.build @@ -22,16 +22,30 @@ EXTRA_AFLAGS := EXTRA_CFLAGS := EXTRA_CPPFLAGS := EXTRA_LDFLAGS := +asflags-y := +ccflags-y := +cppflags-y := +ldflags-y := # Read .config if it exist, otherwise ignore -include include/config/auto.conf include scripts/Kbuild.include +# For backward compatibility check that these variables does not change +save-cflags := $(CFLAGS) + # The filename Kbuild has precedence over Makefile kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src)) -include $(if $(wildcard $(kbuild-dir)/Kbuild), $(kbuild-dir)/Kbuild, $(kbuild-dir)/Makefile) - +kbuild-file := $(if $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Kbuild,$(kbuild-dir)/Makefile) +include $(kbuild-file) + +# If the save-* variables changed error out +ifeq ($(KBUILD_NOPEDANTIC),) + ifneq ("$(save-cflags)","$(CFLAGS)") + $(error CFLAGS was changed in "$(kbuild-file)". Fix it to use EXTRA_CFLAGS) + endif +endif include scripts/Makefile.lib ifdef host-progs @@ -55,31 +69,6 @@ _dummy := $(shell [ -d $(obj) ] || mkdir -p $(obj)) _dummy := $(foreach d,$(obj-dirs), $(shell [ -d $(d) ] || mkdir -p $(d))) endif - -ifdef EXTRA_TARGETS -$(warning kbuild: $(obj)/Makefile - Usage of EXTRA_TARGETS is obsolete in 2.6. Please fix!) -endif - -ifdef build-targets -$(warning kbuild: $(obj)/Makefile - Usage of build-targets is obsolete in 2.6. Please fix!) -endif - -ifdef export-objs -$(warning kbuild: $(obj)/Makefile - Usage of export-objs is obsolete in 2.6. Please fix!) -endif - -ifdef O_TARGET -$(warning kbuild: $(obj)/Makefile - Usage of O_TARGET := $(O_TARGET) is obsolete in 2.6. Please fix!) -endif - -ifdef L_TARGET -$(error kbuild: $(obj)/Makefile - Use of L_TARGET is replaced by lib-y in 2.6. Please fix!) -endif - -ifdef list-multi -$(warning kbuild: $(obj)/Makefile - list-multi := $(list-multi) is obsolete in 2.6. Please fix!) -endif - ifndef obj $(warning kbuild: Makefile.build is included improperly) endif @@ -94,10 +83,12 @@ ifneq ($(strip $(obj-y) $(obj-m) $(obj-n) $(obj-) $(lib-target)),) builtin-target := $(obj)/built-in.o endif +modorder-target := $(obj)/modules.order + # We keep a list of all modules in $(MODVERDIR) __build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target) $(extra-y)) \ - $(if $(KBUILD_MODULES),$(obj-m)) \ + $(if $(KBUILD_MODULES),$(obj-m) $(modorder-target)) \ $(subdir-ym) $(always) @: @@ -286,12 +277,25 @@ $(builtin-target): $(obj-y) FORCE targets += $(builtin-target) endif # builtin-target +# +# Rule to create modules.order file +# +# Create commands to either record .ko file or cat modules.order from +# a subdirectory +modorder-cmds = \ + $(foreach m, $(modorder), \ + $(if $(filter %/modules.order, $m), \ + cat $m;, echo kernel/$m;)) + +$(modorder-target): $(subdir-ym) FORCE + $(Q)(cat /dev/null; $(modorder-cmds)) > $@ + # # Rule to compile a set of .o files into one .a file # ifdef lib-target quiet_cmd_link_l_target = AR $@ -cmd_link_l_target = rm -f $@; $(AR) $(EXTRA_ARFLAGS) rcs $@ $(lib-y) +cmd_link_l_target = rm -f $@; $(AR) rcs $@ $(lib-y) $(lib-target): $(lib-y) FORCE $(call if_changed,link_l_target)