🌐 AI搜索 & 代理 主页
blob: 71beb8214b9da019b3f591483be7c27cc9fb9281 [file] [log] [blame]
Graydon Hoare9c6e7e62011-03-16 16:17:321#!/bin/sh
2
Graydon Hoare4c2245d2011-03-18 06:51:453msg() {
4 echo "configure: $1"
5}
Graydon Hoare9c6e7e62011-03-16 16:17:326
Graydon Hoare94731fa2011-03-30 04:45:097step_msg() {
8 msg
9 msg "$1"
10 msg
11}
12
Graydon Hoare18c6cc62011-09-23 17:50:0613warn() {
14 echo "configure: WARNING: $1"
15}
16
Graydon Hoare4c2245d2011-03-18 06:51:4517err() {
18 echo "configure: error: $1"
19 exit 1
20}
21
Graydon Hoarec74d5ce2012-01-06 02:59:5422need_ok() {
23 if [ $? -ne 0 ]
24 then
25 err $1
26 fi
27}
Graydon Hoare50c78312011-03-20 01:31:5928
29need_cmd() {
30 if which $1 >/dev/null 2>&1
31 then msg "found $1"
32 else err "need $1"
33 fi
34}
35
Graydon Hoare4c2245d2011-03-18 06:51:4536make_dir() {
37 if [ ! -d $1 ]
38 then
39 msg "mkdir -p $1"
40 mkdir -p $1
41 fi
42}
43
Graydon Hoare418c6bc2012-02-28 20:05:0544copy_if_changed() {
45 if cmp -s $1 $2
46 then
47 msg "leaving $2 unchanged"
48 else
49 msg "cp $1 $2"
Graydon Hoare1c14d362012-02-29 02:41:5450 cp -f $1 $2
51 chmod u-w $2 # make copied artifact read-only
Graydon Hoare418c6bc2012-02-28 20:05:0552 fi
53}
54
55move_if_changed() {
56 if cmp -s $1 $2
57 then
58 msg "leaving $2 unchanged"
59 else
60 msg "mv $1 $2"
Graydon Hoare1c14d362012-02-29 02:41:5461 mv -f $1 $2
62 chmod u-w $2 # make moved artifact read-only
Graydon Hoare418c6bc2012-02-28 20:05:0563 fi
Graydon Hoare4c2245d2011-03-18 06:51:4564}
Graydon Hoare9c6e7e62011-03-16 16:17:3265
Graydon Hoare320ac6b2011-03-17 00:36:4966putvar() {
67 local T
68 eval T=\$$1
Graydon Hoare3e7ff652011-03-20 01:32:1969 eval TLEN=\${#$1}
70 if [ $TLEN -gt 35 ]
71 then
72 printf "configure: %-20s := %.35s ...\n" $1 "$T"
73 else
Haitao Lib2ec26c2012-04-10 10:25:5974 printf "configure: %-20s := %s %s\n" $1 "$T" "$2"
Graydon Hoare3e7ff652011-03-20 01:32:1975 fi
Graydon Hoare418c6bc2012-02-28 20:05:0576 printf "%-20s := %s\n" $1 "$T" >>config.tmp
Graydon Hoare320ac6b2011-03-17 00:36:4977}
Graydon Hoare9c6e7e62011-03-16 16:17:3278
Graydon Hoare320ac6b2011-03-17 00:36:4979probe() {
80 local V=$1
Graydon Hoare0d7df062012-01-19 21:08:0181 shift
82 local P
Graydon Hoare320ac6b2011-03-17 00:36:4983 local T
Graydon Hoare0d7df062012-01-19 21:08:0184 for P
85 do
86 T=$(which $P 2>&1)
87 if [ $? -eq 0 ]
88 then
Haitao Lib2ec26c2012-04-10 10:25:5989 VER0=$($P --version 2>/dev/null | head -1 \
90 | sed -e 's/[^0-9]*\([vV]\?[0-9.]\+[^ ]*\).*/\1/' )
91 if [ $? -eq 0 -a "x${VER0}" != "x" ]
92 then
93 VER="($VER0)"
94 else
95 VER=""
96 fi
Graydon Hoare0d7df062012-01-19 21:08:0197 break
98 else
Haitao Lib2ec26c2012-04-10 10:25:5999 VER=""
Graydon Hoare0d7df062012-01-19 21:08:01100 T=""
101 fi
102 done
Graydon Hoare320ac6b2011-03-17 00:36:49103 eval $V=\$T
Haitao Lib2ec26c2012-04-10 10:25:59104 putvar $V "$VER"
Graydon Hoare320ac6b2011-03-17 00:36:49105}
Graydon Hoare9c6e7e62011-03-16 16:17:32106
Graydon Hoare4c2245d2011-03-18 06:51:45107probe_need() {
108 local V=$1
Graydon Hoare0d7df062012-01-19 21:08:01109 probe $*
Graydon Hoare4c2245d2011-03-18 06:51:45110 eval VV=\$$V
111 if [ -z "$VV" ]
112 then
Graydon Hoare0d7df062012-01-19 21:08:01113 err "needed, but unable to find any of: $*"
Graydon Hoare4c2245d2011-03-18 06:51:45114 fi
115}
116
Jimmy Lub17b3d92012-12-01 04:20:18117validate_opt () {
118 for arg in $CFG_CONFIGURE_ARGS
119 do
120 isArgValid=0
121 for option in $BOOL_OPTIONS
122 do
123 if test --disable-$option = $arg
124 then
125 isArgValid=1
126 fi
127 if test --enable-$option = $arg
128 then
129 isArgValid=1
130 fi
131 done
132 for option in $VAL_OPTIONS
133 do
134 if echo "$arg" | grep -q -- "--$option="
135 then
136 isArgValid=1
137 fi
138 done
Thad Guidry9aa0ced2013-03-23 01:21:43139 if [ "$arg" = "--help" ]
Jimmy Lub17b3d92012-12-01 04:20:18140 then
Thad Guidry9aa0ced2013-03-23 01:21:43141 echo ""
142 echo "No more help available for Configure options,"
143 echo "check the Wiki or join our IRC channel"
144 break
145 else
146 if test $isArgValid -eq 0
147 then
148 err "Option '$arg' is not recognized"
149 fi
Jimmy Lub17b3d92012-12-01 04:20:18150 fi
151 done
152}
153
Elly Jonesa26554d2011-11-02 22:58:21154valopt() {
Jimmy Lub17b3d92012-12-01 04:20:18155 VAL_OPTIONS="$VAL_OPTIONS $1"
156
Elly Jonesa26554d2011-11-02 22:58:21157 local OP=$1
158 local DEFAULT=$2
159 shift
160 shift
161 local DOC="$*"
162 if [ $HELP -eq 0 ]
163 then
Stefan Plantikow9c4b3c22011-12-14 00:46:08164 local UOP=$(echo $OP | tr '[:lower:]' '[:upper:]' | tr '\-' '\_')
Elly Jones234a4e52011-11-02 23:03:34165 local V="CFG_${UOP}"
166 eval $V="$DEFAULT"
Elly Jonesa26554d2011-11-02 22:58:21167 for arg in $CFG_CONFIGURE_ARGS
168 do
169 if echo "$arg" | grep -q -- "--$OP="
170 then
171 val=$(echo "$arg" | cut -f2 -d=)
172 eval $V=$val
173 fi
174 done
175 putvar $V
176 else
Elly Jones234a4e52011-11-02 23:03:34177 if [ -z "$DEFAULT" ]
178 then
179 DEFAULT="<none>"
180 fi
181 OP="${OP}=[${DEFAULT}]"
182 printf " --%-30s %s\n" "$OP" "$DOC"
Elly Jonesa26554d2011-11-02 22:58:21183 fi
184}
185
Graydon Hoare94731fa2011-03-30 04:45:09186opt() {
Jimmy Lub17b3d92012-12-01 04:20:18187 BOOL_OPTIONS="$BOOL_OPTIONS $1"
188
Graydon Hoare94731fa2011-03-30 04:45:09189 local OP=$1
190 local DEFAULT=$2
191 shift
192 shift
193 local DOC="$*"
194 local FLAG=""
195
196 if [ $DEFAULT -eq 0 ]
197 then
198 FLAG="enable"
199 else
200 FLAG="disable"
201 DOC="don't $DOC"
202 fi
203
204 if [ $HELP -eq 0 ]
205 then
206 for arg in $CFG_CONFIGURE_ARGS
207 do
208 if [ "$arg" = "--${FLAG}-${OP}" ]
209 then
Graydon Hoare8fc51df2011-06-27 18:53:04210 OP=$(echo $OP | tr 'a-z-' 'A-Z_')
Graydon Hoare94731fa2011-03-30 04:45:09211 FLAG=$(echo $FLAG | tr 'a-z' 'A-Z')
212 local V="CFG_${FLAG}_${OP}"
213 eval $V=1
214 putvar $V
215 fi
216 done
217 else
218 if [ ! -z "$META" ]
219 then
220 OP="$OP=<$META>"
221 fi
222 printf " --%-30s %s\n" "$FLAG-$OP" "$DOC"
223 fi
224}
225
Graydon Hoare50c78312011-03-20 01:31:59226msg "looking for configure programs"
Graydon Hoare418c6bc2012-02-28 20:05:05227need_cmd cmp
Graydon Hoare50c78312011-03-20 01:31:59228need_cmd mkdir
229need_cmd printf
Graydon Hoare7ac885e2011-03-22 06:06:42230need_cmd cut
Graydon Hoaree0b71dd2012-10-18 20:05:02231need_cmd head
Graydon Hoare7ac885e2011-03-22 06:06:42232need_cmd grep
233need_cmd xargs
234need_cmd cp
235need_cmd find
Graydon Hoare9d925432011-03-23 20:26:17236need_cmd uname
237need_cmd date
Graydon Hoare9b617da2011-03-23 23:30:26238need_cmd tr
Patrick Walton04f966f2011-05-05 01:28:30239need_cmd sed
Graydon Hoare9d925432011-03-23 20:26:17240
Brian Anderson2e54a762011-11-03 21:13:22241
Graydon Hoare9d925432011-03-23 20:26:17242msg "inspecting environment"
243
244CFG_OSTYPE=$(uname -s)
Graydon Hoare9d925432011-03-23 20:26:17245CFG_CPUTYPE=$(uname -m)
Graydon Hoare13215802011-09-21 18:24:59246
Patrick Waltonf8514d92011-05-09 03:45:29247if [ $CFG_OSTYPE = Darwin -a $CFG_CPUTYPE = i386 ]
248then
249 # Darwin's `uname -s` lies and always returns i386. We have to use sysctl
250 # instead.
Graydon Hoare341f4142012-02-29 02:42:28251 if sysctl hw.optional.x86_64 | grep -q ': 1'
Patrick Waltonf8514d92011-05-09 03:45:29252 then
253 CFG_CPUTYPE=x86_64
254 fi
255fi
Graydon Hoare9d925432011-03-23 20:26:17256
Graydon Hoare13215802011-09-21 18:24:59257# The goal here is to come up with the same triple as LLVM would,
258# at least for the subset of platforms we're willing to target.
259
260case $CFG_OSTYPE in
261
262 Linux)
263 CFG_OSTYPE=unknown-linux-gnu
264 ;;
265
266 FreeBSD)
267 CFG_OSTYPE=unknown-freebsd
268 ;;
269
270 Darwin)
271 CFG_OSTYPE=apple-darwin
272 ;;
273
274 MINGW32*)
275 CFG_OSTYPE=pc-mingw32
276 ;;
Thad Guidry9aa0ced2013-03-23 01:21:43277# Thad's Cygwin identifers below
Graydon Hoare13215802011-09-21 18:24:59278
Thad Guidry9aa0ced2013-03-23 01:21:43279# Vista 32 bit
280 CYGWIN_NT-6.0)
281 CFG_OSTYPE=pc-mingw32
282 CFG_CPUTYPE=i686
283 ;;
284
285# Vista 64 bit
286 CYGWIN_NT-6.0-WOW64)
287 CFG_OSTYPE=w64-mingw32
288 CFG_CPUTYPE=x86_64
289 ;;
290
291# Win 7 32 bit
292 CYGWIN_NT-6.1)
293 CFG_OSTYPE=pc-mingw32
294 CFG_CPUTYPE=i686
295 ;;
296
297# Win 7 64 bit
298 CYGWIN_NT-6.1-WOW64)
299 CFG_OSTYPE=w64-mingw32
300 CFG_CPUTYPE=x86_64
301 ;;
302
303# We do not detect other OS such as XP/2003 using 64 bit using uname.
304# If we want to in the future, we will need to use Cygwin - Chuck's csih helper in /usr/lib/csih/winProductName.exe or alternative.
Graydon Hoare13215802011-09-21 18:24:59305 *)
306 err "unknown OS type: $CFG_OSTYPE"
307 ;;
308esac
309
310
311case $CFG_CPUTYPE in
312
313 i386 | i486 | i686 | i786 | x86)
Brian Anderson8e14d182011-11-03 20:49:00314 CFG_CPUTYPE=i686
Graydon Hoare13215802011-09-21 18:24:59315 ;;
316
317 xscale | arm)
318 CFG_CPUTYPE=arm
319 ;;
320
User Jyyoua59c4b12011-12-30 08:18:55321 x86_64 | x86-64 | x64 | amd64)
Niko Matsakis50e2e072011-11-30 23:44:35322 CFG_CPUTYPE=x86_64
Graydon Hoare13215802011-09-21 18:24:59323 ;;
324
325 *)
326 err "unknown CPU type: $CFG_CPUTYPE"
327esac
328
Arkaitz Jimenezcf8bded2012-10-16 22:12:07329# Detect 64 bit linux systems with 32 bit userland and force 32 bit compilation
330if [ $CFG_OSTYPE = unknown-linux-gnu -a $CFG_CPUTYPE = x86_64 ]
331then
332 file -L "$SHELL" | grep -q "x86[_-]64"
333 if [ $? != 0 ]; then
334 CFG_CPUTYPE=i686
335 fi
336fi
337
338
Brian Anderson15c0c352013-02-22 00:15:01339DEFAULT_BUILD_TRIPLE="${CFG_CPUTYPE}-${CFG_OSTYPE}"
Graydon Hoare13215802011-09-21 18:24:59340
Graydon Hoare079c3b02012-04-30 22:40:04341CFG_SRC_DIR="$(cd $(dirname $0) && pwd)/"
342CFG_BUILD_DIR="$(pwd)/"
343CFG_SELF=${CFG_SRC_DIR}$(basename $0)
Graydon Hoare10f33602011-03-25 17:29:45344CFG_CONFIGURE_ARGS="$@"
345
Graydon Hoare94731fa2011-03-30 04:45:09346OPTIONS=""
347HELP=0
348if [ "$1" = "--help" ]
349then
350 HELP=1
351 shift
352 echo ""
353 echo "Usage: $CFG_SELF [options]"
354 echo ""
355 echo "Options:"
356 echo ""
357else
Graydon Hoare418c6bc2012-02-28 20:05:05358 msg "recreating config.tmp"
359 echo '' >config.tmp
Graydon Hoare4c2245d2011-03-18 06:51:45360
Graydon Hoare94731fa2011-03-30 04:45:09361 step_msg "processing $CFG_SELF args"
362fi
Graydon Hoare4c2245d2011-03-18 06:51:45363
Jimmy Lub17b3d92012-12-01 04:20:18364BOOL_OPTIONS=""
365VAL_OPTIONS=""
366
Rafael Ávila de Espíndola88894b62011-07-20 20:02:36367opt sharedstd 1 "build libstd as a shared library"
Mahmut Bulutc05d96c2012-10-15 20:30:06368opt valgrind 0 "run tests with valgrind (memcheck by default)"
Brian Anderson8a32f8e2012-03-02 22:07:43369opt helgrind 0 "run tests with helgrind instead of memcheck"
Graydon Hoare94731fa2011-03-30 04:45:09370opt docs 1 "build documentation"
Graydon Hoarecae703c2011-04-08 22:44:41371opt optimize 1 "build optimized rust code"
Niko Matsakis1456a232011-11-11 18:24:58372opt optimize-cxx 1 "build optimized C++ code"
Niko Matsakis895822a2011-11-11 19:21:26373opt optimize-llvm 1 "build optimized LLVM"
Brian Andersonf4529732012-03-30 02:10:38374opt debug 0 "build with extra debug fun"
Graydon Hoare5fc2e9e2012-02-10 20:07:01375opt fast-make 0 "use .gitmodules as timestamp for submodule deps"
Brian Anderson8d7863f2011-11-29 01:50:23376opt manage-submodules 1 "let the build manage the git submodules"
Graydon Hoare8fc51df2011-06-27 18:53:04377opt mingw-cross 0 "cross-compile for win32 using mingw"
Reuben Morais04dd6102012-01-14 04:39:34378opt clang 0 "prefer clang to gcc for building the runtime"
Evan McClanahan2c93b1b2012-04-05 22:40:34379opt local-rust 0 "use an installed rustc rather than downloading a snapshot"
auREAX26ed3872012-10-04 22:08:34380opt pax-flags 0 "apply PaX flags to rustc binaries (required for GRSecurity/PaX-patched kernels)"
Elly Jonesa26554d2011-11-02 22:58:21381valopt prefix "/usr/local" "set installation prefix"
Evan McClanahan2c93b1b2012-04-05 22:40:34382valopt local-rust-root "/usr/local" "set prefix for local rust binary"
Brian Anderson1deaf972011-11-02 23:26:22383valopt llvm-root "" "set LLVM root"
Brian Anderson15c0c352013-02-22 00:15:01384valopt build-triple "${DEFAULT_BUILD_TRIPLE}" "LLVM build triple"
385valopt host-triples "${CFG_BUILD_TRIPLE}" "LLVM host triples"
386valopt target-triples "${CFG_HOST_TRIPLES}" "LLVM target triples"
Young-il Choi7714d522013-03-02 12:25:12387valopt android-cross-path "/opt/ndk_standalone" "Android NDK standalone path"
388valopt mingw32-cross-path "" "MinGW32 cross compiler path"
Graydon Hoare94731fa2011-03-30 04:45:09389
Jimmy Lub17b3d92012-12-01 04:20:18390# Validate Options
391step_msg "validating $CFG_SELF args"
392validate_opt
393
Brian Anderson4151a3a2011-11-02 23:25:22394if [ $HELP -eq 1 ]
395then
396 echo ""
397 exit 0
398fi
399
Graydon Hoare320ac6b2011-03-17 00:36:49400
Graydon Hoare94731fa2011-03-30 04:45:09401step_msg "looking for build programs"
Brian Anderson2e54a762011-11-03 21:13:22402
Daniel Brooks11b403d2012-02-21 08:58:02403probe_need CFG_PERL perl
Daniel Brooks11b403d2012-02-21 08:58:02404probe_need CFG_CURL curl
Ben Striegel6322eda2012-06-26 00:18:09405probe_need CFG_PYTHON python2.7 python2.6 python2 python
406
407python_version=$($CFG_PYTHON -V 2>&1)
408if [ $(echo $python_version | grep -c '^Python 2\.[4567]') -ne 1 ]; then
409 err "Found $python_version, but LLVM requires Python 2.4-2.7"
410fi
Daniel Brooks2049d1f2012-02-29 18:18:04411
412# If we have no git directory then we are probably a tarball distribution
413# and shouldn't attempt to load submodules
414if [ ! -e ${CFG_SRC_DIR}.git ]
415then
Brian Andersona7c4c182012-02-29 19:48:29416 probe CFG_GIT git
Daniel Brooks2049d1f2012-02-29 18:18:04417 msg "git: no git directory. disabling submodules"
418 CFG_DISABLE_MANAGE_SUBMODULES=1
419else
Brian Andersona7c4c182012-02-29 19:48:29420 probe_need CFG_GIT git
Daniel Brooks2049d1f2012-02-29 18:18:04421fi
422
Patrick Walton11d22de2011-05-09 17:16:56423probe CFG_CLANG clang++
Patrick Walton269550f2011-05-09 04:10:04424probe CFG_GCC gcc
Haitao Lib2ec26c2012-04-10 10:25:59425probe CFG_LD ld
Graydon Hoare320ac6b2011-03-17 00:36:49426probe CFG_VALGRIND valgrind
Graydon Hoared5b2d622011-09-13 22:06:21427probe CFG_PERF perf
unknownfe57a7e2012-01-26 00:02:53428probe CFG_ISCC iscc
Graydon Hoarefefdb632012-01-13 03:10:30429probe CFG_LLNEXTGEN LLnextgen
430probe CFG_PANDOC pandoc
431probe CFG_PDFLATEX pdflatex
Graydon Hoare193279d2012-01-18 22:14:28432probe CFG_XETEX xetex
433probe CFG_LUATEX luatex
Graydon Hoare0d7df062012-01-19 21:08:01434probe CFG_NODE nodejs node
Brian Anderson79e9b6d2013-02-10 22:17:28435probe CFG_GDB gdb
auREAX039110b2012-10-04 21:51:54436if [ "$CFG_OSTYPE" = "unknown-linux-gnu" ]
437then
438 probe CFG_PAXCTL paxctl /sbin/paxctl
439 probe CFG_ZCAT zcat
440fi
Graydon Hoare4c2245d2011-03-18 06:51:45441
Brian Anderson17fef6c2012-01-18 22:32:15442if [ ! -z "$CFG_PANDOC" ]
443then
Huon Wilson218093d2013-03-25 13:09:52444 PV_MAJOR_MINOR=$(pandoc --version | grep '^pandoc ' |
445 # extract the first 2 version fields, ignore everything else
446 sed 's/pandoc \([0-9]*\)\.\([0-9]*\).*/\1 \2/')
447
448 # these patterns are shell globs, *not* regexps
449 PV_MAJOR=${PV_MAJOR_MINOR% *}
450 PV_MINOR=${PV_MAJOR_MINOR#* }
Tony Young2c1ed182012-10-18 09:56:22451 if [ "$PV_MAJOR" -lt "1" ] || [ "$PV_MINOR" -lt "8" ]
Brian Anderson17fef6c2012-01-18 22:32:15452 then
Graydon Hoare33795bc2012-10-18 20:04:52453 step_msg "pandoc $PV_MAJOR.$PV_MINOR is too old. disabling"
454 BAD_PANDOC=1
Brian Anderson17fef6c2012-01-18 22:32:15455 fi
456fi
457
auREAX0bb437a2012-10-04 01:46:32458if [ "$CFG_OSTYPE" = "unknown-linux-gnu" ]
459then
auREAX26ed3872012-10-04 22:08:34460 if [ ! -z "$CFG_ENABLE_PAX_FLAGS" -a -z "$CFG_PAXCTL" ]
auREAX0bb437a2012-10-04 01:46:32461 then
462 err "enabled PaX markings but no paxctl binary found"
463 fi
464
auREAX26ed3872012-10-04 22:08:34465 if [ -z "$CFG_DISABLE_PAX_FLAGS" ]
auREAX0bb437a2012-10-04 01:46:32466 then
467 # GRSecurity/PaX detection. This can be very flaky.
468 GRSEC_DETECTED=
469
470 # /dev/grsec only exists if CONFIG_GRKERNSEC_NO_RBAC is not set.
auREAX039110b2012-10-04 21:51:54471 # /proc/sys/kernel/grsecurity is not available if ÇONFIG_GRKERNSEC_SYSCTL is not set.
auREAX0bb437a2012-10-04 01:46:32472 if [ -e /dev/grsec -o -d /proc/sys/kernel/grsecurity ]
473 then
474 GRSEC_DETECTED=1
475 # /proc/config.gz is normally only available to root, and only if CONFIG_IKCONFIG_PROC has been set.
476 elif [ -r /proc/config.gz -a ! -z "$CFG_ZCAT" ]
477 then
478 if "$CFG_ZCAT" /proc/config.gz | grep --quiet "CONFIG_GRKERNSEC=y"
479 then
480 GRSEC_DETECTED=1
481 fi
482 # Flaky.
483 elif grep --quiet grsec /proc/version
484 then
485 GRSEC_DETECTED=1
486 fi
487
488 if [ ! -z "$GRSEC_DETECTED" ]
489 then
490 step_msg "GRSecurity: yes"
491 if [ ! -z "$CFG_PAXCTL" ]
492 then
auREAX26ed3872012-10-04 22:08:34493 CFG_ENABLE_PAX_FLAGS=1
auREAX0bb437a2012-10-04 01:46:32494 else
auREAX26ed3872012-10-04 22:08:34495 warn "GRSecurity kernel detected but no paxctl binary found: not setting CFG_ENABLE_PAX_FLAGS"
auREAX0bb437a2012-10-04 01:46:32496 fi
497 else
498 step_msg "GRSecurity: no"
499 fi
500 fi
501fi
502
Brian Anderson7ba0dce2012-04-19 22:46:09503if [ ! -z "$CFG_ENABLE_LOCAL_RUST" ]
Evan McClanahan2c93b1b2012-04-05 22:40:34504then
Brian Anderson7ba0dce2012-04-19 22:46:09505 if [ ! -f ${CFG_LOCAL_RUST_ROOT}/bin/rustc ]
506 then
507 err "no local rust to use"
508 else
509 LRV=`${CFG_LOCAL_RUST_ROOT}/bin/rustc --version`
510 step_msg "using rustc at: ${CFG_LOCAL_RUST_ROOT} with version: " $LRV
511 fi
Evan McClanahan2c93b1b2012-04-05 22:40:34512fi
513
Graydon Hoare4b0e1332012-11-14 22:27:45514# Force freebsd to build with clang; gcc doesn't like us there
515if [ $CFG_OSTYPE = unknown-freebsd ]
516then
517 step_msg "on FreeBSD, forcing use of clang"
518 CFG_ENABLE_CLANG=1
519 putvar CFG_ENABLE_CLANG
520fi
521
522
Brian Anderson7c361602011-11-03 19:01:31523if [ -z "$CFG_ENABLE_CLANG" -a -z "$CFG_GCC" ]
Patrick Walton269550f2011-05-09 04:10:04524then
525 err "either clang or gcc is required"
526fi
527
Erick Tryzelaar134b61a2011-05-19 02:32:18528if [ ! -z "$CFG_LLVM_ROOT" -a -e "$CFG_LLVM_ROOT/bin/llvm-config" ]
529then
Brian Andersona4e1a432011-11-02 22:10:19530 step_msg "using custom LLVM at $CFG_LLVM_ROOT"
Erick Tryzelaar134b61a2011-05-19 02:32:18531
Brian Anderson225f50e2011-11-02 21:07:32532 LLVM_CONFIG="$CFG_LLVM_ROOT/bin/llvm-config"
Brian Andersona4e1a432011-11-02 22:10:19533 LLVM_VERSION=$($LLVM_CONFIG --version)
Patrick Walton35951c92011-03-22 01:08:57534
Brian Anderson225f50e2011-11-02 21:07:32535 case $LLVM_VERSION in
Fabian Deutsch07f8ce72013-03-26 19:59:13536 (3.2svn|3.2|3.1svn|3.1|3.0svn|3.0)
Brian Anderson2e54a762011-11-03 21:13:22537 msg "found ok version of LLVM: $LLVM_VERSION"
Brian Anderson225f50e2011-11-02 21:07:32538 ;;
539 (*)
Brian Andersona4e1a432011-11-02 22:10:19540 err "bad LLVM version: $LLVM_VERSION, need >=3.0svn"
Brian Anderson225f50e2011-11-02 21:07:32541 ;;
542 esac
543fi
Graydon Hoare4c2245d2011-03-18 06:51:45544
Brian Anderson7c361602011-11-03 19:01:31545if [ ! -z "$CFG_ENABLE_CLANG" ]
Erick Tryzelaar73410552011-05-19 04:41:40546then
Brian Anderson7c361602011-11-03 19:01:31547 if [ -z "$CFG_CLANG" ]
548 then
549 err "clang requested but not found"
550 fi
Erick Tryzelaar73410552011-05-19 04:41:40551 CFG_CLANG_VERSION=$("$CFG_CLANG" \
552 --version \
553 | grep version \
Jyun-Yan Youc2bf9b72012-01-22 07:03:12554 | sed 's/.*\(version .*\)/\1/' \
555 | cut -d ' ' -f 2)
Erick Tryzelaar73410552011-05-19 04:41:40556
557 case $CFG_CLANG_VERSION in
Luqman Aden19c10402013-03-22 19:49:55558 (3.0svn | 3.0 | 3.1* | 3.2* | 3.3* | 4.0* | 4.1* | 4.2*)
Erick Tryzelaar73410552011-05-19 04:41:40559 step_msg "found ok version of CLANG: $CFG_CLANG_VERSION"
Patrick Waltonad925952011-08-05 15:57:39560 CFG_C_COMPILER="clang"
Erick Tryzelaar73410552011-05-19 04:41:40561 ;;
562 (*)
Brian Anderson2e54a762011-11-03 21:13:22563 err "bad CLANG version: $CFG_CLANG_VERSION, need >=3.0svn"
Erick Tryzelaar73410552011-05-19 04:41:40564 ;;
565 esac
Patrick Waltonad925952011-08-05 15:57:39566else
567 CFG_C_COMPILER="gcc"
Erick Tryzelaar73410552011-05-19 04:41:40568fi
Graydon Hoare18c6cc62011-09-23 17:50:06569
Graydon Hoare3a5c75e2012-01-31 00:29:13570# a little post-processing of various config values
Brian Anderson9563c172011-10-01 02:00:19571
Graydon Hoare3a5c75e2012-01-31 00:29:13572CFG_PREFIX=${CFG_PREFIX%/}
Brian Anderson14e5a6e2013-03-07 06:36:20573CFG_HOST_TRIPLES="$(echo $CFG_HOST_TRIPLES | tr ',' ' ')"
Graydon Hoare3a5c75e2012-01-31 00:29:13574CFG_TARGET_TRIPLES="$(echo $CFG_TARGET_TRIPLES | tr ',' ' ')"
Young-il Choi8fe7fd62013-03-27 04:35:20575CFG_SUPPORTED_TARGET_TRIPLES="$(grep ^CC_*=* $CFG_SRC_DIR/mk/platform.mk | sed -e 's/^CC_//' -e 's/\([^=]*\).*/\1/' | xargs)"
Niko Matsakis9acc2bf2011-12-03 00:04:17576
Young-il Choi7714d522013-03-02 12:25:12577# copy host-triples to target-triples so that hosts are a subset of targets
578V_TEMP=""
579for i in $CFG_HOST_TRIPLES $CFG_TARGET_TRIPLES;
580do
581 echo "$V_TEMP" | grep -qF $i || V_TEMP="$V_TEMP${V_TEMP:+ }$i"
582done
583CFG_TARGET_TRIPLES=$V_TEMP
584
585# check target-specific tool-chains
586for i in $CFG_TARGET_TRIPLES
587do
Young-il Choi2911fc22013-03-25 06:36:34588 L_CHECK=false
589 for j in $CFG_SUPPORTED_TARGET_TRIPLES
590 do
591 if [ $i = $j ]
592 then
593 L_CHECK=true
594 fi
595 done
596
597 if [ $L_CHECK = false ]
598 then
599 err "unsupported target triples \"$i\" found"
600 fi
601
Young-il Choi7714d522013-03-02 12:25:12602 case $i in
Young-il Choi2911fc22013-03-25 06:36:34603 arm-linux-androideabi)
Young-il Choi7714d522013-03-02 12:25:12604
605 if [ ! -f $CFG_ANDROID_CROSS_PATH/bin/arm-linux-androideabi-gcc ]
606 then
607 err "NDK $CFG_ANDROID_CROSS_PATH/bin/arm-linux-androideabi-gcc not found"
608 fi
609 if [ ! -f $CFG_ANDROID_CROSS_PATH/bin/arm-linux-androideabi-g++ ]
610 then
611 err "NDK $CFG_ANDROID_CROSS_PATH/bin/arm-linux-androideabi-g++ not found"
612 fi
613 if [ ! -f $CFG_ANDROID_CROSS_PATH/bin/arm-linux-androideabi-ar ]
614 then
615 err "NDK $CFG_ANDROID_CROSS_PATH/bin/arm-linux-androideabi-ar not found"
616 fi
617 ;;
618
619 *)
620 ;;
621 esac
622done
Niko Matsakis9acc2bf2011-12-03 00:04:17623
624if [ -z "$CFG_ENABLE_CLANG" -a -z "$CFG_GCC" ]
625then
626 err "either clang or gcc is required"
627fi
Graydon Hoare4c2245d2011-03-18 06:51:45628
Haitao Lief0775f2012-01-16 11:20:07629if [ ! -z "$CFG_PERF" ]
630then
Graydon Hoarecccb0fb2012-02-29 05:02:12631 HAVE_PERF_LOGFD=`$CFG_PERF stat --log-fd 2>&1 | grep 'unknown option'`
Haitao Lief0775f2012-01-16 11:20:07632 if [ -z "$HAVE_PERF_LOGFD" ];
633 then
634 CFG_PERF_WITH_LOGFD=1
635 putvar CFG_PERF_WITH_LOGFD
636 fi
637fi
638
Graydon Hoare68d50b52011-09-21 15:46:18639step_msg "making directories"
Brian Andersonbd67c702011-11-01 22:22:07640
Graydon Hoare68d50b52011-09-21 15:46:18641for i in \
Graydon Hoare447414f2011-12-06 00:46:37642 doc doc/core doc/std \
Niko Matsakis21ffc552011-11-23 23:49:50643 dl tmp
Graydon Hoare68d50b52011-09-21 15:46:18644do
645 make_dir $i
646done
647
Brian Anderson4b6585c2011-11-02 23:21:17648make_dir llvm
Brian Anderson15c0c352013-02-22 00:15:01649for t in $CFG_HOST_TRIPLES
Brian Anderson4b6585c2011-11-02 23:21:17650do
651 make_dir llvm/$t
652done
653
Niko Matsakis2bfa72e2011-11-02 00:28:41654make_dir rustllvm
Brian Anderson15c0c352013-02-22 00:15:01655for t in $CFG_HOST_TRIPLES
Niko Matsakis2bfa72e2011-11-02 00:28:41656do
657 make_dir rustllvm/$t
658done
659
Niko Matsakis54af4892011-11-01 23:50:47660make_dir rt
661for t in $CFG_TARGET_TRIPLES
662do
663 make_dir rt/$t
664 for i in \
Brian Anderson81e37022013-03-07 07:54:35665 isaac linenoise sync test \
666 arch/i386 arch/x86_64 arch/arm arch/mips \
Young-il Choi7714d522013-03-02 12:25:12667 libuv libuv/src/ares libuv/src/eio libuv/src/ev
Niko Matsakis54af4892011-11-01 23:50:47668 do
669 make_dir rt/$t/$i
670 done
671done
672
Brian Anderson9e40e432012-01-11 01:45:03673# On windows we just store the libraries in the bin directory because
674# there's no rpath
Young-il Choi7714d522013-03-02 12:25:12675# FIXME: Thise needs to parameterized over target triples. Do it in platform.mk
Brian Anderson9e40e432012-01-11 01:45:03676CFG_LIBDIR=lib
677if [ "$CFG_OSTYPE" = "pc-mingw32" ]
678then
679 CFG_LIBDIR=bin
680fi
681
Brian Anderson15c0c352013-02-22 00:15:01682for h in $CFG_HOST_TRIPLES
Graydon Hoare18c6cc62011-09-23 17:50:06683do
Niko Matsakis9c12c7c2011-11-21 21:11:40684 for t in $CFG_TARGET_TRIPLES
Graydon Hoare18c6cc62011-09-23 17:50:06685 do
Niko Matsakis9c12c7c2011-11-21 21:11:40686 for i in 0 1 2 3
687 do
688 # host bin dir
689 make_dir $h/stage$i/bin
Graydon Hoare18c6cc62011-09-23 17:50:06690
Niko Matsakis9c12c7c2011-11-21 21:11:40691 # host lib dir
Brian Anderson9e40e432012-01-11 01:45:03692 make_dir $h/stage$i/$CFG_LIBDIR
Graydon Hoare18c6cc62011-09-23 17:50:06693
Niko Matsakis9c12c7c2011-11-21 21:11:40694 # target bin dir
Brian Anderson9e40e432012-01-11 01:45:03695 make_dir $h/stage$i/$CFG_LIBDIR/rustc/$t/bin
Brian Anderson821dd6c2011-09-30 23:55:18696
Niko Matsakis9c12c7c2011-11-21 21:11:40697 # target lib dir
Brian Anderson9e40e432012-01-11 01:45:03698 make_dir $h/stage$i/$CFG_LIBDIR/rustc/$t/$CFG_LIBDIR
Niko Matsakis9c12c7c2011-11-21 21:11:40699 done
Graydon Hoare18c6cc62011-09-23 17:50:06700 done
Niko Matsakisc9061732011-11-22 06:45:14701
702 make_dir $h/test/run-pass
Brian Anderson630c0842012-06-01 23:01:53703 make_dir $h/test/run-pass-fulldeps
Niko Matsakisc9061732011-11-22 06:45:14704 make_dir $h/test/run-fail
705 make_dir $h/test/compile-fail
706 make_dir $h/test/bench
707 make_dir $h/test/perf
708 make_dir $h/test/pretty
Brian Leibig6bfbdad2013-02-09 18:09:19709 make_dir $h/test/debug-info
Brian Anderson327c8bc2012-01-21 02:05:07710 make_dir $h/test/doc-tutorial
Brian Anderson864cca12012-09-16 01:06:20711 make_dir $h/test/doc-tutorial-ffi
712 make_dir $h/test/doc-tutorial-macros
713 make_dir $h/test/doc-tutorial-borrowed-ptr
Brian Andersonfd0de8b2012-09-22 22:33:50714 make_dir $h/test/doc-tutorial-tasks
Brian Anderson0e913a42013-02-05 22:14:58715 make_dir $h/test/doc-rust
Graydon Hoare18c6cc62011-09-23 17:50:06716done
717
Brian Anderson1a052742011-10-31 23:51:15718# Configure submodules
719step_msg "configuring submodules"
720
721# Have to be in the top of src directory for this
Brian Anderson8d7863f2011-11-29 01:50:23722if [ -z $CFG_DISABLE_MANAGE_SUBMODULES ]
723then
Graydon Hoare8c337022012-02-29 03:15:13724 cd ${CFG_SRC_DIR}
Graydon Hoare079c3b02012-04-30 22:40:04725
Graydon Hoare8c337022012-02-29 03:15:13726 msg "git: submodule sync"
Graydon Hoare079c3b02012-04-30 22:40:04727 "${CFG_GIT}" submodule --quiet sync
728
Graydon Hoare079c3b02012-04-30 22:40:04729 msg "git: submodule update"
Brian Andersonc56a7e52012-10-05 18:04:45730 "${CFG_GIT}" submodule --quiet update --init
Graydon Hoare079c3b02012-04-30 22:40:04731 need_ok "git failed"
732
Erick Tryzelaar2d903ab2012-10-05 14:16:56733 msg "git: submodule foreach sync"
Gabrielf1da4422012-10-22 20:21:29734 "${CFG_GIT}" submodule --quiet foreach --recursive 'if test -e .gitmodules; then git submodule sync; fi'
Erick Tryzelaar2d903ab2012-10-05 14:16:56735 need_ok "git failed"
736
Brian Andersonc56a7e52012-10-05 18:04:45737 msg "git: submodule foreach update"
738 "${CFG_GIT}" submodule --quiet update --init --recursive
739 need_ok "git failed"
740
741 # NB: this is just for the sake of getting the submodule SHA1 values
742 # and status written into the build log.
743 msg "git: submodule status"
744 "${CFG_GIT}" submodule status --recursive
745
Graydon Hoare079c3b02012-04-30 22:40:04746 msg "git: submodule clobber"
747 "${CFG_GIT}" submodule --quiet foreach --recursive git clean -dxf
748 need_ok "git failed"
749 "${CFG_GIT}" submodule --quiet foreach --recursive git checkout .
750 need_ok "git failed"
751
Graydon Hoare8c337022012-02-29 03:15:13752 cd ${CFG_BUILD_DIR}
Brian Anderson8d7863f2011-11-29 01:50:23753fi
Brian Anderson1a052742011-10-31 23:51:15754
Graydon Hoare8c337022012-02-29 03:15:13755# Configure llvm, only if necessary
756step_msg "looking at LLVM"
Graydon Hoare89dec282012-03-26 23:05:33757CFG_LLVM_SRC_DIR=${CFG_SRC_DIR}src/llvm/
Brian Anderson15c0c352013-02-22 00:15:01758for t in $CFG_HOST_TRIPLES
Brian Anderson4b6585c2011-11-02 23:21:17759do
Graydon Hoare8c337022012-02-29 03:15:13760 do_reconfigure=1
761
Brian Anderson4b6585c2011-11-02 23:21:17762 if [ -z $CFG_LLVM_ROOT ]
763 then
Graydon Hoare89dec282012-03-26 23:05:33764 LLVM_BUILD_DIR=${CFG_BUILD_DIR}llvm/$t
Graydon Hoare8c337022012-02-29 03:15:13765 if [ ! -z "$CFG_DISABLE_OPTIMIZE_LLVM" ]
766 then
Brian Anderson3e6b2cf2013-02-27 01:30:32767 LLVM_DBG_OPTS="--enable-debug-symbols --disable-optimized"
Graydon Hoare8c337022012-02-29 03:15:13768 # Just use LLVM straight from its build directory to
769 # avoid 'make install' time
770 LLVM_INST_DIR=$LLVM_BUILD_DIR/Debug+Asserts
771 else
772 LLVM_DBG_OPTS="--enable-optimized"
773 LLVM_INST_DIR=$LLVM_BUILD_DIR/Release+Asserts
774 fi
Niko Matsakisd77968d2011-11-10 23:54:31775 else
Graydon Hoare8c337022012-02-29 03:15:13776 msg "not reconfiguring LLVM, external LLVM root"
Brian Anderson4b6585c2011-11-02 23:21:17777 # The user is using their own LLVM
Graydon Hoare8c337022012-02-29 03:15:13778 LLVM_BUILD_DIR=
779 LLVM_INST_DIR=$CFG_LLVM_ROOT
780 do_reconfigure=0
781 fi
782
783
784 if [ ${do_reconfigure} -ne 0 ]
785 then
786 # because git is hilarious, it might have put the module index
787 # in a couple places.
788 index1="${CFG_SRC_DIR}.git/modules/src/llvm/index"
789 index2="${CFG_SRC_DIR}src/llvm/.git/index"
790 for index in ${index1} ${index2}
791 do
Graydon Hoare89dec282012-03-26 23:05:33792 config_status="${CFG_BUILD_DIR}llvm/$t/config.status"
Graydon Hoare8c337022012-02-29 03:15:13793 if test -e ${index} -a \
794 -e ${config_status} -a \
795 ${config_status} -nt ${index}
796 then
797 msg "not reconfiguring LLVM, config.status is fresh"
798 do_reconfigure=0
799 fi
800 done
801 fi
802
803 if [ ${do_reconfigure} -ne 0 ]
804 then
805 msg "configuring LLVM for $t"
806
Jyun-Yan You0ecd9e02013-01-29 05:04:51807 LLVM_TARGETS="--enable-targets=x86,x86_64,arm,mips"
Graydon Hoare8c337022012-02-29 03:15:13808 LLVM_BUILD="--build=$t"
809 LLVM_HOST="--host=$t"
810 LLVM_TARGET="--target=$t"
811
812 # Disable unused LLVM features
Zack Corrd7aa9912012-08-25 04:54:30813 LLVM_OPTS="$LLVM_DBG_OPTS --disable-docs \
Graydon Hoare8c337022012-02-29 03:15:13814 --enable-bindings=none --disable-threads \
815 --disable-pthreads"
816
817 if [ "$CFG_C_COMPILER" = "clang" ]
818 then
819 LLVM_CXX_32="clang++ -m32"
820 LLVM_CC_32="clang -m32"
821
822 LLVM_CXX_64="clang++"
823 LLVM_CC_64="clang"
824 else
825 LLVM_CXX_32="g++ -m32"
826 LLVM_CC_32="gcc -m32"
827
828 LLVM_CXX_64="g++"
829 LLVM_CC_64="gcc"
830 fi
831
832 LLVM_CFLAGS_32="-m32"
833 LLVM_CXXFLAGS_32="-m32"
834 LLVM_LDFLAGS_32="-m32"
835
836 LLVM_CFLAGS_64=""
837 LLVM_CXXFLAGS_64=""
838 LLVM_LDFLAGS_64=""
839
840 if echo $t | grep -q x86_64
841 then
842 LLVM_CXX=$LLVM_CXX_64
843 LLVM_CC=$LLVM_CC_64
844 LLVM_CFLAGS=$LLVM_CFLAGS_64
845 LLVM_CXXFLAGS=$LLVM_CXXFLAGS_64
846 LLVM_LDFLAGS=$LLVM_LDFLAGS_64
847 else
848 LLVM_CXX=$LLVM_CXX_32
849 LLVM_CC=$LLVM_CC_32
850 LLVM_CFLAGS=$LLVM_CFLAGS_32
851 LLVM_CXXFLAGS=$LLVM_CXXFLAGS_32
852 LLVM_LDFLAGS=$LLVM_LDFLAGS_32
853 fi
854
855 CXX=$LLVM_CXX
856 CC=$LLVM_CC
857 CFLAGS=$LLVM_CFLAGS
858 CXXFLAGS=$LLVM_CXXFLAGS
859 LDFLAGS=$LLVM_LDFLAGS
860
861 LLVM_FLAGS="$LLVM_TARGETS $LLVM_OPTS $LLVM_BUILD \
862 $LLVM_HOST $LLVM_TARGET"
863
864 msg "configuring LLVM with:"
865 msg "$LLVM_FLAGS"
866
867 export CXX
868 export CC
869 export CFLAGS
870 export CXXFLAGS
871 export LDFLAGS
872
873 cd $LLVM_BUILD_DIR
874 case $CFG_SRC_DIR in
875 /* | [a-z]:* | [A-Z]:*)
Graydon Hoare89dec282012-03-26 23:05:33876 ${CFG_LLVM_SRC_DIR}configure $LLVM_FLAGS
Graydon Hoare8c337022012-02-29 03:15:13877 ;;
878 *)
Graydon Hoare89dec282012-03-26 23:05:33879 ${CFG_BUILD_DIR}${CFG_LLVM_SRC_DIR}configure \
Graydon Hoare8c337022012-02-29 03:15:13880 $LLVM_FLAGS
881 ;;
882 esac
883 need_ok "LLVM configure failed"
Brian Andersondd088af2013-03-29 01:19:14884
885 # Hack the tools Makefile to turn off the clang build
886 sed -i 's/clang//g' tools/Makefile
887
Graydon Hoare8c337022012-02-29 03:15:13888 cd $CFG_BUILD_DIR
Brian Anderson4b6585c2011-11-02 23:21:17889 fi
890
891 # Construct variables for LLVM build and install directories for
892 # each target. These will be named
893 # CFG_LLVM_BUILD_DIR_${target_triple} but all the hyphens in
894 # target_triple will be converted to underscore, because bash
895 # variables can't contain hyphens. The makefile will then have to
896 # convert back.
897 CFG_LLVM_BUILD_DIR=$(echo CFG_LLVM_BUILD_DIR_${t} | tr - _)
898 CFG_LLVM_INST_DIR=$(echo CFG_LLVM_INST_DIR_${t} | tr - _)
899 eval ${CFG_LLVM_BUILD_DIR}="'$LLVM_BUILD_DIR'"
900 eval ${CFG_LLVM_INST_DIR}="'$LLVM_INST_DIR'"
Brian Anderson2e54a762011-11-03 21:13:22901done
902
903
904step_msg "writing configuration"
905
906putvar CFG_SRC_DIR
907putvar CFG_BUILD_DIR
908putvar CFG_OSTYPE
909putvar CFG_CPUTYPE
910putvar CFG_CONFIGURE_ARGS
Graydon Hoare3a5c75e2012-01-31 00:29:13911putvar CFG_PREFIX
Brian Anderson15c0c352013-02-22 00:15:01912putvar CFG_BUILD_TRIPLE
913putvar CFG_HOST_TRIPLES
Brian Anderson2e54a762011-11-03 21:13:22914putvar CFG_TARGET_TRIPLES
915putvar CFG_C_COMPILER
Brian Anderson9e40e432012-01-11 01:45:03916putvar CFG_LIBDIR
Brian Andersona7c4c182012-02-29 19:48:29917putvar CFG_DISABLE_MANAGE_SUBMODULES
Young-il Choi7714d522013-03-02 12:25:12918putvar CFG_ANDROID_CROSS_PATH
919putvar CFG_MINGW32_CROSS_PATH
Brian Anderson2e54a762011-11-03 21:13:22920
auREAX26ed3872012-10-04 22:08:34921if [ ! -z "$CFG_ENABLE_PAX_FLAGS" ]
auREAX0bb437a2012-10-04 01:46:32922then
auREAX26ed3872012-10-04 22:08:34923 putvar CFG_ENABLE_PAX_FLAGS
auREAX0bb437a2012-10-04 01:46:32924 putvar CFG_PAXCTL
925fi
926
Brian Anderson17fef6c2012-01-18 22:32:15927if [ ! -z $BAD_PANDOC ]
928then
929 CFG_PANDOC=
930 putvar CFG_PANDOC
931fi
932
Brian Anderson2e54a762011-11-03 21:13:22933if head -n 1 ${CFG_SRC_DIR}src/snapshots.txt | grep -q '^T'
934then
935 CFG_IN_TRANSITION=1
936 putvar CFG_IN_TRANSITION
937fi
938
939# Valgrind is only reliable on Linux. On Windows it doesn't work at all, and
940# on the Mac the dynamic linker causes Valgrind to emit a huge stream of
941# errors.
942if [ $CFG_OSTYPE != unknown-linux-gnu ] && [ $CFG_OSTYPE != apple-darwin ]
943then
944 CFG_BAD_VALGRIND=1
945 putvar CFG_BAD_VALGRIND
946fi
947
948putvar CFG_LLVM_ROOT
949putvar CFG_LLVM_SRC_DIR
950
Brian Anderson15c0c352013-02-22 00:15:01951for t in $CFG_HOST_TRIPLES
Brian Anderson2e54a762011-11-03 21:13:22952do
953 CFG_LLVM_BUILD_DIR=$(echo CFG_LLVM_BUILD_DIR_${t} | tr - _)
954 CFG_LLVM_INST_DIR=$(echo CFG_LLVM_INST_DIR_${t} | tr - _)
Brian Anderson4b6585c2011-11-02 23:21:17955 putvar $CFG_LLVM_BUILD_DIR
956 putvar $CFG_LLVM_INST_DIR
957done
Brian Andersonbd67c702011-11-01 22:22:07958
Brian Andersonbd67c702011-11-01 22:22:07959# Munge any paths that appear in config.mk back to posix-y
960perl -i.bak -p -e 's@ ([a-zA-Z]):[/\\]@ /\1/@go;' \
Graydon Hoare418c6bc2012-02-28 20:05:05961 -e 's@\\@/@go;' config.tmp
962rm -f config.tmp.bak
Brian Anderson1a052742011-10-31 23:51:15963
Brian Anderson2e54a762011-11-03 21:13:22964msg
Graydon Hoare418c6bc2012-02-28 20:05:05965copy_if_changed ${CFG_SRC_DIR}Makefile.in ./Makefile
966move_if_changed config.tmp config.mk
967rm -f config.tmp
Graydon Hoare59336b82012-03-27 00:58:43968touch config.stamp
Graydon Hoare320ac6b2011-03-17 00:36:49969
Graydon Hoare94731fa2011-03-30 04:45:09970step_msg "complete"