Changes in tools/toolchain.sh [d7f2cd6:9f9450b] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tools/toolchain.sh
rd7f2cd6 r9f9450b 55 55 BINUTILS_VERSION="2.23.1" 56 56 BINUTILS_RELEASE="" 57 BINUTILS_PATCHES="toolchain-binutils-2.23.1.patch" 57 58 GCC_VERSION="4.8.1" 59 GCC_PATCHES="toolchain-gcc-4.8.1-targets.patch toolchain-gcc-4.8.1-headers.patch" 58 60 GDB_VERSION="7.6.1" 61 GDB_PATCHES="toolchain-gdb-7.6.1.patch" 59 62 60 63 BASEDIR="`pwd`" … … 62 65 GCC="gcc-${GCC_VERSION}.tar.bz2" 63 66 GDB="gdb-${GDB_VERSION}.tar.bz2" 67 68 REAL_INSTALL=true 69 USE_HELENOS_TARGET=false 70 INSTALL_DIR="${BASEDIR}/PKG" 64 71 65 72 # … … 135 142 echo 136 143 echo "Syntax:" 137 echo " $0 <platform>"144 echo " $0 [--no-install] [--helenos-target] <platform>" 138 145 echo 139 146 echo "Possible target platforms are:" … … 152 159 echo " 2-way same as 'all', but 2-way parallel" 153 160 echo 154 echo "The toolchain will be installed to the directory specified by" 155 echo "the CROSS_PREFIX environment variable. If the variable is not" 156 echo "defined, /usr/local/cross will be used by default." 161 echo "The toolchain is installed into directory specified by the" 162 echo "CROSS_PREFIX environment variable. If the variable is not" 163 echo "defined, /usr/local/cross/ is used as default." 164 echo 165 echo "If --no-install is present, the toolchain still uses the" 166 echo "CROSS_PREFIX as the target directory but the installation" 167 echo "copies the files into PKG/ subdirectory without affecting" 168 echo "the actual root file system. That is only useful if you do" 169 echo "not want to run the script under the super user." 170 echo 171 echo "The --helenos-target will build HelenOS-specific toolchain" 172 echo "(i.e. it will use *-helenos-* triplet instead of *-linux-*)." 173 echo "This toolchain is installed into /usr/local/cross-helenos by" 174 echo "default. The settings can be changed by setting environment" 175 echo "variable CROSS_HELENOS_PREFIX." 176 echo "Using the HelenOS-specific toolchain is still an experimental" 177 echo "feature that is not fully supported." 157 178 echo 158 179 … … 292 313 } 293 314 315 patch_sources() { 316 PATCH_FILE="$1" 317 PATCH_STRIP="$2" 318 DESC="$3" 319 320 change_title "Patching ${DESC}" 321 echo " >>> Patching ${DESC} with ${PATCH_FILE}" 322 323 patch -t "-p${PATCH_STRIP}" <"$PATCH_FILE" 324 check_error $? "Error patching ${DESC}." 325 } 326 294 327 prepare() { 295 328 show_dependencies … … 306 339 } 307 340 341 set_target_from_platform() { 342 case "$1" in 343 "amd64") 344 LINUX_TARGET="amd64-linux-gnu" 345 HELENOS_TARGET="amd64-helenos" 346 ;; 347 "arm32") 348 LINUX_TARGET="arm-linux-gnueabi" 349 HELENOS_TARGET="arm-helenos-gnueabi" 350 ;; 351 "ia32") 352 LINUX_TARGET="i686-pc-linux-gnu" 353 HELENOS_TARGET="i686-pc-helenos" 354 ;; 355 "ia64") 356 LINUX_TARGET="ia64-pc-linux-gnu" 357 HELENOS_TARGET="ia64-pc-helenos" 358 ;; 359 "mips32") 360 LINUX_TARGET="mipsel-linux-gnu" 361 HELENOS_TARGET="mipsel-helenos" 362 ;; 363 "mips32eb") 364 LINUX_TARGET="mips-linux-gnu" 365 HELENOS_TARGET="mips-helenos" 366 ;; 367 "mips64") 368 LINUX_TARGET="mips64el-linux-gnu" 369 HELENOS_TARGET="mips64el-helenos" 370 ;; 371 "ppc32") 372 LINUX_TARGET="ppc-linux-gnu" 373 HELENOS_TARGET="ppc-helenos" 374 ;; 375 "ppc64") 376 LINUX_TARGET="ppc64-linux-gnu" 377 HELENOS_TARGET="ppc64-helenos" 378 ;; 379 "sparc64") 380 LINUX_TARGET="sparc64-linux-gnu" 381 HELENOS_TARGET="sparc64-helenos" 382 ;; 383 *) 384 check_error 1 "No target known for $1." 385 ;; 386 esac 387 } 388 308 389 build_target() { 309 390 PLATFORM="$1" 310 TARGET="$2" 391 # This sets the *_TARGET variables 392 set_target_from_platform "$PLATFORM" 393 if $USE_HELENOS_TARGET; then 394 TARGET="$HELENOS_TARGET" 395 else 396 TARGET="$LINUX_TARGET" 397 fi 311 398 312 399 WORKDIR="${BASEDIR}/${PLATFORM}" … … 319 406 CROSS_PREFIX="/usr/local/cross" 320 407 fi 321 322 PREFIX="${CROSS_PREFIX}/${PLATFORM}" 408 if [ -z "${CROSS_HELENOS_PREFIX}" ] ; then 409 CROSS_HELENOS_PREFIX="/usr/local/cross-helenos" 410 fi 411 412 if $USE_HELENOS_TARGET; then 413 PREFIX="${CROSS_HELENOS_PREFIX}/${PLATFORM}" 414 else 415 PREFIX="${CROSS_PREFIX}/${PLATFORM}" 416 fi 323 417 324 418 echo ">>> Downloading tarballs" … … 328 422 329 423 echo ">>> Removing previous content" 330 cleanup_dir "${PREFIX}"424 $REAL_INSTALL && cleanup_dir "${PREFIX}" 331 425 cleanup_dir "${WORKDIR}" 332 426 333 create_dir "${PREFIX}" "destination directory"427 $REAL_INSTALL && create_dir "${PREFIX}" "destination directory" 334 428 create_dir "${OBJDIR}" "GCC object directory" 335 429 … … 344 438 unpack_tarball "${BASEDIR}/${GDB}" "GDB" 345 439 440 echo ">>> Applying patches" 441 for p in $BINUTILS_PATCHES; do 442 patch_sources "${BASEDIR}/${p}" 0 "binutils" 443 done 444 for p in $GCC_PATCHES; do 445 patch_sources "${BASEDIR}/${p}" 0 "GCC" 446 done 447 for p in $GDB_PATCHES; do 448 patch_sources "${BASEDIR}/${p}" 0 "GDB" 449 done 450 346 451 echo ">>> Processing binutils (${PLATFORM})" 347 452 cd "${BINUTILSDIR}" … … 349 454 350 455 change_title "binutils: configure (${PLATFORM})" 351 CFLAGS=-Wno-error ./configure "--target=${TARGET}" "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" --disable-nls --disable-werror 456 CFLAGS=-Wno-error ./configure \ 457 "--target=${TARGET}" \ 458 "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" \ 459 --disable-nls --disable-werror 352 460 check_error $? "Error configuring binutils." 353 461 354 462 change_title "binutils: make (${PLATFORM})" 355 make all install 356 check_error $? "Error compiling/installing binutils." 463 make all 464 check_error $? "Error compiling binutils." 465 466 change_title "binutils: install (${PLATFORM})" 467 if $REAL_INSTALL; then 468 make install 469 else 470 make install "DESTDIR=${INSTALL_DIR}" 471 fi 472 check_error $? "Error installing binutils." 473 357 474 358 475 echo ">>> Processing GCC (${PLATFORM})" … … 361 478 362 479 change_title "GCC: configure (${PLATFORM})" 363 "${GCCDIR}/configure" "--target=${TARGET}" "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" --with-gnu-as --with-gnu-ld --disable-nls --disable-threads --enable-languages=c,objc,c++,obj-c++ --disable-multilib --disable-libgcj --without-headers --disable-shared --enable-lto --disable-werror 480 PATH="$PATH:${INSTALL_DIR}/${PREFIX}/bin" "${GCCDIR}/configure" \ 481 "--target=${TARGET}" \ 482 "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" \ 483 --with-gnu-as --with-gnu-ld --disable-nls --disable-threads \ 484 --enable-languages=c,objc,c++,obj-c++ \ 485 --disable-multilib --disable-libgcj --without-headers \ 486 --disable-shared --enable-lto --disable-werror 364 487 check_error $? "Error configuring GCC." 365 488 366 489 change_title "GCC: make (${PLATFORM})" 367 PATH="${PATH}:${PREFIX}/bin" make all-gcc install-gcc 368 check_error $? "Error compiling/installing GCC." 490 PATH="${PATH}:${PREFIX}/bin:${INSTALL_DIR}/${PREFIX}/bin" make all-gcc 491 check_error $? "Error compiling GCC." 492 493 change_title "GCC: install (${PLATFORM})" 494 if $REAL_INSTALL; then 495 PATH="${PATH}:${PREFIX}/bin" make install-gcc 496 else 497 PATH="${PATH}:${INSTALL_DIR}/${PREFIX}/bin" make install-gcc "DESTDIR=${INSTALL_DIR}" 498 fi 499 check_error $? "Error installing GCC." 500 369 501 370 502 echo ">>> Processing GDB (${PLATFORM})" … … 373 505 374 506 change_title "GDB: configure (${PLATFORM})" 375 ./configure "--target=${TARGET}" "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" 507 PATH="$PATH:${INSTALL_DIR}/${PREFIX}/bin" ./configure \ 508 "--target=${TARGET}" \ 509 "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" 376 510 check_error $? "Error configuring GDB." 377 511 378 512 change_title "GDB: make (${PLATFORM})" 379 make all install 380 check_error $? "Error compiling/installing GDB." 513 PATH="${PATH}:${PREFIX}/bin:${INSTALL_DIR}/${PREFIX}/bin" make all 514 check_error $? "Error compiling GDB." 515 516 change_title "GDB: make (${PLATFORM})" 517 if $REAL_INSTALL; then 518 PATH="${PATH}:${PREFIX}/bin" make install 519 else 520 PATH="${PATH}:${INSTALL_DIR}/${PREFIX}/bin" make install "DESTDIR=${INSTALL_DIR}" 521 fi 522 check_error $? "Error installing GDB." 523 381 524 382 525 cd "${BASEDIR}" … … 389 532 echo ">>> Cross-compiler for ${TARGET} installed." 390 533 } 534 535 while [ "$#" -gt 1 ]; do 536 case "$1" in 537 --no-install) 538 REAL_INSTALL=false 539 shift 540 ;; 541 --helenos-target) 542 USE_HELENOS_TARGET=true 543 shift 544 ;; 545 *) 546 show_usage 547 ;; 548 esac 549 done 391 550 392 551 if [ "$#" -lt "1" ]; then … … 395 554 396 555 case "$1" in 397 "amd64")556 amd64|arm32|ia32|ia64|mips32|mips32eb|mips64|ppc32|ppc64|sparc64) 398 557 prepare 399 build_target "amd64" "amd64-linux-gnu" 400 ;; 401 "arm32") 402 prepare 403 build_target "arm32" "arm-linux-gnueabi" 404 ;; 405 "ia32") 406 prepare 407 build_target "ia32" "i686-pc-linux-gnu" 408 ;; 409 "ia64") 410 prepare 411 build_target "ia64" "ia64-pc-linux-gnu" 412 ;; 413 "mips32") 414 prepare 415 build_target "mips32" "mipsel-linux-gnu" 416 ;; 417 "mips32eb") 418 prepare 419 build_target "mips32eb" "mips-linux-gnu" 420 ;; 421 "mips64") 422 prepare 423 build_target "mips64" "mips64el-linux-gnu" 424 ;; 425 "ppc32") 426 prepare 427 build_target "ppc32" "ppc-linux-gnu" 428 ;; 429 "ppc64") 430 prepare 431 build_target "ppc64" "ppc64-linux-gnu" 432 ;; 433 "sparc64") 434 prepare 435 build_target "sparc64" "sparc64-linux-gnu" 558 build_target "$1" 436 559 ;; 437 560 "all") 438 561 prepare 439 build_target "amd64" "amd64-linux-gnu"440 build_target "arm32" "arm-linux-gnueabi"441 build_target "ia32" "i686-pc-linux-gnu"442 build_target "ia64" "ia64-pc-linux-gnu"443 build_target "mips32" "mipsel-linux-gnu"444 build_target "mips32eb" "mips-linux-gnu"445 build_target "mips64" "mips64el-linux-gnu"446 build_target "ppc32" "ppc-linux-gnu"447 build_target "ppc64" "ppc64-linux-gnu"448 build_target "sparc64" "sparc64-linux-gnu"562 build_target "amd64" 563 build_target "arm32" 564 build_target "ia32" 565 build_target "ia64" 566 build_target "mips32" 567 build_target "mips32eb" 568 build_target "mips64" 569 build_target "ppc32" 570 build_target "ppc64" 571 build_target "sparc64" 449 572 ;; 450 573 "parallel") 451 574 prepare 452 build_target "amd64" "amd64-linux-gnu"&453 build_target "arm32" "arm-linux-gnueabi"&454 build_target "ia32" "i686-pc-linux-gnu"&455 build_target "ia64" "ia64-pc-linux-gnu"&456 build_target "mips32" "mipsel-linux-gnu"&457 build_target "mips32eb" "mips-linux-gnu"&458 build_target "mips64" "mips64el-linux-gnu"&459 build_target "ppc32" "ppc-linux-gnu"&460 build_target "ppc64" "ppc64-linux-gnu"&461 build_target "sparc64" "sparc64-linux-gnu"&575 build_target "amd64" & 576 build_target "arm32" & 577 build_target "ia32" & 578 build_target "ia64" & 579 build_target "mips32" & 580 build_target "mips32eb" & 581 build_target "mips64" & 582 build_target "ppc32" & 583 build_target "ppc64" & 584 build_target "sparc64" & 462 585 wait 463 586 ;; 464 587 "2-way") 465 588 prepare 466 build_target "amd64" "amd64-linux-gnu"&467 build_target "arm32" "arm-linux-gnueabi"&589 build_target "amd64" & 590 build_target "arm32" & 468 591 wait 469 592 470 build_target "ia32" "i686-pc-linux-gnu"&471 build_target "ia64" "ia64-pc-linux-gnu"&593 build_target "ia32" & 594 build_target "ia64" & 472 595 wait 473 596 474 build_target "mips32" "mipsel-linux-gnu"&475 build_target "mips32eb" "mips-linux-gnu"&597 build_target "mips32" & 598 build_target "mips32eb" & 476 599 wait 477 600 478 build_target "mips64" "mips64el-linux-gnu"&479 build_target "ppc32" "ppc-linux-gnu"&601 build_target "mips64" & 602 build_target "ppc32" & 480 603 wait 481 604 482 build_target "ppc64" "ppc64-linux-gnu"&483 build_target "sparc64" "sparc64-linux-gnu"&605 build_target "ppc64" & 606 build_target "sparc64" & 484 607 wait 485 608 ;;
Note:
See TracChangeset
for help on using the changeset viewer.