configure 16.1 KB
Newer Older
1 2
#!/bin/sh

3 4 5
msg() {
    echo "configure: $1"
}
6

7 8 9 10 11 12
step_msg() {
    msg
    msg "$1"
    msg
}

13 14 15 16
warn() {
    echo "configure: WARNING: $1"
}

17 18 19 20 21
err() {
    echo "configure: error: $1"
    exit 1
}

22 23 24 25 26 27
need_ok() {
    if [ $? -ne 0 ]
    then
        err $1
    fi
}
28 29 30 31 32 33 34 35

need_cmd() {
    if which $1 >/dev/null 2>&1
    then msg "found $1"
    else err "need $1"
    fi
}

36 37 38 39 40 41 42 43
make_dir() {
    if [ ! -d $1 ]
    then
        msg "mkdir -p $1"
        mkdir -p $1
    fi
}

44 45 46 47 48 49
copy_if_changed() {
    if cmp -s $1 $2
    then
        msg "leaving $2 unchanged"
    else
        msg "cp $1 $2"
50 51
        cp -f $1 $2
        chmod u-w $2 # make copied artifact read-only
52 53 54 55 56 57 58 59 60
    fi
}

move_if_changed() {
    if cmp -s $1 $2
    then
        msg "leaving $2 unchanged"
    else
        msg "mv $1 $2"
61 62
        mv -f $1 $2
        chmod u-w $2 # make moved artifact read-only
63
    fi
64
}
65

66 67 68
putvar() {
    local T
    eval T=\$$1
69 70 71 72 73 74 75
    eval TLEN=\${#$1}
    if [ $TLEN -gt 35 ]
    then
        printf "configure: %-20s := %.35s ...\n" $1 "$T"
    else
        printf "configure: %-20s := %s\n" $1 "$T"
    fi
76
    printf "%-20s := %s\n" $1 "$T" >>config.tmp
77 78 79 80
}

probe() {
    local V=$1
81 82
    shift
    local P
83
    local T
84 85 86 87 88 89 90 91 92 93
    for P
    do
        T=$(which $P 2>&1)
        if [ $? -eq 0 ]
        then
            break
        else
            T=""
        fi
    done
94 95 96 97
    eval $V=\$T
    putvar $V
}

98 99
probe_need() {
    local V=$1
100
    probe $*
101 102 103
    eval VV=\$$V
    if [ -z "$VV" ]
    then
104
        err "needed, but unable to find any of: $*"
105 106 107
    fi
}

108 109 110 111 112 113 114 115
valopt() {
    local OP=$1
    local DEFAULT=$2
    shift
    shift
    local DOC="$*"
    if [ $HELP -eq 0 ]
    then
116
        local UOP=$(echo $OP | tr '[:lower:]' '[:upper:]' | tr '\-' '\_')
E
Elly Jones 已提交
117 118
        local V="CFG_${UOP}"
        eval $V="$DEFAULT"
119 120 121 122 123 124 125 126 127 128
        for arg in $CFG_CONFIGURE_ARGS
        do
            if echo "$arg" | grep -q -- "--$OP="
            then
                val=$(echo "$arg" | cut -f2 -d=)
                eval $V=$val
            fi
        done
        putvar $V
    else
E
Elly Jones 已提交
129 130 131 132 133 134
        if [ -z "$DEFAULT" ]
        then
            DEFAULT="<none>"
        fi
        OP="${OP}=[${DEFAULT}]"
        printf "    --%-30s %s\n" "$OP" "$DOC"
135 136 137
    fi
}

138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
opt() {
    local OP=$1
    local DEFAULT=$2
    shift
    shift
    local DOC="$*"
    local FLAG=""

    if [ $DEFAULT -eq 0 ]
    then
        FLAG="enable"
    else
        FLAG="disable"
        DOC="don't $DOC"
    fi

    if [ $HELP -eq 0 ]
    then
        for arg in $CFG_CONFIGURE_ARGS
        do
            if [ "$arg" = "--${FLAG}-${OP}" ]
            then
160
                OP=$(echo $OP | tr 'a-z-' 'A-Z_')
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
                FLAG=$(echo $FLAG | tr 'a-z' 'A-Z')
                local V="CFG_${FLAG}_${OP}"
                eval $V=1
                putvar $V
            fi
        done
    else
        if [ ! -z "$META" ]
        then
            OP="$OP=<$META>"
        fi
        printf "    --%-30s %s\n" "$FLAG-$OP" "$DOC"
     fi
}

176
msg "looking for configure programs"
177
need_cmd cmp
178 179
need_cmd mkdir
need_cmd printf
180 181 182 183 184
need_cmd cut
need_cmd grep
need_cmd xargs
need_cmd cp
need_cmd find
185 186
need_cmd uname
need_cmd date
G
Graydon Hoare 已提交
187
need_cmd tr
P
Patrick Walton 已提交
188
need_cmd sed
189

B
Brian Anderson 已提交
190

191 192 193 194
msg "inspecting environment"

CFG_OSTYPE=$(uname -s)
CFG_CPUTYPE=$(uname -m)
195

196 197 198 199
if [ $CFG_OSTYPE = Darwin -a $CFG_CPUTYPE = i386 ]
then
    # Darwin's `uname -s` lies and always returns i386. We have to use sysctl
    # instead.
G
Graydon Hoare 已提交
200
    if sysctl hw.optional.x86_64 | grep -q ': 1'
201 202 203 204
    then
        CFG_CPUTYPE=x86_64
    fi
fi
205

206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235
# The goal here is to come up with the same triple as LLVM would,
# at least for the subset of platforms we're willing to target.

case $CFG_OSTYPE in

    Linux)
        CFG_OSTYPE=unknown-linux-gnu
        ;;

    FreeBSD)
        CFG_OSTYPE=unknown-freebsd
        ;;

    Darwin)
        CFG_OSTYPE=apple-darwin
        ;;

    MINGW32*)
        CFG_OSTYPE=pc-mingw32
        ;;

    *)
        err "unknown OS type: $CFG_OSTYPE"
        ;;
esac


case $CFG_CPUTYPE in

    i386 | i486 | i686 | i786 | x86)
236
        CFG_CPUTYPE=i686
237 238 239 240 241 242
        ;;

    xscale | arm)
        CFG_CPUTYPE=arm
        ;;

U
User Jyyou 已提交
243
    x86_64 | x86-64 | x64 | amd64)
244
        CFG_CPUTYPE=x86_64
245 246 247 248 249 250
        ;;

    *)
        err "unknown CPU type: $CFG_CPUTYPE"
esac

N
Niko Matsakis 已提交
251
DEFAULT_HOST_TRIPLE="${CFG_CPUTYPE}-${CFG_OSTYPE}"
252

253
CFG_SELF=$(echo $0 | tr '\\' '/')
G
Graydon Hoare 已提交
254
CFG_SRC_DIR=${CFG_SELF%${CFG_SELF##*/}}
255
CFG_BUILD_DIR=$(echo $PWD | tr '\\' '/')
256 257
CFG_CONFIGURE_ARGS="$@"

258 259 260 261 262 263 264 265 266 267 268 269
OPTIONS=""
HELP=0
if [ "$1" = "--help" ]
then
    HELP=1
    shift
    echo ""
    echo "Usage: $CFG_SELF [options]"
    echo ""
    echo "Options:"
    echo ""
else
270 271
    msg "recreating config.tmp"
    echo '' >config.tmp
272 273 274

    step_msg "processing $CFG_SELF args"
fi
275

276
opt sharedstd 1 "build libstd as a shared library"
277 278
opt valgrind 1 "run tests with valgrind"
opt docs     1 "build documentation"
279
opt optimize 1 "build optimized rust code"
N
Niko Matsakis 已提交
280
opt optimize-cxx 1 "build optimized C++ code"
N
Niko Matsakis 已提交
281
opt optimize-llvm 1 "build optimized LLVM"
282
opt fast-make 0 "use .gitmodules as timestamp for submodule deps"
283
opt manage-submodules 1 "let the build manage the git submodules"
284
opt mingw-cross 0 "cross-compile for win32 using mingw"
285
opt clang 0 "prefer clang to gcc for building the runtime"
286
valopt prefix "/usr/local" "set installation prefix"
B
Brian Anderson 已提交
287
valopt llvm-root "" "set LLVM root"
288 289
valopt host-triple "${DEFAULT_HOST_TRIPLE}" "LLVM host triple"
valopt target-triples "${CFG_HOST_TRIPLE}" "LLVM target triples"
290

B
Brian Anderson 已提交
291 292 293 294 295 296
if [ $HELP -eq 1 ]
then
    echo ""
    exit 0
fi

297

298
step_msg "looking for build programs"
B
Brian Anderson 已提交
299

300
probe_need CFG_PERL         perl
301
probe_need CFG_PYTHON       python python2.6 python2 python3
302
probe_need CFG_CURL         curl
303

304
probe CFG_GIT              git
305
probe CFG_CLANG            clang++
306
probe CFG_GCC              gcc
307
probe CFG_LLVM_CONFIG      llvm-config
308
probe CFG_VALGRIND         valgrind
309
probe CFG_PERF             perf
310
probe CFG_ISCC             iscc
311
probe CFG_NATURALDOCS      NaturalDocs naturaldocs
312 313 314
probe CFG_LLNEXTGEN        LLnextgen
probe CFG_PANDOC           pandoc
probe CFG_PDFLATEX         pdflatex
315 316
probe CFG_XETEX            xetex
probe CFG_LUATEX           luatex
317
probe CFG_NODE             nodejs node
318

319

320 321 322 323 324 325 326 327 328 329
if [ ! -z "$CFG_PANDOC" ]
then
    PV=$(pandoc --version | awk '/^pandoc/ {print $2}')
    if [ "$PV" \< "1.8" ]
    then
	step_msg "pandoc $PV is too old. disabling"
	BAD_PANDOC=1
    fi
fi

330
if [ -z "$CFG_ENABLE_CLANG" -a -z "$CFG_GCC" ]
331 332 333 334
then
    err "either clang or gcc is required"
fi

335 336
if [ ! -z "$CFG_LLVM_ROOT" -a -e "$CFG_LLVM_ROOT/bin/llvm-config" ]
then
337
    step_msg "using custom LLVM at $CFG_LLVM_ROOT"
338 339

    LLVM_CONFIG="$CFG_LLVM_ROOT/bin/llvm-config"
340
    LLVM_VERSION=$($LLVM_CONFIG --version)
341 342

    case $LLVM_VERSION in
343
	(3.1svn)
B
Brian Anderson 已提交
344
	    msg "found ok version of LLVM: $LLVM_VERSION"
345 346
	    ;;
	(*)
347
	    err "bad LLVM version: $LLVM_VERSION, need >=3.0svn"
348 349
	    ;;
    esac
350 351
fi

352
if [ ! -z "$CFG_ENABLE_CLANG" ]
353
then
354 355 356 357
    if [ -z "$CFG_CLANG" ]
    then
	err "clang requested but not found"
    fi
358 359 360
    CFG_CLANG_VERSION=$("$CFG_CLANG" \
                      --version \
                      | grep version \
J
Jyun-Yan You 已提交
361 362
                      | sed 's/.*\(version .*\)/\1/' \
                      | cut -d ' ' -f 2)
363 364

    case $CFG_CLANG_VERSION in
R
Reuben Morais 已提交
365
        (3.0svn | 3.0 | 3.1)
366
        step_msg "found ok version of CLANG: $CFG_CLANG_VERSION"
367
        CFG_C_COMPILER="clang"
368 369
        ;;
        (*)
B
Brian Anderson 已提交
370
        err "bad CLANG version: $CFG_CLANG_VERSION, need >=3.0svn"
371 372
        ;;
    esac
373 374
else
    CFG_C_COMPILER="gcc"
375
fi
376

377
# a little post-processing of various config values
378

379 380
CFG_PREFIX=${CFG_PREFIX%/}
CFG_TARGET_TRIPLES="$(echo $CFG_TARGET_TRIPLES | tr ',' ' ')"
N
Niko Matsakis 已提交
381 382 383 384 385 386 387 388 389
case $CFG_TARGET_TRIPLES in
    (*$CFG_HOST_TRIPLE*) ;;
    (*) err "Host triple is not among the target triples." ;;
esac

if [ -z "$CFG_ENABLE_CLANG" -a -z "$CFG_GCC" ]
then
    err "either clang or gcc is required"
fi
390

391 392
if [ ! -z "$CFG_PERF" ]
then
G
Graydon Hoare 已提交
393
    HAVE_PERF_LOGFD=`$CFG_PERF stat --log-fd 2>&1 | grep -q 'unknown option'`
394 395 396 397 398 399 400
    if [ -z "$HAVE_PERF_LOGFD" ];
    then
        CFG_PERF_WITH_LOGFD=1
        putvar CFG_PERF_WITH_LOGFD
    fi
fi

401
step_msg "making directories"
402

403
for i in \
404 405
    doc doc/core doc/std \
    nd nd/core nd/std \
406
    dl tmp
407 408 409 410
do
    make_dir $i
done

411 412 413 414 415 416
make_dir llvm
for t in $CFG_TARGET_TRIPLES
do
    make_dir llvm/$t
done

417 418 419 420 421 422
make_dir rustllvm
for t in $CFG_TARGET_TRIPLES
do
    make_dir rustllvm/$t
done

423 424 425 426 427 428 429 430 431 432 433 434
make_dir rt
for t in $CFG_TARGET_TRIPLES
do
  make_dir rt/$t
  for i in                                          \
    isaac bigint sync test arch/i386 arch/x86_64    \
    libuv libuv/src/ares libuv/src/eio libuv/src/ev
  do
    make_dir rt/$t/$i
  done
done

435 436 437 438 439 440 441 442
# On windows we just store the libraries in the bin directory because
# there's no rpath
CFG_LIBDIR=lib
if [ "$CFG_OSTYPE" = "pc-mingw32" ]
then
    CFG_LIBDIR=bin
fi

N
Niko Matsakis 已提交
443
for h in $CFG_TARGET_TRIPLES
444
do
N
Niko Matsakis 已提交
445
    for t in $CFG_TARGET_TRIPLES
446
    do
N
Niko Matsakis 已提交
447 448 449 450
        for i in 0 1 2 3
        do
            # host bin dir
            make_dir $h/stage$i/bin
451

N
Niko Matsakis 已提交
452
            # host lib dir
453
            make_dir $h/stage$i/$CFG_LIBDIR
454

N
Niko Matsakis 已提交
455
            # target bin dir
456
            make_dir $h/stage$i/$CFG_LIBDIR/rustc/$t/bin
457

N
Niko Matsakis 已提交
458
            # target lib dir
459
            make_dir $h/stage$i/$CFG_LIBDIR/rustc/$t/$CFG_LIBDIR
N
Niko Matsakis 已提交
460
        done
461
    done
N
Niko Matsakis 已提交
462 463 464 465 466 467 468

    make_dir $h/test/run-pass
    make_dir $h/test/run-fail
    make_dir $h/test/compile-fail
    make_dir $h/test/bench
    make_dir $h/test/perf
    make_dir $h/test/pretty
B
Brian Anderson 已提交
469
    make_dir $h/test/doc-tutorial
470 471
done

472 473 474
# Configure submodules
step_msg "configuring submodules"

475 476 477 478 479 480 481 482
# If we have no git directory then we are probably a tarball distribution
# and shouldn't attempt to load submodules
if [ ! -e ${CFG_SRC_DIR}.git ]
then
    msg "git: no git directory. disabling submodules"
    CFG_DISABLE_MANAGE_SUBMODULES=1
fi

483
# Have to be in the top of src directory for this
484 485
if [ -z $CFG_DISABLE_MANAGE_SUBMODULES ]
then
486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513
    cd ${CFG_SRC_DIR}
    msg "git: submodule sync"
    "${CFG_GIT}" submodule sync --quiet
    SUBMODULES=$("${CFG_GIT}" submodule status | awk '{print $2}')
    for s in $SUBMODULES
    do
        msg "git: submodule status ${s}"
        status=$("${CFG_GIT}" submodule status ${s} | awk '{print $1}')
        case ${status} in
            -*)
                msg "${s} is not initialized, initializing"
                "${CFG_GIT}" submodule init --quiet ${s}
                need_ok "git failed"
                msg "${s} updating"
                "${CFG_GIT}" submodule update --quiet ${s}
                need_ok "git failed"
                ;;
            +*)
                msg "${s} is not up to date, updating"
                "${CFG_GIT}" submodule update --quiet ${s}
                need_ok "git failed"
                ;;
            *)
                msg "${s} is clean"
                ;;
        esac
    done
    cd ${CFG_BUILD_DIR}
514 515
fi

516 517
# Configure llvm, only if necessary
step_msg "looking at LLVM"
518
CFG_LLVM_SRC_DIR=${CFG_SRC_DIR}src/llvm
519 520
for t in $CFG_TARGET_TRIPLES
do
521 522
    do_reconfigure=1

523 524
    if [ -z $CFG_LLVM_ROOT ]
    then
525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542
        LLVM_BUILD_DIR=$CFG_BUILD_DIR/llvm/$t
        if [ ! -z "$CFG_DISABLE_OPTIMIZE_LLVM" ]
        then
            LLVM_DBG_OPTS=""
            # Just use LLVM straight from its build directory to
            # avoid 'make install' time
            LLVM_INST_DIR=$LLVM_BUILD_DIR/Debug+Asserts
        else
            LLVM_DBG_OPTS="--enable-optimized"
            LLVM_INST_DIR=$LLVM_BUILD_DIR/Release+Asserts
        fi
    else
        msg "not reconfiguring LLVM, external LLVM root"
        # The user is using their own LLVM
        LLVM_BUILD_DIR=
        LLVM_INST_DIR=$CFG_LLVM_ROOT
        do_reconfigure=0
    fi
543

N
Niko Matsakis 已提交
544

545
    if [ ${do_reconfigure} -ne 0 ]
N
Niko Matsakis 已提交
546
    then
547 548 549 550 551 552 553 554 555 556 557 558 559 560 561
    # because git is hilarious, it might have put the module index
    # in a couple places.
        index1="${CFG_SRC_DIR}.git/modules/src/llvm/index"
        index2="${CFG_SRC_DIR}src/llvm/.git/index"
        for index in ${index1} ${index2}
        do
            config_status="${CFG_BUILD_DIR}/llvm/$t/config.status"
            if test -e ${index} -a \
                    -e ${config_status} -a \
                    ${config_status} -nt ${index}
            then
                msg "not reconfiguring LLVM, config.status is fresh"
                do_reconfigure=0
            fi
        done
N
Niko Matsakis 已提交
562
    fi
563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645

    if [ ${do_reconfigure} -ne 0 ]
    then
        msg "configuring LLVM for $t"

        LLVM_TARGETS="--enable-targets=x86,x86_64"
        LLVM_BUILD="--build=$t"
        LLVM_HOST="--host=$t"
        LLVM_TARGET="--target=$t"

        # Disable unused LLVM features
        LLVM_OPTS="$LLVM_DBG_OPTS --disable-docs --disable-jit \
                   --enable-bindings=none --disable-threads \
                   --disable-pthreads"

        if [ "$CFG_C_COMPILER" = "clang" ]
        then
            LLVM_CXX_32="clang++ -m32"
            LLVM_CC_32="clang -m32"

            LLVM_CXX_64="clang++"
            LLVM_CC_64="clang"
        else
            LLVM_CXX_32="g++ -m32"
            LLVM_CC_32="gcc -m32"

            LLVM_CXX_64="g++"
            LLVM_CC_64="gcc"
        fi

        LLVM_CFLAGS_32="-m32"
        LLVM_CXXFLAGS_32="-m32"
        LLVM_LDFLAGS_32="-m32"

        LLVM_CFLAGS_64=""
        LLVM_CXXFLAGS_64=""
        LLVM_LDFLAGS_64=""

        if echo $t | grep -q x86_64
        then
            LLVM_CXX=$LLVM_CXX_64
            LLVM_CC=$LLVM_CC_64
            LLVM_CFLAGS=$LLVM_CFLAGS_64
            LLVM_CXXFLAGS=$LLVM_CXXFLAGS_64
            LLVM_LDFLAGS=$LLVM_LDFLAGS_64
        else
            LLVM_CXX=$LLVM_CXX_32
            LLVM_CC=$LLVM_CC_32
            LLVM_CFLAGS=$LLVM_CFLAGS_32
            LLVM_CXXFLAGS=$LLVM_CXXFLAGS_32
            LLVM_LDFLAGS=$LLVM_LDFLAGS_32
        fi

        CXX=$LLVM_CXX
        CC=$LLVM_CC
        CFLAGS=$LLVM_CFLAGS
        CXXFLAGS=$LLVM_CXXFLAGS
        LDFLAGS=$LLVM_LDFLAGS

        LLVM_FLAGS="$LLVM_TARGETS $LLVM_OPTS $LLVM_BUILD \
                        $LLVM_HOST $LLVM_TARGET"

        msg "configuring LLVM with:"
        msg "$LLVM_FLAGS"

        export CXX
        export CC
        export CFLAGS
        export CXXFLAGS
        export LDFLAGS

        cd $LLVM_BUILD_DIR
        case $CFG_SRC_DIR in
            /* | [a-z]:* | [A-Z]:*)
                ${CFG_LLVM_SRC_DIR}/configure $LLVM_FLAGS
                ;;
            *)
                ${CFG_BUILD_DIR}/${CFG_LLVM_SRC_DIR}/configure \
                    $LLVM_FLAGS
                ;;
        esac
        need_ok "LLVM configure failed"
        cd $CFG_BUILD_DIR
646
    fi
647

648 649 650 651 652 653 654 655 656 657
    # Construct variables for LLVM build and install directories for
    # each target. These will be named
    # CFG_LLVM_BUILD_DIR_${target_triple} but all the hyphens in
    # target_triple will be converted to underscore, because bash
    # variables can't contain hyphens. The makefile will then have to
    # convert back.
    CFG_LLVM_BUILD_DIR=$(echo CFG_LLVM_BUILD_DIR_${t} | tr - _)
    CFG_LLVM_INST_DIR=$(echo CFG_LLVM_INST_DIR_${t} | tr - _)
    eval ${CFG_LLVM_BUILD_DIR}="'$LLVM_BUILD_DIR'"
    eval ${CFG_LLVM_INST_DIR}="'$LLVM_INST_DIR'"
B
Brian Anderson 已提交
658 659 660 661 662 663 664 665 666 667
done


step_msg "writing configuration"

putvar CFG_SRC_DIR
putvar CFG_BUILD_DIR
putvar CFG_OSTYPE
putvar CFG_CPUTYPE
putvar CFG_CONFIGURE_ARGS
668
putvar CFG_PREFIX
B
Brian Anderson 已提交
669 670
putvar CFG_TARGET_TRIPLES
putvar CFG_C_COMPILER
671
putvar CFG_LIBDIR
B
Brian Anderson 已提交
672

673 674 675 676 677 678
# Setting this again because it may have been changed
if [ $CFG_DISABLE_MANAGE_SUBMODULES ]
then
    putvar CFG_DISABLE_MANAGE_SUBMODULES
fi

679 680 681 682 683 684 685
# Ditto for pandoc
if [ ! -z $BAD_PANDOC ]
then
    CFG_PANDOC=
    putvar CFG_PANDOC
fi

B
Brian Anderson 已提交
686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707
if head -n 1 ${CFG_SRC_DIR}src/snapshots.txt | grep -q '^T'
then
    CFG_IN_TRANSITION=1
    putvar CFG_IN_TRANSITION
fi

# Valgrind is only reliable on Linux. On Windows it doesn't work at all, and
# on the Mac the dynamic linker causes Valgrind to emit a huge stream of
# errors.
if [ $CFG_OSTYPE != unknown-linux-gnu ] && [ $CFG_OSTYPE != apple-darwin ]
then
    CFG_BAD_VALGRIND=1
    putvar CFG_BAD_VALGRIND
fi

putvar CFG_LLVM_ROOT
putvar CFG_LLVM_SRC_DIR

for t in $CFG_TARGET_TRIPLES
do
    CFG_LLVM_BUILD_DIR=$(echo CFG_LLVM_BUILD_DIR_${t} | tr - _)
    CFG_LLVM_INST_DIR=$(echo CFG_LLVM_INST_DIR_${t} | tr - _)
708 709 710
    putvar $CFG_LLVM_BUILD_DIR
    putvar $CFG_LLVM_INST_DIR
done
711 712 713 714


# Munge any paths that appear in config.mk back to posix-y
perl -i.bak -p -e 's@ ([a-zA-Z]):[/\\]@ /\1/@go;' \
715 716
               -e 's@\\@/@go;' config.tmp
rm -f config.tmp.bak
717

B
Brian Anderson 已提交
718
msg
719 720 721
copy_if_changed ${CFG_SRC_DIR}Makefile.in ./Makefile
move_if_changed config.tmp config.mk
rm -f config.tmp
722

723
step_msg "complete"