Wed May 3 20:03:09 2023 UTC ()
lang/gcc13: import gcc13-13.1.0

The GNU Compiler Collection (GCC) includes front ends for C, C++, Objective-C,
Fortran, and Go.


(wiz)
diff -r0 -r1.1 pkgsrc/lang/gcc13/DESCR
diff -r0 -r1.1 pkgsrc/lang/gcc13/Makefile
diff -r0 -r1.1 pkgsrc/lang/gcc13/Makefile.common
diff -r0 -r1.1 pkgsrc/lang/gcc13/buildlink3.mk
diff -r0 -r1.1 pkgsrc/lang/gcc13/distinfo
diff -r0 -r1.1 pkgsrc/lang/gcc13/options.mk
diff -r0 -r1.1 pkgsrc/lang/gcc13/version.mk
diff -r0 -r1.1 pkgsrc/lang/gcc13/patches/patch-fixincludes_inclhack.def
diff -r0 -r1.1 pkgsrc/lang/gcc13/patches/patch-gcc_Makefile.in
diff -r0 -r1.1 pkgsrc/lang/gcc13/patches/patch-gcc_config.host
diff -r0 -r1.1 pkgsrc/lang/gcc13/patches/patch-gcc_config_aarch64_aarch64-netbsd.h
diff -r0 -r1.1 pkgsrc/lang/gcc13/patches/patch-gcc_config_arm_arm.h
diff -r0 -r1.1 pkgsrc/lang/gcc13/patches/patch-gcc_config_arm_bpabi.h
diff -r0 -r1.1 pkgsrc/lang/gcc13/patches/patch-gcc_config_arm_elf.h
diff -r0 -r1.1 pkgsrc/lang/gcc13/patches/patch-gcc_config_arm_netbsd-eabi.h
diff -r0 -r1.1 pkgsrc/lang/gcc13/patches/patch-gcc_config_arm_netbsd-elf.h
diff -r0 -r1.1 pkgsrc/lang/gcc13/patches/patch-gcc_config_nvptx_gen-opt.sh
diff -r0 -r1.1 pkgsrc/lang/gcc13/patches/patch-gcc_configure
diff -r0 -r1.1 pkgsrc/lang/gcc13/patches/patch-isl_configure
diff -r0 -r1.1 pkgsrc/lang/gcc13/patches/patch-libffi_configure
diff -r0 -r1.1 pkgsrc/lang/gcc13/patches/patch-libffi_testsuite_libffi.call_float2.c
diff -r0 -r1.1 pkgsrc/lang/gcc13/patches/patch-libgcc_config.host
diff -r0 -r1.1 pkgsrc/lang/gcc13/patches/patch-libgcc_crtstuff.c
diff -r0 -r1.1 pkgsrc/lang/gcc13/patches/patch-libgfortran_io_io.h
diff -r0 -r1.1 pkgsrc/lang/gcc13/patches/patch-libquadmath_printf_quadmath-printf.c
diff -r0 -r1.1 pkgsrc/lang/gcc13/patches/patch-libquadmath_strtod_strtod__l.c
diff -r0 -r1.1 pkgsrc/lang/gcc13/patches/patch-libstdc++-v3_libsupc++_new__opa.cc

File Added: pkgsrc/lang/gcc13/DESCR
The GNU Compiler Collection (GCC) includes front ends for C, C++, Objective-C,
Fortran, and Go.

File Added: pkgsrc/lang/gcc13/Makefile
# $NetBSD: Makefile,v 1.1 2023/05/03 20:03:09 wiz Exp $

PKGNAME=	${GCC_PKGNAME}-${GCC13_DIST_VERSION}
## When bumping the PKGREVISION of this package the PKGREVISION of
## lang/gcc13-libs needs to be bumped to be at least 1 more than the
## PKGREVISION of this package!
COMMENT=	The GNU Compiler Collection (GCC) - 13.0 Release Series

LANGS=			c

.include "Makefile.common"

# In some cases LINKER_RPATH_FLAG needs a trailing space.
LINKER_RPATH_FLAG:=	${LINKER_RPATH_FLAG:S/-rpath/& /}

## The Library rpath to use in end programs.
LDFLAGS_FOR_TARGET=	${LDFLAGS:M${COMPILER_RPATH_FLAG}*:N*/usr/lib*} ${LDFLAGS:M-Wl,-z*}

# The "-static-libstdc++ -static-libgcc" flags are normally added to the
# boot-ldflags by configure but because we are supply the boot-ldflags
# we mash supply them.
BOOT_LDFLAGS=		-static-libstdc++ -static-libgcc ${LDFLAGS_FOR_TARGET}
# Needed on Darwin when LDFLAGS point to a SDK
BOOT_LDFLAGS+=		${LDFLAGS:M-Wl,-syslibroot*}
# GCC does not understand this option; remove it, or stage build will fail
BUILDLINK_TRANSFORM+=	rm:-stdlib=libc++

# Disable fixincludes on SmartOS, header changes result in broken includes
# being generated, see https://github.com/joyent/pkgsrc-legacy/issues/270
.if ${OS_VARIANT} == "SmartOS"
SUBST_CLASSES+=		fixinc
SUBST_STAGE.fixinc=	pre-configure
SUBST_FILES.fixinc=	gcc/Makefile.in
SUBST_SED.fixinc=	-e "s,\./fixinc.sh,-c true,"
.endif

.if !empty(MACHINE_PLATFORM:MNetBSD-*-*)
# on NetBSD, use the native SSP code in libc
CONFIGURE_ARGS+=	--disable-libssp
# Match base libstdc++ major
SUBST_CLASSES+=		libstdc
SUBST_STAGE.libstdc=	pre-configure
SUBST_FILES.libstdc=	libstdc++-v3/configure
SUBST_MESSAGE.libstdc=	Bumping libstdc++ major to 7
SUBST_SED.libstdc=	-e 's,libtool_VERSION=6:,libtool_VERSION=7:,g'
.else
CONFIGURE_ARGS+=	--enable-libssp
.endif

## For target librarys and libjava programs.
CONFIGURE_ENV+=		LDFLAGS_FOR_TARGET=${LDFLAGS_FOR_TARGET:Q}

CONFIGURE_ARGS+=	--enable-languages=${LANGS:Q}
CONFIGURE_ARGS+=	--enable-shared

CTF_FILES_SKIP+=	*/gengtype	# CPU limit exceeded

TEST_TARGET=	-j ${MAKE_JOBS} -k check || ${TRUE}
TEST_DEPENDS+=	dejagnu-[0-9]*:../../devel/dejagnu

post-test:
	${RUN} cd ${WRKSRC} && cd ${OBJDIR} &&		\
	${SHELL} ${WRKSRC}/contrib/test_summary >${WRKDIR}/test_summary.log
	${INFO_MSG} "Test summary are available in ${WRKDIR}/test_summary.log"

post-install:
	${TEST} -f ${DESTDIR}${GCC_PREFIX}/bin/cc || \
		( cd ${DESTDIR}${GCC_PREFIX}/bin ; ${LN} -f gcc cc )
.if !empty(MACHINE_PLATFORM:MSunOS-*-*86*) && ${OS_VERSION} != "5.11"
	${SH} files/values.c ${DESTDIR}${GCC_PREFIX}/bin/gcc -m32 || ${TRUE}
	${SH} files/values.c ${DESTDIR}${GCC_PREFIX}/bin/gcc -m64 || ${TRUE}
.endif

GENERATE_PLIST+= \
	cd ${DESTDIR}${PREFIX} && \
	${FIND} ${GCC_SUBPREFIX} \( -type f -o -type l \) -print | ${SORT};

.include "../../mk/bsd.pkg.mk"

File Added: pkgsrc/lang/gcc13/Makefile.common
# $NetBSD: Makefile.common,v 1.1 2023/05/03 20:03:09 wiz Exp $
# used by lang/gcc13-libjit/Makefile

GCC_PKGNAME=		gcc13
.include		"version.mk"

DISTNAME=	gcc-${GCC13_DIST_VERSION}
CATEGORIES=	lang
MASTER_SITES=	${MASTER_SITE_GNU:=gcc/gcc-${GCC13_DIST_VERSION}/}
EXTRACT_SUFX=	.tar.xz

MAINTAINER=	pkgsrc-users@NetBSD.org
HOMEPAGE=	https://gcc.gnu.org/
LICENSE=	gnu-gpl-v2 AND gnu-gpl-v3 AND gnu-lgpl-v2 AND gnu-lgpl-v3

DISTFILES=		${DEFAULT_DISTFILES}
EXTRACT_ONLY=		${DEFAULT_DISTFILES}

PATCHDIR=		${.CURDIR}/../../lang/gcc13/patches
DISTINFO_FILE=		${.CURDIR}/../../lang/gcc13/distinfo

# Relocations result in a linker error on AArch64, but not x86.
MKPIE_SUPPORTED=	no
CHECK_RELRO_SKIP+=	${GCC_PKGNAME}/lib/*

NOT_FOR_PLATFORM=	Interix-*-*

USE_LANGUAGES=		c99 c++
USE_TOOLS+=		gmake makeinfo sed:run tar:build
USE_TOOLS.NetBSD+=	gsed

GNU_CONFIGURE=		yes
GNU_CONFIGURE_STRICT=	no
## Build outside ${WRKSRC}
OBJDIR=			../build
CONFIGURE_DIRS=		${OBJDIR}
CONFIGURE_SCRIPT=	../${DISTNAME}/configure
GCC_SUBPREFIX=		${GCC_PKGNAME}
GCC_PREFIX=		${PREFIX}/${GCC_SUBPREFIX}
GNU_CONFIGURE_PREFIX=	${GCC_PREFIX}
INFO_FILES=		yes
CONFIGURE_ARGS+=	--disable-libstdcxx-pch

UNLIMIT_RESOURCES+=	datasize
UNLIMIT_RESOURCES+=	stacksize

CHECK_PORTABILITY_SKIP+=	contrib/*
CHECK_PORTABILITY_SKIP+=	gcc/configure.orig_dist

.include "../../mk/bsd.prefs.mk"

.include "options.mk"

#.if ${MACHINE_PLATFORM:MDarwin-*-aarch64}
#BUILDLINK_TRANSFORM+=	rm:-nodefaultrpaths
#CONFIGURE_ARGS+=	--disable-darwin-at-rpath
#PATCHFILES=		gcc-13.2.0-arm.diff
#PATCH_SITES=		https://raw.githubusercontent.com/Homebrew/formula-patches/1d184289/gcc/
#PATCH_DIST_STRIP=	-p1
#.endif

## For graphite support.
.if !empty(PKG_OPTIONS:Mgcc-graphite)

post-extract:
	${TAR} -jxf ${DISTDIR}/${ISL24}.tar.xz -C ${WRKSRC}
	${MV} ${WRKSRC}/${ISL24} ${WRKSRC}/isl
.endif

CONFIGURE_ARGS+=	--enable-long-long
CONFIGURE_ARGS+=	--with-local-prefix=${GCC_PREFIX:Q}
CONFIGURE_ARGS+=	--enable-threads=posix
CONFIGURE_ARGS+=	--with-boot-ldflags=${BOOT_LDFLAGS:Q}
CONFIGURE_ARGS+=	--without-zstd
# causes build errors even when using lang/gcc13 to self-host.
CONFIGURE_ARGS.SunOS+=	--disable-libsanitizer
# multilib on Darwin requires fat-binaries
CONFIGURE_ARGS.Darwin+=	--disable-multilib
.if !empty(OSX_SDK_PATH)
CONFIGURE_ARGS.Darwin+=	--with-sysroot=${OSX_SDK_PATH}
.endif
CONFIGURE_ARGS.NetBSD+=	--with-gnu-ld --with-ld=/usr/bin/ld
CONFIGURE_ARGS.NetBSD+=	--with-gnu-as --with-as=/usr/bin/as
MAKE_ENV.NetBSD+=	ac_cv_func_clock_gettime=yes
MAKE_ENV.NetBSD+=	ac_cv_func_gethostbyname_r=no
MAKE_ENV.NetBSD+=	ac_cv_func_freelocale=no
MAKE_ENV.NetBSD+=	ac_cv_func_newlocale=no
MAKE_ENV.NetBSD+=	ac_cv_func_uselocale=no
MAKE_ENV.SunOS+=	ac_cv_func_mkostemp=no

.if !empty(PKGSRC_COMPILER:Mclang) || ${OPSYS} == "DragonFly"
CONFIGURE_ARGS+=	--disable-bootstrap
.endif

.if ${MACHINE_PLATFORM:MNetBSD-*-i386} || ${MACHINE_PLATFORM:MLinux-*-i386}
CONFIGURE_ARGS+=	--with-arch=i486 --with-tune=i486
.endif

.if ${MACHINE_PLATFORM:MNetBSD-*-x86_64} || ${MACHINE_PLATFORM:MLinux-*-x86_64}
CONFIGURE_ARGS+=	--with-arch=nocona --with-tune=nocona --with-fpmath=sse
.endif

.if ${MACHINE_PLATFORM:MDarwin-[0-8].*-*}
CONFIGURE_ARGS+=	--with-dwarf2
.endif

# ${WRKSRC}/fixincludes/ looks for sed and compiles the path to sed into
# a binary so we need to make sure we give it the installed sed and not
# the tool wrapped one.
MAKE_ENV+=		ac_cv_path_SED=${TOOLS_SED}
MAKE_ENV+=		lt_cv_path_SED=${TOOLS_SED}

# Determine whether to use binutils
.if ${OPSYS} == "SunOS"
.  if exists(/usr/sfw/bin/gobjdump)
CONFIGURE_ENV+=		OBJDUMP=/usr/sfw/bin/gobjdump
.  endif
.  if exists(/usr/bin/ld)
CONFIGURE_ARGS+=	--without-gnu-ld --with-ld=/usr/bin/ld
.  else
CONFIGURE_ARGS+=	--without-gnu-ld --with-ld=/usr/ccs/bin/ld
.  endif
.  if exists(/usr/sfw/bin/gas)
CONFIGURE_ARGS+=	--with-gnu-as --with-as=/usr/sfw/bin/gas
.  elif exists(/usr/ccs/bin/as)
CONFIGURE_ARGS+=	--without-gnu-as --with-as=/usr/ccs/bin/as
.  else
BUILDLINK_DEPMETHOD.binutils=	full
.    include "../../devel/binutils/buildlink3.mk"
CONFIGURE_ARGS+=	--with-gnu-as --with-as=${PREFIX}/bin/gas
.  endif
.endif

.if ${OS_VARIANT} == "SmartOS"
SUBST_CLASSES+=		ccs
SUBST_STAGE.ccs=	pre-configure
SUBST_FILES.ccs=	contrib/make_sunver.pl
SUBST_SED.ccs=		-e 's,/usr/ccs/bin,/usr/bin,g'
.endif

pre-configure:
	${RUN} cd ${WRKSRC} && ${MKDIR} ${OBJDIR}

CHECK_BUILTIN.zlib:= yes
.include "../../devel/zlib/builtin.mk"
CHECK_BUILTIN.zlib:= no
.if ${USE_BUILTIN.zlib:tl} == yes
CONFIGURE_ARGS+=	--with-system-zlib
.else
CONFIGURE_ARGS+=	--without-system-zlib
.endif
.include "../../mk/dlopen.buildlink3.mk"
.include "../../mk/pthread.buildlink3.mk"

File Added: pkgsrc/lang/gcc13/buildlink3.mk
# $NetBSD: buildlink3.mk,v 1.1 2023/05/03 20:03:09 wiz Exp $

BUILDLINK_TREE+=	gcc13

.if !defined(GCC13_BUILDLINK3_MK)
GCC13_BUILDLINK3_MK:=

BUILDLINK_API_DEPENDS.gcc13+=	gcc13>=${_GCC_REQD}
BUILDLINK_ABI_DEPENDS.gcc13+=	gcc13>=13.1
BUILDLINK_PKGSRCDIR.gcc13=	../../lang/gcc13
BUILDLINK_DEPMETHOD.gcc13?=	build

BUILDLINK_PASSTHRU_DIRS+=	${BUILDLINK_PREFIX.gcc13}/gcc13

BUILDLINK_FILES.gcc13=		# empty
BUILDLINK_AUTO_VARS.gcc13=	no

pkgbase := gcc13
.include "../../mk/pkg-build-options.mk"
.include "../../mk/dlopen.buildlink3.mk"
.include "../../mk/pthread.buildlink3.mk"
.endif

BUILDLINK_TREE+=	-gcc13

File Added: pkgsrc/lang/gcc13/distinfo
$NetBSD: distinfo,v 1.1 2023/05/03 20:03:09 wiz Exp $

BLAKE2s (gcc-13.1.0.tar.xz) = fea51ae6811529deae1ee8159444a15dbff3db4320cb7f42b1a42b5c243eb9dd
SHA512 (gcc-13.1.0.tar.xz) = 6cf06dfc48f57f5e67f7efe3248019329a14d690c728d9f2f7ef5fa0d58f1816f309586ba7ea2eac20d0b60a2d1b701f68392e9067dd46f827ba0efd7192db33
Size (gcc-13.1.0.tar.xz) = 87451196 bytes
BLAKE2s (isl-0.24.tar.xz) = a3013b0d39b7fe68a1b3e15dc7e925b347d555348ee946a80f5319a76973cd61
SHA512 (isl-0.24.tar.xz) = ff6bdcff839e1cd473f2a0c1e4dd4a3612ec6fee4544ccbc62b530a7248db2cf93b4b99bf493a86ddf2aba00e768927265d5d411f92061ea85fd7929073428e8
Size (isl-0.24.tar.xz) = 1930956 bytes
SHA1 (patch-fixincludes_inclhack.def) = 7b00974d3f52a8364190a607f52a5d7e8a6db41a
SHA1 (patch-gcc_Makefile.in) = c0f97c75ba1d37eae894141edd58bb36b734f651
SHA1 (patch-gcc_config.host) = bf95dd21bfdf79d173e745fbd35c9bb99fdf4087
SHA1 (patch-gcc_config_aarch64_aarch64-netbsd.h) = abf19e2445bce1773162bddef16cd7f41eb36827
SHA1 (patch-gcc_config_arm_arm.h) = 9d554349869d67d6393552c33a7824f0dd53cb11
SHA1 (patch-gcc_config_arm_bpabi.h) = 0b0de5ad95442e34397cb46739ef6e36048d6f45
SHA1 (patch-gcc_config_arm_elf.h) = 57748157084319cb92d892f2ea5b2f3355567551
SHA1 (patch-gcc_config_arm_netbsd-eabi.h) = 85eb89de6f2e64fac50251f06d7e4eab35903dae
SHA1 (patch-gcc_config_arm_netbsd-elf.h) = 568f537d624199ef9f9f56088fe4fff7e946b2e2
SHA1 (patch-gcc_config_nvptx_gen-opt.sh) = 67b8c84f198561c1d964a50946937a0a9cc26749
SHA1 (patch-gcc_configure) = f13d23c46315d18fdbc3bbbad26d0763e2b27690
SHA1 (patch-isl_configure) = a6295c509bdc82e8b54d7dec5252994532463091
SHA1 (patch-libffi_configure) = 919bbe094e3ce547a0186eeaddb20a662595f79a
SHA1 (patch-libffi_testsuite_libffi.call_float2.c) = 89e2dd6aaf2c1f75726f02362d8a8bf7178694ea
SHA1 (patch-libgcc_config.host) = 482d8e868cad209d7bf3c190f3cb70b84e4c63cc
SHA1 (patch-libgcc_crtstuff.c) = a16d465039de00c195cf0694560140a9c38f3a25
SHA1 (patch-libgfortran_io_io.h) = d44676239a7f45e42054d24bd5224f43c20055c0
SHA1 (patch-libquadmath_printf_quadmath-printf.c) = 78e09f1e6d61ee57cee83275093cf46b2335d204
SHA1 (patch-libquadmath_strtod_strtod__l.c) = 6142c10d34174174cce7f06c37eab04dc431b2dc
SHA1 (patch-libstdc++-v3_libsupc++_new__opa.cc) = 4183b00a5ee6e61524da4755c825a0c08fd01ed6

File Added: pkgsrc/lang/gcc13/options.mk
# $NetBSD: options.mk,v 1.1 2023/05/03 20:03:09 wiz Exp $

PKG_OPTIONS_VAR=	PKG_OPTIONS.${GCC_PKGNAME}
PKG_SUPPORTED_OPTIONS=	nls gcc-inplace-math gcc-c++ gcc-fortran \
			gcc-go gcc-objc gcc-objc++ gcc-graphite \
			always-libgcc
PKG_SUGGESTED_OPTIONS=	gcc-c++ gcc-fortran gcc-objc gcc-objc++ \
			gcc-graphite gcc-inplace-math

.include "../../mk/bsd.fast.prefs.mk"

.if ${OPSYS} == "NetBSD"
PKG_SUGGESTED_OPTIONS+=	nls
.elif ${OPSYS} == "Linux"
PKG_SUGGESTED_OPTIONS+=	nls
.elif ${OPSYS} == "DragonFly"
PKG_SUGGESTED_OPTIONS+=	nls
.elif ${OPSYS} == "SunOS"
PKG_SUGGESTED_OPTIONS+=	gcc-inplace-math always-libgcc
.else
.endif

.include "../../mk/compiler.mk"
.if empty(PKGSRC_COMPILER:Mgcc)
PKG_SUGGESTED_OPTIONS+=			always-libgcc
.endif

###
### Determine if multilib is avalible.
###
MULTILIB_SUPPORTED?=	unknown
.if ${MACHINE_PLATFORM:MLinux-*-x86_64}
.  if exists(/usr/include/x86_64-linux-gnu/gnu)
_GNU_INCLUDE_DIR=	/usr/include/x86_64-linux-gnu/gnu
.  else
_GNU_INCLUDE_DIR=	/usr/include/gnu
.  endif
.  if exists(${_GNU_INCLUDE_DIR}/stubs-64.h) && \
     !exists(${_GNU_INCLUDE_DIR}/stubs-32.h)
MULTILIB_SUPPORTED=	No
.  else
MULTILIB_SUPPORTED=	Yes
.  endif
.endif
.if !empty(MULTILIB_SUPPORTED:M[Yy][Ee][Ss])
PKG_SUPPORTED_OPTIONS+=	gcc-multilib
PKG_SUGGESTED_OPTIONS+=	gcc-multilib
.endif

.include "../../mk/bsd.options.mk"

###
### Don't install libgcc if it's older than the system one
###
.if empty(PKG_OPTIONS:Malways-libgcc)

.  for _libdir_ in ${_OPSYS_LIB_DIRS}
.    if exists(${_libdir_})
BASE_LIBGCC!=			find ${_libdir_} -name libgcc_s.so 2> /dev/null
BASE_LIBGCC_MATCH_STRING!=	${ECHO} ${BASE_LIBGCC} ${GCC13_DIST_VERSION} | \
				${AWK} -f ../../mk/scripts/larger_symbol_version.awk
.      if ${BASE_LIBGCC_MATCH_STRING:Mnewer}
DELETE_INSTALLED_LIBGCC=	yes
.      endif
.    endif
.  endfor

.  if ${DELETE_INSTALLED_LIBGCC:Uno}
post-install:	delete-installed-libgcc

.PHONY: delete-installed-libgcc
delete-installed-libgcc:
	${FIND} ${DESTDIR} -name 'libgcc_s.so*' -delete

.  endif

.endif

###
### Native Language Support
###
.if !empty(PKG_OPTIONS:Mnls)
USE_TOOLS+=		msgfmt
CONFIGURE_ARGS+=	--enable-nls
CONFIGURE_ARGS+=	--with-libiconv-prefix=${BUILDLINK_PREFIX.iconv}
MAKE_ENV+=		ICONVPREFIX=${BUILDLINK_PREFIX.iconv}
.include "../../converters/libiconv/buildlink3.mk"
.include "../../devel/gettext-lib/buildlink3.mk"
.else
CONFIGURE_ARGS+=	--disable-nls
.endif

###
### Multilib Support
###
.if (!empty(MULTILIB_SUPPORTED:M[Yy][Ee][Ss]) && \
      empty(PKG_OPTIONS:Mgcc-multilib) ) || \
    !empty(MULTILIB_SUPPORTED:M[Nn][Oo])
CONFIGURE_ARGS+=	--disable-multilib
.endif

###
### Build math libraries in place
###
.if !empty(PKG_OPTIONS:Mgcc-inplace-math)
.  include "../../devel/gmp/inplace.mk"
.  include "../../math/mpcomplex/inplace.mk"
.  include "../../math/mpfr/inplace.mk"
.else
CONFIGURE_ARGS+=	--with-gmp=${BUILDLINK_PREFIX.gmp}
CONFIGURE_ARGS+=	--with-mpc=${BUILDLINK_PREFIX.mpcomplex}
CONFIGURE_ARGS+=	--with-mpfr=${BUILDLINK_PREFIX.mpfr}
LIBS.SunOS+=		-lgmp
.  include "../../devel/gmp/buildlink3.mk"
.  include "../../math/mpcomplex/buildlink3.mk"
.  include "../../math/mpfr/buildlink3.mk"
.endif

###
### Graphite Support
###
.if !empty(PKG_OPTIONS:Mgcc-graphite)
ISL24=			isl-0.24
SITES.${ISL24}.tar.bz2=	${MASTER_SITE_GNU:=gcc/infrastructure/}
DISTFILES+=		${ISL24}.tar.xz
.endif

###
### Optional languages
### Ada could be added although there is a bootstrapping issue.
###

.if !empty(PKG_OPTIONS:Mgcc-objc++)
.  if empty(PKG_OPTIONS:Mgcc-c++)
PKG_OPTIONS+=		gcc-c++
.  endif
.  if empty(PKG_OPTIONS:Mgcc-objc)
PKG_OPTIONS+=		gcc-objc
.  endif
LANGS+=			obj-c++
.endif

.if !empty(PKG_OPTIONS:Mgcc-objc)
LANGS+=			objc
.endif

.if !empty(PKG_OPTIONS:Mgcc-go)
LANGS+=			go
.endif

.if !empty(PKG_OPTIONS:Mgcc-fortran)
LANGS+=			fortran
.endif

.if !empty(PKG_OPTIONS:Mgcc-c++)
LANGS+=			c++
USE_TOOLS+=		perl
CONFIGURE_ARGS+=	--enable-__cxa_atexit
CONFIGURE_ARGS+=	--with-gxx-include-dir=${GCC_PREFIX}/include/c++/
.else
CONFIGURE_ARGS+=	--disable-build-with-cxx
CONFIGURE_ARGS+=	--disable-build-poststage1-with-cxx
.endif

File Added: pkgsrc/lang/gcc13/version.mk
# $NetBSD: version.mk,v 1.1 2023/05/03 20:03:09 wiz Exp $

GCC13_DIST_VERSION:=	13.1.0

File Added: pkgsrc/lang/gcc13/patches/patch-fixincludes_inclhack.def
$NetBSD: patch-fixincludes_inclhack.def,v 1.1 2023/05/03 20:03:09 wiz Exp $

A workaround for Catalina SDK bug from
https://github.com/Homebrew/homebrew-core/pull/44762

--- fixincludes/inclhack.def.orig	2020-03-04 08:29:59.000000000 +0000
+++ fixincludes/inclhack.def
@@ -1269,6 +1269,28 @@ fix = {
 };
 
 /*
+ *  macOS 10.15 <Availability.h> does not define __OSX_AVAILABLE_STARTING on
+ *  non-clang compilers.
+ */
+fix = {
+    hackname  = darwin_availability;
+    mach      = "*-*-darwin*";
+    files     = Availability.h;
+    select    = "#endif /\\* __OSX_AVAILABLE_STARTING \\*/";
+    c_fix     = format;
+    c_fix_arg = <<- _EOFix_
+	#endif /* __OSX_AVAILABLE_STARTING */
+	#ifndef __OSX_AVAILABLE_STARTING
+	  #define __OSX_AVAILABLE_STARTING(_osx, _ios)
+	  #define __OSX_AVAILABLE_BUT_DEPRECATED(_osxIntro, _osxDep, _iosIntro, _iosDep)
+	  #define __OSX_AVAILABLE_BUT_DEPRECATED_MSG(_osxIntro, _osxDep, _iosIntro, _iosDep, _msg)
+	#endif
+	_EOFix_;
+
+    test_text = "#endif /* __OSX_AVAILABLE_STARTING */";
+};
+
+/*
  *  macOS 10.12 <AvailabilityInternal.h> uses __attribute__((availability))
  *  unconditionally.
  */

File Added: pkgsrc/lang/gcc13/patches/patch-gcc_Makefile.in
$NetBSD: patch-gcc_Makefile.in,v 1.1 2023/05/03 20:03:09 wiz Exp $

Add gcc libdir to a programs rpath so that _this gcc's_ support libraries
are found.

--- gcc/Makefile.in.orig	2017-04-18 18:10:27.000000000 +0000
+++ gcc/Makefile.in
@@ -2112,6 +2112,7 @@ prefix.o: $(BASEVER)
 # Language-independent files.
 
 DRIVER_DEFINES = \
+  -DLINK_LIBGCC_SPEC="\"%D $(LINKER_RPATH_FLAG) $(prefix)//lib/%M $(LINKER_RPATH_FLAG) $(libdir)/%M \"" \
   -DSTANDARD_STARTFILE_PREFIX=\"$(unlibsubdir)/\" \
   -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \
   -DSTANDARD_LIBEXEC_PREFIX=\"$(libexecdir)/gcc/\" \

File Added: pkgsrc/lang/gcc13/patches/patch-gcc_config.host
$NetBSD: patch-gcc_config.host,v 1.1 2023/05/03 20:03:09 wiz Exp $

Add aarch64*-*-netbsd*.

--- gcc/config.host.orig	2022-05-06 07:30:56.000000000 +0000
+++ gcc/config.host
@@ -99,7 +99,7 @@ case ${host} in
 esac
 
 case ${host} in
-  aarch64*-*-freebsd* | aarch64*-*-linux* | aarch64*-*-fuchsia* |\
+  aarch64*-*-freebsd* | aarch64*-*-netbsd* | aarch64*-*-linux* | aarch64*-*-fuchsia* |\
   aarch64*-*-darwin*)
     case ${target} in
       aarch64*-*-*)

File Added: pkgsrc/lang/gcc13/patches/patch-gcc_config_aarch64_aarch64-netbsd.h
$NetBSD: patch-gcc_config_aarch64_aarch64-netbsd.h,v 1.1 2023/05/03 20:03:09 wiz Exp $

Match what is in NetBSD src.  Fixes at least aarch64eb, and
probably several others.

--- gcc/config/aarch64/aarch64-netbsd.h.orig	2021-04-08 04:56:28.033740243 -0700
+++ gcc/config/aarch64/aarch64-netbsd.h	2021-04-24 00:16:41.451665444 -0700
@@ -20,6 +20,10 @@
 #ifndef GCC_AARCH64_NETBSD_H
 #define GCC_AARCH64_NETBSD_H
 
+/* NetBSD malloc(3) does 64, not 128 bytes. */
+#undef MALLOC_ABI_ALIGNMENT
+#define MALLOC_ABI_ALIGNMENT  64
+
 #define TARGET_LINKER_BIG_EMULATION "aarch64nbsdb"
 #define TARGET_LINKER_LITTLE_EMULATION "aarch64nbsd"
 

File Added: pkgsrc/lang/gcc13/patches/patch-gcc_config_arm_arm.h
$NetBSD: patch-gcc_config_arm_arm.h,v 1.1 2023/05/03 20:03:09 wiz Exp $

--- gcc/config/arm/arm.h.orig	2021-04-08 04:56:28.057740534 -0700
+++ gcc/config/arm/arm.h	2022-01-31 21:11:39.595024008 -0800
@@ -937,6 +937,11 @@
 #define ARM_UNWIND_INFO  0
 #endif
 
+/* Overriden by config/arm/netbsd-eabi.h.  */
+#ifndef ARM_DWARF_UNWIND_TABLES
+#define ARM_DWARF_UNWIND_TABLES 0
+#endif
+
 /* Use r0 and r1 to pass exception handling information.  */
 #define EH_RETURN_DATA_REGNO(N) (((N) < 2) ? N : INVALID_REGNUM)
 
@@ -948,11 +953,19 @@
 #define ARM_TARGET2_DWARF_FORMAT DW_EH_PE_pcrel
 #endif
 
+#if ARM_DWARF_UNWIND_TABLES
+/* DWARF unwinding uses the normal indirect/pcrel vs absptr format
+   for 32bit platforms. */
+#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) \
+  (flag_pic ? (((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | DW_EH_PE_sdata4) \
+            : DW_EH_PE_absptr)
+#else
 /* ttype entries (the only interesting data references used)
    use TARGET2 relocations.  */
 #define ASM_PREFERRED_EH_DATA_FORMAT(code, data) \
   (((code) == 0 && (data) == 1 && ARM_UNWIND_INFO) ? ARM_TARGET2_DWARF_FORMAT \
 			       : DW_EH_PE_absptr)
+#endif
 
 /* The native (Norcroft) Pascal compiler for the ARM passes the static chain
    as an invisible last argument (possible since varargs don't exist in
@@ -2342,7 +2355,7 @@
 
 /* -mcpu=native handling only makes sense with compiler running on
    an ARM chip.  */
-#if defined(__arm__)
+#if defined(__arm__) && defined(__linux__)
 extern const char *host_detect_local_cpu (int argc, const char **argv);
 #define HAVE_LOCAL_CPU_DETECT
 # define MCPU_MTUNE_NATIVE_FUNCTIONS			\

File Added: pkgsrc/lang/gcc13/patches/patch-gcc_config_arm_bpabi.h
$NetBSD: patch-gcc_config_arm_bpabi.h,v 1.1 2023/05/03 20:03:09 wiz Exp $

--- gcc/config/arm/bpabi.h.orig	2021-04-08 04:56:28.061740583 -0700
+++ gcc/config/arm/bpabi.h	2022-01-31 21:13:16.734263818 -0800
@@ -24,6 +24,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 /* Use the AAPCS ABI by default.  */
+#undef ARM_DEFAULT_ABI
 #define ARM_DEFAULT_ABI ARM_ABI_AAPCS
 
 /* Assume that AAPCS ABIs should adhere to the full BPABI.  */
@@ -107,7 +108,9 @@
 /* The BPABI specifies the use of .{init,fini}_array.  Therefore, we
    do not want GCC to put anything into the .{init,fini} sections.  */
 #undef INIT_SECTION_ASM_OP
+#define INIT_SECTION_ASM_OP ""
 #undef FINI_SECTION_ASM_OP
+#define FINI_SECTION_ASM_OP ""
 #define INIT_ARRAY_SECTION_ASM_OP ARM_EABI_CTORS_SECTION_OP
 #define FINI_ARRAY_SECTION_ASM_OP ARM_EABI_DTORS_SECTION_OP
 

File Added: pkgsrc/lang/gcc13/patches/patch-gcc_config_arm_elf.h
$NetBSD: patch-gcc_config_arm_elf.h,v 1.1 2023/05/03 20:03:09 wiz Exp $

--- gcc/config/arm/elf.h.orig	2021-04-08 04:56:28.065740630 -0700
+++ gcc/config/arm/elf.h	2022-01-31 21:14:04.684223580 -0800
@@ -147,6 +147,8 @@
 #undef L_floatdidf
 #undef L_floatdisf
 #undef L_floatundidf
+/* XXXMRG: don't take this out, we need it! */
+# ifndef __NetBSD__
 #undef L_floatundisf
+# endif
 #endif
-

File Added: pkgsrc/lang/gcc13/patches/patch-gcc_config_arm_netbsd-eabi.h
$NetBSD: patch-gcc_config_arm_netbsd-eabi.h,v 1.1 2023/05/03 20:03:09 wiz Exp $

--- gcc/config/arm/netbsd-eabi.h.orig	2021-04-08 04:56:28.065740630 -0700
+++ gcc/config/arm/netbsd-eabi.h	2022-01-31 21:15:29.555403989 -0800
@@ -49,8 +49,8 @@
 
 #undef ARM_UNWIND_INFO
 #define ARM_UNWIND_INFO 0
-#undef DWARF2_UNWIND_INFO
-#define DWARF2_UNWIND_INFO 1
+#undef ARM_DWARF_UNWIND_TABLES
+#define ARM_DWARF_UNWIND_TABLES 1
 
 #undef TARGET_OS_CPP_BUILTINS
 #define TARGET_OS_CPP_BUILTINS()		\
@@ -59,7 +59,7 @@
       if (TARGET_AAPCS_BASED)			\
 	TARGET_BPABI_CPP_BUILTINS();		\
       NETBSD_OS_CPP_BUILTINS_ELF();		\
-      if (DWARF2_UNWIND_INFO)			\
+      if (ARM_DWARF_UNWIND_TABLES)		\
 	builtin_define ("__ARM_DWARF_EH__");	\
     }						\
   while (0)
@@ -81,17 +81,25 @@
 
 #undef SUBTARGET_EXTRA_ASM_SPEC
 #define SUBTARGET_EXTRA_ASM_SPEC		\
-  "%{mabi=apcs-gnu|mabi=atpcs:-meabi=gnu} "	\
+  "-matpcs %{mabi=apcs-gnu|mabi=atpcs:-meabi=gnu} "	\
   "%{fpic|fpie:-k} "				\
   "%{fPIC|fPIE:-k}"
 
+/* Default to full VFP if -mhard-float is specified.  */
+#undef SUBTARGET_ASM_FLOAT_SPEC
+#define SUBTARGET_ASM_FLOAT_SPEC	\
+  "%{mhard-float:%{!mfpu=*:-mfpu=vfp}}   \
+   %{mfloat-abi=hard:%{!mfpu=*:-mfpu=vfp}}"
+
 #undef SUBTARGET_EXTRA_SPECS
 #define SUBTARGET_EXTRA_SPECS						\
   { "subtarget_extra_asm_spec",	SUBTARGET_EXTRA_ASM_SPEC },		\
+  { "subtarget_asm_float_spec", SUBTARGET_ASM_FLOAT_SPEC }, 		\
   { "linker_eabi_suffix",	TARGET_LINKER_EABI_SUFFIX },		\
   { "linker_emulation",		TARGET_LINKER_EMULATION },		\
   { "linker_big_emulation",	TARGET_LINKER_BIG_EMULATION },		\
   { "linker_little_emulation",	TARGET_LINKER_LITTLE_EMULATION },	\
+  { "be8_link_spec",		BE8_LINK_SPEC }, 			\
   { "target_fix_v4bx_spec",	TARGET_FIX_V4BX_SPEC },			\
   NETBSD_SUBTARGET_EXTRA_SPECS
 
@@ -102,4 +110,5 @@
   "-X %{mbig-endian:-EB -m %(linker_big_emulation)} "		\
   "%{mlittle-endian:-EL -m %(linker_liitle_emulation)} "	\
   "%{!mbig-endian:%{!mlittle-endian:-m %(linker_emulation)}} "	\
+  "%(be8_link_spec) "						\
   "%(target_fix_v4bx_spec) %(netbsd_link_spec)"

File Added: pkgsrc/lang/gcc13/patches/patch-gcc_config_arm_netbsd-elf.h
$NetBSD: patch-gcc_config_arm_netbsd-elf.h,v 1.1 2023/05/03 20:03:09 wiz Exp $

--- gcc/config/arm/netbsd-elf.h.orig	2023-04-26 07:09:39.000000000 +0000
+++ gcc/config/arm/netbsd-elf.h
@@ -27,9 +27,20 @@
 
 /* arm.h defaults to ARM6 CPU.  */
 
-/* This defaults us to little-endian.  */
-#ifndef TARGET_ENDIAN_DEFAULT
-#define TARGET_ENDIAN_DEFAULT 0
+/* Default EABI to armv5t so that thumb shared libraries work.
+   The ARM926EH-S core is the default for armv5te, so set
+   SUBTARGET_CPU_DEFAULT to achieve this.  */
+
+#define SUBTARGET_CPU_DEFAULT \
+	(ARM_DEFAULT_ABI != ARM_ABI_APCS && ARM_DEFAULT_ABI != ARM_ABI_ATPCS \
+	    ? TARGET_CPU_arm926ejs : TARGET_CPU_arm6)
+
+/* TARGET_BIG_ENDIAN_DEFAULT is set in
+   config.gcc for big endian configurations.  */
+#if TARGET_BIG_ENDIAN_DEFAULT
+#define TARGET_ENDIAN_DEFAULT    MASK_BIG_END
+#else
+#define TARGET_ENDIAN_DEFAULT    0
 #endif
 
 #undef MULTILIB_DEFAULTS
@@ -56,25 +67,28 @@
 
 #undef SUBTARGET_EXTRA_ASM_SPEC
 #define SUBTARGET_EXTRA_ASM_SPEC	\
+  "-matpcs %{mabi=aapcs*:-meabi=5} "	\
   "%{" FPIE_OR_FPIC_SPEC ":-k}"
 
+#undef SUBTARGET_EXTRA_SPECS
+#define SUBTARGET_EXTRA_SPECS					\
+  { "subtarget_extra_asm_spec",	SUBTARGET_EXTRA_ASM_SPEC },	\
+  { "subtarget_asm_float_spec", SUBTARGET_ASM_FLOAT_SPEC },	\
+  NETBSD_SUBTARGET_EXTRA_SPECS
+
 /* Default to full VFP if -mfloat-abi=hard is specified.  */
 #undef SUBTARGET_ASM_FLOAT_SPEC
-#define SUBTARGET_ASM_FLOAT_SPEC	\
-  "%{mfloat-abi=hard:{!mfpu=*:-mfpu=vfp}}"
-
-#undef SUBTARGET_EXTRA_SPECS
-#define SUBTARGET_EXTRA_SPECS				\
-  { "subtarget_extra_asm_spec",	SUBTARGET_EXTRA_ASM_SPEC }, \
-  { "subtarget_asm_float_spec", SUBTARGET_ASM_FLOAT_SPEC }, \
-  { "netbsd_link_spec",		NETBSD_LINK_SPEC_ELF },	\
-  { "netbsd_entry_point",	NETBSD_ENTRY_POINT },
+#define SUBTARGET_ASM_FLOAT_SPEC		\
+  "%{mhard-float:%{!mfpu=*:-mfpu=vfp}}		\
+   %{mfloat-abi=hard:%{!mfpu=*:-mfpu=vfp}}"
 
 #define NETBSD_ENTRY_POINT "__start"
 
 #undef LINK_SPEC
 #define LINK_SPEC \
-  "-X %{mbig-endian:-EB} %{mlittle-endian:-EL} \
+  "-X \
+   %{mbig-endian:-EB %{-mabi=aapcs*:-m armelfb_nbsd_eabi}} \
+   %{mlittle-endian:-EL %{-mabi=aapcs*:-m armelf_nbsd_eabi}} \
    %(netbsd_link_spec)"
 
 /* Make GCC agree with <machine/ansi.h>.  */
@@ -85,6 +99,12 @@
 #undef PTRDIFF_TYPE
 #define PTRDIFF_TYPE "long int"
 
+#undef INTPTR_TYPE
+#define INTPTR_TYPE PTRDIFF_TYPE
+
+#undef UINTPTR_TYPE
+#define UINTPTR_TYPE SIZE_TYPE
+
 /* NetBSD does its profiling differently to the Acorn compiler. We
    don't need a word following the mcount call; and to skip it
    requires either an assembly stub or use of fomit-frame-pointer when

File Added: pkgsrc/lang/gcc13/patches/patch-gcc_config_nvptx_gen-opt.sh
$NetBSD: patch-gcc_config_nvptx_gen-opt.sh,v 1.1 2023/05/03 20:03:09 wiz Exp $

Portability fix.

--- gcc/config/nvptx/gen-opt.sh.orig	2022-06-15 15:52:17.000000000 +0000
+++ gcc/config/nvptx/gen-opt.sh
@@ -56,7 +56,7 @@ EnumValue
 Enum(ptx_isa) String(sm_$sm) Value(PTX_ISA_SM$sm)
 EOF
 
-    if [ "$sm" == "$last" ]; then
+    if [ "$sm" = "$last" ]; then
 	# Don't end with trailing empty line.
 	continue
     fi

File Added: pkgsrc/lang/gcc13/patches/patch-gcc_configure
$NetBSD: patch-gcc_configure,v 1.1 2023/05/03 20:03:09 wiz Exp $

Portability fix.

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90143

--- gcc/configure.orig	2022-05-06 07:30:57.000000000 +0000
+++ gcc/configure
@@ -6395,7 +6395,7 @@ _ACEOF
 if test "$enable_largefile" != no; then
   case "$host, $build" in
     *-*-aix*,*|*,*-*-aix*)
-      if test "$ac_cv_sizeof_ino_t" == "4" -a "$ac_cv_sizeof_dev_t" == 4; then
+      if test "$ac_cv_sizeof_ino_t" = "4" -a "$ac_cv_sizeof_dev_t" = 4; then
 
 $as_echo "#define HOST_STAT_FOR_64BIT_INODES stat64x" >>confdefs.h
 
@@ -31598,7 +31598,7 @@ case "$target" in
       gcc_cv_target_dl_iterate_phdr=no
     fi
     ;;
-  *-*-dragonfly* | *-*-freebsd*)
+  *-*-dragonfly* | *-*-freebsd* | *-*-netbsd* )
     if grep dl_iterate_phdr $target_header_dir/sys/link_elf.h > /dev/null 2>&1; then
       gcc_cv_target_dl_iterate_phdr=yes
     else

File Added: pkgsrc/lang/gcc13/patches/patch-isl_configure
$NetBSD: patch-isl_configure,v 1.1 2023/05/03 20:03:09 wiz Exp $

Fix unportable test(1) operator.

--- isl/configure.orig	2021-04-26 09:13:19.000000000 +0000
+++ isl/configure
@@ -20657,7 +20657,7 @@ else
   HAVE_CXX11_FALSE=
 fi
 
- if test "x$with_int" == "ximath-32"; then
+ if test "x$with_int" = "ximath-32"; then
   SMALL_INT_OPT_TRUE=
   SMALL_INT_OPT_FALSE='#'
 else
@@ -20665,7 +20665,7 @@ else
   SMALL_INT_OPT_FALSE=
 fi
 
-if test "x$with_int" == "ximath-32"; then :
+if test "x$with_int" = "ximath-32"; then :
 
 
 $as_echo "#define USE_SMALL_INT_OPT /**/" >>confdefs.h

File Added: pkgsrc/lang/gcc13/patches/patch-libffi_configure
$NetBSD: patch-libffi_configure,v 1.1 2023/05/03 20:03:09 wiz Exp $

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90146
https://github.com/libffi/libffi/issues/485

--- libffi/configure.orig	2022-05-06 07:31:19.000000000 +0000
+++ libffi/configure
@@ -16155,7 +16155,7 @@ case "$target" in
 $as_echo "#define FFI_EXEC_TRAMPOLINE_TABLE 1" >>confdefs.h
 
      ;;
-     *-apple-* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris* | *-linux-android*)
+     *-apple-* | *-*-freebsd* | *-*-kfreebsd* | *-*-netbsd* | *-*-openbsd* | *-pc-solaris* | *-linux-android*)
 
 $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h
 

File Added: pkgsrc/lang/gcc13/patches/patch-libffi_testsuite_libffi.call_float2.c
$NetBSD: patch-libffi_testsuite_libffi.call_float2.c,v 1.1 2023/05/03 20:03:09 wiz Exp $

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90146

--- libffi/testsuite/libffi.call/float2.c.orig	2022-05-06 07:30:59.000000000 +0000
+++ libffi/testsuite/libffi.call/float2.c
@@ -47,7 +47,7 @@ int main (void)
   /* long double support under SunOS/gcc is pretty much non-existent.
      You'll get the odd bus error in library routines like printf() */
 #else
-  printf ("%Lf, %Lf, %Lf, %Lf\n", ld, ldblit(f), ld - ldblit(f), LDBL_EPSILON);
+  printf ("%Lf, %Lf, %Lf, %Lf\n", (long double)ld, (long double)ldblit(f), (long double)(ld - ldblit(f)), (long double)LDBL_EPSILON);
 #endif
 
   /* These are not always the same!! Check for a reasonable delta */

File Added: pkgsrc/lang/gcc13/patches/patch-libgcc_config.host
$NetBSD: patch-libgcc_config.host,v 1.1 2023/05/03 20:03:09 wiz Exp $

This is needed for arm64 to get Out-of-line LSE atomics linked into libgcc.
libsupc++ fails to link without this, and for arm to build.

--- libgcc/config.host.orig	2023-04-26 07:09:43.000000000 +0000
+++ libgcc/config.host
@@ -388,6 +388,7 @@ aarch64*-*-freebsd*)
 aarch64*-*-netbsd*)
 	extra_parts="$extra_parts crtfastmath.o"
 	tmake_file="${tmake_file} ${cpu_type}/t-aarch64"
+	tmake_file="${tmake_file} ${cpu_type}/t-lse"
 	tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm"
 	tmake_file="${tmake_file} t-dfprules"
 	md_unwind_header=aarch64/aarch64-unwind.h
@@ -479,7 +480,8 @@ arm*-*-netbsdelf*)
 	case ${host} in
 	  arm*-*-netbsdelf-*eabi*)
 	    tmake_file="${tmake_file} arm/t-netbsd-eabi"
-	    unwind_header=config/arm/unwind-arm.h
+	    # GCC 7 vs NetBSD/eabi -> avoid arm unwinder
+	    #unwind_header=config/arm/unwind-arm.h
 	    ;;
 	  *)
 	    tmake_file="${tmake_file} arm/t-netbsd t-slibgcc-gld-nover"

File Added: pkgsrc/lang/gcc13/patches/patch-libgcc_crtstuff.c
$NetBSD: patch-libgcc_crtstuff.c,v 1.1 2023/05/03 20:03:09 wiz Exp $

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90147

--- libgcc/crtstuff.c.orig	2017-01-01 12:07:43.000000000 +0000
+++ libgcc/crtstuff.c
@@ -81,7 +81,7 @@ call_ ## FUNC (void)					\
 #endif
 
 #if defined(TARGET_DL_ITERATE_PHDR) && \
-   (defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__))
+   (defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__))
 #define BSD_DL_ITERATE_PHDR_AVAILABLE
 #endif
  

File Added: pkgsrc/lang/gcc13/patches/patch-libgfortran_io_io.h
$NetBSD: patch-libgfortran_io_io.h,v 1.1 2023/05/03 20:03:09 wiz Exp $

Don't declare old_locale* an internal_proto to avoid linking problems

--- libgfortran/io/io.h.orig	2018-01-07 10:17:52.000000000 +0000
+++ libgfortran/io/io.h
@@ -57,11 +57,8 @@ extern locale_t c_locale;
 internal_proto(c_locale);
 #else
 extern char* old_locale;
-internal_proto(old_locale);
 extern int old_locale_ctr;
-internal_proto(old_locale_ctr);
 extern __gthread_mutex_t old_locale_lock;
-internal_proto(old_locale_lock);
 #endif
 
 

File Added: pkgsrc/lang/gcc13/patches/patch-libquadmath_printf_quadmath-printf.c
$NetBSD: patch-libquadmath_printf_quadmath-printf.c,v 1.1 2023/05/03 20:03:09 wiz Exp $

Fix -Werror=char-subscripts.

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95178

--- libquadmath/printf/quadmath-printf.c.orig	2020-05-07 10:50:02.000000000 +0000
+++ libquadmath/printf/quadmath-printf.c
@@ -189,7 +189,7 @@ quadmath_snprintf (char *str, size_t siz
       ++format;
       info.width = va_arg (ap, int);
     }
-  else if (isdigit (*format))
+  else if (isdigit ((unsigned char) *format))
     /* Constant width specification.  */
     info.width = read_int (&format);
 
@@ -206,7 +206,7 @@ quadmath_snprintf (char *str, size_t siz
 
 	  info.prec = va_arg (ap, int);
 	}
-      else if (isdigit (*format))
+      else if (isdigit ((unsigned char) *format))
 	info.prec = read_int (&format);
       else
 	/* "%.?" is treated like "%.0?".  */

File Added: pkgsrc/lang/gcc13/patches/patch-libquadmath_strtod_strtod__l.c
$NetBSD: patch-libquadmath_strtod_strtod__l.c,v 1.1 2023/05/03 20:03:09 wiz Exp $

Fix -Werror=char-subscripts.

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95178

--- libquadmath/strtod/strtod_l.c.orig	2020-05-07 10:50:02.000000000 +0000
+++ libquadmath/strtod/strtod_l.c
@@ -57,10 +57,10 @@
 # define STRING_TYPE char
 # define CHAR_TYPE char
 # define L_(Ch) Ch
-# define ISSPACE(Ch) isspace (Ch)
-# define ISDIGIT(Ch) isdigit (Ch)
-# define ISXDIGIT(Ch) isxdigit (Ch)
-# define TOLOWER(Ch) tolower (Ch)
+# define ISSPACE(Ch) isspace ((unsigned char) Ch)
+# define ISDIGIT(Ch) isdigit ((unsigned char) Ch)
+# define ISXDIGIT(Ch) isxdigit ((unsigned char) Ch)
+# define TOLOWER(Ch) tolower ((unsigned char) Ch)
 # define TOLOWER_C(Ch) \
   ({__typeof(Ch) __tlc = (Ch); \
     (__tlc >= 'A' && __tlc <= 'Z') ? __tlc - 'A' + 'a' : __tlc; })

File Added: pkgsrc/lang/gcc13/patches/patch-libstdc++-v3_libsupc++_new__opa.cc
$NetBSD: patch-libstdc++-v3_libsupc++_new__opa.cc,v 1.1 2023/05/03 20:03:09 wiz Exp $

Ensure we can find SunOS std::aligned_alloc if using it.

--- libstdc++-v3/libsupc++/new_opa.cc.orig	2020-03-04 08:30:03.000000000 +0000
+++ libstdc++-v3/libsupc++/new_opa.cc
@@ -57,6 +57,10 @@ extern "C"
 }
 #endif
 
+#if defined(__sun) && _GLIBCXX_HAVE_ALIGNED_ALLOC
+using std::aligned_alloc;
+#endif
+
 namespace __gnu_cxx {
 #if _GLIBCXX_HAVE_ALIGNED_ALLOC
 using ::aligned_alloc;