diff --git a/devel/gcc-arm-embedded/Makefile b/devel/gcc-arm-embedded/Makefile index bd7e485e463e..051092bcc592 100644 --- a/devel/gcc-arm-embedded/Makefile +++ b/devel/gcc-arm-embedded/Makefile @@ -1,123 +1,131 @@ PORTNAME= gcc-arm-embedded PORTVERSION= ${FULL_VERSION:S/.rel/r/} PORTREVISION= 1 CATEGORIES= devel MASTER_SITES= https://developer.arm.com/-/media/Files/downloads/gnu/${FULL_VERSION}/srcrel/:src DISTFILES= arm-gnu-toolchain-src-snapshot-${FULL_VERSION}.tar.xz:src MAINTAINER= lev@FreeBSD.org COMMENT= Complete GCC-based toolcahin for embedded ARM development WWW= https://developer.arm.com/Tools%20and%20Software/GNU%20Toolchain LICENSE= GPLv2 LGPL20 LGPL21 GPLv3 LGPL3 LICENSE_COMB= multi NOT_FOR_ARCHS= arm armv6 armv7 mips mips64 mips64el mipsel mipsn32 NOT_FOR_ARCHS_REASON= Very slow to build on emulator BUILD_DEPENDS= bash:shells/bash \ gfind:misc/findutils \ getopt>=0:misc/getopt FLAVORS= default aarch64 FLAVOR?= ${FLAVORS:[1]} aarch64_PKGNAMESUFFIX= -aarch64 aarch64_PLIST= ${PKGDIR}/pkg-plist.aarch64 USES= compiler:c++14-lang cpe gmake libtool:keepla makeinfo \ shebangfix tar:xz USE_GITLAB= nodefault GL_SITE= https://gitlab.arm.com:tools GL_ACCOUNT= tooling:tools GL_PROJECT= gnu-devtools-for-arm:tools GL_TAGNAME= v1.3.0:tools SHEBANG_FILES= gnu-devtools-for-arm/*.sh USE_PYTHON= noflavors CPE_PRODUCT= gcc CPE_VENDOR= gnu CPE_VERSION= ${GCC_VERSION} OPTIONS_DEFINE= APROFILE PYGDB SYMLINK OPTIONS_DEFAULT=APROFILE PYGDB SYMLINK APROFILE_DESC= Add support for Cortex-A profiles (valid only for default armv7 target) PYGDB_DESC= Build and install python-enabled gdb in addition to standard one SYMLINK_DESC= Make version-independent symlink ${LOCALBASE}/${PORTNAME}${PKGNAMESUFFX} PYGDB_USES= python OPTIONS_SUB= yes WRKSRC= ${WRKDIR}/src NO_WRKSUBDIR= yes GCC_VERSION= 14.2.1 FULL_VERSION= 14.2.rel1 DIR_NAME= ${PORTNAME}${PKGNAMESUFFIX}-${FULL_VERSION} .if ${FLAVOR:U} != aarch64 TARGET= arm-none-eabi NEWLIB_NANO_BUILD_OP= --enable-newlib-nano MULTILIB_BUILD_OP= --config-flags-gcc=--with-multilib-list=${MULTILIBS} .else TARGET= aarch64-none-elf NEWLIB_NANO_BUILD_OP= MULTILIB_BUILD_OP= .endif PLIST_SUB+= GCC_VERSION=${GCC_VERSION} FULL_VERSION=${FULL_VERSION} TARGET=${TARGET} .include +.if ${ARCH:Mpowerpc64*} +GMP_ABI= ABI="mode64" +.else +GMP_ABI= +.endif + .if ${PORT_OPTIONS:MPYGDB} PYGDB_BUILD_OPT= --enable-gdb-with-python=${PYTHON_CMD} .else PYGDB_BUILD_OPT= .endif .if ${PORT_OPTIONS:MAPROFILE} MULTILIBS= aprofile,rmprofile .else MULTILIBS= rmprofile .endif INFO_PATH= ${DIR_NAME}/share/info INFO= annotate as bfd binutils cpp cppinternals ctf-spec gcc gccinstall \ gccint gdb gfortran gprof ld ldint porting sframe-spec stabs MANDIRS= ${PREFIX}/${DIR_NAME}/share/man .include post-extract: @${MV} ${WRKSRC}/gnu-devtools-for-arm-${GL_TAGNAME_tools} ${WRKSRC}/gnu-devtools-for-arm do-build: + ${GMP_ABI} \ + CC="${CC}" \ PATH=${WRKSRC}/gnu-devtools-for-arm:${PATH} \ installdir=${WRKDIR}/${DIR_NAME} \ LOCALBASE="${LOCALBASE}" \ ${WRKSRC}/gnu-devtools-for-arm/build-baremetal-toolchain.sh \ -j ${MAKE_JOBS_NUMBER} \ --builddir=${WRKDIR}/build \ --target=${TARGET} \ --check-gdb \ --with-language=fortran \ ${MULTILIB_BUILD_OP} \ --srcdir=${WRKSRC} \ --release \ --no-package \ ${NEWLIB_NANO_BUILD_OP} \ ${PYGDB_BUILD_OPT} \ start # It is possible to istall by script directly ${STAGEDIR}${PREFIX}/${PKGNAME} # and avoid this step, but then `restage` will not work. do-install: @cd ${WRKDIR} && ${PAX} -l -r -w ${DIR_NAME} ${STAGEDIR}${PREFIX} post-install-SYMLINK-on: @${LN} -s ${PKGNAME} ${STAGEDIR}${PREFIX}/${PORTNAME}${PKGNAMESUFFIX} .include diff --git a/devel/gcc-arm-embedded/files/patch-gnu-devtools-for-arm_utilities.sh b/devel/gcc-arm-embedded/files/patch-gnu-devtools-for-arm_utilities.sh index b89687372592..5a0692c0182b 100644 --- a/devel/gcc-arm-embedded/files/patch-gnu-devtools-for-arm_utilities.sh +++ b/devel/gcc-arm-embedded/files/patch-gnu-devtools-for-arm_utilities.sh @@ -1,66 +1,73 @@ ---- gnu-devtools-for-arm/utilities.sh.orig 2025-03-31 10:59:01 UTC +--- gnu-devtools-for-arm/utilities.sh.orig 2025-07-31 23:01:18 UTC +++ gnu-devtools-for-arm/utilities.sh @@ -33,6 +33,8 @@ number_of_cores() grep -c "^processor" /proc/cpuinfo elif [ "$(uname -s)" == "Darwin" ]; then sysctl -n hw.ncpu + elif [ "$(uname -s)" == "FreeBSD" ]; then + nproc 2> /dev/null || sysctl -n hw.ncpu else echo "1" fi -@@ -56,6 +58,9 @@ find_build_triple () +@@ -50,12 +52,15 @@ find_build_triple () + # Get the triple of the machine we're running on, i.e. the build machine. + find_build_triple () + { +- machine=$(uname -m) ++ machine=$(uname -p) + plat=$(uname -s) + if [[ "$plat" == "Darwin" ]]; then echo "$machine-apple-darwin" # e.g. x86_64-apple-darwin or arm64-apple-darwin elif [[ "$plat" == "Linux" ]]; then echo "$machine-none-linux-gnu" # e.g. x86_64-none-linux-gnu + elif [[ "$plat" == "FreeBSD" ]]; then + ver=$(uname -r | sed 's/-.*$//') + echo "$machine-unknown-freebsd$ver" else echo "$this_script: unsupported platform: $plat" >&2 exit 1 @@ -134,7 +139,7 @@ find_source_tree () do if [[ "$d" == "gcc" ]] then - for x in `find "$srcdir" -maxdepth 1 -type d -printf '%f\n' | grep "^arm-gnu-toolchain-src-snapshot[0-9.-]*" | sort` + for x in `gfind "$srcdir" -maxdepth 1 -type d -printf '%f\n' | grep "^arm-gnu-toolchain-src-snapshot[0-9.-]*" | sort` do echo "$srcdir/$x" return 0 @@ -213,7 +218,7 @@ do_install () test -n "$install_targets" || install_targets=install update_stage "install ${component}" - make ${extra_install_envflags} DESTDIR=$destdir INSTALL="$(command -v install) -C" \ + gmake ${extra_install_envflags} DESTDIR=$destdir INSTALL="$(command -v install) -C" \ -C $objdir $install_targets echo "${component}_install_targets=$install_targets" >> "$build_flags_path" } @@ -303,7 +308,7 @@ do_make () make_opts="$parallel" fi - make $make_opts -C $objdir $build_targets + gmake $make_opts -C $objdir $build_targets echo "${component}_build_targets=$build_targets" >> "$build_flags_path" } @@ -323,7 +328,7 @@ check_in_gcc() local resultdir="$4" ( ulimit -v $memlimit && - make -C "$dir" $parallel -k $target RUNTESTFLAGS="$RUNTESTFLAGS") || true + gmake -C "$dir" $parallel -k $target RUNTESTFLAGS="$RUNTESTFLAGS") || true # Capture the results mkdir -p "$resultdir" @@ -344,7 +349,7 @@ check_in_newlib() ( ulimit -v $memlimit && RUNTESTFLAGS="$RUNTESTFLAGS" \ DEJAGNU_TIMEOUT=$timelimit toolchain_prefix="$gcc_prefix" \ - make -C "$dir" $parallel -k "$check_target" \ + gmake -C "$dir" $parallel -k "$check_target" \ CC_FOR_TARGET="${gcc_prefix}/bin/$target-gcc") || true # Capture the results mkdir -p "$resultdir"