Part of Slepp's ProjectsPastebinTURLImagebinFilebin
Feedback -- English French German Japanese
Create Upload Newest Tools Donate

Advertising

qos
Wednesday, November 14th, 2007 at 6:01:50pm UTC 

  1. #! /bin/bash
  2.  
  3. # Wrapper for compilers which do not understand `-c -o'.
  4.  
  5. # Copyright 1999, 2000 Free Software Foundation, Inc.
  6. # Written by Tom Tromey <[email protected]>.
  7. #
  8. # This program is free software; you can redistribute it and/or modify
  9. # it under the terms of the GNU General Public License as published by
  10. # the Free Software Foundation; either version 2, or (at your option)
  11. # any later version.
  12. #
  13. # This program is distributed in the hope that it will be useful,
  14. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16. # GNU General Public License for more details.
  17. #
  18. # You should have received a copy of the GNU General Public License
  19. # along with this program; if not, write to the Free Software
  20. # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  21.  
  22. # As a special exception to the GNU General Public License, if you
  23. # distribute this file as part of a program that contains a
  24. # configuration script generated by Autoconf, you may include it under
  25. # the same distribution terms that you use for the rest of that program.
  26.  
  27. # Usage:
  28. # compile PROGRAM [ARGS]...
  29. # `-o FOO.o' is removed from the args passed to the actual compile.
  30.  
  31. prog=$1
  32. shift
  33.  
  34. ofile=
  35. cfile=
  36. args=
  37. while test $# -gt 0; do
  38.    case "$1" in
  39.     -o)
  40.        # configure might choose to run compile as `compile cc -o foo foo.c'.
  41.        # So we do something ugly here.
  42.        ofile=$2
  43.        shift
  44.        case "$ofile" in
  45.         *.o | *.obj)
  46.            ;;
  47.         *)
  48.            args="$args -o $ofile"
  49.            ofile=
  50.            ;;
  51.        esac
  52.        ;;
  53.     *.c)
  54.        cfile=$1
  55.        args="$args $1"
  56.        ;;
  57.     *)
  58.        args="$args $1"
  59.        ;;
  60.    esac
  61.    shift
  62. done
  63.  
  64. if test -z "$ofile" || test -z "$cfile"; then
  65.    # If no `-o' option was seen then we might have been invoked from a
  66.    # pattern rule where we don't need one.  That is ok -- this is a
  67.    # normal compilation that the losing compiler can handle.  If no
  68.    # `.c' file was seen then we are probably linking.  That is also
  69.    # ok.
  70.    exec "$prog" $args
  71. fi
  72.  
  73. # Name of file we expect compiler to create.
  74. cofile=`echo $cfile | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
  75.  
  76. # Create the lock directory.
  77. # Note: use `[/.-]' here to ensure that we don't use the same name
  78. # that we are using for the .o file.  Also, base the name on the expected
  79. # object file name, since that is what matters with a parallel build.
  80. lockdir=`echo $cofile | sed -e 's|[/.-]|_|g'`.d
  81. while true; do
  82.    if mkdir $lockdir > /dev/null 2>&1; then
  83.       break
  84.    fi
  85.    sleep 1
  86. done
  87. # FIXME: race condition here if user kills between mkdir and trap.
  88. trap "rmdir $lockdir; exit 1" 1 2 15
  89.  
  90. # Run the compile.
  91. "$prog" $args
  92. status=$?
  93.  
  94. if test -f "$cofile"; then
  95.    mv "$cofile" "$ofile"
  96. fi
  97.  
  98. rmdir $lockdir
  99. exit $status

advertising

Beitrag aktualisieren

Aktualisieren Sie entweder den Beitrag und schicken Sie die Änderungen ein oder erstellen Sie einen neuen Beitrag.

You may also comment on this post.

Paste aktualisieren
Beitragdetails (optional)

Hinweis: Es wird nur der Paste selbst benötigt, auch wenn die folgenden Informationen für andere hilfreich sein könnten.

Name / Titel speichern?

(mit Leerzeichen getrennt, optional)



Please note that information posted here will not expire by default. If you do not want it to expire, please set the expiry time above. If it is set to expire, web search engines will not be allowed to index it prior to it expiring. Items that are not marked to expire will be indexable by search engines. Be careful with your passwords. All illegal activities will be reported and any information will be handed over to the authorities, so be good.

comments powered by Disqus
worth-right worth-right