[OE-core] [PATCH 1/4] kernel.bbclass, module-base.bbclass: Use CC to form KERNEL_CC

Andrea Adami andrea.adami at gmail.com
Wed Jan 23 08:46:24 UTC 2013


On Tue, Jan 22, 2013 at 9:44 PM, Darren Hart <dvhart at linux.intel.com> wrote:
>
>
> 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?
>

I've built and booted kernels for strongarm/armv4) and for pxa/armv5te.


Andrea



> --
> Darren
>
>> Signed-off-by: Khem Raj <raj.khem at 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 at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core




More information about the Openembedded-core mailing list