#!/bin/sh

if [ x"$1" = x ]; then
  printf "Usage:\n  $0 [arch-config]...\n"
  printf "arch-config values supported for native builds:\n"
  printf " amd64, ppc, sparc32, sparc64, x86\n"
  printf "arch-config values supported for cross compiled builds:\n"
  printf " cross-ppc, cross-sparc32, cross-sparc64, cross-x86\n"
  exit 0
fi

# This is needed because viewvc messes with the permissions of executables:
chmod 755 utils/dist/debian/rules
chmod 755 config/scripts/switch-arch
chmod 755 config/scripts/archname
chmod 755 config/scripts/reldir
chmod 755 config/scripts/crosscflags
if test "x$HOSTARCH" = "x"; then
    HOSTARCH=`config/scripts/archname`
fi

echo "Configuring OpenBIOS on $HOSTARCH for $*"
for RULES_ARCH in $*; do
    ARCH=`cat config/examples/${RULES_ARCH}_rules.xml |grep "^ARCH" |cut -d\= -f2|tr -d \ `
    OBJDIR=obj-$ARCH
    printf "Initializing build tree $OBJDIR..."
    rm -rf "$OBJDIR"
    mkdir "$OBJDIR"
    mkdir -p $OBJDIR/target
    mkdir -p $OBJDIR/target/include
    mkdir -p $OBJDIR/target/arch
    mkdir -p $OBJDIR/target/arch/unix
    mkdir -p $OBJDIR/target/arch/$ARCH
    mkdir -p $OBJDIR/target/arch/ppc
    mkdir -p $OBJDIR/target/arch/ppc/briq # no autodetection of those..
    mkdir -p $OBJDIR/target/arch/ppc/pearpc
    mkdir -p $OBJDIR/target/arch/ppc/qemu
    mkdir -p $OBJDIR/target/arch/ppc/mol
    mkdir -p $OBJDIR/target/arch/x86
    mkdir -p $OBJDIR/target/arch/x86/xbox
    mkdir -p $OBJDIR/target/libgcc
    mkdir -p $OBJDIR/target/kernel
    mkdir -p $OBJDIR/target/modules
    mkdir -p $OBJDIR/target/fs
    mkdir -p $OBJDIR/target/fs/grubfs
    mkdir -p $OBJDIR/target/fs/hfs
    mkdir -p $OBJDIR/target/fs/hfsplus
    mkdir -p $OBJDIR/target/drivers
    mkdir -p $OBJDIR/target/libc
    mkdir -p $OBJDIR/host/include
    mkdir -p $OBJDIR/host/kernel
    mkdir -p $OBJDIR/forth
    ln -s ../../../include/$ARCH $OBJDIR/target/include/asm
    #compile the host binary with target settings instead
    #ln -s ../../../include/$HOSTARCH $OBJDIR/host/include/asm
    echo "ok."

    cd $OBJDIR
    SRCDIR=..
    ODIR=.

    printf "Creating target Makefile..."
    ln -s $SRCDIR/config/examples/${RULES_ARCH}_rules.xml $ODIR/rules.xml
    ln -s $SRCDIR/config/examples/${RULES_ARCH}_config.xml $ODIR/config.xml
    xsltproc $SRCDIR/config/xml/xinclude.xsl $SRCDIR/build.xml > $ODIR/build-full.xml
    xsltproc $SRCDIR/config/xml/makefile.xsl $ODIR/build-full.xml > $ODIR/Makefile
    echo "ok."
    printf "Creating config files..."
    xsltproc $SRCDIR/config/xml/config-c.xsl $SRCDIR/config/examples/${RULES_ARCH}_config.xml > $ODIR/host/include/autoconf.h
    xsltproc $SRCDIR/config/xml/config-c.xsl $SRCDIR/config/examples/${RULES_ARCH}_config.xml > $ODIR/target/include/autoconf.h
    xsltproc $SRCDIR/config/xml/config-forth.xsl $SRCDIR/config/examples/${RULES_ARCH}_config.xml > $ODIR/forth/config.fs
    echo "ok."
    cd $SRCDIR
done
