Tools/GCCProxy - -dumpversion/-dumpspecs used by netsurf
[tpg/acess2.git] / Tools / GCCProxy / gccproxy.sh
index 213b54f..5a126a9 100755 (executable)
@@ -12,21 +12,20 @@ fullpath=`readlink -f "$fullpath"`
 # Get base directory
 BASEDIR=`dirname "$fullpath"`
 
-cfgfile=`mktemp`
-make --no-print-directory -f $BASEDIR/getconfig.mk ARCH=x86 > $cfgfile
-#echo $cfgfile
-#cat $cfgfile
-. $cfgfile
-rm $cfgfile
-
 _miscargs=""
 _compile=0
+_linktype=Applications
+
+echo [GCCProxy] $* >&2
 
 while [[ $# -gt 0 ]]; do
        case "$1" in
        -E)
                _preproc=1
                ;;
+       -M)
+               _makedep=1
+               ;;
        -c)
                _compile=1
                ;;
@@ -34,9 +33,13 @@ while [[ $# -gt 0 ]]; do
                shift
                _outfile="-o $1"
                ;;
-       -I)
+       -shared)
+               _ldflags=$_ldflags" -shared -lc -lgcc"
+               _linktype=Libraries
+               ;;
+       -I|-D|-O)
+               _cflags=$_cflags" $1 $2"
                shift
-               _cflags=$_cflags" -I$1"
                ;;
        -I*|-D*|-O*)
                _cflags=$_cflags" $1"
@@ -47,13 +50,31 @@ while [[ $# -gt 0 ]]; do
                arg=${arg/,/ }
                _ldflags=$_ldflags" ${arg}"
                ;;
-       -l)
+       -l|-L)
+               _libs=$_libs" $1$2"
                shift
-               _libs=$_libs" -l$1"
                ;;
        -l*|-L*)
                _libs=$_libs" $1"
                ;;
+       -v|--version|-V)
+               _verarg=$_verarg" $1"
+               ;;
+       --inv=ld)
+               _actas=ld
+               ;;
+       -print-prog-name=ld)
+               echo $0 --inv=ld
+               exit 0
+               ;;
+       -dumpspecs)
+               _compile=1
+               _miscargs=$_miscargs" $1"
+               ;;
+       -dumpversion)
+               _compile=1
+               _miscargs=$_miscargs" $1"
+               ;;
        *)
                _miscargs=$_miscargs" $1"
                ;;
@@ -62,25 +83,55 @@ while [[ $# -gt 0 ]]; do
 done
 
 run() {
-#      echo $*
+       if [[ "x$GCCPROXY_DEBUG" != "x" ]]; then
+               echo --- $*
+       fi
        $*
+       return $?
 }
 
-if [[ $_preproc -eq 1 ]]; then
-       run $_CC -E $CFLAGS $_cflags $_outfile
+_ldflags="-lposix -lpsocket "$_ldflags
+_cflags=$_cflags" -fno-omit-frame-pointer"
+
+cfgfile=`mktemp`
+make --no-print-directory -f $BASEDIR/getconfig.mk ARCH=x86 TYPE=$_linktype > $cfgfile
+. $cfgfile
+rm $cfgfile
+
+#echo "_compile = $_compile, _preproc = $_preproc"
+
+if [[ "x$_verarg" != "x" ]]; then
+       if [[ "x$_actas" == "xld" ]]; then
+               run $_LD $_miscargs $_verarg
+       else
+               run $_CC $_miscargs $_verarg
+       fi
        exit $?
 fi
-if [[ $_compile -eq 1 ]]; then
-       run $_CC $CFLAGS $_cflags $_miscargs -c $_outfile
+
+if [[ "x$_actas" == "xld" ]]; then
+       if echo "$_miscargs" | grep '\.o\|\.a'; then
+               run $_LD $LDFLAGS $_ldflags $_outfile $_miscargs $LIBGCC_PATH $_libs
+       else
+               run $_LD $_miscargs $_verarg
+       fi
        exit $?
 fi
 
-if echo " $_miscargs" | grep '\.c' >/dev/null; then
+if [[ $_preproc -eq 1 ]]; then
+       run $_CC -E $CFLAGS $_cflags $_miscargs $_outfile
+elif [[ $_makedep -eq 1 ]]; then
+       run $_CC -M $CFLAGS $_cflags $_miscargs $_outfile
+elif [[ $_compile -eq 1 ]]; then
+       run $_CC $CFLAGS $_cflags $_miscargs -c $_outfile
+elif echo " $_miscargs" | grep '\.c' >/dev/null; then
        tmpout=`mktemp acess_gccproxy.XXXXXXXXXX.o --tmpdir`
-       run $_CC $CFLAGS $_miscargs -c -o $tmpout
-       run $_LD $LDFLAGS $_ldflags $_libs $tmpout $_outfile
+       run $_CC $CFLAGS $_cflags $_miscargs -c -o $tmpout
+       run $_LD $LDFLAGS $_ldflags $_libs $tmpout $_outfile $_libs $LIBGCC_PATH
+       _rv=$?
        rm $tmpout
+       exit $_rv
 else
-       run $_LD $LDFLAGS $_ldflags $_miscargs $_outfile $LIBGCC_PATH
+       run $_LD $_ldflags $_miscargs $_outfile $LDFLAGS $_libs $LIBGCC_PATH
 fi
 

UCC git Repository :: git.ucc.asn.au