#!/bin/sh

# Select which libc to build against
libc="glibc" # assumed native
# static, cross-compilation
libc="uclibc"
# x86 32-bit:
uclibc_cross="i486-linux-uclibc-"
# My system has strange prefix for x86 64-bit uclibc:
#uclibc_cross="x86_64-pc-linux-gnu-"

test -d tree || exit 1

dir=test.$$
while test -e "$dir" -o -e failed."$dir"; do
    dir=test."$RANDOM"
done

cp -dpr tree "$dir" || exit 1
cd "$dir" || exit 1

echo "Running randconfig test in $dir..." >&2

make randconfig >/dev/null || exit 1

cat .config \
| grep -v ^CONFIG_DEBUG_PESSIMIZE= \
| grep -v CONFIG_WERROR \
| cat >.config.new
mv .config.new .config
echo CONFIG_WERROR=y >>.config

test "$libc" = glibc && {
cat .config \
| grep -v ^CONFIG_SELINUX= \
| grep -v ^CONFIG_EFENCE= \
| grep -v ^CONFIG_DMALLOC= \
| cat >.config.new
mv .config.new .config
}

test "$libc" = uclibc && {
cat .config \
| grep -v ^CONFIG_SELINUX= \
| grep -v ^CONFIG_EFENCE= \
| grep -v ^CONFIG_DMALLOC= \
| grep -v ^CONFIG_BUILD_LIBBUSYBOX= \
| grep -v ^CONFIG_PAM= \
| grep -v ^CONFIG_TASKSET= \
| grep -v ^CONFIG_FEATURE_ASSUME_UNICODE= \
| grep -v ^CONFIG_PIE= \
| grep -v CONFIG_STATIC \
| grep -v CONFIG_CROSS_COMPILER_PREFIX \
| cat >.config.new
mv .config.new .config
echo 'CONFIG_CROSS_COMPILER_PREFIX="'"$uclibc_cross"'"' >>.config
echo 'CONFIG_STATIC=y' >>.config
}

# If NOMMU, remove some things
grep -q ^CONFIG_NOMMU= .config && {
cat .config \
| grep -v ^CONFIG_ASH= \
| grep -v ^CONFIG_FEATURE_SH_IS_ASH= \
| cat >.config.new
mv .config.new .config
}

# 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)
grep -q ^CONFIG_STATIC= .config && {
cat .config \
| grep -v ^CONFIG_PAM= \
| cat >.config.new
mv .config.new .config
}

# CONFIG_NOMMU + CONFIG_HUSH + CONFIG_WERROR don't mix
# (produces warning)
grep -q ^CONFIG_NOMMU= .config && \
grep -q ^CONFIG_HUSH= .config && \
{
cat .config \
| grep -v ^CONFIG_WERROR= \
| cat >.config.new
mv .config.new .config
}

# Regenerate .config with default answers for yanked-off options
{ yes "" | make oldconfig >/dev/null; } || exit 1

nice -n 10 make

test -x busybox && {
    cd ..
    rm -rf "$dir"
    exit 0
}

cd ..
mv "$dir" failed."$dir"
exit 1
