#!/bin/sh
set -eu

DATA=`cat prefix`/share/geordi-0
RT="${DATA}/rt"

rtcp () { cp -L -v --parents -- $@ "${RT}" ; }
libs() {
  unset TERM
    # ghc < 6.8.3 has a bug that causes runhaskell to output console codes after the program output, at least when TERM is xterm.
  ldd $@ | runhaskell scripts/parse-ldd-output.hs ;
}

. "${DATA}/compile-config"

mkdir -p "${RT}"
chmod 711 "${RT}"
touch "${RT}/t.cpp" "${RT}/t.s" "${RT}/t.o" "${RT}/t" "${RT}/lock"
chmod 666 "${RT}/t.cpp" "${RT}/t.s" "${RT}/t.o"
chmod 777 "${RT}/t"
chmod 444 "${RT}/lock"

for N in crt1.o crti.o crtn.o crtbegin.o crtend.o libgcc.a libgcc_s.so libstdc++.so libstdc++.so.6 libmcheck.a libc.so libc_nonshared.a libm.so libm.so.6 libc.so.6 libgcc_s.so.1
do
  F=`$GXX -print-file-name=$N`
  if [ $F != $N ] ; then rtcp $F ; fi
done

EXECS="$GXX `$GXX -print-prog-name=cc1plus`"

for N in as ld
do
  F=`$GXX -print-prog-name=$N`
  EXECS="${EXECS} `which $F`"
done

rtcp $EXECS `libs $EXECS`

chmod -R a+rX "${RT}"
