#!/bin/sh
#
# Copyright 2020 Daniel Friesel
#
# SPDX-License-Identifier: BSD-2-Clause

cat <<EOF

menu "System"

config loop
bool "Regularly call loop()"
default y

config wakeup
bool "Call wakeup() on wakeup"
default n

config ostream
bool "C++ ostream support in stdout"
default n
depends on arch_msp430fr5969lp || arch_msp430fr5994lp || arch_posix

config aspectc
bool "Build with AspectC++"
default n

config i2c_freq
int "I2C Frequency [Hz]"
range 1000 100000
default 100000
depends on meta_driver_i2c

config timer_freq
int "Timer Frequency"
range 1 10000
default 10
depends on meta_driver_timer

config framebuffer
bool "Framebuffer"
default n

config framebuffer_in_text_segment
bool "Place Framebuffer in text segment"
default y
depends on framebuffer

config framebuffer_width
int "Framebuffer Width"
default 300
range 8 800
depends on framebuffer

config framebuffer_height
int "Framebuffer Height"
default 400
range 8 800
depends on framebuffer

endmenu

menu "Libraries"

config lib_inflate
bool "Inflate: deflate and zlib decompression"
default n

config lib_inflate_checksum
bool "Verify checksum after decompression"
default n
depends on lib_inflate

config lib_inflate_lut
bool "Store LUT in intermediate variables"
help
  Increases speed at the cost of 636 Bytes of additional RAM usage.
default n
depends on lib_inflate

endmenu

choice Architecture
bool "Architecture"

EOF

for arch in $(ls -1 src/arch); do
	echo config arch_${arch} | tr - _
	echo bool '"'"$(cat src/arch/${arch}/prompt)"'"'
	echo
done

echo endchoice
echo

for arch in $(ls -1 src/arch); do
	echo config arch
	echo string
	echo default '"'"${arch}"'"'
	echo depends on arch_${arch} | tr - _
	echo
done

for arch in $(ls -1 src/arch); do
	if [ -e "src/arch/${arch}/Kconfig" ]; then
		echo menu '"'"$(cat src/arch/${arch}/prompt) Configuration"'"'
		echo depends on arch_${arch} | tr - _
		echo
		cat "src/arch/${arch}/Kconfig"
		echo
		echo endmenu
		echo
	fi
done

cat <<EOF
choice Application
bool "Application"

EOF

for app in $(ls -1 src/app); do
	if [ ! -e "src/app/${app}/Kconfig" ]; then
		continue
	fi
	echo config app_${app} | tr - _
	if [ -e "src/app/${app}/Kconfig" ]; then
		echo bool
		cat src/app/${app}/Kconfig
	else
		echo bool '"'${app}'"'
	fi
	echo
done

echo endchoice
echo

for app in $(ls -1 src/app); do
	if [ ! -e "src/app/${app}/Kconfig" ]; then
		continue
	fi
	echo config app
	echo string
	echo default '"'"${app}"'"'
	echo depends on app_${app} | tr - _
	echo
done

cat src/driver/Kconfig
