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.
This commit is contained in:
Lev A. Serebryakov 2025-04-02 01:10:31 +03:00
parent cbaf1ff7cd
commit 75ee0ced6e
20 changed files with 10794 additions and 6263 deletions

View file

@ -1,9 +1,9 @@
PORTNAME= gcc-arm-embedded
PORTVERSION= 10.3.20210921
PORTREVISION= 0
PORTVERSION= ${FULL_VERSION:S/.rel/r/}
#PORTREVISION= 0
CATEGORIES= devel
MASTER_SITES= https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/${FULL_VERSION}/
DISTNAME= ${ORIGINAL_PACKAGE_NAME}-src
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
@ -12,141 +12,112 @@ 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= arm armv6 armv7 mips mips64 mips64el mipsel mipsn32
NOT_FOR_ARCHS_REASON= Very slow to build on emulator
BUILD_DEPENDS= objdump:devel/binutils
BUILD_DEPENDS= bash:shells/bash \
gfind:misc/findutils \
getopt>=0:misc/getopt
OPTIONS_DEFINE= APROFILE PURE PYGDB EXAMPLES HTML PDF DOCS SYMLINK
OPTIONS_DEFAULT=PURE PYGDB SYMLINK
APROFILE_DESC= Add support for Cortex-A profiles
PURE_DESC= Use all libraries from bundle, do not depend on anything
HTML_DESC= Install HTML documentation
PDF_DESC= Install PDF documentation (requires TeX, it is huge)
PYGDB_DESC= Build and install python-enabled gdb in addition to standard one
SYMLINK_DESC= Make version-independent symlink ${LOCALBASE}/${PORTNAME}
FLAVORS= default aarch64
FLAVOR?= ${FLAVORS:[1]}
PURE_LIB_DEPENDS_OFF= libexpat.so:textproc/expat2 \
libgmp.so:math/gmp \
libmpfr.so:math/mpfr \
libmpc.so:math/mpc \
libisl.so:devel/isl
aarch64_PKGNAMESUFFIX= -aarch64
aarch64_PLIST= ${PKGDIR}/pkg-plist.aarch64
PDF_USES= tex
PDF_USE= TEX=base:build,tex:build,dvipsk:build
PDF_BUILD_DEPENDS= texi2dvi:print/texinfo
PYGDB_USES= python
USES= compiler:c++14-lang cpe gmake libtool:keepla makeinfo \
shebangfix tar:xz
OPTIONS_SUB= yes
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
USES= bison compiler:c++11-lang cpe gmake gettext-runtime \
makeinfo tar:bzip2 iconv
GNU_CONFIGURE= yes
PATCH_WRKSRC= ${WRKDIR}/${ORIGINAL_PACKAGE_NAME}
BUILD_WRKSRC= ${WRKDIR}
GCC_VERSION= 10.3.1
FULL_VERSION= 10.3-2021.10
TARGET= arm-none-eabi
ORIGINAL_PACKAGE_NAME= gcc-${TARGET}-${FULL_VERSION}
SHEBANG_FILES= gnu-devtools-for-arm/*.sh
USE_PYTHON= noflavors
CPE_PRODUCT= gcc
CPE_VENDOR= gnu
CPE_VERSION= ${GCC_VERSION}
INFO_PATH= ${PORTNAME}-${FULL_VERSION}/share/doc/gcc-${TARGET}/info
INFO= annotate as bfd binutils cpp cppinternals gcc \
gccinstall gccint gdb gprof ld stabs
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}
MANDIRS= ${PREFIX}/${PORTNAME}-${FULL_VERSION}/${DOCS_SUFFIX}/man
DOCSDIR= ${PREFIX}/${PORTNAME}-${FULL_VERSION}/${DOCS_SUFFIX}
EXAMPLESDIR= ${PREFIX}/${PORTNAME}-${FULL_VERSION}/share/gcc-${TARGET}/samples
PYGDB_USES= python
OPTIONS_SUB= yes
PLIST_SUB+= TARGET=${TARGET} FULL_VERSION=${FULL_VERSION} \
GCC_VERSION=${GCC_VERSION}
WRKSRC= ${WRKDIR}/src
NO_WRKSUBDIR= yes
DOCS_SUFFIX= share/doc/gcc-${TARGET}
SRC_DIR= ${WRKDIR}/${ORIGINAL_PACKAGE_NAME}/src
BUILD_DIR= ${WRKDIR}/build
INTERIM_WORLD= ${WRKDIR}/install
INTERIM_PREFIX= ${INTERIM_WORLD}/${PORTNAME}-${FULL_VERSION}
GCC_VERSION= 14.2.1
FULL_VERSION= 14.2.rel1
DIR_NAME= ${PORTNAME}${PKGNAMESUFFIX}-${FULL_VERSION}
BUNDLED_LIBS= EXPAT:bz2 ZLIB:gz LIBELF:gz \
GMP:bz2 MPFR:bz2 MPC:gz ISL:xz
BUNDLED_VERSION_EXPAT= 2.1.1
BUNDLED_VERSION_ZLIB= 1.2.8
BUNDLED_VERSION_LIBELF= 0.8.13
BUNDLED_VERSION_GMP= 6.1.0
BUNDLED_VERSION_MPFR= 3.1.4
BUNDLED_VERSION_MPC= 1.0.3
BUNDLED_VERSION_ISL= 0.18
.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
VAR_TO_SUBMAKE= BUILD_DIR CC CFLAGS CHOSEN_COMPILER_TYPE CONFIG_SITE \
CONFIGURE_MAX_CMD_LEN CONFIGURE_SHELL CP CPP CPPFLAGS CXX \
CXXFLAGS DOCS_SUFFIX ECHO_MSG EXAMPLESDIR FILE FIND GMAKE \
GCC_VERSION GREP MAKE_CMD MAKE_SHELL PATCH \
INSTALL_MACROS INTERIM_PREFIX INTERIM_WORLD LD LDFLAGS LIBDIR \
LN LOCALBASE MAKE_JOBS_NUMBER MKDIR ORIGINAL_PACKAGE_NAME \
PORT_OPTIONS PREFIX PYTHON_CMD RM SED SH SRC_DIR STRIP_CMD TAR \
TARGET WRKDIR CONFIGURE_TARGET
PLIST_SUB+= GCC_VERSION=${GCC_VERSION} FULL_VERSION=${FULL_VERSION} TARGET=${TARGET}
VAR_TO_SUBMAKE_NOEXPAND= CONFIGURE_ENV MAKE_ENV
.include <bsd.port.options.mk>
.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 <bsd.port.pre.mk>
#.if ${PORT_OPTIONS:MPURE}
#IGNORE= PURE option is not valid anymore, no libraries are bundled
#.endif
.if ${OPSYS} == FreeBSD
USE_GCC= 13
.endif
post-extract:
.if ${PORT_OPTIONS:MPURE}
.for L in ${BUNDLED_LIBS}
@${ECHO_MSG} "====> Extracting bundled ${L:C/[:].+//:tl}"
@${TAR} -xf ${SRC_DIR}/${L:C/[:].+//:tl}-${BUNDLED_VERSION_${L:C/[:].+//}}.tar.${L:C/.+[:]//} -C ${SRC_DIR}
.endfor
.endif
@${ECHO_MSG} "====> Extracting bundled binutils"
@${TAR} -xf ${SRC_DIR}/binutils.tar.bz2 -C ${SRC_DIR}
@${ECHO_MSG} "====> Extracting bundled GCC"
@${TAR} -xf ${SRC_DIR}/gcc.tar.bz2 -C ${SRC_DIR}
@${ECHO_MSG} "====> Extracting bundled GDB"
@${TAR} -xf ${SRC_DIR}/gdb.tar.bz2 -C ${SRC_DIR}
@${ECHO_MSG} "====> Extracting bundled newlib"
@${TAR} -xf ${SRC_DIR}/newlib.tar.bz2 -C ${SRC_DIR}
do-configure:
@${RM} -r ${BUILD_DIR}
@${MKDIR} ${BUILD_DIR}
@${RM} -r ${INTERIM_PREFIX}
@${MKDIR} ${INTERIM_PREFIX}
@${CP} ${FILESDIR}/Makefile ${WRKDIR}
@${RM} ${WRKDIR}/Makefile.inc
.for VAR in ${VAR_TO_SUBMAKE}
@${ECHO} '${VAR}=${${VAR}}' >> ${WRKDIR}/Makefile.inc
.endfor
.for L in ${BUNDLED_LIBS}
@${ECHO} -n 'BUNDLED_VERSION_${L:C/[:].+//}=' >> ${WRKDIR}/Makefile.inc
@${ECHO} '${BUNDLED_VERSION_${L:C/[:].+//}}' >> ${WRKDIR}/Makefile.inc
.endfor
.for VAR in ${VAR_TO_SUBMAKE_NOEXPAND}
@${ECHO} -n '${VAR}=' >> ${WRKDIR}/Makefile.inc
@${MAKE} .MAKE.EXPAND_VARIABLES=0 -X -V ${VAR} >> ${WRKDIR}/Makefile.inc
.endfor
@${MV} ${WRKSRC}/gnu-devtools-for-arm-${GL_TAGNAME_tools} ${WRKSRC}/gnu-devtools-for-arm
do-build:
@${MAKE} -C ${WRKDIR}
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:
@${TAR} -cf - -C ${WRKDIR}/install ${PORTNAME}-${FULL_VERSION} | ${TAR} -xf - -C ${STAGEDIR}${PREFIX}
.if ${PORT_OPTIONS:MSYMLINK}
@${LN} -s ${PORTNAME}-${FULL_VERSION} ${STAGEDIR}${PREFIX}/${PORTNAME}
.endif
@cd ${WRKDIR} && ${PAX} -l -r -w ${DIR_NAME} ${STAGEDIR}${PREFIX}
post-install-SYMLINK-on:
@${LN} -s ${PKGNAME} ${STAGEDIR}${PREFIX}/${PORTNAME}${PKGNAMESUFFIX}
.include <bsd.port.post.mk>

View file

@ -1,3 +1,5 @@
TIMESTAMP = 1649877811
SHA256 (gcc-arm-none-eabi-10.3-2021.10-src.tar.bz2) = 94e582e4dd3a6014dea0485be0377c6478bd3c9e1301190f05810aa2ad989cbf
SIZE (gcc-arm-none-eabi-10.3-2021.10-src.tar.bz2) = 201152632
TIMESTAMP = 1743428897
SHA256 (arm-gnu-toolchain-src-snapshot-14.2.rel1.tar.xz) = e6405f20f8a817a50d92dbf7974d0ee77708dfdf9e79900a59c5d343b464ef9c
SIZE (arm-gnu-toolchain-src-snapshot-14.2.rel1.tar.xz) = 311500280
SHA256 (gnu-devtools-for-arm-v1.3.0.tar.bz2) = 89fdac5e73bff3673d930fdc8c1807d7548bd978900ff8d2fd45125984626dc2
SIZE (gnu-devtools-for-arm-v1.3.0.tar.bz2) = 744557

View file

@ -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

View file

@ -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)

View file

@ -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; }

View file

@ -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"

View file

@ -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

View file

@ -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

View file

@ -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"

View file

@ -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 \

View file

@ -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

View file

@ -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.

View file

@ -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;

View file

@ -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)
{

View file

@ -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;

View file

@ -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:

View file

@ -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>

View file

@ -1,20 +1,12 @@
FSF binutils/gcc/gdb toolchain for ARM Cortex-M & Cortex-R
processors (Cortex-M0/M0+/M3/M4, Cortex-R4/R5/R7).
This port brings C and C++ compilers. Gloss and libc layer
are provided through newlib embedded C library.
This is complete package prepated by "GNU Tools for ARM Embedded
Processors" project (which is maintained by ARM company itself).
The GNU Toolchain for the Arm Architecture releases produced by Arm
(referred to as “Arm GNU Toolchain”) enable partners, developers
the community to use new features from recent Arm Architecture and
from open-source projects GCC, Binutils, glibc, Newlib, and GDB.
It includes:
binutils
gcc 5.3 with LTO and GRAPHITE support.
newlib optimized for speed
newlib-nano optimized for
two versions of libstdc++, optimized for speed and size.
gdb without sim.
* Contains integrated and validated packages.
* Supports C and C++ languages.
* Supports CPUs based on the A, R and M profiles of the Arm architecture
(including Cortex-A, Cortex-R, Cortex-M and Neoverse processors).
* Provides different variants of the toolchain which can be used for bare-metal
embedded development.
All this is built with support for armv6-m, armv7-ar,
armv7-m and armv7e-m targets, armv7e-m with and without
FPU support and armv8-m too.
This port gives bit-to-bit compatibility with "official"
embedded ARM toolchain for MacOS X, Linux and Windows.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff