Changes in tools/toolchain.sh [12735849:d965dc3] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tools/toolchain.sh
r12735849 rd965dc3 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" 58 GCC_VERSION="4.8.1" 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" 57 GCC_VERSION="4.8.0" 58 GDB_VERSION="7.5.1" 62 59 63 60 BASEDIR="`pwd`" 64 SRCDIR="$(readlink -f $(dirname "$0"))"65 61 BINUTILS="binutils-${BINUTILS_VERSION}${BINUTILS_RELEASE}.tar.bz2" 66 62 GCC="gcc-${GCC_VERSION}.tar.bz2" 67 63 GDB="gdb-${GDB_VERSION}.tar.bz2" 68 69 REAL_INSTALL=true70 USE_HELENOS_TARGET=false71 INSTALL_DIR="${BASEDIR}/PKG"72 64 73 65 # … … 143 135 echo 144 136 echo "Syntax:" 145 echo " $0 [--no-install] [--helenos-target]<platform>"137 echo " $0 <platform>" 146 138 echo 147 139 echo "Possible target platforms are:" … … 160 152 echo " 2-way same as 'all', but 2-way parallel" 161 153 echo 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." 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." 179 157 echo 180 158 … … 276 254 } 277 255 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}" ] ; then298 echo299 echo "CROSS_PREFIX cannot reside within the working directory."300 301 exit 5302 fi303 }304 305 256 unpack_tarball() { 306 257 FILE="$1" … … 312 263 tar -xjf "${FILE}" 313 264 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}."326 265 } 327 266 … … 336 275 337 276 download_fetch "${BINUTILS_SOURCE}" "${BINUTILS}" "33adb18c3048d057ac58d07a3f1adb38" 338 download_fetch "${GCC_SOURCE}" "${GCC}" "3b2386c114cd74185aa3754b58a79304" 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 277 download_fetch "${GCC_SOURCE}" "${GCC}" "e6040024eb9e761c3bea348d1fa5abb0" 278 download_fetch "${GDB_SOURCE}" "${GDB}" "3f48f468b24447cf24820054ff6e85b1" 388 279 } 389 280 390 281 build_target() { 391 282 PLATFORM="$1" 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 283 TARGET="$2" 399 284 400 285 WORKDIR="${BASEDIR}/${PLATFORM}" … … 407 292 CROSS_PREFIX="/usr/local/cross" 408 293 fi 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 294 295 PREFIX="${CROSS_PREFIX}/${PLATFORM}" 418 296 419 297 echo ">>> Downloading tarballs" … … 423 301 424 302 echo ">>> Removing previous content" 425 $REAL_INSTALL &&cleanup_dir "${PREFIX}"303 cleanup_dir "${PREFIX}" 426 304 cleanup_dir "${WORKDIR}" 427 305 428 $REAL_INSTALL &&create_dir "${PREFIX}" "destination directory"306 create_dir "${PREFIX}" "destination directory" 429 307 create_dir "${OBJDIR}" "GCC object directory" 430 431 check_dirs "${PREFIX}" "${WORKDIR}"432 308 433 309 echo ">>> Unpacking tarballs" … … 439 315 unpack_tarball "${BASEDIR}/${GDB}" "GDB" 440 316 441 echo ">>> Applying patches"442 for p in $BINUTILS_PATCHES; do443 patch_sources "${SRCDIR}/${p}" 0 "binutils"444 done445 for p in $GCC_PATCHES; do446 patch_sources "${SRCDIR}/${p}" 0 "GCC"447 done448 for p in $GDB_PATCHES; do449 patch_sources "${SRCDIR}/${p}" 0 "GDB"450 done451 452 317 echo ">>> Processing binutils (${PLATFORM})" 453 318 cd "${BINUTILSDIR}" … … 455 320 456 321 change_title "binutils: configure (${PLATFORM})" 457 CFLAGS=-Wno-error ./configure \ 458 "--target=${TARGET}" \ 459 "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" \ 460 --disable-nls --disable-werror 322 CFLAGS=-Wno-error ./configure "--target=${TARGET}" "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" --disable-nls --disable-werror 461 323 check_error $? "Error configuring binutils." 462 324 463 325 change_title "binutils: make (${PLATFORM})" 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 326 make all install 327 check_error $? "Error compiling/installing binutils." 475 328 476 329 echo ">>> Processing GCC (${PLATFORM})" … … 479 332 480 333 change_title "GCC: configure (${PLATFORM})" 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 334 "${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 488 335 check_error $? "Error configuring GCC." 489 336 490 337 change_title "GCC: make (${PLATFORM})" 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 338 PATH="${PATH}:${PREFIX}/bin" make all-gcc install-gcc 339 check_error $? "Error compiling/installing GCC." 502 340 503 341 echo ">>> Processing GDB (${PLATFORM})" … … 506 344 507 345 change_title "GDB: configure (${PLATFORM})" 508 PATH="$PATH:${INSTALL_DIR}/${PREFIX}/bin" ./configure \ 509 "--target=${TARGET}" \ 510 "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" 346 ./configure "--target=${TARGET}" "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" 511 347 check_error $? "Error configuring GDB." 512 348 513 349 change_title "GDB: make (${PLATFORM})" 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 350 make all install 351 check_error $? "Error compiling/installing GDB." 525 352 526 353 cd "${BASEDIR}" … … 533 360 echo ">>> Cross-compiler for ${TARGET} installed." 534 361 } 535 536 while [ "$#" -gt 1 ]; do537 case "$1" in538 --no-install)539 REAL_INSTALL=false540 shift541 ;;542 --helenos-target)543 USE_HELENOS_TARGET=true544 shift545 ;;546 *)547 show_usage548 ;;549 esac550 done551 362 552 363 if [ "$#" -lt "1" ]; then … … 555 366 556 367 case "$1" in 557 amd64|arm32|ia32|ia64|mips32|mips32eb|mips64|ppc32|ppc64|sparc64) 558 prepare 559 build_target "$1" 368 "amd64") 369 prepare 370 build_target "amd64" "amd64-linux-gnu" 371 ;; 372 "arm32") 373 prepare 374 build_target "arm32" "arm-linux-gnueabi" 375 ;; 376 "ia32") 377 prepare 378 build_target "ia32" "i686-pc-linux-gnu" 379 ;; 380 "ia64") 381 prepare 382 build_target "ia64" "ia64-pc-linux-gnu" 383 ;; 384 "mips32") 385 prepare 386 build_target "mips32" "mipsel-linux-gnu" 387 ;; 388 "mips32eb") 389 prepare 390 build_target "mips32eb" "mips-linux-gnu" 391 ;; 392 "mips64") 393 prepare 394 build_target "mips64" "mips64el-linux-gnu" 395 ;; 396 "ppc32") 397 prepare 398 build_target "ppc32" "ppc-linux-gnu" 399 ;; 400 "ppc64") 401 prepare 402 build_target "ppc64" "ppc64-linux-gnu" 403 ;; 404 "sparc64") 405 prepare 406 build_target "sparc64" "sparc64-linux-gnu" 560 407 ;; 561 408 "all") 562 409 prepare 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" 410 build_target "amd64" "amd64-linux-gnu" 411 build_target "arm32" "arm-linux-gnueabi" 412 build_target "ia32" "i686-pc-linux-gnu" 413 build_target "ia64" "ia64-pc-linux-gnu" 414 build_target "mips32" "mipsel-linux-gnu" 415 build_target "mips32eb" "mips-linux-gnu" 416 build_target "mips64" "mips64el-linux-gnu" 417 build_target "ppc32" "ppc-linux-gnu" 418 build_target "ppc64" "ppc64-linux-gnu" 419 build_target "sparc64" "sparc64-linux-gnu" 573 420 ;; 574 421 "parallel") 575 422 prepare 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" &423 build_target "amd64" "amd64-linux-gnu" & 424 build_target "arm32" "arm-linux-gnueabi" & 425 build_target "ia32" "i686-pc-linux-gnu" & 426 build_target "ia64" "ia64-pc-linux-gnu" & 427 build_target "mips32" "mipsel-linux-gnu" & 428 build_target "mips32eb" "mips-linux-gnu" & 429 build_target "mips64" "mips64el-linux-gnu" & 430 build_target "ppc32" "ppc-linux-gnu" & 431 build_target "ppc64" "ppc64-linux-gnu" & 432 build_target "sparc64" "sparc64-linux-gnu" & 586 433 wait 587 434 ;; 588 435 "2-way") 589 436 prepare 590 build_target "amd64" &591 build_target "arm32" &592 wait 593 594 build_target "ia32" &595 build_target "ia64" &596 wait 597 598 build_target "mips32" &599 build_target "mips32eb" &600 wait 601 602 build_target "mips64" &603 build_target "ppc32" &604 wait 605 606 build_target "ppc64" &607 build_target "sparc64" &437 build_target "amd64" "amd64-linux-gnu" & 438 build_target "arm32" "arm-linux-gnueabi" & 439 wait 440 441 build_target "ia32" "i686-pc-linux-gnu" & 442 build_target "ia64" "ia64-pc-linux-gnu" & 443 wait 444 445 build_target "mips32" "mipsel-linux-gnu" & 446 build_target "mips32eb" "mips-linux-gnu" & 447 wait 448 449 build_target "mips64" "mips64el-linux-gnu" & 450 build_target "ppc32" "ppc-linux-gnu" & 451 wait 452 453 build_target "ppc64" "ppc64-linux-gnu" & 454 build_target "sparc64" "sparc64-linux-gnu" & 608 455 wait 609 456 ;;
Note:
See TracChangeset
for help on using the changeset viewer.