On 01/19/2013 02:40 PM, Khem Raj wrote: > kernel compiler is not special and we currently have it so > we want to pass -march and -mtune options as CFLAGS to kernel > build so that compiler picks the right subarch flags when > compiling assembly files in particular. Otherwise defaults > are chosen which may not be right in many case e.g. when > compiling kernel for collie machine we should use arch=armv4 > but it uses toolchain/as defaults which is armv5te > > in some case e.g. thumb1 we know that kernel can not be compiled > in thumb1 mode so we can provide that information e.g. -marm > option through KERNEL_HOST_CC_ARCH variable as we do now >
Makes me nervous... only because I'm not well versed enough across the architectures to catch some little gotchas. How much testing has this seen? Which architectures? -- Darren > Signed-off-by: Khem Raj <raj.k...@gmail.com> > --- > meta/classes/kernel-arch.bbclass | 13 +++++++++++++ > meta/classes/kernel.bbclass | 16 +--------------- > meta/classes/module-base.bbclass | 16 ---------------- > 3 files changed, 14 insertions(+), 31 deletions(-) > > diff --git a/meta/classes/kernel-arch.bbclass > b/meta/classes/kernel-arch.bbclass > index b3b78b6..a51e82b 100644 > --- a/meta/classes/kernel-arch.bbclass > +++ b/meta/classes/kernel-arch.bbclass > @@ -43,3 +43,16 @@ def map_uboot_arch(a, d): > > export UBOOT_ARCH = "${@map_uboot_arch(d.getVar('ARCH', True), d)}" > > +# Set TARGET_??_KERNEL_ARCH in the machine .conf to set architecture > +# specific options necessary for building the kernel and modules. > +TARGET_CC_KERNEL_ARCH ?= "" > +HOST_CC_KERNEL_ARCH ?= "${TARGET_CC_KERNEL_ARCH}" > +TARGET_LD_KERNEL_ARCH ?= "" > +HOST_LD_KERNEL_ARCH ?= "${TARGET_LD_KERNEL_ARCH}" > +TARGET_AR_KERNEL_ARCH ?= "" > +HOST_AR_KERNEL_ARCH ?= "${TARGET_AR_KERNEL_ARCH}" > + > +KERNEL_CC = "${CC} ${HOST_CC_KERNEL_ARCH}" > +KERNEL_LD = "${LD} ${HOST_LD_KERNEL_ARCH}" > +KERNEL_AR = "${AR} ${HOST_AR_KERNEL_ARCH}" > + > diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass > index d459569..e2a582b 100644 > --- a/meta/classes/kernel.bbclass > +++ b/meta/classes/kernel.bbclass > @@ -1,7 +1,7 @@ > inherit linux-kernel-base module_strip > > PROVIDES += "virtual/kernel" > -DEPENDS += "virtual/${TARGET_PREFIX}gcc kmod-native > virtual/${TARGET_PREFIX}gcc${KERNEL_CCSUFFIX}" > +DEPENDS += "virtual/${TARGET_PREFIX}gcc kmod-native" > > # we include gcc above, we dont need virtual/libc > INHIBIT_DEFAULT_DEPS = "1" > @@ -37,20 +37,6 @@ KERNEL_PRIORITY ?= > "${@int(d.getVar('PV',1).split('-')[0].split('+')[0].split('. > > KERNEL_RELEASE ?= "${KERNEL_VERSION}" > > -KERNEL_CCSUFFIX ?= "" > -KERNEL_LDSUFFIX ?= "" > - > -# Set TARGET_??_KERNEL_ARCH in the machine .conf to set architecture > -# specific options necessary for building the kernel and modules. > -#FIXME: should be this: TARGET_CC_KERNEL_ARCH ?= "${TARGET_CC_ARCH}" > -TARGET_CC_KERNEL_ARCH ?= "" > -HOST_CC_KERNEL_ARCH ?= "${TARGET_CC_KERNEL_ARCH}" > -TARGET_LD_KERNEL_ARCH ?= "" > -HOST_LD_KERNEL_ARCH ?= "${TARGET_LD_KERNEL_ARCH}" > - > -KERNEL_CC = "${CCACHE}${HOST_PREFIX}gcc${KERNEL_CCSUFFIX} > ${HOST_CC_KERNEL_ARCH}${TOOLCHAIN_OPTIONS}" > -KERNEL_LD = "${HOST_PREFIX}ld${KERNEL_LDSUFFIX} > ${HOST_LD_KERNEL_ARCH}${TOOLCHAIN_OPTIONS}" > - > # Where built kernel lies in the kernel tree > KERNEL_OUTPUT ?= "arch/${ARCH}/boot/${KERNEL_IMAGETYPE}" > KERNEL_IMAGEDEST = "boot" > diff --git a/meta/classes/module-base.bbclass > b/meta/classes/module-base.bbclass > index 210c47c..cfee50a 100644 > --- a/meta/classes/module-base.bbclass > +++ b/meta/classes/module-base.bbclass > @@ -7,22 +7,6 @@ export CROSS_COMPILE = "${TARGET_PREFIX}" > > export KERNEL_VERSION = > "${@base_read_file('${STAGING_KERNEL_DIR}/kernel-abiversion')}" > KERNEL_OBJECT_SUFFIX = ".ko" > -KERNEL_CCSUFFIX = > "${@base_read_file('${STAGING_KERNEL_DIR}/kernel-ccsuffix')}" > -KERNEL_LDSUFFIX = > "${@base_read_file('${STAGING_KERNEL_DIR}/kernel-ldsuffix')}" > -KERNEL_ARSUFFIX = > "${@base_read_file('${STAGING_KERNEL_DIR}/kernel-arsuffix')}" > - > -# Set TARGET_??_KERNEL_ARCH in the machine .conf to set architecture > -# specific options necessary for building the kernel and modules. > -TARGET_CC_KERNEL_ARCH ?= "" > -HOST_CC_KERNEL_ARCH ?= "${TARGET_CC_KERNEL_ARCH}" > -TARGET_LD_KERNEL_ARCH ?= "" > -HOST_LD_KERNEL_ARCH ?= "${TARGET_LD_KERNEL_ARCH}" > -TARGET_AR_KERNEL_ARCH ?= "" > -HOST_AR_KERNEL_ARCH ?= "${TARGET_AR_KERNEL_ARCH}" > - > -KERNEL_CC = "${CCACHE}${HOST_PREFIX}gcc${KERNEL_CCSUFFIX} > ${HOST_CC_KERNEL_ARCH}" > -KERNEL_LD = "${HOST_PREFIX}ld${KERNEL_LDSUFFIX} ${HOST_LD_KERNEL_ARCH}" > -KERNEL_AR = "${HOST_PREFIX}ar${KERNEL_ARSUFFIX} ${HOST_AR_KERNEL_ARCH}" > > # kernel modules are generally machine specific > PACKAGE_ARCH = "${MACHINE_ARCH}" > -- Darren Hart Intel Open Source Technology Center Yocto Project - Technical Lead - Linux Kernel _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core