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