summaryrefslogtreecommitdiff
path: root/scripts/create-menu
blob: 1a2aab3d045494d60ca471b31ea17a27c3b4c102 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# 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 tasks
if [ -d "$topdir/tasks" -o -n "$ADK_CUSTOM_TASKS_DIR" ];then
	printf "# autogenerated via scripts/create-menu\n" > $topdir/target/config/Config.in.tasks
	printf "menu \"Tasks\"\n" >> $topdir/target/config/Config.in.tasks
	printf "\tvisible if ADK_TARGET_OS_LINUX && !ADK_TARGET_CHOOSE_ARCH\n\n" >> $topdir/target/config/Config.in.tasks

        if [ -d "$topdir/tasks" ];then
        	cat $topdir/tasks/* >> $topdir/target/config/Config.in.tasks 2>/dev/null
        fi
        if [ -n "$ADK_CUSTOM_TASKS_DIR" -a -d "$ADK_CUSTOM_TASKS_DIR" ];then
        	printf "\n# tasks pulled from ADK_CUSTOM_TASKS_DIR='%s'\n" "$ADK_CUSTOM_TASKS_DIR" >> $topdir/target/config/Config.in.tasks
        	cat $ADK_CUSTOM_TASKS_DIR/* >> $topdir/target/config/Config.in.tasks 2>/dev/null
        fi
	printf "\nendmenu\n\n" >> $topdir/target/config/Config.in.tasks
fi

# create system default
printf "# autogenerated via scripts/create-menu\n" > $topdir/target/config/Config.in.system.default

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 $i\n" >> $topdir/target/config/Config.in.system.default
done

# create or update systems
for arch in $(cat $topdir/target/arch.lst);do
	ARCH=$(echo $arch | tr '[:lower:]' '[:upper:]')
	printf "config ADK_TARGET_SYSTEM_GENERIC_$ARCH\n" > $topdir/target/$arch/Config.in.systems
	printf "\tbool \"Generic\"\n" >> $topdir/target/$arch/Config.in.systems
	printf "\tselect ADK_TARGET_GENERIC\n" >> $topdir/target/$arch/Config.in.systems
	printf "\thelp\n" >> $topdir/target/$arch/Config.in.systems
	printf "\t  Generic $ARCH system.\n\n" >> $topdir/target/$arch/Config.in.systems
	printf "\tdefault \"generic-${arch}\" if ADK_TARGET_SYSTEM_GENERIC_$ARCH\n" >> $topdir/target/config/Config.in.system.default
done

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 "prompt \"System\"\n" >> $topdir/target/$arch/Config.in.arch
	printf "depends on ADK_TARGET_ARCH_$ARCH\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
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
  ARCH=$(echo $arch | tr '[:lower:]' '[:upper:]')
  printf "\tdefault \"$arch\" if ADK_TARGET_ARCH_$ARCH\n" >> target/config/Config.in.arch.default
done
printf "\n\n" >> target/config/Config.in.arch.default

for arch in $(cat $topdir/target/arch.lst);do
  ARCH=$(echo $arch | tr '[:lower:]' '[:upper:]')
  printf "config ADK_TARGET_ARCH_${ARCH}\n" >> $topdir/target/config/Config.in.arch.default
  printf "\tbool\n\n" >> $topdir/target/config/Config.in.arch.default
done

cat > $topdir/target/config/Config.in.arch.choice << EOD
# autogenerated via scripts/create-menu
choice
prompt "Architecture"

config ADK_TARGET_CHOOSE_ARCH
	bool "choose architecture"

EOD
for os in linux baremetal; do
  for arch in $(cat $topdir/target/$os/arch.lst);do
    OS=$(echo $os | tr '[:lower:]' '[:upper:]')
    ARCH=$(echo $arch | tr '[:lower:]' '[:upper:]')
    printf "config ADK_TARGET_${OS}_ARCH_${ARCH}\n" >> $topdir/target/config/Config.in.arch.choice
    printf "\tbool \"$arch\"\n" >> $topdir/target/config/Config.in.arch.choice
    printf "\tdepends on ADK_TARGET_OS_${OS}\n" >> $topdir/target/config/Config.in.arch.choice
    printf "\tselect ADK_TARGET_ARCH_${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
done
printf "endchoice\n" >> $topdir/target/config/Config.in.arch.choice

exit 0