summaryrefslogtreecommitdiff
path: root/scripts/create-menu
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/create-menu')
-rwxr-xr-xscripts/create-menu109
1 files changed, 109 insertions, 0 deletions
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