From c222886f38ea1185c1b420f03d1e1fb377506af0 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Mon, 2 Jun 2014 17:12:07 +0200 Subject: simplify adding new arch Generate all data needed when adding a new arch or system. Recognize any changes in target/*/systems as reported as bug by Joerg. --- scripts/create-menu | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100755 scripts/create-menu (limited to 'scripts/create-menu') diff --git a/scripts/create-menu b/scripts/create-menu new file mode 100755 index 000000000..573daadb5 --- /dev/null +++ b/scripts/create-menu @@ -0,0 +1,109 @@ +#!/usr/bin/env bash +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +topdir=$(readlink -nf $(dirname $0)/.. 2>/dev/null || (cd $(dirname $0)/..; pwd -P)) +systems=$(grep -h config target/*/systems/*|cut -d " " -f 2) + +printf "# autogenerated via scripts/create-menu\n" > target/config/Config.in.arch +printf "source target/config/Config.in.arch.default\n" > target/config/Config.in.arch +printf "source target/config/Config.in.arch.choice\n" >> target/config/Config.in.arch +printf "# autogenerated via scripts/create-menu\n" > target/config/Config.in.system +printf "source target/config/Config.in.system.default\n" >> target/config/Config.in.system +printf "source target/config/Config.in.system.choice\n" >> target/config/Config.in.system + +# update package collection +if [ -d "$topdir/target/collections" ];then + printf "# autogenerated via scripts/create-menu\n" > $topdir/package/Config.in.collections + cat $topdir/target/collections/* >> $topdir/package/Config.in.collections 2>/dev/null +fi + +# create system default +printf "# autogenerated via scripts/create-menu\n" > $topdir/target/config/Config.in.system.default +for j in $systems;do + system=${j#ADK_TARGET_SYSTEM_} + systemu=$(echo $system|tr '[:upper:]' '[:lower:]') + printf "config ADK_$systemu\n" >> $topdir/target/config/Config.in.system.default + printf "\tboolean\n\n" >> $topdir/target/config/Config.in.system.default +done + +cat >> $topdir/target/config/Config.in.system.default << EOD +config ADK_TARGET_SYSTEM + string +EOD +for i in $systems;do + system=${i#ADK_TARGET_SYSTEM_} + systemu=$(echo $system|tr '[:upper:]' '[:lower:]') + system=$(echo $system|tr '[:upper:]_' '[:lower:]-') + system=$(echo $system|sed 's#x86-64#x86_64#') + printf "\tdefault \"${system}\" if ADK_$systemu\n" >> $topdir/target/config/Config.in.system.default +done + +# create or update systems +for i in $(ls $topdir/target/);do + if [ -d "$topdir/target/$i/systems" ];then + cat $topdir/target/$i/systems/* > $topdir/target/$i/Config.in.systems 2>/dev/null + fi +done + +# create target/$arch/Config.in.arch and target/config/Config.in.system.choice +printf "# autogenerated via scripts/create-menu\n" > target/config/Config.in.system.choice +printf "# autogenerated via scripts/create-menu\n" > target/config/Config.in.arch.default +for arch in $(cat $topdir/target/arch.lst);do + ARCH=$(echo $arch | tr '[:lower:]' '[:upper:]') + printf "choice\n" > $topdir/target/$arch/Config.in.arch + printf "depends on ADK_LINUX_$ARCH && !ADK_CHOOSE_TARGET_ARCH\n" >> $topdir/target/$arch/Config.in.arch + printf "prompt \"Target system\"\n\n" >> $topdir/target/$arch/Config.in.arch + printf "config ADK_CHOOSE_TARGET_SYSTEM_$ARCH\n" >> $topdir/target/$arch/Config.in.arch + printf "\tboolean \"Choose target system\"\n\n" >> $topdir/target/$arch/Config.in.arch + printf "source target/$arch/Config.in.systems\n" >> $topdir/target/$arch/Config.in.arch + printf "endchoice\n" >> $topdir/target/$arch/Config.in.arch + printf "source target/$arch/Config.in.arch\n" >> target/config/Config.in.system.choice + printf "config ADK_$arch\n" >> target/config/Config.in.arch.default + printf "\tboolean\n\n" >> target/config/Config.in.arch.default +done + +cat >> $topdir/target/config/Config.in.arch.default << EOD +config ADK_TARGET_ARCH + string +EOD + +for arch in $(cat $topdir/target/arch.lst);do + printf "\tdefault \"$arch\" if ADK_$arch\n" >> target/config/Config.in.arch.default +done + +cat > $topdir/target/config/Config.in.arch.choice << EOD +# autogenerated via scripts/create-menu +choice +prompt "Target architecture" + +config ADK_CHOOSE_TARGET_ARCH + bool "Choose target architecture" + +EOD + +for arch in $(cat $topdir/target/arch.lst);do + ARCH=$(echo $arch | tr '[:lower:]' '[:upper:]') + printf "config ADK_LINUX_$ARCH\n" >> $topdir/target/config/Config.in.arch.choice + printf "\tprompt \"$arch system\"\n" >> $topdir/target/config/Config.in.arch.choice + printf "\tboolean\n" >> $topdir/target/config/Config.in.arch.choice + printf "\tselect ADK_$arch\n" >> $topdir/target/config/Config.in.arch.choice + printf "\thelp\n" >> $topdir/target/config/Config.in.arch.choice + printf "\t Support for $ARCH systems.\n\n" >> $topdir/target/config/Config.in.arch.choice +done + +printf "endchoice\n" >> $topdir/target/config/Config.in.arch.choice + +cat > $topdir/target/config/Config.in.system.choose << EOD +# autogenerated via scripts/create-menu +config ADK_CHOOSE_TARGET_SYSTEM + boolean +EOD + +for arch in $(cat $topdir/target/arch.lst);do + ARCH=$(echo $arch | tr '[:lower:]' '[:upper:]') + printf "\tdefault y if ADK_CHOOSE_TARGET_SYSTEM_$ARCH\n" >> $topdir/target/config/Config.in.system.choose +done +printf "\tdefault n\n" >> $topdir/target/config/Config.in.system.choose + +exit 0 -- cgit v1.2.3