Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.6.24-rc4 /Makefile

Filename:/Makefile
Lines Added:126
Lines Deleted:74
Also changed in: (Previous) 2.6.24-rc3-git7  2.6.24-rc3-git6  2.6.24-rc3-git5  2.6.24-rc3-git4  2.6.24-rc3-git3  2.6.24-rc3-git2 
(Following) 2.6.24-rc4-git1  2.6.24-rc4-git2  2.6.24-rc4-git3  2.6.24-rc4-git4  2.6.24-rc4-git5  2.6.24-rc4-git6 

Location
[  2.6.24-rc4
   o  Makefile

Patch

diff --git a/Makefile b/Makefile
index 4635a64..92dc3cb 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 6
-SUBLEVEL = 23
-EXTRAVERSION =
+SUBLEVEL = 24
+EXTRAVERSION = -rc4
 NAME = Arr Matey! A Hairy Bilge Rat!
 
 # *DOCUMENTATION*
@@ -115,13 +115,20 @@ saved-output := $(KBUILD_OUTPUT)
 KBUILD_OUTPUT := $(shell cd $(KBUILD_OUTPUT) && /bin/pwd)
 $(if $(KBUILD_OUTPUT),, \
      $(error output directory "$(saved-output)" does not exist))
+# Check that OUTPUT directory is not the same as where we have kernel src
+$(if $(filter-out $(KBUILD_OUTPUT),$(shell /bin/pwd)),, \
+     $(error Output directory (O=...) specifies kernel src dir))
 
-PHONY += $(MAKECMDGOALS)
+PHONY += $(MAKECMDGOALS) sub-make
 
-$(filter-out _all,$(MAKECMDGOALS)) _all:
+$(filter-out _all sub-make,$(MAKECMDGOALS)) _all: sub-make
+   $(Q)@:
+
+sub-make: FORCE
    $(if $(KBUILD_VERBOSE:1=),@)$(MAKE) -C $(KBUILD_OUTPUT) \
    KBUILD_SRC=$(CURDIR) \
-   KBUILD_EXTMOD="$(KBUILD_EXTMOD)" -f $(CURDIR)/Makefile $@
+   KBUILD_EXTMOD="$(KBUILD_EXTMOD)" -f $(CURDIR)/Makefile \
+   $(filter-out _all sub-make,$(MAKECMDGOALS))
 
 # Leave processing to above invocation of make
 skip-makefile := 1
@@ -161,7 +168,8 @@ export srctree objtree VPATH TOPDIR
 SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
               -e s/arm.*/arm/ -e s/sa110/arm/ \
               -e s/s390x/s390/ -e s/parisc64/parisc/ \
-              -e s/ppc.*/powerpc/ -e s/mips.*/mips/ )
+              -e s/ppc.*/powerpc/ -e s/mips.*/mips/ \
+              -e s/sh[234].*/sh/ )
 
 # Cross compiling and selecting different set of gcc/bin-utils
 # ---------------------------------------------------------------------------
@@ -186,7 +194,16 @@ ARCH      ?= $(SUBARCH)
 CROSS_COMPILE   ?=
 
 # Architecture as present in compile.h
-UTS_MACHINE := $(ARCH)
+UTS_MACHINE    := $(ARCH)
+SRCARCH    := $(ARCH)
+
+# Additional ARCH settings for x86
+ifeq ($(ARCH),i386)
+        SRCARCH := x86
+endif
+ifeq ($(ARCH),x86_64)
+        SRCARCH := x86
+endif
 
 KCONFIG_CONFIG   ?= .config
 
@@ -310,25 +327,25 @@ LINUXINCLUDE    := -Iinclude \
                    $(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
          -include include/linux/autoconf.h
 
-CPPFLAGS        := -D__KERNEL__ $(LINUXINCLUDE)
+KBUILD_CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE)
 
-CFLAGS          := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
+KBUILD_CFLAGS   := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
          -fno-strict-aliasing -fno-common \
          -Werror-implicit-function-declaration
-AFLAGS          := -D__ASSEMBLY__
+KBUILD_AFLAGS   := -D__ASSEMBLY__
 
 # Read KERNELRELEASE from include/config/kernel.release (if it exists)
 KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)
 KERNELVERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 
 export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION
-export ARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC
+export ARCH SRCARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC
 export CPP AR NM STRIP OBJCOPY OBJDUMP MAKE AWK GENKSYMS PERL UTS_MACHINE
 export HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS
 
-export CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS
-export CFLAGS CFLAGS_KERNEL CFLAGS_MODULE
-export AFLAGS AFLAGS_KERNEL AFLAGS_MODULE
+export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS
+export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE
+export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE
 
 # When compiling out-of-tree modules, put MODVERDIR in the module
 # tree rather than in the kernel tree. The kernel tree might
@@ -410,7 +427,7 @@ ifeq ($(config-targets),1)
 # Read arch specific Makefile to set KBUILD_DEFCONFIG as needed.
 # KBUILD_DEFCONFIG may point out an alternative default configuration
 # used for 'make defconfig'
-include $(srctree)/arch/$(ARCH)/Makefile
+include $(srctree)/arch/$(SRCARCH)/Makefile
 export KBUILD_DEFCONFIG
 
 config %config: scripts_basic outputmakefile FORCE
@@ -484,35 +501,54 @@ endif # $(dot-config)
 all: vmlinux
 
 ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
-CFLAGS      += -Os
+KBUILD_CFLAGS   += -Os
 else
-CFLAGS      += -O2
+KBUILD_CFLAGS   += -O2
 endif
 
-include $(srctree)/arch/$(ARCH)/Makefile
+include $(srctree)/arch/$(SRCARCH)/Makefile
 
 ifdef CONFIG_FRAME_POINTER
-CFLAGS      += -fno-omit-frame-pointer -fno-optimize-sibling-calls
+KBUILD_CFLAGS   += -fno-omit-frame-pointer -fno-optimize-sibling-calls
 else
-CFLAGS      += -fomit-frame-pointer
+KBUILD_CFLAGS   += -fomit-frame-pointer
 endif
 
 ifdef CONFIG_DEBUG_INFO
-CFLAGS      += -g
+KBUILD_CFLAGS   += -g
+KBUILD_AFLAGS   += -gdwarf-2
 endif
 
 # Force gcc to behave correct even for buggy distributions
-CFLAGS          += $(call cc-option, -fno-stack-protector)
+KBUILD_CFLAGS         += $(call cc-option, -fno-stack-protector)
 
 # arch Makefile may override CC so keep this after arch Makefile is included
 NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
 CHECKFLAGS     += $(NOSTDINC_FLAGS)
 
 # warn about C99 declaration after statement
-CFLAGS += $(call cc-option,-Wdeclaration-after-statement,)
+KBUILD_CFLAGS += $(call cc-option,-Wdeclaration-after-statement,)
 
 # disable pointer signed / unsigned warnings in gcc 4.0
-CFLAGS += $(call cc-option,-Wno-pointer-sign,)
+KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,)
+
+# Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments
+# But warn user when we do so
+warn-assign = \
+$(warning "WARNING: Appending $$K$(1) ($(K$(1))) from $(origin K$(1)) to kernel $$$(1)")
+
+ifneq ($(KCPPFLAGS),)
+        $(call warn-assign,CPPFLAGS)
+        KBUILD_CPPFLAGS += $(KCPPFLAGS)
+endif
+ifneq ($(KAFLAGS),)
+        $(call warn-assign,AFLAGS)
+        KBUILD_AFLAGS += $(KAFLAGS)
+endif
+ifneq ($(KCFLAGS),)
+        $(call warn-assign,CFLAGS)
+        KBUILD_CFLAGS += $(KCFLAGS)
+endif
 
 # Use --build-id when available.
 LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
@@ -609,7 +645,7 @@ libs-y      := $(libs-y1) $(libs-y2)
 vmlinux-init := $(head-y) $(init-y)
 vmlinux-main := $(core-y) $(libs-y) $(drivers-y) $(net-y)
 vmlinux-all  := $(vmlinux-init) $(vmlinux-main)
-vmlinux-lds  := arch/$(ARCH)/kernel/vmlinux.lds
+vmlinux-lds  := arch/$(SRCARCH)/kernel/vmlinux.lds
 export KBUILD_VMLINUX_OBJS := $(vmlinux-all)
 
 # Rule to link vmlinux - also used during CONFIG_KALLSYMS
@@ -760,6 +796,9 @@ vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) $(kallsyms.o) vmlinux.o
 ifdef CONFIG_HEADERS_CHECK
    $(Q)$(MAKE) -f $(srctree)/Makefile headers_check
 endif
+ifdef CONFIG_SAMPLES
+   $(Q)$(MAKE) $(build)=samples
+endif
    $(call vmlinux-modpost)
    $(call if_changed_rule,vmlinux__)
    $(Q)rm -f .old_version
@@ -862,7 +901,7 @@ ifneq ($(KBUILD_SRC),)
       /bin/false; \
    fi;
    $(Q)if [ ! -d include2 ]; then mkdir -p include2; fi;
-   $(Q)ln -fsn $(srctree)/include/asm-$(ARCH) include2/asm
+   $(Q)ln -fsn $(srctree)/include/asm-$(SRCARCH) include2/asm
 endif
 
 # prepare2 creates a makefile if using a separate output directory
@@ -870,10 +909,7 @@ prepare2: prepare3 outputmakefile
 
 prepare1: prepare2 include/linux/version.h include/linux/utsrelease.h \
                    include/asm include/config/auto.conf
-ifneq ($(KBUILD_MODULES),)
-   $(Q)mkdir -p $(MODVERDIR)
-   $(Q)rm -f $(MODVERDIR)/*
-endif
+   $(cmd_crmodverdir)
 
 archprepare: prepare1 scripts_basic
 
@@ -889,14 +925,24 @@ prepare: prepare0
 
 export CPPFLAGS_vmlinux.lds += -P -C -U$(ARCH)
 
-# FIXME: The asm symlink changes when $(ARCH) changes. That's
-# hard to detect, but I suppose "make mrproper" is a good idea
-# before switching between archs anyway.
-
-include/asm:
-   @echo '  SYMLINK $@ -> include/asm-$(ARCH)'
-   $(Q)if [ ! -d include ]; then mkdir -p include; fi;
-   @ln -fsn asm-$(ARCH) $@
+# The asm symlink changes when $(ARCH) changes.
+# Detect this and ask user to run make mrproper
+
+include/asm: FORCE
+   $(Q)set -e; asmlink=`readlink include/asm | cut -d '-' -f 2`;   \
+   if [ -L include/asm ]; then                                     \
+      if [ "$$asmlink" != "$(SRCARCH)" ]; then                \
+         echo "ERROR: the symlink $@ points to asm-$$asmlink but asm-$(SRCARCH) was expected"; \
+         echo "       set ARCH or save .config and run 'make mrproper' to fix it";             \
+         exit 1;                                         \
+      fi;                                                     \
+   else                                                            \
+      echo '  SYMLINK $@ -> include/asm-$(SRCARCH)';          \
+      if [ ! -d include ]; then                               \
+         mkdir -p include;                               \
+      fi;                                                     \
+      ln -fsn asm-$(SRCARCH) $@;                              \
+   fi
 
 # Generate some files
 # ---------------------------------------------------------------------------
@@ -936,7 +982,8 @@ depend dep:
 INSTALL_HDR_PATH=$(objtree)/usr
 export INSTALL_HDR_PATH
 
-HDRARCHES=$(filter-out generic,$(patsubst $(srctree)/include/asm-%/Kbuild,%,$(wildcard $(srctree)/include/asm-*/Kbuild)))
+HDRFILTER=generic i386 x86_64
+HDRARCHES=$(filter-out $(HDRFILTER),$(patsubst $(srctree)/include/asm-%/Kbuild,%,$(wildcard $(srctree)/include/asm-*/Kbuild)))
 
 PHONY += headers_install_all
 headers_install_all: include/linux/version.h scripts_basic FORCE
@@ -947,11 +994,11 @@ headers_install_all: include/linux/version.h scripts_basic FORCE
 
 PHONY += headers_install
 headers_install: include/linux/version.h scripts_basic FORCE
-   @if [ ! -r $(srctree)/include/asm-$(ARCH)/Kbuild ]; then \
-     echo '*** Error: Headers not exportable for this architecture ($(ARCH))'; \
+   @if [ ! -r $(srctree)/include/asm-$(SRCARCH)/Kbuild ]; then \
+     echo '*** Error: Headers not exportable for this architecture ($(SRCARCH))'; \
      exit 1 ; fi
    $(Q)$(MAKE) $(build)=scripts scripts/unifdef
-   $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.headersinst obj=include
+   $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.headersinst ARCH=$(SRCARCH) obj=include
 
 PHONY += headers_check_all
 headers_check_all: headers_install_all
@@ -961,7 +1008,7 @@ headers_check_all: headers_install_all
 
 PHONY += headers_check
 headers_check: headers_install
-   $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.headersinst obj=include HDRCHECK=1
+   $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.headersinst ARCH=$(SRCARCH) obj=include HDRCHECK=1
 
 # ---------------------------------------------------------------------------
 # Modules
@@ -1005,19 +1052,12 @@ _modinst_:
    fi
    $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
 
-# If System.map exists, run depmod.  This deliberately does not have a
-# dependency on System.map since that would run the dependency tree on
-# vmlinux.  This depmod is only for convenience to give the initial
+# This depmod is only for convenience to give the initial
 # boot a modules.dep even before / is mounted read-write.  However the
 # boot script depmod is the master version.
-ifeq "$(strip $(INSTALL_MOD_PATH))" ""
-depmod_opts   :=
-else
-depmod_opts   := -b $(INSTALL_MOD_PATH) -r
-endif
 PHONY += _modinst_post
 _modinst_post: _modinst_
-   if [ -r System.map -a -x $(DEPMOD) ]; then $(DEPMOD) -ae -F System.map $(depmod_opts) $(KERNELRELEASE); fi
+   $(call cmd,depmod)
 
 else # CONFIG_MODULES
 
@@ -1139,7 +1179,7 @@ help:
    @echo  '  cscope     - Generate cscope index'
    @echo  '  kernelrelease     - Output the release version string'
    @echo  '  kernelversion     - Output the version stored in Makefile'
-   @if [ -r $(srctree)/include/asm-$(ARCH)/Kbuild ]; then \
+   @if [ -r $(srctree)/include/asm-$(SRCARCH)/Kbuild ]; then \
     echo  '  headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \
     echo  '                    (default: $(INSTALL_HDR_PATH))'; \
     fi
@@ -1147,7 +1187,8 @@ help:
    @echo  'Static analysers'
    @echo  '  checkstack      - Generate a list of stack hogs'
    @echo  '  namespacecheck  - Name space analysis on compiled kernel'
-   @if [ -r $(srctree)/include/asm-$(ARCH)/Kbuild ]; then \
+   @echo  '  export_report   - List the usages of all exported symbols'
+   @if [ -r $(srctree)/include/asm-$(SRCARCH)/Kbuild ]; then \
     echo  '  headers_check   - Sanity check on exported headers'; \
     fi
    @echo  ''
@@ -1204,8 +1245,7 @@ else # KBUILD_EXTMOD
 KBUILD_MODULES := 1
 PHONY += crmodverdir
 crmodverdir:
-   $(Q)mkdir -p $(MODVERDIR)
-   $(Q)rm -f $(MODVERDIR)/*
+   $(cmd_crmodverdir)
 
 PHONY += $(objtree)/Module.symvers
 $(objtree)/Module.symvers:
@@ -1233,15 +1273,6 @@ _emodinst_:
    $(Q)mkdir -p $(MODLIB)/$(install-dir)
    $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
 
-# Run depmod only is we have System.map and depmod is executable
-quiet_cmd_depmod = DEPMOD  $(KERNELRELEASE)
-      cmd_depmod = if [ -r System.map -a -x $(DEPMOD) ]; then \
-                      $(DEPMOD) -ae -F System.map             \
-                      $(if $(strip $(INSTALL_MOD_PATH)),      \
-            -b $(INSTALL_MOD_PATH) -r)              \
-            $(KERNELRELEASE);                       \
-                   fi
-
 PHONY += _emodinst_post
 _emodinst_post: _emodinst_
    $(call cmd,depmod)
@@ -1253,8 +1284,10 @@ $(clean-dirs):
    $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@)
 
 clean:   rm-dirs := $(MODVERDIR)
+clean: rm-files := $(KBUILD_EXTMOD)/Module.symvers
 clean: $(clean-dirs)
    $(call cmd,rmdirs)
+   $(call cmd,rmfiles)
    @find $(KBUILD_EXTMOD) $(RCS_FIND_IGNORE) \
       \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
       -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \) \
@@ -1292,18 +1325,18 @@ ifeq ($(ALLSOURCE_ARCHS),)
 ifeq ($(ARCH),um)
 ALLINCLUDE_ARCHS := $(ARCH) $(SUBARCH)
 else
-ALLINCLUDE_ARCHS := $(ARCH)
+ALLINCLUDE_ARCHS := $(SRCARCH)
 endif
 else
 #Allow user to specify only ALLSOURCE_PATHS on the command line, keeping existing behavour.
 ALLINCLUDE_ARCHS := $(ALLSOURCE_ARCHS)
 endif
 
-ALLSOURCE_ARCHS := $(ARCH)
+ALLSOURCE_ARCHS := $(SRCARCH)
 
 define find-sources
-        ( for ARCH in $(ALLSOURCE_ARCHS) ; do \
-          find $(__srctree)arch/$${ARCH} $(RCS_FIND_IGNORE) \
+        ( for arch in $(ALLSOURCE_ARCHS) ; do \
+          find $(__srctree)arch/$${arch} $(RCS_FIND_IGNORE) \
                -name $1 -print; \
      done ; \
      find $(__srctree)security/selinux/include $(RCS_FIND_IGNORE) \
@@ -1311,14 +1344,14 @@ define find-sources
      find $(__srctree)include $(RCS_FIND_IGNORE) \
           \( -name config -o -name 'asm-*' \) -prune \
           -o -name $1 -print; \
-     for ARCH in $(ALLINCLUDE_ARCHS) ; do \
-          find $(__srctree)include/asm-$${ARCH} $(RCS_FIND_IGNORE) \
+     for arch in $(ALLINCLUDE_ARCHS) ; do \
+          find $(__srctree)include/asm-$${arch} $(RCS_FIND_IGNORE) \
                -name $1 -print; \
      done ; \
      find $(__srctree)include/asm-generic $(RCS_FIND_IGNORE) \
           -name $1 -print; \
      find $(__srctree) $(RCS_FIND_IGNORE) \
-          \( -name include -o -name arch \) -prune -o \
+          \( -name include -o -name arch -o -name '.tmp_*' \) -prune -o \
           -name $1 -print; \
      )
 endef
@@ -1404,6 +1437,9 @@ versioncheck:
 namespacecheck:
    $(PERL) $(srctree)/scripts/namespace.pl
 
+export_report:
+   $(PERL) $(srctree)/scripts/export_report.pl
+
 endif #ifeq ($(config-targets),1)
 endif #ifeq ($(mixed-targets),1)
 
@@ -1464,9 +1500,11 @@ endif
 
 # Modules
 / %/: prepare scripts FORCE
+   $(cmd_crmodverdir)
    $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
    $(build)=$(build-dir)
 %.ko: prepare scripts FORCE
+   $(cmd_crmodverdir)
    $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1)   \
    $(build)=$(build-dir) $(@:.ko=.o)
    $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
@@ -1480,9 +1518,23 @@ quiet_cmd_rmdirs = $(if $(wildcard $(rm-dirs)),CLEAN   $(wildcard $(rm-dirs)))
 quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN   $(wildcard $(rm-files)))
       cmd_rmfiles = rm -f $(rm-files)
 
+# Run depmod only is we have System.map and depmod is executable
+# and we build for the host arch
+quiet_cmd_depmod = DEPMOD  $(KERNELRELEASE)
+      cmd_depmod = \
+   if [ -r System.map -a -x $(DEPMOD) ]; then                              \
+      $(DEPMOD) -ae -F System.map                                     \
+      $(if $(strip $(INSTALL_MOD_PATH)), -b $(INSTALL_MOD_PATH) -r)   \
+      $(KERNELRELEASE);                                               \
+   fi
+
+# Create temporary dir for module support files
+# clean it up only when building all modules
+cmd_crmodverdir = $(Q)mkdir -p $(MODVERDIR) \
+                  $(if $(KBUILD_MODULES),; rm -f $(MODVERDIR)/*)
 
-a_flags = -Wp,-MD,$(depfile) $(AFLAGS) $(AFLAGS_KERNEL) \
-     $(NOSTDINC_FLAGS) $(CPPFLAGS) \
+a_flags = -Wp,-MD,$(depfile) $(KBUILD_AFLAGS) $(AFLAGS_KERNEL) \
+     $(NOSTDINC_FLAGS) $(KBUILD_CPPFLAGS) \
      $(modkern_aflags) $(EXTRA_AFLAGS) $(AFLAGS_$(basetarget).o)
 
 quiet_cmd_as_o_S = AS      $@


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.