summaryrefslogtreecommitdiff
path: root/devel/gcc-arm-embedded/files
diff options
context:
space:
mode:
authorLev A. Serebryakov <lev@FreeBSD.org>2025-04-02 01:10:31 +0300
committerLev A. Serebryakov <lev@FreeBSD.org>2025-04-02 01:18:58 +0300
commit75ee0ced6e5ef64e2893f3d49523ffd997b58e52 (patch)
tree6e9ba0abd9b2a5ee111f70099536222328bcd4c4 /devel/gcc-arm-embedded/files
parentdevel/py-virtualenv: Update to 20.30.0 (diff)
devel/gcc-arm-embedded: update toolchain to 14.2.rel1 from 2024/12/10
Build system has been completely revamped. Now port uses official build scripts with minimal pathing to adopt some Linux-isms to FreeBSD. Two flavors are made: "default" one form AArch32 (ARMv7) ISA and "aarch64" for AArch64 (ARMv8) ISA. AArch32 (default) build supports A-, R- and M-profiles by default, but A-profiles can be turned off in options. AARch64 doesn't have choice of profiles. gdb is built with python support by default, but can be built without one with custom option. All builds are using included snapshots of all libraries, like libgmp, libmpfr, etc. There is no option to use system-wide versions of these libraries anymore. NLS is turned off by vendor and cannot be turned on. No Linux cross-tools targets are provided for now, this port is made to provde bare metal toolchains only. Binaries are not stripped, as official ones are.
Diffstat (limited to 'devel/gcc-arm-embedded/files')
-rw-r--r--devel/gcc-arm-embedded/files/Makefile600
-rw-r--r--devel/gcc-arm-embedded/files/patch-binutils-gdb--gdb_gdb_Makefile.in16
-rw-r--r--devel/gcc-arm-embedded/files/patch-binutils-gdb--gdb_gdb_configure10
-rw-r--r--devel/gcc-arm-embedded/files/patch-gnu-devtools-for-arm_build-baremetal-toolchain.sh29
-rw-r--r--devel/gcc-arm-embedded/files/patch-gnu-devtools-for-arm_build-cross-linux-toolchain.sh29
-rw-r--r--devel/gcc-arm-embedded/files/patch-gnu-devtools-for-arm_build-gnu-toolchain.sh11
-rw-r--r--devel/gcc-arm-embedded/files/patch-gnu-devtools-for-arm_utilities.sh66
-rw-r--r--devel/gcc-arm-embedded/files/patch-src_gcc_gcc_config_arm_arm.h11
-rw-r--r--devel/gcc-arm-embedded/files/patch-src_gcc_gcc_system.h42
-rw-r--r--devel/gcc-arm-embedded/files/patch-src_gcc_gcc_tree-vect-loop.c11
-rw-r--r--devel/gcc-arm-embedded/files/patch-src_gdb_gdb_dtrace-probe.c11
-rw-r--r--devel/gcc-arm-embedded/files/patch-src_gdb_gdb_dwarf2_macro.c20
-rw-r--r--devel/gcc-arm-embedded/files/patch-src_gdb_gdb_probe.c11
-rw-r--r--devel/gcc-arm-embedded/files/patch-src_gdb_gdb_python_python-config.py11
-rw-r--r--devel/gcc-arm-embedded/files/patch-src_gdb_gdb_target-float.c12
15 files changed, 161 insertions, 729 deletions
diff --git a/devel/gcc-arm-embedded/files/Makefile b/devel/gcc-arm-embedded/files/Makefile
deleted file mode 100644
index fa2e68724683..000000000000
--- a/devel/gcc-arm-embedded/files/Makefile
+++ /dev/null
@@ -1,600 +0,0 @@
-.include "Makefile.inc"
-
-.if ${PORT_OPTIONS:MAPROFILE}
-MULTILIB_LIST= rmprofile,aprofile
-.else
-MULTILIB_LIST= rmprofile
-.endif
-
-PKGVERSION= GNU Arm Embedded Toolchain ${FULL_VERSION}
-
-BUILD_PREFIX= ${WRKDIR}/build
-DOC_PREFIX= ${INTERIM_PREFIX}/${DOCS_SUFFIX}
-
-.if ${PORT_OPTIONS:MPURE}
-WORLD_LIB=${INTERIM_WORLD}
-.else
-WORLD_LIB=${LOCALBASE}
-.endif
-
-LDFLAGS+= -L${WORLD_LIB}/lib
-
-.if ${OPSYS} == FreeBSD
-MAKE_ARGS+= CFLAGS="-Wno-error -Wno-deprecated-register" CXXFLAGS="-Wno-error -Wno-deprecated-register"
-.else
-.if ${CHOSEN_COMPILER_TYPE} == clang
-MAKE_ARGS+= CFLAGS="-Wno-error -fbracket-depth=512 -Wno-deprecated-register" CXXFLAGS="-Wno-error -fbracket-depth=512 -Wno-deprecated-register"
-.endif
-.endif
-
-MISC_DOCS= license.txt readme.txt release.txt
-
-.if ${PORT_OPTIONS:MPURE}
-PREREQUISITES= expat \
- zlib \
- libelf \
- gmp \
- mpfr \
- mpc \
- isl
-.else
-PREREQUISITES=
-.endif
-
-.if ${PORT_OPTIONS:MPYGDB}
-_pygdb= build-pygdb
-.else
-_pygdb=
-.endif
-
-COMMON_GDB_CONFIGURE_ARGS= \
- --target=${TARGET} \
- --prefix=${INTERIM_PREFIX} \
- --infodir=${DOC_PREFIX}/info \
- --mandir=${DOC_PREFIX}/man \
- --htmldir=${DOC_PREFIX}/html \
- --pdfdir=${DOC_PREFIX}/pdf \
- --disable-nls \
- --disable-sim \
- --disable-gas \
- --disable-binutils \
- --disable-ld \
- --disable-gprof \
- --with-libexpat \
- --with-libexpat-prefix=${WORLD_LIB} \
- --with-lzma=no \
- --with-system-gdbinit=${INTERIM_PREFIX}/${CONFIGURE_TARGET}/${TARGET}/lib/gdbinit \
- --with-gdb-datadir='$${prefix}/${TARGET}/share/gdb' \
- --with-pkgversion="${PKGVERSION}"
-
-ALL_BUILD= build-binutils \
- build-gcc-first \
- build-newlib \
- build-newlib-nano \
- build-gcc-final \
- build-libstdcxx \
- build-gdb \
- ${_pygdb} \
- install-samples \
- install-misc \
- strip-binaries \
- strip-target-libraries
-
-.PHONY: ${PREREQUISITES} ${ALL_BUILD}
-
-all: ${PREREQUISITES} ${ALL_BUILD}
-
-expat:
- @${ECHO_MSG} "====> Build expat"
- @${RM} -rf ${BUILD_PREFIX}/expat
- @${MKDIR} ${BUILD_PREFIX}/expat
- @${ECHO_MSG} "=====> Configure"
- @cd ${BUILD_PREFIX}/expat && \
- ${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/expat-${BUNDLED_VERSION_EXPAT}/configure \
- --build=${CONFIGURE_TARGET} \
- --host=${CONFIGURE_TARGET} \
- --target=${TARGET} \
- --prefix=${INTERIM_WORLD} \
- --disable-shared \
- --disable-nls
- @${ECHO_MSG} "=====> Build"
- @${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/expat all ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Install into intermediate directory"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/expat install ${MAKE_ARGS}
-
-zlib:
- @${ECHO_MSG} "====> Build zlib"
- @${RM} -rf ${BUILD_PREFIX}/zlib
- @${MKDIR} ${BUILD_PREFIX}/zlib
- @${ECHO_MSG} "=====> Copy to build dir"
- @${TAR} -cf - -C ${SRC_DIR}/zlib-${BUNDLED_VERSION_ZLIB} . | ${TAR} -xf - -C ${BUILD_PREFIX}/zlib
- @${ECHO_MSG} "=====> Configure"
- @cd ${BUILD_PREFIX}/zlib && \
- ${MAKE_ENV} ${CONFIGURE_ENV} ./configure \
- --static \
- --prefix=${INTERIM_WORLD}
- @${ECHO_MSG} "=====> Build"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/zlib ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Install into intermediate directory"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/zlib install ${MAKE_ARGS}
-
-libelf:
- @${ECHO_MSG} "====> Build libelf"
- @${RM} -rf ${BUILD_PREFIX}/libelf
- @${MKDIR} ${BUILD_PREFIX}/libelf
- @${ECHO_MSG} "=====> Configure"
- @cd ${BUILD_PREFIX}/libelf && \
- ${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/libelf-${BUNDLED_VERSION_LIBELF}/configure \
- --prefix=${INTERIM_WORLD} \
- --build=${CONFIGURE_TARGET} \
- --host=${CONFIGURE_TARGET} \
- --disable-shared \
- --disable-nls
- @${ECHO_MSG} "=====> Build"
- @${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/libelf all ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Install into intermediate directory"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/libelf install ${MAKE_ARGS}
-
-gmp:
- @${ECHO_MSG} "====> Build gmp"
- @${RM} -rf ${BUILD_PREFIX}/gmp
- @${MKDIR} ${BUILD_PREFIX}/gmp
- @${ECHO_MSG} "=====> Configure"
- @cd ${BUILD_PREFIX}/gmp && \
- ${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/gmp-${BUNDLED_VERSION_GMP}/configure \
- --build=${CONFIGURE_TARGET} \
- --host=${CONFIGURE_TARGET} \
- --prefix=${INTERIM_WORLD} \
- --enable-cxx \
- --disable-shared \
- --disable-nls
- @${ECHO_MSG} "=====> Build"
- @${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/gmp all ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Install into intermediate directory"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gmp install ${MAKE_ARGS}
-
-mpfr:
- @${ECHO_MSG} "====> Build mpfr"
- @${RM} -rf ${BUILD_PREFIX}/mpfr
- @${MKDIR} ${BUILD_PREFIX}/mpfr
- @${ECHO_MSG} "=====> Configure"
- @cd ${BUILD_PREFIX}/mpfr && \
- ${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/mpfr-${BUNDLED_VERSION_MPFR}/configure \
- --build=${CONFIGURE_TARGET} \
- --host=${CONFIGURE_TARGET} \
- --target=${TARGET} \
- --prefix=${INTERIM_WORLD} \
- --with-gmp=${INTERIM_WORLD} \
- --disable-shared \
- --disable-nls
- @${ECHO_MSG} "=====> Build"
- @${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/mpfr all ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Install into intermediate directory"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/mpfr install ${MAKE_ARGS}
-
-mpc:
- @${ECHO_MSG} "====> Build mpc"
- @${RM} -rf ${BUILD_PREFIX}/mpc
- @${MKDIR} ${BUILD_PREFIX}/mpc
- @${ECHO_MSG} "=====> Configure"
- @cd ${BUILD_PREFIX}/mpc && \
- ${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/mpc-${BUNDLED_VERSION_MPC}/configure \
- --build=${CONFIGURE_TARGET} \
- --host=${CONFIGURE_TARGET} \
- --target=${TARGET} \
- --prefix=${INTERIM_WORLD} \
- --with-gmp=${INTERIM_WORLD} \
- --with-mpfr=${INTERIM_WORLD} \
- --disable-shared \
- --disable-nls
- @${ECHO_MSG} "=====> Build"
- @${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/mpc all ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Install into intermediate directory"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/mpc install ${MAKE_ARGS}
-
-isl:
- @${ECHO_MSG} "====> Build isl"
- @${RM} -rf ${BUILD_PREFIX}/isl
- @${MKDIR} ${BUILD_PREFIX}/isl
- @${ECHO_MSG} "=====> Configure"
- @cd ${BUILD_PREFIX}/isl && \
- ${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/isl-${BUNDLED_VERSION_ISL}/configure \
- --build=${CONFIGURE_TARGET} \
- --host=${CONFIGURE_TARGET} \
- --target=${TARGET} \
- --prefix=${INTERIM_WORLD} \
- --with-gmp-prefix=${INTERIM_WORLD} \
- --disable-shared \
- --disable-nls
- @${ECHO_MSG} "=====> Build"
- @${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/isl all ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Install into intermediate directory"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/isl install ${MAKE_ARGS}
-
-build-binutils:
- @${ECHO_MSG} "====> Build binutils"
- @${RM} -rf ${BUILD_PREFIX}/binutils
- @${MKDIR} ${BUILD_PREFIX}/binutils
- @${ECHO_MSG} "=====> Configure"
- @cd ${BUILD_PREFIX}/binutils && \
- ${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/binutils/configure \
- --target=${TARGET} \
- --prefix=${INTERIM_PREFIX} \
- --infodir=${DOC_PREFIX}/info \
- --mandir=${DOC_PREFIX}/man \
- --htmldir=${DOC_PREFIX}/html \
- --pdfdir=${DOC_PREFIX}/pdf \
- --disable-nls \
- --disable-werror \
- --disable-sim \
- --disable-gdb \
- --enable-interwork \
- --enable-plugins \
- --with-sysroot=${INTERIM_PREFIX}/${TARGET} \
- --with-pkgversion="${PKGVERSION}"
- @${ECHO_MSG} "=====> Build"
- @${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/binutils all ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Install into stage directory"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/binutils install ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Prepare working area for library builds"
- @${MKDIR} ${BUILD_PREFIX}/target-libs
- @${TAR} -cf - -C ${INTERIM_PREFIX} . | ${TAR} -xf - -C ${BUILD_PREFIX}/target-libs
-.if ${PORT_OPTIONS:MHTML} && ${PORT_OPTIONS:MDOCS}
- @${ECHO_MSG} "=====> Build HTML documentation"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/binutils html ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Install HTML documentation into stage directory"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/binutils install-html ${MAKE_ARGS}
-.endif
-.if ${PORT_OPTIONS:MPDF} && ${PORT_OPTIONS:MDOCS}
- @${ECHO_MSG} "=====> Build PDF documentation"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/binutils pdf ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Install PDF documentation into stage directory"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/binutils install-pdf ${MAKE_ARGS}
-.endif
- @${ECHO_MSG} "=====> Cleanup installation"
- @${RM} -rf ${INTERIM_PREFIX}/lib
-
-build-gcc-first:
- @${ECHO_MSG} "====> Build preliminary gcc"
- @${RM} -rf ${BUILD_PREFIX}/gcc-first
- @${MKDIR} ${BUILD_PREFIX}/gcc-first
- @${ECHO_MSG} "=====> Configure"
- @cd ${BUILD_PREFIX}/gcc-first && \
- ${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/gcc/configure \
- --target=${TARGET} \
- --prefix=${INTERIM_PREFIX} \
- --infodir=${DOC_PREFIX}/info \
- --mandir=${DOC_PREFIX}/man \
- --htmldir=${DOC_PREFIX}/html \
- --pdfdir=${DOC_PREFIX}/pdf \
- --libexecdir=${INTERIM_PREFIX}/lib \
- --with-gmp=${WORLD_LIB} \
- --with-mpfr=${WORLD_LIB} \
- --with-mpc=${WORLD_LIB} \
- --with-isl=${WORLD_LIB} \
- --with-libelf=${WORLD_LIB} \
- --enable-languages=c \
- --disable-decimal-float \
- --disable-libffi \
- --disable-libgomp \
- --disable-libmudflap \
- --disable-libquadmath \
- --disable-libssp \
- --disable-libstdcxx-pch \
- --disable-nls \
- --disable-shared \
- --disable-threads \
- --disable-tls \
- --with-newlib \
- --without-headers \
- --with-gnu-as \
- --with-gnu-ld \
- --with-python-dir=share/gcc-${TARGET} \
- --with-sysroot=${INTERIM_PREFIX}/${TARGET} \
- --with-multilib-list=${MULTILIB_LIST} \
- --with-host-libstdcxx="-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm" \
- --with-pkgversion="${PKGVERSION}"
- @${ECHO_MSG} "=====> Build"
- @${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/gcc-first all-gcc ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Install into stage directory"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gcc-first install-gcc ${MAKE_ARGS}
- @${RM} -f ${INTERIM_PREFIX}/bin/${TARGET}-gccbug
- @${RM} -f ${INTERIM_PREFIX}/lib/libiberty.a
- @${RM} -rf ${INTERIM_PREFIX}/include
-
-build-newlib:
- @${ECHO_MSG} "====> Build newlib"
- @${RM} -rf ${BUILD_PREFIX}/newlib
- @${MKDIR} ${BUILD_PREFIX}/newlib
- @${ECHO_MSG} "=====> Configure"
- @cd ${BUILD_PREFIX}/newlib && \
- ${MAKE_ENV} ${CONFIGURE_ENV} PATH="${INTERIM_PREFIX}/bin:${PATH}" CFLAGS_FOR_TARGET="-g -O2 -ffunction-sections -fdata-sections" \
- ${SRC_DIR}/newlib/configure \
- --target=${TARGET} \
- --prefix=${INTERIM_PREFIX} \
- --infodir=${DOC_PREFIX}/info \
- --mandir=${DOC_PREFIX}/man \
- --htmldir=${DOC_PREFIX}/html \
- --pdfdir=${DOC_PREFIX}/pdf \
- --enable-newlib-io-long-long \
- --enable-newlib-io-c99-formats \
- --enable-newlib-register-fini \
- --enable-newlib-retargetable-locking \
- --disable-newlib-supplied-syscalls \
- --disable-nls
- @${ECHO_MSG} "=====> Build"
- @${MAKE_ENV} PATH="${INTERIM_PREFIX}/bin:${PATH}" ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/newlib all
- @${ECHO_MSG} "=====> Install into stage directory"
- @${MAKE_ENV} PATH="${INTERIM_PREFIX}/bin:${PATH}" ${MAKE_CMD} -C ${BUILD_PREFIX}/newlib install
-.if ${PORT_OPTIONS:MHTML} && ${PORT_OPTIONS:MDOCS}
- @${ECHO_MSG} "=====> Build HTML documentation"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/newlib html ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Install HTML documentation into stage directory"
- @${MKDIR} ${DOC_PREFIX}/html/libc
- @${TAR} -cf - -C ${BUILD_PREFIX}/newlib/${TARGET}/newlib/libc/libc.html . | ${TAR} -xf - -C ${DOC_PREFIX}/html/libc
- @${MKDIR} ${DOC_PREFIX}/html/libm
- @${TAR} -cf - -C ${BUILD_PREFIX}/newlib/${TARGET}/newlib/libm/libm.html . | ${TAR} -xf - -C ${DOC_PREFIX}/html/libm
-.endif
-.if ${PORT_OPTIONS:MPDF} && ${PORT_OPTIONS:MDOCS}
- @${ECHO_MSG} "=====> Build PDF documentation (ignore errors)"
- @-${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/newlib/${TARGET}/newlib/libc pdf ${MAKE_ARGS}
- @-${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/newlib/${TARGET}/newlib/libm pdf ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Install PDF documentation into stage directory"
- @${CP} -f ${BUILD_PREFIX}/newlib/${TARGET}/newlib/libc/libc.pdf ${DOC_PREFIX}/pdf/libc.pdf
- @${CP} -f ${BUILD_PREFIX}/newlib/${TARGET}/newlib/libm/libm.pdf ${DOC_PREFIX}/pdf/libm.pdf
-.endif
-
-build-newlib-nano:
- @${ECHO_MSG} "====> Build newlib-nano"
- @${RM} -rf ${BUILD_PREFIX}/newlib-nano
- @${MKDIR} ${BUILD_PREFIX}/newlib-nano
- @${ECHO_MSG} "=====> Configure"
- @cd ${BUILD_PREFIX}/newlib-nano && \
- ${MAKE_ENV} ${CONFIGURE_ENV} PATH="${INTERIM_PREFIX}/bin:${PATH}" CFLAGS_FOR_TARGET="-g -Os -ffunction-sections -fdata-sections" \
- ${SRC_DIR}/newlib/configure \
- --target=${TARGET} \
- --prefix=${BUILD_PREFIX}/target-libs \
- --infodir=${DOC_PREFIX}/info \
- --mandir=${DOC_PREFIX}/man \
- --htmldir=${DOC_PREFIX}/html \
- --pdfdir=${DOC_PREFIX}/pdf \
- --disable-newlib-supplied-syscalls \
- --enable-newlib-reent-check-verify \
- --enable-newlib-reent-small \
- --enable-newlib-retargetable-locking \
- --disable-newlib-fvwrite-in-streamio \
- --disable-newlib-fseek-optimization \
- --disable-newlib-wide-orient \
- --enable-newlib-nano-malloc \
- --disable-newlib-unbuf-stream-opt \
- --enable-lite-exit \
- --enable-newlib-global-atexit \
- --enable-newlib-nano-formatted-io \
- --disable-nls
- @${ECHO_MSG} "=====> Build"
- @${MAKE_ENV} PATH="${INTERIM_PREFIX}/bin:${PATH}" ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/newlib-nano all
- @${ECHO_MSG} "=====> Install into intermediate directory"
- @${MAKE_ENV} PATH="${INTERIM_PREFIX}/bin:${PATH}" ${MAKE_CMD} -C ${BUILD_PREFIX}/newlib-nano install
-
-build-gcc-final:
- @${ECHO_MSG} "====> Build final gcc and g++"
- @${RM} -f ${INTERIM_PREFIX}/${TARGET}/usr
- @${LN} -s . ${INTERIM_PREFIX}/${TARGET}/usr
- @${RM} -rf ${BUILD_PREFIX}/gcc-final
- @${MKDIR} ${BUILD_PREFIX}/gcc-final
- @${ECHO_MSG} "=====> Configure"
- @cd ${BUILD_PREFIX}/gcc-final && \
- ${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/gcc/configure \
- --target=${TARGET} \
- --prefix=${INTERIM_PREFIX} \
- --infodir=${DOC_PREFIX}/info \
- --mandir=${DOC_PREFIX}/man \
- --htmldir=${DOC_PREFIX}/html \
- --pdfdir=${DOC_PREFIX}/pdf \
- --libexecdir=${INTERIM_PREFIX}/lib \
- --with-gmp=${WORLD_LIB} \
- --with-mpfr=${WORLD_LIB} \
- --with-mpc=${WORLD_LIB} \
- --with-isl=${WORLD_LIB} \
- --with-libelf=${WORLD_LIB} \
- --enable-languages=c,c++ \
- --enable-plugins \
- --disable-decimal-float \
- --disable-libffi \
- --disable-libgomp \
- --disable-libmudflap \
- --disable-libquadmath \
- --disable-libssp \
- --disable-libstdcxx-pch \
- --disable-nls \
- --disable-shared \
- --disable-threads \
- --disable-tls \
- --with-gnu-as \
- --with-gnu-ld \
- --with-newlib \
- --with-headers=yes \
- --with-python-dir=share/gcc-${TARGET} \
- --with-sysroot=${INTERIM_PREFIX}/${TARGET} \
- --with-multilib-list=${MULTILIB_LIST} \
- --with-host-libstdcxx="-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm" \
- --with-pkgversion="${PKGVERSION}"
- @${ECHO_MSG} "=====> Build"
- @${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/gcc-final INHIBIT_LIBC_CFLAGS="-DUSE_TM_CLONE_REGISTRY=0" all ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Install into stage directory"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gcc-final install ${MAKE_ARGS}
-.if ${PORT_OPTIONS:MHTML} && ${PORT_OPTIONS:MDOCS}
- @${ECHO_MSG} "=====> Build HTML documentation"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gcc-final html ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Install HTML documentation into stage directory"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gcc-final install-html ${MAKE_ARGS}
-.endif
-.if ${PORT_OPTIONS:MPDF} && ${PORT_OPTIONS:MDOCS}
- @${ECHO_MSG} "=====> Build PDF documentation"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gcc-final pdf ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Install PDF documentation into stage directory"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gcc-final install-pdf ${MAKE_ARGS}
-.endif
- @${ECHO_MSG} "=====> Cleanup installation"
- @${RM} -f ${INTERIM_PREFIX}/bin/${TARGET}-gccbug
- @${FIND} ${INTERIM_PREFIX}/${TARGET}/lib -name libiberty.a -delete
- @${RM} -f ${INTERIM_PREFIX}/lib/libiberty.a
- @${RM} -rf ${INTERIM_PREFIX}/include
- @${RM} -f ${INTERIM_PREFIX}/${TARGET}/usr
-
-build-libstdcxx:
- @${ECHO_MSG} "====> Build size-optimized C++ runtime"
- @${RM} -f ${BUILD_PREFIX}/target-libs/${TARGET}/usr
- @${LN} -s . ${BUILD_PREFIX}/target-libs/${TARGET}/usr
- @${RM} -rf ${BUILD_PREFIX}/gcc-size-libstdcxx
- @${MKDIR} ${BUILD_PREFIX}/gcc-size-libstdcxx
- @${ECHO_MSG} "=====> Configure"
- @cd ${BUILD_PREFIX}/gcc-size-libstdcxx && \
- ${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/gcc/configure \
- --target=${TARGET} \
- --prefix=${BUILD_PREFIX}/target-libs \
- --infodir=${DOC_PREFIX}/info \
- --mandir=${DOC_PREFIX}/man \
- --htmldir=${DOC_PREFIX}/html \
- --pdfdir=${DOC_PREFIX}/pdf \
- --with-gmp=${WORLD_LIB} \
- --with-mpfr=${WORLD_LIB} \
- --with-mpc=${WORLD_LIB} \
- --with-isl=${WORLD_LIB} \
- --with-libelf=${WORLD_LIB} \
- --enable-languages=c++ \
- --disable-decimal-float \
- --disable-libffi \
- --disable-libgomp \
- --disable-libmudflap \
- --disable-libquadmath \
- --disable-libssp \
- --disable-libstdcxx-pch \
- --disable-libstdcxx-verbose \
- --disable-nls \
- --disable-shared \
- --disable-threads \
- --disable-tls \
- --with-gnu-as \
- --with-gnu-ld \
- --with-newlib \
- --with-headers=yes \
- --with-python-dir=share/gcc-${TARGET} \
- --with-sysroot=${BUILD_PREFIX}/target-libs/${TARGET} \
- --with-multilib-list=${MULTILIB_LIST} \
- --with-host-libstdcxx="-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm" \
- --with-pkgversion="${PKGVERSION}"
- @${ECHO_MSG} "=====> Build"
- @${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/gcc-size-libstdcxx \
- CXXFLAGS_FOR_TARGET="-g -Os -ffunction-sections -fdata-sections -fno-exceptions" all-target-libstdc++-v3 ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Install into intermediate directory"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gcc-size-libstdcxx install-target-libstdc++-v3 ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Copy all target libraries into stage directory"
- @for multilib in $$(${INTERIM_PREFIX}/bin/${TARGET}-gcc -print-multi-lib) ; do \
- multilib_dir=$${multilib%%;*} ; \
- for srclib in libstdc++.a libsupc++.a libc.a libg.a librdimon.a nano.specs rdimon.specs nosys.specs ; do \
- dstlib=$$(echo "$${srclib}" | ${SED} 's/\.a$$/_nano.a/') ; \
- ${CP} -f ${BUILD_PREFIX}/target-libs/${TARGET}/lib/$${multilib_dir}/$${srclib} ${INTERIM_PREFIX}/${TARGET}/lib/$${multilib_dir}/$${dstlib} ; \
- done ; \
- ${CP} -f ${BUILD_PREFIX}/target-libs/${TARGET}/lib/$${multilib_dir}/*crt0.o ${INTERIM_PREFIX}/${TARGET}/lib/$${multilib_dir}/ ; \
- done
- @${MKDIR} ${INTERIM_PREFIX}/${TARGET}/include/newlib-nano
- @${CP} ${BUILD_PREFIX}/target-libs/${TARGET}/include/newlib.h ${INTERIM_PREFIX}/${TARGET}/include/newlib-nano/newlib.h
-
-build-gdb:
- @${ECHO_MSG} "====> Build gdb"
- @${RM} -rf ${BUILD_PREFIX}/gdb
- @${MKDIR} ${BUILD_PREFIX}/gdb
- @${ECHO_MSG} "=====> Configure"
- @cd ${BUILD_PREFIX}/gdb && \
- ${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/gdb/configure \
- ${COMMON_GDB_CONFIGURE_ARGS} \
- --with-python=no
- @${ECHO_MSG} "=====> Build"
- @${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/gdb all ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Install into stage directory"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gdb install ${MAKE_ARGS}
- @${RM} -rf ${INTERIM_PREFIX}/include
-.if ${PORT_OPTIONS:MHTML} && ${PORT_OPTIONS:MDOCS}
- @${ECHO_MSG} "=====> Build HTML documentation"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gdb html ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Install HTML documentation into stage directory"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gdb install-html ${MAKE_ARGS}
-.endif
-.if ${PORT_OPTIONS:MPDF} && ${PORT_OPTIONS:MDOCS}
- @${ECHO_MSG} "=====> Build PDF documentation"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gdb pdf ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Install PDF documentation into stage directory"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gdb install-pdf ${MAKE_ARGS}
-.endif
-
-build-pygdb:
- @${ECHO_MSG} "====> Build py-gdb"
- @${RM} -rf ${BUILD_PREFIX}/py-gdb
- @${MKDIR} ${BUILD_PREFIX}/py-gdb
- @${ECHO_MSG} "=====> Configure"
- @cd ${BUILD_PREFIX}/py-gdb && \
- ${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/gdb/configure \
- ${COMMON_GDB_CONFIGURE_ARGS} \
- --with-python=${PYTHON_CMD} \
- --program-prefix=${TARGET}- --program-suffix=-py
- @${ECHO_MSG} "=====> Build"
- @${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/py-gdb all ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Install into stage directory"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/py-gdb install ${MAKE_ARGS}
- @${RM} -rf ${INTERIM_PREFIX}/include
-.if ${PORT_OPTIONS:MHTML} && ${PORT_OPTIONS:MDOCS}
- @${ECHO_MSG} "=====> Build HTML documentation"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gdb html ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Install HTML documentation into stage directory"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gdb install-html ${MAKE_ARGS}
-.endif
-.if ${PORT_OPTIONS:MPDF} && ${PORT_OPTIONS:MDOCS}
- @${ECHO_MSG} "=====> Build PDF documentation"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gdb pdf ${MAKE_ARGS}
- @${ECHO_MSG} "=====> Install PDF documentation into stage directory"
- @${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gdb install-pdf ${MAKE_ARGS}
-.endif
-
-install-samples:
-.if ${PORT_OPTIONS:MEXAMPLES}
- @${ECHO_MSG} "====> Install samples into stage directory"
- @${TAR} -xf ${SRC_DIR}/samples.tar.bz2 -C ${INTERIM_PREFIX}/share/gcc-${TARGET}
-.else
- @${DO_NADA}
-.endif
-
-install-misc:
-.if ${PORT_OPTIONS:MDOCS}
- @${ECHO_MSG} "====> Install misc. files into stage directory"
- @for doc in ${MISC_DOCS} ; do \
- ${CP} -f ${WRKDIR}/${ORIGINAL_PACKAGE_NAME}/$${doc} ${DOC_PREFIX}/ ; \
- done
-.else
- @${DO_NADA}
-.endif
-
-strip-binaries:
- @${ECHO_MSG} "====> Strip host binaries"
- @for bin in $$(${FIND} ${INTERIM_PREFIX}/bin -type f -name ${TARGET}-\*) ; do \
- if ! ${FILE} $$bin | ${GREP} -qs ': ELF' ; then continue ; fi ; \
- ${STRIP_CMD} $${bin} ; \
- done
- @for bin in $$(${FIND} ${INTERIM_PREFIX}/${TARGET}/bin -type f -maxdepth 1 -mindepth 1) ; do \
- if ! ${FILE} $$bin | ${GREP} -qs ': ELF' ; then continue ; fi ; \
- ${STRIP_CMD} $${bin} ; \
- done
- @${STRIP_CMD} ${INTERIM_PREFIX}/lib/libcc1.so.0
- @for bin in $$(${FIND} ${INTERIM_PREFIX}/lib/gcc/${TARGET}/${GCC_VERSION} -perm +111 -and ! -type d) ; do \
- if ! ${FILE} $$bin | ${GREP} -qs ': ELF' ; then continue ; fi ; \
- ${STRIP_CMD} $${bin} ; \
- done
-
-strip-target-libraries:
- @${ECHO_MSG} "====> Strip target libraries"
- @for target in $$(${FIND} ${INTERIM_PREFIX}/${TARGET}/lib ${INTERIM_PREFIX}/lib/gcc/${TARGET}/${GCC_VERSION} -type f -name \*.a -o -name \*.o) ; do \
- ${INTERIM_PREFIX}/bin/${TARGET}-objcopy -R .comment -R .note -R .debug_info -R .debug_aranges -R .debug_pubnames -R .debug_pubtypes -R .debug_abbrev -R .debug_line -R .debug_str -R .debug_ranges -R .debug_loc $${target} ; \
- done
- @${ECHO_MSG} "====> Remove *.la files and other leftovers"
- @${FIND} ${INTERIM_PREFIX} -name \*.la -delete
- @${RM} -f ${INTERIM_PREFIX}/lib/charset.alias ${INTERIM_PREFIX}/lib/libiberty.a
diff --git a/devel/gcc-arm-embedded/files/patch-binutils-gdb--gdb_gdb_Makefile.in b/devel/gcc-arm-embedded/files/patch-binutils-gdb--gdb_gdb_Makefile.in
new file mode 100644
index 000000000000..a74ebcd39c20
--- /dev/null
+++ b/devel/gcc-arm-embedded/files/patch-binutils-gdb--gdb_gdb_Makefile.in
@@ -0,0 +1,16 @@
+--- binutils-gdb--gdb/gdb/Makefile.in.orig 2024-11-30 00:01:16 UTC
++++ binutils-gdb--gdb/gdb/Makefile.in
+@@ -676,11 +676,11 @@ INTERNAL_LDFLAGS = \
+ CLIBS = $(SIM) $(READLINE) $(OPCODES) $(LIBCTF) $(BFD) $(ZLIB) $(ZSTD_LIBS) \
+ $(LIBSUPPORT) $(INTL) $(LIBIBERTY) $(LIBDECNUMBER) \
+ $(XM_CLIBS) $(GDBTKLIBS) $(LIBBACKTRACE_LIB) \
+- @LIBS@ @GUILE_LIBS@ @PYTHON_LIBS@ $(AMD_DBGAPI_LIBS) \
++ @LIBS@ @GUILE_LIBS@ $(AMD_DBGAPI_LIBS) \
+ $(LIBEXPAT) $(LIBLZMA) $(LIBBABELTRACE) $(LIBIPT) \
+ $(WIN32LIBS) $(LIBGNU) $(LIBGNU_EXTRA_LIBS) $(LIBICONV) \
+ $(GMPLIBS) $(SRCHIGH_LIBS) $(LIBXXHASH) $(PTHREAD_LIBS) \
+- $(DEBUGINFOD_LIBS) $(LIBBABELTRACE_LIB)
++ $(DEBUGINFOD_LIBS) $(LIBBABELTRACE_LIB) @PYTHON_LIBS@
+ CDEPS = $(NAT_CDEPS) $(SIM) $(BFD) $(READLINE_DEPS) $(CTF_DEPS) \
+ $(OPCODES) $(INTL_DEPS) $(LIBIBERTY) $(CONFIG_DEPS) $(LIBGNU) \
+ $(LIBSUPPORT)
diff --git a/devel/gcc-arm-embedded/files/patch-binutils-gdb--gdb_gdb_configure b/devel/gcc-arm-embedded/files/patch-binutils-gdb--gdb_gdb_configure
new file mode 100644
index 000000000000..7469f54e731f
--- /dev/null
+++ b/devel/gcc-arm-embedded/files/patch-binutils-gdb--gdb_gdb_configure
@@ -0,0 +1,10 @@
+--- binutils-gdb--gdb/gdb/configure.orig 2025-03-31 18:36:01 UTC
++++ binutils-gdb--gdb/gdb/configure
+@@ -28123,6 +28123,7 @@
+
+
+ new_CPPFLAGS=${python_includes}
++ python_libs="-L$python_prefix/lib $python_libs"
+ new_LIBS=${python_libs}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python" >&5
+ $as_echo_n "checking for python... " >&6; }
diff --git a/devel/gcc-arm-embedded/files/patch-gnu-devtools-for-arm_build-baremetal-toolchain.sh b/devel/gcc-arm-embedded/files/patch-gnu-devtools-for-arm_build-baremetal-toolchain.sh
new file mode 100644
index 000000000000..9e4b2dede0a1
--- /dev/null
+++ b/devel/gcc-arm-embedded/files/patch-gnu-devtools-for-arm_build-baremetal-toolchain.sh
@@ -0,0 +1,29 @@
+--- gnu-devtools-for-arm/build-baremetal-toolchain.sh.orig 2025-03-31 10:59:01 UTC
++++ gnu-devtools-for-arm/build-baremetal-toolchain.sh
+@@ -263,7 +263,7 @@ flag_morello=0
+ check_targets="check-binutils check-ld check-gas check-gcc check-g++ check-target-libatomic check-target-libstdc++-v3 check-gdb"
+ check_nano_targets="check-gcc-nano check-g++-nano check-target-libstdc++-v3-nano"
+ # Parse command-line options
+-args=$(getopt -ohj:l:x -l bugurl:,builddir:,config-flags-binutils:,config-flags-gcc:,config-flags-host-tools:,config-flags-qemu:,debug,debug-target,dejagnu-site:,dejagnu-src:,enable-gdb,enable-gdb-with-python:,disable-gdb,enable-gcc,disable-gcc,enable-binutils,disable-binutils,enable-newlib,disable-newlib,enable-maintainer-mode,disable-maintainer-mode,enable-newlib-nano,disable-newlib-nano,enable-newlib-nano-check,disable-newlib-nano-check,enable-qemu,disable-qemu,help,host-toolchain-path:,ldflags-for-target:,ldflags-for-nano-target:,newlib-installdir:,package,no-package,qemu-test-path:,release,no-release,resultdir:,srcdir:,tag:,tardir:,target:,target-board:,timestamp:,with-language:,check-gdb,no-check-gdb,morello,host: -n $(basename "$0") -- "$@")
++args=$(${LOCALBASE}/bin/getopt -ohj:l:x -l bugurl:,builddir:,config-flags-binutils:,config-flags-gcc:,config-flags-host-tools:,config-flags-qemu:,debug,debug-target,dejagnu-site:,dejagnu-src:,enable-gdb,enable-gdb-with-python:,disable-gdb,enable-gcc,disable-gcc,enable-binutils,disable-binutils,enable-newlib,disable-newlib,enable-maintainer-mode,disable-maintainer-mode,enable-newlib-nano,disable-newlib-nano,enable-newlib-nano-check,disable-newlib-nano-check,enable-qemu,disable-qemu,help,host-toolchain-path:,ldflags-for-target:,ldflags-for-nano-target:,newlib-installdir:,package,no-package,qemu-test-path:,release,no-release,resultdir:,srcdir:,tag:,tardir:,target:,target-board:,timestamp:,with-language:,check-gdb,no-check-gdb,morello,host: -n $(basename "$0") -- "$@")
+ eval set -- "$args"
+ while [ $# -gt 0 ]; do
+ if [ -n "${opt_prev:-}" ]; then
+@@ -1305,7 +1305,7 @@ while true; do
+ ( ulimit -v $memlimit &&
+ RUNTESTFLAGS="$RUNTESTFLAGS" \
+ DEJAGNU_TIMEOUT=$timelimit toolchain_prefix="$installdir$prefix" \
+- make -C "$objdir/binutils" $parallel -k "$stage" \
++ gmake -C "$objdir/binutils" $parallel -k "$stage" \
+ CC_FOR_TARGET="$installdir$prefix/bin/$target-gcc") || true
+ # Capture the results
+ mkdir -p "$resultdir/vanilla"
+@@ -1357,7 +1357,7 @@ while true; do
+ if [ $flag_check_gdb -eq 1 ]; then
+ ( ulimit -v $memlimit &&
+ RUNTESTFLAGS="${default_target_board:+--target_board=$default_target_board} $RUNTESTFLAGS" \
+- toolchain_prefix="$installdir$prefix" make -C "$objdir/gdb" $parallel -k "$stage") || true
++ toolchain_prefix="$installdir$prefix" gmake -C "$objdir/gdb" $parallel -k "$stage") || true
+
+ # Capture the results
+ mkdir -p "$resultdir/vanilla"
diff --git a/devel/gcc-arm-embedded/files/patch-gnu-devtools-for-arm_build-cross-linux-toolchain.sh b/devel/gcc-arm-embedded/files/patch-gnu-devtools-for-arm_build-cross-linux-toolchain.sh
new file mode 100644
index 000000000000..e2c404908e53
--- /dev/null
+++ b/devel/gcc-arm-embedded/files/patch-gnu-devtools-for-arm_build-cross-linux-toolchain.sh
@@ -0,0 +1,29 @@
+--- gnu-devtools-for-arm/build-cross-linux-toolchain.sh.orig 2025-03-31 10:59:01 UTC
++++ gnu-devtools-for-arm/build-cross-linux-toolchain.sh
+@@ -1174,7 +1174,7 @@ EOF
+ mkdir -p "${build_sysroot}/$target_libdir"
+ mkdir -p "${build_sysroot}/$target_rtlddir"
+
+- make -C "$objdir/$libname-headers" csu/subdir_lib
++ gmake -C "$objdir/$libname-headers" csu/subdir_lib
+ cp $objdir/$libname-headers/csu/crt1.o $objdir/$libname-headers/csu/crti.o $objdir/$libname-headers/csu/crtn.o "$build_sysroot/$target_libdir"
+
+ libc_host_compiler="$installdir/$host_prefix/bin"
+@@ -1445,7 +1445,7 @@ EOF
+ ( ulimit -S -t 120 &&
+ RUNTESTFLAGS="$RUNTESTFLAGS" \
+ DESTDIR=${installdir} \
+- make -C $objdir_local -k $parallel $stage \
++ gmake -C $objdir_local -k $parallel $stage \
+ CC_FOR_TARGET="${installdir}/${host_prefix}/bin/$target-gcc" ) \
+ || true
+
+@@ -1481,7 +1481,7 @@ EOF
+ if [ -d "$srcdir/libffi" ];
+ then
+ RUNTESTFLAGS="$RUNTESTFLAGS CC_FOR_TARGET=$target-gcc" \
+- make -C "$objdir/libffi" PARALLELMFLAGS=$parallel -k check || true
++ gmake -C "$objdir/libffi" PARALLELMFLAGS=$parallel -k check || true
+ # Capture the results
+ mkdir -p "$resultdir"
+ name=libffi
diff --git a/devel/gcc-arm-embedded/files/patch-gnu-devtools-for-arm_build-gnu-toolchain.sh b/devel/gcc-arm-embedded/files/patch-gnu-devtools-for-arm_build-gnu-toolchain.sh
new file mode 100644
index 000000000000..00ac4bae7268
--- /dev/null
+++ b/devel/gcc-arm-embedded/files/patch-gnu-devtools-for-arm_build-gnu-toolchain.sh
@@ -0,0 +1,11 @@
+--- gnu-devtools-for-arm/build-gnu-toolchain.sh.orig 2025-03-31 10:59:01 UTC
++++ gnu-devtools-for-arm/build-gnu-toolchain.sh
+@@ -191,7 +191,7 @@ EOF
+ set_darwin_envvars
+
+ # Parse command-line options
+-args=$(getopt -ohj:l:x -l aprofile,check-gdb,no-check-gdb,debug,debug-target,dejagnu-site:,dejagnu-src:,disable-gdb,disable-multilib,morello,extra:,native,rmprofile,help,target:,with-arch:,builddir:,host-toolchain:,target-board: -n $(basename "$0") -- "$@")
++args=$(${LOCALBASE}/bin/getopt -ohj:l:x -l aprofile,check-gdb,no-check-gdb,debug,debug-target,dejagnu-site:,dejagnu-src:,disable-gdb,disable-multilib,morello,extra:,native,rmprofile,help,target:,with-arch:,builddir:,host-toolchain:,target-board: -n $(basename "$0") -- "$@")
+ eval set -- "$args"
+ while [ $# -gt 0 ]; do
+ if [ -n "${opt_prev:-}" ]; then
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
new file mode 100644
index 000000000000..b89687372592
--- /dev/null
+++ b/devel/gcc-arm-embedded/files/patch-gnu-devtools-for-arm_utilities.sh
@@ -0,0 +1,66 @@
+--- gnu-devtools-for-arm/utilities.sh.orig 2025-03-31 10:59:01 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 ()
+ 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"
diff --git a/devel/gcc-arm-embedded/files/patch-src_gcc_gcc_config_arm_arm.h b/devel/gcc-arm-embedded/files/patch-src_gcc_gcc_config_arm_arm.h
deleted file mode 100644
index 112770a2b182..000000000000
--- a/devel/gcc-arm-embedded/files/patch-src_gcc_gcc_config_arm_arm.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/gcc/gcc/config/arm/arm.h.orig 2019-10-11 00:03:43 UTC
-+++ src/gcc/gcc/config/arm/arm.h
-@@ -2211,7 +2211,7 @@ extern const char *arm_target_thumb_only (int argc, co
-
- /* -mcpu=native handling only makes sense with compiler running on
- an ARM chip. */
--#if defined(__arm__)
-+#if defined(__arm__) && !defined(CROSS_DIRECTORY_STRUCTURE)
- extern const char *host_detect_local_cpu (int argc, const char **argv);
- #define HAVE_LOCAL_CPU_DETECT
- # define MCPU_MTUNE_NATIVE_FUNCTIONS \
diff --git a/devel/gcc-arm-embedded/files/patch-src_gcc_gcc_system.h b/devel/gcc-arm-embedded/files/patch-src_gcc_gcc_system.h
deleted file mode 100644
index 354076612969..000000000000
--- a/devel/gcc-arm-embedded/files/patch-src_gcc_gcc_system.h
+++ /dev/null
@@ -1,42 +0,0 @@
---- src/gcc/gcc/system.h.orig 2021-06-01 00:15:23 UTC
-+++ src/gcc/gcc/system.h
-@@ -203,19 +203,6 @@ extern int fprintf_unlocked (FILE *, const char *, ...
- #endif
- #endif
-
--/* There are an extraordinary number of issues with <ctype.h>.
-- The last straw is that it varies with the locale. Use libiberty's
-- replacement instead. */
--#include "safe-ctype.h"
--
--#include <sys/types.h>
--
--#include <errno.h>
--
--#if !defined (errno) && defined (HAVE_DECL_ERRNO) && !HAVE_DECL_ERRNO
--extern int errno;
--#endif
--
- #ifdef __cplusplus
- #if defined (INCLUDE_ALGORITHM) || !defined (HAVE_SWAP_IN_UTILITY)
- # include <algorithm>
-@@ -235,6 +222,19 @@ extern int errno;
- # include <cstring>
- # include <new>
- # include <utility>
-+#endif
-+
-+/* There are an extraordinary number of issues with <ctype.h>.
-+ The last straw is that it varies with the locale. Use libiberty's
-+ replacement instead. */
-+#include "safe-ctype.h"
-+
-+#include <sys/types.h>
-+
-+#include <errno.h>
-+
-+#if !defined (errno) && defined (HAVE_DECL_ERRNO) && !HAVE_DECL_ERRNO
-+extern int errno;
- #endif
-
- /* Some of glibc's string inlines cause warnings. Plus we'd rather
diff --git a/devel/gcc-arm-embedded/files/patch-src_gcc_gcc_tree-vect-loop.c b/devel/gcc-arm-embedded/files/patch-src_gcc_gcc_tree-vect-loop.c
deleted file mode 100644
index 09453a8128fc..000000000000
--- a/devel/gcc-arm-embedded/files/patch-src_gcc_gcc_tree-vect-loop.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/gcc/gcc/tree-vect-loop.c.orig 2019-12-02 09:49:15 UTC
-+++ src/gcc/gcc/tree-vect-loop.c
-@@ -55,6 +55,8 @@ along with GCC; see the file COPYING3. If not see
- #include "vec-perm-indices.h"
- #include "tree-eh.h"
-
-+#define vec_step vec_step_
-+
- /* Loop Vectorization Pass.
-
- This pass tries to vectorize loops.
diff --git a/devel/gcc-arm-embedded/files/patch-src_gdb_gdb_dtrace-probe.c b/devel/gcc-arm-embedded/files/patch-src_gdb_gdb_dtrace-probe.c
deleted file mode 100644
index 5866077a4a61..000000000000
--- a/devel/gcc-arm-embedded/files/patch-src_gdb_gdb_dtrace-probe.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/gdb/gdb/dtrace-probe.c.orig 2019-10-26 00:03:38 UTC
-+++ src/gdb/gdb/dtrace-probe.c
-@@ -77,6 +77,8 @@ struct dtrace_probe_enabler
- class dtrace_static_probe_ops : public static_probe_ops
- {
- public:
-+ dtrace_static_probe_ops() {}
-+
- /* See probe.h. */
- bool is_linespec (const char **linespecp) const override;
-
diff --git a/devel/gcc-arm-embedded/files/patch-src_gdb_gdb_dwarf2_macro.c b/devel/gcc-arm-embedded/files/patch-src_gdb_gdb_dwarf2_macro.c
deleted file mode 100644
index 5a7cd5b350f8..000000000000
--- a/devel/gcc-arm-embedded/files/patch-src_gdb_gdb_dwarf2_macro.c
+++ /dev/null
@@ -1,20 +0,0 @@
---- src/gdb/gdb/dwarf2/macro.c.orig 2021-01-11 21:34:03.097341000 +0300
-+++ src/gdb/gdb/dwarf2/macro.c 2021-01-11 21:37:13.156194000 +0300
-@@ -678,7 +678,7 @@
- }
- break;
-
-- case DW_MACINFO_vendor_ext:
-+ case DW_MACRO_hi_user:
- if (!section_is_gnu)
- {
- unsigned int bytes_read;
-@@ -823,7 +823,7 @@
- mac_ptr += offset_size;
- break;
-
-- case DW_MACINFO_vendor_ext:
-+ case DW_MACRO_hi_user:
- /* Only skip the data by MAC_PTR. */
- if (!section_is_gnu)
- {
diff --git a/devel/gcc-arm-embedded/files/patch-src_gdb_gdb_probe.c b/devel/gcc-arm-embedded/files/patch-src_gdb_gdb_probe.c
deleted file mode 100644
index 5825f2756449..000000000000
--- a/devel/gcc-arm-embedded/files/patch-src_gdb_gdb_probe.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/gdb/gdb/probe.c.orig 2019-10-26 00:03:38 UTC
-+++ src/gdb/gdb/probe.c
-@@ -43,6 +43,8 @@
- class any_static_probe_ops : public static_probe_ops
- {
- public:
-+ any_static_probe_ops() {}
-+
- /* See probe.h. */
- bool is_linespec (const char **linespecp) const override;
-
diff --git a/devel/gcc-arm-embedded/files/patch-src_gdb_gdb_python_python-config.py b/devel/gcc-arm-embedded/files/patch-src_gdb_gdb_python_python-config.py
deleted file mode 100644
index 90e17e32285f..000000000000
--- a/devel/gcc-arm-embedded/files/patch-src_gdb_gdb_python_python-config.py
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/gdb/gdb/python/python-config.py.orig 2018-05-04 21:32:36 UTC
-+++ src/gdb/gdb/python/python-config.py
-@@ -58,7 +58,7 @@ for opt in opt_flags:
- print (to_unix_path(' '.join(flags)))
-
- elif opt in ('--libs', '--ldflags'):
-- libs = ['-lpython' + pyver + abiflags]
-+ libs = ['-L' + sysconfig.PREFIX + "/lib", '-lpython' + pyver + abiflags]
- if getvar('LIBS') is not None:
- libs.extend(getvar('LIBS').split())
- if getvar('SYSLIBS') is not None:
diff --git a/devel/gcc-arm-embedded/files/patch-src_gdb_gdb_target-float.c b/devel/gcc-arm-embedded/files/patch-src_gdb_gdb_target-float.c
deleted file mode 100644
index c4e33a2a7074..000000000000
--- a/devel/gcc-arm-embedded/files/patch-src_gdb_gdb_target-float.c
+++ /dev/null
@@ -1,12 +0,0 @@
---- src/gdb/gdb/target-float.c.orig 2019-10-26 00:03:38 UTC
-+++ src/gdb/gdb/target-float.c
-@@ -1153,7 +1153,9 @@ host_float_ops<T>::compare (const gdb_byte *x, const s
-
- #ifdef HAVE_LIBMPFR
-
-+#ifndef MPFR_USE_INTMAX_T
- #define MPFR_USE_INTMAX_T
-+#endif
-
- #include <mpfr.h>
-