#!/bin/sh

# If not specified in environment...
if ! test "$LIBC"; then
	# Select which libc to build against
	LIBC="glibc"
	LIBC="uclibc"
fi
# x86 32-bit:
#CROSS_COMPILER_PREFIX="i486-linux-uclibc-"
# My system has strange prefix for x86 64-bit uclibc:
#CROSS_COMPILER_PREFIX="x86_64-pc-linux-gnu-"

if test $# -lt 2 || ! test -d "$1" || test -e "$2"; then
	echo "Usage: $0 SRC_DIR TMP_DIR"
	echo
	echo "SRC_DIR will be copied to TMP_DIR directory."
	echo "Then a random build will be performed."
	echo
	echo "Useful variables:"
	echo "\$LIBC, \$CROSS_COMPILER_PREFIX, \$MAKEOPTS"
	exit 1
fi

cp -dpr -- "$1" "$2" || { echo "copy error"; exit 1; }
cd -- "$2" || { echo "cd $dir error"; exit 1; }

# Generate random config
make randconfig >/dev/null || { echo "randconfig error"; exit 1; }

# Tweak resulting config
cat .config \
| grep -v CONFIG_DEBUG_PESSIMIZE \
| grep -v CONFIG_WERROR \
| grep -v CONFIG_CROSS_COMPILER_PREFIX \
| grep -v CONFIG_SELINUX \
| grep -v CONFIG_EFENCE \
| grep -v CONFIG_DMALLOC \
\
| grep -v CONFIG_RFKILL \
>.config.new
mv .config.new .config
echo '# CONFIG_DEBUG_PESSIMIZE is not set' >>.config
echo '# CONFIG_WERROR is not set' >>.config
echo "CONFIG_CROSS_COMPILER_PREFIX=\"${CROSS_COMPILER_PREFIX}\"" >>.config

# If glibc, don't build static
if test x"$LIBC" = x"glibc"; then
	cat .config \
	| grep -v CONFIG_STATIC \
	>.config.new
	mv .config.new .config
	echo '# CONFIG_STATIC is not set' >>.config
fi

# If glibc, build static, and remove some things
# likely to not work on uclibc.
if test x"$LIBC" = x"uclibc"; then
	cat .config \
	| grep -v CONFIG_STATIC \
	| grep -v CONFIG_BUILD_LIBBUSYBOX \
	| grep -v CONFIG_TASKSET \
	| grep -v CONFIG_UNICODE_SUPPORT \
	| grep -v CONFIG_PIE \
	>.config.new
	mv .config.new .config
	echo 'CONFIG_STATIC=y' >>.config
fi

# If STATIC, remove some things.
# PAM with static linking is probably pointless
# (but I need to try - now I don't have libpam.a on my system, only libpam.so)
if grep -q "^CONFIG_STATIC=y" .config; then
	cat .config \
	| grep -v CONFIG_PAM \
	>.config.new
	mv .config.new .config
fi

# Regenerate .config with default answers for yanked-off options
# (most of default answers are "no").
{ yes "" | make oldconfig >/dev/null; } || { echo "oldconfig error"; exit 1; }

# Build!
nice -n 10 make $MAKEOPTS 2>&1 | tee make.log

# Return exitcode 1 if busybox executable does not exist
test -x busybox
