Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/tools/host-mkdep Make this support the same new options as r...



details:   https://anonhg.NetBSD.org/src/rev/997306e9992d
branches:  trunk
changeset: 555172:997306e9992d
user:      dsl <dsl%NetBSD.org@localhost>
date:      Mon Nov 10 17:57:43 2003 +0000

description:
Make this support the same new options as recently added to the mkdep program.

diffstat:

 tools/host-mkdep/host-mkdep.in |  192 +++++++++++++++++++++++++++-------------
 1 files changed, 130 insertions(+), 62 deletions(-)

diffs (249 lines):

diff -r 83c384be26e2 -r 997306e9992d tools/host-mkdep/host-mkdep.in
--- a/tools/host-mkdep/host-mkdep.in    Mon Nov 10 17:56:38 2003 +0000
+++ b/tools/host-mkdep/host-mkdep.in    Mon Nov 10 17:57:43 2003 +0000
@@ -1,6 +1,6 @@
 #!@BSHELL@ -
 #
-#      $NetBSD: host-mkdep.in,v 1.10 2003/06/11 13:20:38 christos Exp $
+#      $NetBSD: host-mkdep.in,v 1.11 2003/11/10 17:57:43 dsl Exp $
 #
 # Copyright (c) 1991, 1993
 #      The Regents of the University of California.  All rights reserved.
@@ -37,11 +37,31 @@
 #
 
 APPEND=false
+MERGE=false
+OPTIONAL=false
+AWK_OPTIONAL=
+QUIET=false
 CPPFLAGS=
 NEWEXT=.o
 OUTFILE=.depend
 SRCS=
-USAGE="Usage: $0 [-a] [-p] [-f makefile] [flags] file ..."
+USAGE="Usage: $0 [-a] [-d] [-o] [-p] [-q] [-s suffix] [-f makefile] [flags] file ..."
+
+set_objlist()
+{
+       if [ -n "$NEWEXT" ]; then
+               oifs="$IFS"
+               IFS=" ,"
+               set -- $NEWEXT
+               IFS="$oifs"
+               objlist=
+               for suf in $*; do
+                       objlist="$objlist${objlist:+ }$file$suf"
+               done
+       else
+               objlist="$file"
+       fi
+}
 
 while [ $# -gt 0 ]; do
        case "$1" in
@@ -49,14 +69,36 @@
                shift
                ;;
 
+       -d)     MERGE=true
+               shift
+               ;;
+
        -f)     OUTFILE=$2
                shift 2
                ;;
 
+       -o)     OPTIONAL=true
+               AWK_OPTIONAL='print ".OPTIONAL:" $0'
+               shift
+               ;;
+
        -p)     NEWEXT=
                shift
                ;;
 
+       -q)     QUIET=true
+               shift
+               ;;
+
+       -s)     NEWEXT="$2"
+               shift 2
+               ;;
+
+       -*)     $MERGE || break;
+               echo "$USAGE" >&2
+               exit 1
+               ;;
+
        *)      break
                ;;
        esac
@@ -67,51 +109,55 @@
        exit 1
 fi
 
-while [ $# -gt 0 ]; do
-       case "$1" in
-       -L)                     # takes an arg, but ignored
-                       shift 2
-                       ;;
-
-       -c|-[lLMOW]*)           # takes no extra args
-                       shift
-                       ;;
+if $MERGE; then
+       SRCS="$*"
+else
+       while [ $# -gt 0 ]; do
+               case "$1" in
+               -L)                     # takes an arg, but ignored
+                               shift 2
+                               ;;
 
-       -[IDU]*)
-                       CPPFLAGS="$CPPFLAGS $1"
-                       shift
-                       ;;
+               -c|-[lLMOW]*)           # takes no extra args
+                               shift
+                               ;;
 
-       -[IDU]|-include|-isystem)
-                       CPPFLAGS="$CPPFLAGS $1 $2"
-                       shift 2
-                       ;;
+               -[IDU]*)
+                               CPPFLAGS="$CPPFLAGS $1"
+                               shift
+                               ;;
+
+               -[IDU]|-include|-isystem)
+                               CPPFLAGS="$CPPFLAGS $1 $2"
+                               shift 2
+                               ;;
 
-       -no-cpp-precomp)        # This is a Darwin-specific option.
-                       CPPFLAGS="$CPPFLAGS $1"
-                       shift
-                       ;;
+               -no-cpp-precomp)        # This is a Darwin-specific option.
+                               CPPFLAGS="$CPPFLAGS $1"
+                               shift
+                               ;;
 
-       -nostdinc*)     # This is a gcc/g++ ism; ignore if not gcc/g++
-                       case "@CFLAGS@" in
-                       *-O2*)  # Autoconf puts -O2 when gcc only
-                               CPPFLAGS="$CPPFLAGS $1"
+               -nostdinc*)     # This is a gcc/g++ ism; ignore if not gcc/g++
+                               case "@CFLAGS@" in
+                               *-O2*)  # Autoconf puts -O2 when gcc only
+                                       CPPFLAGS="$CPPFLAGS $1"
+                                       ;;
+                               esac    
+                               shift
                                ;;
-                       esac    
-                       shift
-                       ;;
+
+               -*)             
+                               echo "$0: Unknown option: $1" 1>&2 # all other -options
+                               exit 1
+                               ;;
 
-       -*)             
-                       echo "$0: Unknown option: $1" 1>&2 # all other -options
-                       exit 1
-                       ;;
-
-       *)      
-                       SRCS="$SRCS $1" # source file
-                       shift
-                       ;;
-       esac
-done
+               *)      
+                               SRCS="$SRCS $1" # source file
+                               shift
+                               ;;
+               esac
+       done
+fi
 
 if [ -z "$SRCS" ]; then
        echo "$USAGE" 1>&2
@@ -123,29 +169,51 @@
 
 trap 'rm -f $TMP; exit 1' 1 2 3 13 15
 
-for f in $SRCS; do
-       @CPP@ $CPPFLAGS $f | @AWK@ '
-               BEGIN {
-                       objfile = "'$f'"
-                       sub(/^.*\//, "", objfile)
-                       sub(/\.(c|cc|m)$/, "'$NEWEXT'", objfile)
-               }
-               /^#/ {
-                       # Be as tolerant as possible.
-                       sub(/^#(line)? [ 0-9]*\"?/, "")
-                       sub(/^#(pragma).*/, "")
-                       sub(/^<.*/, "")
-                       sub(/\".*$/, "")
-                       sub(/ [ 0-9]*$/, "")
+if $MERGE; then
+       for f in $SRCS; do
+               if [ ! -f "$f" ]; then
+                       if ! $QUIET; then echo "$0: Ignoring $f" >&2; fi
+                       continue
+               fi
+               while IFS=':'; read target dependants; do
+                       IFS=
+                       t1="${target#* }"
+                       file="${target%.o}"
+                       if [ "$t" = "$target" -a "$file" != "$target" ]; then
+                               set_objlist $file
+                               target="$objlist"
+                       fi
+                       echo "$target:$dependants"
+                       if "$OPTIONAL"; then
+                               echo ".OPTIONAL:$dependants"
+                       fi
+               done <$f
+       done >$TMP
+else
+       for f in $SRCS; do
+               file=${f##*/}
+               file=${file%.*}
+               set_objlist $file
 
-                       if ($0 in seenfiles) next
-                       if ($0 ~ /y.tab.c/) next
+               @CPP@ $CPPFLAGS $f | @AWK@ '
+                       /^#/ {
+                               # Be as tolerant as possible.
+                               sub(/^#(line)? [ 0-9]*\"?/, "")
+                               sub(/^#(pragma).*/, "")
+                               sub(/^<.*/, "")
+                               sub(/\".*$/, "")
+                               sub(/ [ 0-9]*$/, "")
 
-                       seenfiles[$0] = 1
-                       print objfile ": " $0
-               }
-       ' >> $TMP
-done
+                               if ($0 in seenfiles) next
+                               if ($0 ~ /y.tab.c/) next
+
+                               seenfiles[$0] = 1
+                               print "'"$objlist"'" ": " $0
+                               '"$AWK_OPTIONAL"'
+                       }
+               ' >> $TMP
+       done
+fi
 
 if $APPEND; then
        cat $TMP >> $OUTFILE



Home | Main Index | Thread Index | Old Index