source $stdenv/setup

export PLAN9=$out/plan9
export PLAN9_TARGET=$PLAN9

plan9portLinkFlags()
{
    local -a linkFlags=()
    eval set -- "$NIX_LDFLAGS"
    while (( $# > 0 )); do
        if [[ $1 = -rpath ]]; then
            linkFlags+=( "-Wl,-rpath,$2" )
            shift 2
        else
            linkFlags+=( "$1" )
            shift
        fi
    done
    echo "${linkFlags[*]}"
}

configurePhase()
{
    (
        echo CC9=\"$(command -v $CC)\"
        echo CFLAGS=\"$NIX_CFLAGS_COMPILE\"
        echo LDFLAGS=\"$(plan9portLinkFlags)\"
        echo X11=\"${libXt_dev}/include\"
        case "$system" in
          x86_64-*) echo OBJTYPE=x86_64;;
          i?86-*)   echo OBJTYPE=386;;
          *power*)  echo OBJTYPE=power;;
          *sparc*)  echo OBJTYPE=sparc;;
          *) exit 12
        esac
        if [[ $system =~ .*linux.* ]]; then
          echo SYSVERSION=2.6.x
        fi
    ) >config

    for f in `grep -l -r /usr/local/plan9`; do
        sed "s,/usr/local/plan9,${PLAN9},g" -i $f
    done
}

buildPhase()
{
    mkdir -p $PLAN9

    # Copy sources, some necessary bin scripts
    cp -R * $PLAN9

    local originalPath="$PATH"
    export PATH="$PLAN9/bin:$PATH"
    export NPROC=$NIX_BUILD_CORES
    pushd src
    ../dist/buildmk
    mk clean
    mk libs-nuke
    mk all
    mk -k install
    if [[ -f $PLAN9/bin/quote1 ]]; then
        cp $PLAN9/bin/quote1 $PLAN9/bin/'"'
        cp $PLAN9/bin/quote2 $PLAN9/bin/'""'
    fi
    popd
    export PATH="$originalPath"
}

installPhase()
{
    # Copy the `9' utility. This way you can use
    # $ 9 awk
    # to use the plan 9 awk
    mkdir $out/bin
    ln -s $PLAN9/bin/9 $out/bin
}

genericBuild
