Changes in / [350ec74:1c6c3e1d] in mainline
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
tools/toolchain.sh
r350ec74 r1c6c3e1d 31 31 BINUTILS_GDB_GIT="https://github.com/HelenOS/binutils-gdb.git" 32 32 33 BINUTILS_BRANCH="binutils-2_4 1-helenos"34 BINUTILS_VERSION="2.4 1"35 36 GDB_BRANCH="gdb- 13.2-helenos"37 GDB_VERSION=" 13.2"33 BINUTILS_BRANCH="binutils-2_40-helenos" 34 BINUTILS_VERSION="2.40" 35 36 GDB_BRANCH="gdb-8_2-helenos" 37 GDB_VERSION="8.2" 38 38 39 39 GCC_GIT="https://github.com/HelenOS/gcc.git" 40 GCC_BRANCH="13_ 2_0-helenos"41 GCC_VERSION="13. 2"40 GCC_BRANCH="13_1_1-helenos" 41 GCC_VERSION="13.1.1" 42 42 43 43 BASEDIR="$PWD" 44 44 SRCDIR="$(readlink -f $(dirname "$0"))" 45 45 46 # If we install into a temporary directory and copy from there,47 # we don't have to trust the upstream makefiles respect the prefix for48 # all files, and we also have a ready-made package for distribution.49 INSTALL_DIR="${BASEDIR}/PKG"50 51 46 SYSTEM_INSTALL=false 52 53 BUILD_GDB=false 54 BUILD_BINUTILS=true 55 BUILD_GCC=true 56 57 if [ -z "$JOBS" ] ; then 58 JOBS="`nproc`" 59 fi 47 REAL_INSTALL=true 48 USE_HELENOS_TARGET=true 60 49 61 50 check_error() { … … 72 61 echo 73 62 echo "Syntax:" 74 echo " $0 [--system-wide] [-- with-gdb|--only-gdb] <platform>"63 echo " $0 [--system-wide] [--no-install] [--non-helenos-target] <platform>" 75 64 echo " $0 [--system-wide] --test-version [<platform>]" 76 65 echo … … 87 76 echo " sparc64 SPARC V9" 88 77 echo " all build all targets" 78 echo " essential build only targets currently needed for HelenOS development" 89 79 echo " parallel same as 'all', but all in parallel" 90 80 echo " 2-way same as 'all', but 2-way parallel" … … 102 92 echo " variable is not set, then the default value of \$HOME/.local/share" 103 93 echo " is assumed." 94 echo 95 echo "If the --no-install option is used, the toolchain still uses the" 96 echo "target installation directory as determined above, but the files" 97 echo "are actually copied into the PKG/ subdirectory during the installation" 98 echo "without affecting the actual target file system. This might be useful" 99 echo "when preparing a system-wide installation, but avoiding running this" 100 echo "script under the super user." 104 101 echo 105 102 echo "The --non-helenos-target option will build non-HelenOS-specific" … … 180 177 } 181 178 182 ring_bell() {183 printf '\a'184 sleep 0.1185 printf '\a'186 sleep 0.1187 printf '\a'188 sleep 0.1189 printf '\a'190 sleep 0.1191 printf '\a'192 }193 194 179 show_countdown() { 195 180 TM="$1" … … 256 241 257 242 check_dirs() { 258 cd "${BASEDIR}" 259 check_error $? "Unable to change directory to ${BASEDIR}." 243 OUTSIDE="$1" 244 BASE="$2" 245 ORIGINAL="$PWD" 246 247 cd "${BASE}" 248 check_error $? "Unable to change directory to ${BASE}." 260 249 ABS_BASE="$PWD" 261 262 if $SYSTEM_INSTALL && [ ! -d "${CROSS_PREFIX}" ]; then 263 ring_bell 264 ( set -x ; sudo -k mkdir -p "${CROSS_PREFIX}" ) 265 else 266 mkdir -p "${CROSS_PREFIX}" 267 fi 268 269 cd "${CROSS_PREFIX}" 270 check_error $? "Unable to change directory to ${CROSS_PREFIX}." 250 cd "${ORIGINAL}" 251 check_error $? "Unable to change directory to ${ORIGINAL}." 252 253 mkdir -p "${OUTSIDE}" 254 cd "${OUTSIDE}" 255 check_error $? "Unable to change directory to ${OUTSIDE}." 271 256 272 257 while [ "${#PWD}" -gt "${#ABS_BASE}" ]; do … … 281 266 fi 282 267 283 cd "${BASEDIR}" 268 cd "${ORIGINAL}" 269 check_error $? "Unable to change directory to ${ORIGINAL}." 284 270 } 285 271 … … 294 280 change_title "Downloading sources" 295 281 echo ">>> Downloading sources" 296 297 if $BUILD_BINUTILS ; then 298 git clone --depth 1 -b "$BINUTILS_BRANCH" "$BINUTILS_GDB_GIT" "binutils-$BINUTILS_VERSION" 299 # If the directory already existed, pull upstream changes. 300 git -C "binutils-$BINUTILS_VERSION" pull 301 fi 302 303 if $BUILD_GCC ; then 304 git clone --depth 1 -b "$GCC_BRANCH" "$GCC_GIT" "gcc-$GCC_VERSION" 305 git -C "gcc-$GCC_VERSION" pull 306 307 change_title "Downloading GCC prerequisites" 308 echo ">>> Downloading GCC prerequisites" 309 cd "gcc-${GCC_VERSION}" 310 ./contrib/download_prerequisites 311 cd .. 312 fi 313 314 if $BUILD_GDB ; then 315 git clone --depth 1 -b "$GDB_BRANCH" "$BINUTILS_GDB_GIT" "gdb-$GDB_VERSION" 316 git -C "gdb-$GDB_VERSION" pull 317 fi 318 319 # This sets the CROSS_PREFIX variable 320 set_cross_prefix 321 322 DESTDIR_SPEC="DESTDIR=${INSTALL_DIR}" 323 324 check_dirs 282 git clone --depth 1 -b "$BINUTILS_BRANCH" "$BINUTILS_GDB_GIT" "binutils-$BINUTILS_VERSION" 283 git clone --depth 1 -b "$GDB_BRANCH" "$BINUTILS_GDB_GIT" "gdb-$GDB_VERSION" 284 git clone --depth 1 -b "$GCC_BRANCH" "$GCC_GIT" "gcc-$GCC_VERSION" 285 286 # If the directory already existed, pull upstream changes. 287 git -C "binutils-$BINUTILS_VERSION" pull 288 git -C "gdb-$GDB_VERSION" pull 289 git -C "gcc-$GCC_VERSION" pull 290 291 change_title "Downloading GCC prerequisites" 292 echo ">>> Downloading GCC prerequisites" 293 cd "gcc-${GCC_VERSION}" 294 ./contrib/download_prerequisites 295 cd .. 325 296 } 326 297 … … 350 321 esac 351 322 352 TARGET="${GNU_ARCH}-helenos" 353 } 354 355 build_binutils() { 356 # This sets the TARGET variable 357 set_target_from_platform "$1" 323 HELENOS_TARGET="${GNU_ARCH}-helenos" 324 325 case "$1" in 326 "arm32") 327 LINUX_TARGET="${GNU_ARCH}-linux-gnueabi" 328 ;; 329 *) 330 LINUX_TARGET="${GNU_ARCH}-linux-gnu" 331 ;; 332 esac 333 } 334 335 build_target() { 336 PLATFORM="$1" 337 338 # This sets the *_TARGET variables 339 set_target_from_platform "$PLATFORM" 340 if $USE_HELENOS_TARGET ; then 341 TARGET="$HELENOS_TARGET" 342 else 343 TARGET="$LINUX_TARGET" 344 fi 358 345 359 346 WORKDIR="${BASEDIR}/${TARGET}" 347 INSTALL_DIR="${BASEDIR}/PKG" 360 348 BINUTILSDIR="${WORKDIR}/binutils-${BINUTILS_VERSION}" 349 GCCDIR="${WORKDIR}/gcc-${GCC_VERSION}" 350 GDBDIR="${WORKDIR}/gdb-${GDB_VERSION}" 351 352 # This sets the CROSS_PREFIX variable 353 set_cross_prefix 354 355 if [ -z "$JOBS" ] ; then 356 JOBS="`nproc`" 357 fi 358 359 PREFIX="${CROSS_PREFIX}" 361 360 362 361 echo ">>> Removing previous content" 363 362 cleanup_dir "${WORKDIR}" 364 363 mkdir -p "${WORKDIR}" 365 366 echo ">>> Processing binutils (${TARGET})" 364 check_dirs "${PREFIX}" "${WORKDIR}" 365 366 if $USE_HELENOS_TARGET ; then 367 change_title "Creating build sysroot" 368 echo ">>> Creating build sysroot" 369 mkdir -p "${WORKDIR}/sysroot/include" 370 mkdir "${WORKDIR}/sysroot/lib" 371 ARCH="$PLATFORM" 372 if [ "$ARCH" = "mips32eb" ]; then 373 ARCH=mips32 374 fi 375 376 cp -r -L -t "${WORKDIR}/sysroot/include" \ 377 ${SRCDIR}/../abi/include/* \ 378 ${SRCDIR}/../uspace/lib/c/arch/${ARCH}/include/* \ 379 ${SRCDIR}/../uspace/lib/c/include/* 380 check_error $? "Failed to create build sysroot." 381 fi 382 383 384 echo ">>> Processing binutils (${PLATFORM})" 367 385 mkdir -p "${BINUTILSDIR}" 368 386 cd "${BINUTILSDIR}" 369 387 check_error $? "Change directory failed." 370 388 371 change_title "binutils: configure (${ TARGET})"389 change_title "binutils: configure (${PLATFORM})" 372 390 CFLAGS="-Wno-error -fcommon" "${BASEDIR}/downloads/binutils-${BINUTILS_VERSION}/configure" \ 373 391 "--target=${TARGET}" \ 374 "--prefix=${ CROSS_PREFIX}" \392 "--prefix=${PREFIX}" \ 375 393 "--program-prefix=${TARGET}-" \ 376 394 --disable-nls \ … … 382 400 check_error $? "Error configuring binutils." 383 401 384 change_title "binutils: make (${ TARGET})"402 change_title "binutils: make (${PLATFORM})" 385 403 make all -j$JOBS 386 404 check_error $? "Error compiling binutils." 387 405 388 change_title "binutils: install (${ TARGET})"389 make install $DESTDIR_SPEC406 change_title "binutils: install (${PLATFORM})" 407 make install "DESTDIR=${INSTALL_DIR}" 390 408 check_error $? "Error installing binutils." 391 } 392 393 build_gcc() { 394 # This sets the TARGET variable 395 set_target_from_platform "$1" 396 397 WORKDIR="${BASEDIR}/${TARGET}" 398 GCCDIR="${WORKDIR}/gcc-${GCC_VERSION}" 399 400 echo ">>> Removing previous content" 401 cleanup_dir "${WORKDIR}" 402 mkdir -p "${WORKDIR}" 403 404 echo ">>> Processing GCC (${TARGET})" 409 410 411 echo ">>> Processing GCC (${PLATFORM})" 405 412 mkdir -p "${GCCDIR}" 406 413 cd "${GCCDIR}" 407 414 check_error $? "Change directory failed." 408 415 409 BUILDPATH="${CROSS_PREFIX}/bin:${PATH}" 410 411 change_title "GCC: configure (${TARGET})" 412 PATH="${BUILDPATH}" "${BASEDIR}/downloads/gcc-${GCC_VERSION}/configure" \ 416 change_title "GCC: configure (${PLATFORM})" 417 PATH="$PATH:${INSTALL_DIR}/${PREFIX}/bin" "${BASEDIR}/downloads/gcc-${GCC_VERSION}/configure" \ 413 418 "--target=${TARGET}" \ 414 "--prefix=${ CROSS_PREFIX}" \419 "--prefix=${PREFIX}" \ 415 420 "--program-prefix=${TARGET}-" \ 416 421 --with-gnu-as \ … … 421 426 --disable-shared \ 422 427 --disable-werror \ 423 --without-headers # TODO: Replace with proper sysroot so we can build more libs428 --without-headers 424 429 check_error $? "Error configuring GCC." 425 430 426 change_title "GCC: make (${ TARGET})"427 PATH="${ BUILDPATH}" make all-gcc -j$JOBS431 change_title "GCC: make (${PLATFORM})" 432 PATH="${PATH}:${PREFIX}/bin:${INSTALL_DIR}/${PREFIX}/bin" make all-gcc -j$JOBS 428 433 check_error $? "Error compiling GCC." 429 434 430 change_title "GCC: install (${TARGET})" 431 PATH="${BUILDPATH}" make install-gcc $DESTDIR_SPEC 435 if $USE_HELENOS_TARGET ; then 436 PATH="${PATH}:${PREFIX}/bin:${INSTALL_DIR}/${PREFIX}/bin" make all-target-libgcc -j$JOBS 437 check_error $? "Error compiling libgcc." 438 # TODO: libatomic and libstdc++ need some extra care 439 # PATH="${PATH}:${PREFIX}/bin:${INSTALL_DIR}/${PREFIX}/bin" make all-target-libatomic -j$JOBS 440 # check_error $? "Error compiling libatomic." 441 # PATH="${PATH}:${PREFIX}/bin:${INSTALL_DIR}/${PREFIX}/bin" make all-target-libstdc++-v3 -j$JOBS 442 # check_error $? "Error compiling libstdc++." 443 fi 444 445 change_title "GCC: install (${PLATFORM})" 446 PATH="${PATH}:${INSTALL_DIR}/${PREFIX}/bin" make install-gcc "DESTDIR=${INSTALL_DIR}" 447 if $USE_HELENOS_TARGET ; then 448 PATH="${PATH}:${INSTALL_DIR}/${PREFIX}/bin" make install-target-libgcc "DESTDIR=${INSTALL_DIR}" 449 # PATH="${PATH}:${INSTALL_DIR}/${PREFIX}/bin" make install-target-libatomic "DESTDIR=${INSTALL_DIR}" 450 # PATH="${PATH}:${INSTALL_DIR}/${PREFIX}/bin" make install-target-libstdc++-v3 "DESTDIR=${INSTALL_DIR}" 451 fi 432 452 check_error $? "Error installing GCC." 433 } 434 435 build_libgcc() { 436 # This sets the TARGET variable 437 set_target_from_platform "$1" 438 439 WORKDIR="${BASEDIR}/${TARGET}" 440 GCCDIR="${WORKDIR}/gcc-${GCC_VERSION}" 441 442 # No removing previous content here, we need the previous GCC build 443 444 cd "${GCCDIR}" 445 check_error $? "Change directory failed." 446 447 BUILDPATH="${CROSS_PREFIX}/bin:${PATH}" 448 449 change_title "libgcc: make (${TARGET})" 450 451 PATH="${BUILDPATH}" make all-target-libgcc -j$JOBS 452 check_error $? "Error compiling libgcc." 453 # TODO: libatomic and libstdc++ need some extra care 454 # PATH="${BUILDPATH}" make all-target-libatomic -j$JOBS 455 # check_error $? "Error compiling libatomic." 456 # PATH="${BUILDPATH}" make all-target-libstdc++-v3 -j$JOBS 457 # check_error $? "Error compiling libstdc++." 458 459 change_title "libgcc: install (${TARGET})" 460 461 PATH="${BUILDPATH}" make install-target-libgcc $DESTDIR_SPEC 462 # PATH="${BUILDPATH}" make install-target-libatomic $DESTDIR_SPEC 463 # PATH="${BUILDPATH}" make install-target-libstdc++-v3 $DESTDIR_SPEC 464 check_error $? "Error installing libgcc." 465 } 466 467 build_gdb() { 468 # This sets the TARGET variable 469 set_target_from_platform "$1" 470 471 WORKDIR="${BASEDIR}/${TARGET}" 472 GDBDIR="${WORKDIR}/gdb-${GDB_VERSION}" 473 474 echo ">>> Removing previous content" 475 cleanup_dir "${WORKDIR}" 476 mkdir -p "${WORKDIR}" 477 478 echo ">>> Processing GDB (${TARGET})" 453 454 455 echo ">>> Processing GDB (${PLATFORM})" 479 456 mkdir -p "${GDBDIR}" 480 457 cd "${GDBDIR}" 481 458 check_error $? "Change directory failed." 482 459 483 change_title "GDB: configure (${ TARGET})"484 CFLAGS="-fcommon" "${BASEDIR}/downloads/gdb-${GDB_VERSION}/configure" \460 change_title "GDB: configure (${PLATFORM})" 461 CFLAGS="-fcommon" PATH="$PATH:${INSTALL_DIR}/${PREFIX}/bin" "${BASEDIR}/downloads/gdb-${GDB_VERSION}/configure" \ 485 462 "--target=${TARGET}" \ 486 "--prefix=${ CROSS_PREFIX}" \463 "--prefix=${PREFIX}" \ 487 464 "--program-prefix=${TARGET}-" \ 488 465 --enable-werror=no 489 466 check_error $? "Error configuring GDB." 490 467 491 change_title "GDB: make (${ TARGET})"492 make all-gdb -j$JOBS468 change_title "GDB: make (${PLATFORM})" 469 PATH="${PATH}:${PREFIX}/bin:${INSTALL_DIR}/${PREFIX}/bin" make all-gdb -j$JOBS 493 470 check_error $? "Error compiling GDB." 494 471 495 change_title "GDB: install (${TARGET})"496 make install-gdb $DESTDIR_SPEC472 change_title "GDB: make (${PLATFORM})" 473 PATH="${PATH}:${INSTALL_DIR}/${PREFIX}/bin" make install-gdb "DESTDIR=${INSTALL_DIR}" 497 474 check_error $? "Error installing GDB." 498 } 499 500 install_pkg() { 501 echo ">>> Moving to the destination directory." 502 if $SYSTEM_INSTALL ; then 503 ring_bell 504 ( set -x ; sudo -k cp -r -t "${CROSS_PREFIX}" "${INSTALL_DIR}${CROSS_PREFIX}/"* ) 505 else 506 ( set -x ; cp -r -t "${CROSS_PREFIX}" "${INSTALL_DIR}${CROSS_PREFIX}/"* ) 507 fi 508 } 509 510 link_clang() { 475 511 476 # Symlink clang and lld to the install path. 512 477 CLANG="`which clang 2> /dev/null || echo "/usr/bin/clang"`" 513 478 LLD="`which ld.lld 2> /dev/null || echo "/usr/bin/ld.lld"`" 514 479 515 ln -s $CLANG "${INSTALL_DIR}${CROSS_PREFIX}/bin/${TARGET}-clang" 516 ln -s $LLD "${INSTALL_DIR}${CROSS_PREFIX}/bin/${TARGET}-ld.lld" 480 ln -s $CLANG "${INSTALL_DIR}/${PREFIX}/bin/${TARGET}-clang" 481 ln -s $LLD "${INSTALL_DIR}/${PREFIX}/bin/${TARGET}-ld.lld" 482 483 if $REAL_INSTALL ; then 484 echo ">>> Moving to the destination directory." 485 cp -r -t "${PREFIX}" "${INSTALL_DIR}/${PREFIX}/"* 486 fi 487 488 cd "${BASEDIR}" 489 check_error $? "Change directory failed." 490 491 echo ">>> Cleaning up" 492 cleanup_dir "${WORKDIR}" 493 494 echo 495 echo ">>> Cross-compiler for ${TARGET} installed." 517 496 } 518 497 … … 527 506 exit 528 507 ;; 529 -- with-gdb)530 BUILD_GDB=true508 --no-install) 509 REAL_INSTALL=false 531 510 shift 532 511 ;; 533 --only-gdb) 534 BUILD_GDB=true 535 BUILD_BINUTILS=false 536 BUILD_GCC=false 512 --non-helenos-target) 513 USE_HELENOS_TARGET=false 537 514 shift 538 515 ;; … … 546 523 show_usage 547 524 fi 548 549 PLATFORMS="amd64 arm32 arm64 ia32 ia64 mips32 mips32eb ppc32 riscv64 sparc64"550 551 run_one() {552 $1 $PLATFORM553 }554 555 run_all() {556 for x in $PLATFORMS ; do557 $1 $x558 done559 }560 561 run_parallel() {562 for x in $PLATFORMS ; do563 $1 $x &564 done565 wait566 }567 568 run_2way() {569 $1 amd64 &570 $1 arm32 &571 wait572 573 $1 arm64 &574 $1 ia32 &575 wait576 577 $1 ia64 &578 $1 mips32 &579 wait580 581 $1 mips32eb &582 $1 ppc32 &583 wait584 585 $1 riscv64 &586 $1 sparc64 &587 wait588 }589 590 everything() {591 RUNNER="$1"592 593 prepare594 595 if $BUILD_BINUTILS ; then596 $RUNNER build_binutils597 598 if $BUILD_GCC ; then599 # gcc/libgcc may fail to build correctly if binutils is not installed first600 echo ">>> Installing binutils"601 install_pkg602 fi603 fi604 605 if $BUILD_GCC ; then606 $RUNNER build_gcc607 608 # libgcc may fail to build correctly if gcc is not installed first609 echo ">>> Installing GCC"610 install_pkg611 612 $RUNNER build_libgcc613 fi614 615 if $BUILD_GDB ; then616 $RUNNER build_gdb617 fi618 619 echo ">>> Installing all files"620 install_pkg621 622 link_clang623 }624 525 625 526 case "$1" in … … 629 530 ;; 630 531 amd64|arm32|arm64|ia32|ia64|mips32|mips32eb|ppc32|riscv64|sparc64) 631 PLATFORM="$1"632 everything run_one532 prepare 533 build_target "$1" 633 534 ;; 634 535 "all") 635 everything run_all 536 prepare 537 build_target "amd64" 538 build_target "arm32" 539 build_target "arm64" 540 build_target "ia32" 541 build_target "ia64" 542 build_target "mips32" 543 build_target "mips32eb" 544 build_target "ppc32" 545 build_target "riscv64" 546 build_target "sparc64" 547 ;; 548 "essential") 549 prepare 550 build_target "amd64" 551 build_target "arm32" 552 build_target "arm64" 553 build_target "ia32" 554 build_target "ia64" 555 build_target "mips32" 556 build_target "mips32eb" 557 build_target "ppc32" 558 build_target "sparc64" 636 559 ;; 637 560 "parallel") 638 everything run_parallel 561 prepare 562 build_target "amd64" & 563 build_target "arm32" & 564 build_target "arm64" & 565 build_target "ia32" & 566 build_target "ia64" & 567 build_target "mips32" & 568 build_target "mips32eb" & 569 build_target "ppc32" & 570 build_target "riscv64" & 571 build_target "sparc64" & 572 wait 639 573 ;; 640 574 "2-way") 641 everything run_2way 575 prepare 576 build_target "amd64" & 577 build_target "arm32" & 578 wait 579 580 build_target "arm64" & 581 build_target "ia32" & 582 wait 583 584 build_target "ia64" & 585 build_target "mips32" & 586 wait 587 588 build_target "mips32eb" & 589 build_target "ppc32" & 590 wait 591 592 build_target "riscv64" & 593 build_target "sparc64" & 594 wait 642 595 ;; 643 596 *) -
uspace/lib/gfxfont/test/tpf.c
r350ec74 r1c6c3e1d 73 73 } testgc_bitmap_t; 74 74 75 static const gfx_font_flags_t test_font_flags = gff_bold_italic;76 77 75 enum { 78 76 test_font_size = 9, 77 test_font_flags = gff_bold_italic, 79 78 test_font_ascent = 4, 80 79 test_font_descent = 3, … … 119 118 gfx_font_props_init(&props); 120 119 props.size = test_font_size; 121 props.flags = test_font_flags;120 props.flags = (gfx_font_flags_t) test_font_flags; 122 121 123 122 gfx_font_metrics_init(&metrics);
Note:
See TracChangeset
for help on using the changeset viewer.