configure 14.3 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 50 51 52 53 54 55 56 57 58 59 60 61 62 63
copy_if_changed() {
    if cmp -s $1 $2
    then
        msg "leaving $2 unchanged"
    else
        msg "cp $1 $2"
        cp $1 $2
        chmod u-w $1 # make copied artifact read-only
    fi
}

move_if_changed() {
    if cmp -s $1 $2
    then
        msg "leaving $2 unchanged"
    else
        msg "mv $1 $2"
        mv $1 $2
        chmod u-w $1 # make moved artifact read-only
    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
}

B
Brian Anderson 已提交
176

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

B
Brian Anderson 已提交
191

192 193 194 195
msg "inspecting environment"

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

197 198 199 200 201 202 203 204 205
if [ $CFG_OSTYPE = Darwin -a $CFG_CPUTYPE = i386 ]
then
    # Darwin's `uname -s` lies and always returns i386. We have to use sysctl
    # instead.
    if sysctl hw.optional.x86_64 | grep ': 1'
    then
        CFG_CPUTYPE=x86_64
    fi
fi
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 236
# 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)
237
        CFG_CPUTYPE=i686
238 239 240 241 242 243
        ;;

    xscale | arm)
        CFG_CPUTYPE=arm
        ;;

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

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

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

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

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

    step_msg "processing $CFG_SELF args"
fi
276

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

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

298

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

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

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

320

321 322 323 324 325 326 327 328 329 330
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

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

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

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

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

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

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

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

380 381
CFG_PREFIX=${CFG_PREFIX%/}
CFG_TARGET_TRIPLES="$(echo $CFG_TARGET_TRIPLES | tr ',' ' ')"
N
Niko Matsakis 已提交
382 383 384 385 386 387 388 389 390
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
391

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

402
step_msg "making directories"
403

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

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

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

424 425 426 427 428 429 430 431 432 433 434 435
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

436 437 438 439 440 441 442 443
# 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 已提交
444
for h in $CFG_TARGET_TRIPLES
445
do
N
Niko Matsakis 已提交
446
    for t in $CFG_TARGET_TRIPLES
447
    do
N
Niko Matsakis 已提交
448 449 450 451
        for i in 0 1 2 3
        do
            # host bin dir
            make_dir $h/stage$i/bin
452

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

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

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

    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 已提交
470
    make_dir $h/test/doc-tutorial
471 472
done

473 474 475
# Configure submodules
step_msg "configuring submodules"

476 477 478 479 480 481 482 483
# 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

484 485 486
# Have to be in the top of src directory for this
cd ${CFG_SRC_DIR}

487 488
if [ -z $CFG_DISABLE_MANAGE_SUBMODULES ]
then
G
Graydon Hoare 已提交
489 490
msg "git: submodule sync"
"${CFG_GIT}" submodule sync --quiet
491 492 493 494 495
SUBMODULE_STATUS=$("${CFG_GIT}" submodule status)
NEED_INIT_COUNT=$(echo "$SUBMODULE_STATUS" | grep -c "^-")
NEED_UPDATE_COUNT=$(echo "$SUBMODULE_STATUS" | grep -c "^+")
NEED_INIT=$(test $NEED_INIT_COUNT -gt 0)$?
NEED_UPDATE=$(test "($NEED_INIT)" -o "$NEED_UPDATE_COUNT" -gt 0)$?
496 497 498 499
else
NEED_INIT=
NEED_UPDATE=
fi
500 501 502 503

if [ $NEED_INIT ]
then
    msg "git: submodule init"
B
Brian Anderson 已提交
504
    "${CFG_GIT}" submodule init --quiet
505
    need_ok "git failed"
506 507 508 509 510
fi

if [ $NEED_UPDATE ]
then
    msg "git: submodule update"
B
Brian Anderson 已提交
511
    "${CFG_GIT}" submodule update --quiet
512
    need_ok "git failed"
513 514 515 516 517
fi

cd ${CFG_BUILD_DIR}


518
# Configure llvm. Here we go...
519
CFG_LLVM_SRC_DIR=${CFG_SRC_DIR}src/llvm
520

521 522 523 524 525 526 527 528 529 530 531 532
for t in $CFG_TARGET_TRIPLES
do
    if [ -z $CFG_LLVM_ROOT ]
    then
	step_msg "configuring LLVM for $t"

	LLVM_BUILD_DIR=$CFG_BUILD_DIR/llvm/$t

	LLVM_TARGETS="--enable-targets=x86,x86_64"
	LLVM_BUILD="--build=$t"
	LLVM_HOST="--host=$t"
	LLVM_TARGET="--target=$t"
N
Niko Matsakis 已提交
533 534

    if [ ! -z "$CFG_DISABLE_OPTIMIZE_LLVM" ]
N
Niko Matsakis 已提交
535 536 537 538 539 540
    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
N
Niko Matsakis 已提交
541
        LLVM_DBG_OPTS="--enable-optimized"
N
Niko Matsakis 已提交
542 543
	    LLVM_INST_DIR=$LLVM_BUILD_DIR/Release+Asserts
    fi
544 545
	# Disable unused LLVM features
	LLVM_OPTS="$LLVM_DBG_OPTS --disable-docs --disable-jit --enable-bindings=none --disable-threads --disable-pthreads"
546

J
Jyun-Yan You 已提交
547 548 549 550 551 552 553 554 555 556 557 558 559 560 561
	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

562 563 564 565
	LLVM_CFLAGS_32="-m32"
	LLVM_CXXFLAGS_32="-m32"
	LLVM_LDFLAGS_32="-m32"

B
Brian Anderson 已提交
566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583
	LLVM_CFLAGS_64=""
	LLVM_CXXFLAGS_64=""
	LLVM_LDFLAGS_64=""

	if echo $t | grep 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
584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602

	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
603 604 605 606 607 608 609 610
	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
611
    need_ok "LLVM configure failed"
612 613
	cd $CFG_BUILD_DIR
    else
B
Brian Anderson 已提交
614
	LLVM_BUILD_DIR=
615 616 617
        # The user is using their own LLVM
	LLVM_INST_DIR=$CFG_LLVM_ROOT
    fi
618

619 620 621 622 623 624 625 626 627 628
    # 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 已提交
629 630 631 632 633 634 635 636 637 638
done


step_msg "writing configuration"

putvar CFG_SRC_DIR
putvar CFG_BUILD_DIR
putvar CFG_OSTYPE
putvar CFG_CPUTYPE
putvar CFG_CONFIGURE_ARGS
639
putvar CFG_PREFIX
B
Brian Anderson 已提交
640 641
putvar CFG_TARGET_TRIPLES
putvar CFG_C_COMPILER
642
putvar CFG_LIBDIR
B
Brian Anderson 已提交
643

644 645 646 647 648 649
# Setting this again because it may have been changed
if [ $CFG_DISABLE_MANAGE_SUBMODULES ]
then
    putvar CFG_DISABLE_MANAGE_SUBMODULES
fi

650 651 652 653 654 655 656
# Ditto for pandoc
if [ ! -z $BAD_PANDOC ]
then
    CFG_PANDOC=
    putvar CFG_PANDOC
fi

B
Brian Anderson 已提交
657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678
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 - _)
679 680 681
    putvar $CFG_LLVM_BUILD_DIR
    putvar $CFG_LLVM_INST_DIR
done
682 683 684 685


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

B
Brian Anderson 已提交
689
msg
690 691 692
copy_if_changed ${CFG_SRC_DIR}Makefile.in ./Makefile
move_if_changed config.tmp config.mk
rm -f config.tmp
693

694
step_msg "complete"