1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
|
#!/bin/csh -f
set pstatus = 0
onintr cleanup
alias usage 'echo "USAGE: $0:t [-h] [-n] [-obj obj-root] [gmake-flags] [VAR=...] [toolname (default: opt)]"; set pstatus = 1; goto cleanup'
set EXEC = opt
set GMAKE_OPTS = ""
set DEBUG = 0
## Search path for automatically finding the obj-root to use.
## Note: The src root directory ${LLVMDIR} will be prepended to this path later.
##
set OBJROOTDIRLIST = ( )
set doit = 1
unset options_done
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 -obj :
set OBJROOT = $argv[2]; shift argv; shift argv
if (! -d "$OBJROOT") then
echo "FATAL: Illegal obj-root directory ${OBJROOT}"
exit 1
endif
breaksw
case -d :
set doit = 0; set DEBUG = 1; shift argv; breaksw
case -* :
set GMAKE_OPTS = ( $GMAKE_OPTS $argv[1] ); shift argv; breaksw
default :
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
if ($DEBUG) then
echo "DEBUG: EXEC = $EXEC"
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 ($DEBUG) then
echo "DEBUG: MFILE = $MFILE"
endif
if (! -f $MFILE) then
echo "Missing or invalid makefile: $MFILE"
exit 1
endif
set LLVMDIR = `awk '/LEVEL[ ]*=/ {print $NF}' $MFILE`
if ($DEBUG) then
echo "DEBUG: LLVMDIR = $LLVMDIR"
endif
if ($#LLVMDIR == 0 || ! -d "$LLVMDIR") then
echo "Unable to find LLVM src-root directory or directory is invalid."
echo "Are you within a valid LLVM directory for running gmake?"
exit 1
endif
## Try to determine the obj-root directory automatically if not specified
##
set OBJROOTDIRLIST = ( ${LLVMDIR} $OBJROOTDIRLIST ) ## add src dir
if ($?OBJROOT == 0) then
## Try to determine object root directory by looking for Makefile.config
foreach objdir ( $OBJROOTDIRLIST )
if (-f "${objdir}/Makefile.config") then
set OBJROOT = ${objdir}
break
endif
end
if ($?OBJROOT == 0) then
echo "FATAL: Could not choose an obj-root directory from these choices:"
echo " ${OBJROOTDIRLIST}."
echo " You can specify it explicitly using '-obj obj-root'."
exit 1
endif
echo "Using OBJ-ROOT = ${OBJROOT} (specify '-obj obj-root' to override)."
endif
if (${OBJROOT} == ${LLVMDIR}) then
# run make in the source directory itself
set BUILDROOT = .
else
# run make in the in the obj-root tree, in the directory for $cwd
set SRCROOT = `sh -c "cd $LLVMDIR; pwd | sed 's/\//\\\//g'"`
set CURSRCDIR = `echo $cwd | sed -e "s/${SRCROOT}//"`
set BUILDROOT = ${OBJROOT}/${CURSRCDIR}
unset SRCROOT CURSRCDIR
endif
if ($DEBUG) then
echo "DEBUG: BUILDROOT = $BUILDROOT"
endif
if (! -d $BUILDROOT) then
echo "FATAL: Invalid build directory: ${BUILDROOT}"
exit 1
endif
cd $BUILDROOT
set CMD = "make $GMAKE_OPTS && (cd $LLVMDIR/tools/$EXEC && make $GMAKE_OPTS)"
if ($doit == 1) then
csh -f -c "$CMD"
set pstatus = $?
else
echo '(NOT EXECUTING) COMMAND:'
echo " $CMD"
endif
#=========================================================
# CODE TO BE EXECUTED IF INTERRUPT IS RECEIVED
#=========================================================
cleanup:
exit($pstatus)
|