forked from llvm-mirror/llvm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
makellvm
executable file
·145 lines (132 loc) · 3.8 KB
/
makellvm
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)