#!/bin/bash

KERNEL_TOOLCHAIN_VERSION=r14612
KERNEL_TOOLCHAIN_FILENAME_SUFFIX=freetz-${KERNEL_TOOLCHAIN_VERSION}-shared-glibc
TARGET_TOOLCHAIN_VERSION=r14612
TARGET_TOOLCHAIN_FILENAME_SUFFIX=freetz-${TARGET_TOOLCHAIN_VERSION}-shared-glibc

TOOL_CONF=tools/config/conf
DOT_CONFIG=.config
DOWNLOADS=~/dl

miniconfig() {
local i
for i in "$@"; do echo "$i=y"; done
cat << EOF
FREETZ_USER_LEVEL_EXPERT=y
FREETZ_BUILD_TOOLCHAIN=y
FREETZ_TOOLCHAIN_32BIT=y
EOF
}

#
# required kernel compiler versions:
#     3.4 LE
#     4.6 LE/BE
#     4.7 BE
#     4.8 BE
#     5   BE
#
# required uClibc versions:
#     0.9.28   LE
#     0.9.29   LE
#     0.9.32.x LE/BE
#     0.9.33.x LE/BE (as part of freetz uClibc-0.9.33.x test program)
#     0.9.33.x BE-NPTL
#     0.9.33.x BE-NPTL-KERNEL_3.10
#

#                               kernel       uClibc
# FREETZ_TYPE_WLAN              3.4 LE     0.9.28   LE
# FREETZ_TYPE_7270_V1+IPv6      3.4 LE     0.9.29   LE
# FREETZ_TYPE_7270_V3           4.6 LE     0.9.32.x LE
# FREETZ_TYPE_7270_V3+0.9.33    4.6 LE     0.9.33.x LE
#
# FREETZ_TYPE_7390+05.5X        4.6 BE     0.9.32.x BE
# FREETZ_TYPE_7390+05.5X+0.9.33 4.6 BE     0.9.33.x BE
# FREETZ_TYPE_7390+06.0X        4.7 BE     0.9.33.x BE NPTL
# FREETZ_TYPE_7390+06.2X        4.8 BE     0.9.33.x BE NPTL
# FREETZ_TYPE_7490+06.5X        4.8 BE     0.9.33.x BE NPTL KERNEL_3.10
# FREETZ_TYPE_7580+06.8X        5   BE     0.9.33.x BE NPTL KERNEL_3.10
#

mkdir -p $DOWNLOADS
for options in \
	"FREETZ_TYPE_WLAN" \
	\
	"FREETZ_TYPE_7270_V1 FREETZ_TARGET_IPV6_SUPPORT" \
	\
	"FREETZ_TYPE_7270_V3" \
	"FREETZ_TYPE_7270_V3 FREETZ_TARGET_UCLIBC_0_9_33" \
	\
	"FREETZ_TYPE_7390 FREETZ_TYPE_FIRMWARE_05_5X" \
	"FREETZ_TYPE_7390 FREETZ_TYPE_FIRMWARE_05_5X FREETZ_TARGET_UCLIBC_0_9_33" \
	\
	"FREETZ_TYPE_7390 FREETZ_TYPE_FIRMWARE_06_0X" \
	\
	"FREETZ_TYPE_7390 FREETZ_TYPE_FIRMWARE_06_2X" \
	\
	"FREETZ_TYPE_7490 FREETZ_TYPE_FIRMWARE_06_5X" \
	\
	"FREETZ_TYPE_7580 FREETZ_TYPE_FIRMWARE_06_8X" \
; do
	optionsCommaSep=$(echo $options | sed -e 's| |,|g')
	optionsUnderscoreSep=$(echo $options | sed -e 's| |_|g')
	echo "Building toolchains for $optionsCommaSep"
	make distclean
	rm -rf dl 2>/dev/null
	ln -sf $DOWNLOADS dl
	make $TOOL_CONF
	miniconfig $options > $DOT_CONFIG
	$TOOL_CONF --oldnoconfig config/Config.in
	cp -a $DOT_CONFIG $DOT_CONFIG.$optionsUnderscoreSep
	make KTV=${KERNEL_TOOLCHAIN_FILENAME_SUFFIX} TTV=${TARGET_TOOLCHAIN_FILENAME_SUFFIX} toolchain
done
