diff options
Diffstat (limited to 'meta-ti-bsp/recipes-kernel/linux/setup-defconfig.inc')
-rw-r--r-- | meta-ti-bsp/recipes-kernel/linux/setup-defconfig.inc | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/meta-ti-bsp/recipes-kernel/linux/setup-defconfig.inc b/meta-ti-bsp/recipes-kernel/linux/setup-defconfig.inc new file mode 100644 index 00000000..8da90c79 --- /dev/null +++ b/meta-ti-bsp/recipes-kernel/linux/setup-defconfig.inc @@ -0,0 +1,84 @@ +KERNEL_LOCALVERSION = "-ti" + +# Check the defconfig file and see if it points to an in kernel +# defconfig that should be used, or if it is a complete config file +# Or if it points to a combined defconfig that lists both in kernel +# defconfig and associated config fragments. + +do_configure() { + # Always copy the defconfig file to .config to keep consistency + # between the case where there is a real config and the in kernel + # tree config + cp ${WORKDIR}/defconfig ${B}/.config + + scm_version=$(printf '%s%s' -g $(git -C ${S} rev-parse --verify HEAD 2>/dev/null | cut -c1-12)) + + echo ${scm_version} > ${B}/.scmversion + echo ${scm_version} > ${S}/.scmversion + + # Zero, when using "tisdk" configs, pass control to defconfig_builder + config=`cat ${B}/.config | grep use-tisdk-config | cut -d= -f2` + if [ -n "$config" ] + then + ${DEFCONFIG_BUILDER} -w ${S} -t $config + oe_runmake -C ${S} O=${B} "$config"_defconfig + else + # First, check if pointing to a combined config with config fragments + config=`cat ${B}/.config | grep use-combined-config | cut -d= -f2` + if [ -n "$config" ] + then + cp ${S}/$config ${B}/.config + fi + + # Second, extract any config fragments listed in the defconfig + config=`cat ${B}/.config | grep config-fragment | cut -d= -f2` + if [ -n "$config" ] + then + configfrags="" + for f in $config + do + # Check if the config fragment is available + if [ ! -e "${S}/$f" ] + then + echo "Could not find kernel config fragment $f" + exit 1 + else + # Sanitize config fragment files to be relative to sources + configfrags="$configfrags ${S}/$f" + fi + done + fi + + # Third, check if pointing to a known in kernel defconfig + config=`cat ${B}/.config | grep use-kernel-config | cut -d= -f2` + if [ -n "$config" ] + then + oe_runmake -C ${S} O=${B} $config + else + yes '' | oe_runmake -C ${S} O=${B} oldconfig + fi + fi + + # Fourth, handle config fragments specified in the recipe + # The assumption is that the config fragment will be specified with the absolute path. + # E.g. ${WORKDIR}/config1.cfg or ${S}/config2.cfg + if [ -n "${KERNEL_CONFIG_FRAGMENTS}" ] + then + for f in ${KERNEL_CONFIG_FRAGMENTS} + do + # Check if the config fragment is available + if [ ! -e "$f" ] + then + echo "Could not find kernel config fragment $f" + exit 1 + fi + done + fi + + # Now that all the fragments are located merge them + if [ -n "${KERNEL_CONFIG_FRAGMENTS}" -o -n "$configfrags" ] + then + ( cd ${WORKDIR} && ${S}/scripts/kconfig/merge_config.sh -m -r -O ${B} ${B}/.config $configfrags ${KERNEL_CONFIG_FRAGMENTS} 1>&2 ) + yes '' | oe_runmake -C ${S} O=${B} oldconfig + fi +} |