aboutsummaryrefslogtreecommitdiffstats
path: root/meta-ti-bsp/recipes-kernel/linux/setup-defconfig.inc
diff options
context:
space:
mode:
Diffstat (limited to 'meta-ti-bsp/recipes-kernel/linux/setup-defconfig.inc')
-rw-r--r--meta-ti-bsp/recipes-kernel/linux/setup-defconfig.inc84
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
+}