(1) Pass 'VAR=string' arguments to gmake
authorVikram S. Adve <vadve@cs.uiuc.edu>
Tue, 22 Jul 2003 12:35:28 +0000 (12:35 +0000)
committerVikram S. Adve <vadve@cs.uiuc.edu>
Tue, 22 Jul 2003 12:35:28 +0000 (12:35 +0000)
(2) Detect LLVMDIR using the LEVEL variable in Makefile.
(3) To perform #2 propertly, use the same Makefile search rules as gmake.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7228 91177308-0d34-0410-b5e6-96231b3b80d8

utils/makellvm

index 9c8eab486d6f7a033bd9ff50c42e03292ff80d7a..25c812afdfa573dfef070eeb1de29dca26349beb 100755 (executable)
@@ -2,11 +2,8 @@
 
 set pstatus = 0
 onintr cleanup
-alias usage 'echo "USAGE: $0:t [-h] [-n] [gmake-flag...] [toolname]"; set pstatus = 1; goto cleanup'
+alias usage 'echo "USAGE: $0:t [-h] [-n] [gmake-flag...] [VAR=...] [toolname (default: opt)]"; set pstatus = 1; goto cleanup'
 
-       ## LLVMDIR is simply the directory where this script resides!
-set thisExec = $0              ## cannot use :h on $0 for some reason
-set LLVMDIR = `echo {$thisExec:h} | sed 's/\/utils$//'`
 set EXEC = opt
 set GMAKE_OPTS = ""
 
@@ -16,19 +13,57 @@ while ( !( $?options_done ) && ($#argv > 0))
     switch ($argv[1])
        case -h :
            usage
+       case -f :
+           if ($#argv < 2) usage
+           shift argv; set MFILE = $argv[1]; shift argv; breaksw
        case -n :
            set doit = 0; shift argv; breaksw
        case -* :
            set GMAKE_OPTS = ( $GMAKE_OPTS $argv[1] ); shift argv; breaksw
        default :
-           set options_done; breaksw
+           set optarg = `echo -n $argv[1] | sed 's/^[^=]*$//'`
+           if ($#optarg) then
+               set GMAKE_OPTS = ( $GMAKE_OPTS $optarg )
+               shift argv
+           else
+               set options_done
+           endif
+            breaksw
     endsw
 end
 
+if ($#argv > 1) then
+    echo 'ERROR: More than one tool is not supported by "makellvm"'
+    usage
+endif
 if ($#argv > 0) then
     set EXEC = $argv[1]
 endif
 
+## Compute LLVMDIR: the root of the current LLVM tree.
+## It is recorded in the variable LEVEL in Makefile, to compute it
+## 
+if (! $?MFILE) then
+    if (-f GNUmakefile) then
+       set MFILE = GNUmakefile
+    else if (-f makefile) then
+       set MFILE = makefile
+    else
+       set MFILE = Makefile
+    endif
+endif
+if (! -f $MFILE) then
+    echo "Missing or invalid makefile: $MFILE"
+    exit 1
+endif
+
+set LLVMDIR = `awk '/LEVEL[    ]*=/ {print $NF}' $MFILE`
+
+if ($?LLVMDIR == 0 || ! -d $LLVMDIR) then
+    echo "Unable to find LEVEL or LEVEL is invalid ($LEVEL)"
+    exit 1
+endif
+
 set CMD = "gmake $GMAKE_OPTS && (cd $LLVMDIR/tools/$EXEC && gmake $GMAKE_OPTS)"
 
 if ($doit == 1) then