diff options
Diffstat (limited to 'lang')
72 files changed, 1338 insertions, 148 deletions
diff --git a/lang/Makefile b/lang/Makefile index b47244907bdd..1ea8c93fb2a9 100644 --- a/lang/Makefile +++ b/lang/Makefile @@ -97,7 +97,9 @@ SUBDIR += gcc13-devel SUBDIR += gcc14 SUBDIR += gcc14-devel + SUBDIR += gcc15 SUBDIR += gcc15-devel + SUBDIR += gcc16-devel SUBDIR += gcc6-aux SUBDIR += gforth SUBDIR += ghc diff --git a/lang/chez-scheme/Makefile b/lang/chez-scheme/Makefile index 094cdd7aabfb..e382680ca7f8 100644 --- a/lang/chez-scheme/Makefile +++ b/lang/chez-scheme/Makefile @@ -1,5 +1,5 @@ PORTNAME= chez-scheme -PORTVERSION= 10.1.0 +PORTVERSION= 10.2.0 DISTVERSIONPREFIX= v CATEGORIES= lang MASTER_SITES= https://github.com/cisco/ChezScheme/releases/download/${DISTVERSIONPREFIX}${DISTVERSION}/ diff --git a/lang/chez-scheme/distinfo b/lang/chez-scheme/distinfo index e886a7eabc66..714481a643ab 100644 --- a/lang/chez-scheme/distinfo +++ b/lang/chez-scheme/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1731619280 -SHA256 (csv10.1.0.tar.gz) = 9181a6c8c4ab5e5d32d879ff159d335a50d4f8b388611ae22a263e932c35398b -SIZE (csv10.1.0.tar.gz) = 9123504 +TIMESTAMP = 1746612550 +SHA256 (csv10.2.0.tar.gz) = b795916d4cfed59240c5f44b1b507a8657efd28e62e72e134d03486e9f3e374a +SIZE (csv10.2.0.tar.gz) = 9151451 diff --git a/lang/gcc11/Makefile b/lang/gcc11/Makefile index 202b99b1fa64..0391a84a28df 100644 --- a/lang/gcc11/Makefile +++ b/lang/gcc11/Makefile @@ -12,6 +12,8 @@ LICENSE= GPLv3 GPLv3RLE LICENSE_COMB= multi ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386 powerpc powerpc64 powerpc64le riscv64 +DEPRECATED= End-of-life upstream since mid 2024, newer versions available +EXPIRATION_DATE=2025-07-19 LIB_DEPENDS= libgmp.so:math/gmp \ libmpfr.so:math/mpfr \ diff --git a/lang/gcc12-devel/files/patch-libgcc_unwind.inc b/lang/gcc12-devel/files/patch-libgcc_unwind.inc index 42155a9ba48e..94fb7f65d5fb 100644 --- a/lang/gcc12-devel/files/patch-libgcc_unwind.inc +++ b/lang/gcc12-devel/files/patch-libgcc_unwind.inc @@ -13,6 +13,9 @@ at once). Linux does not have libthr, so Linux is not affected. Moreover Linux is likely to build everything with GCC. +This patch will become obsolete once all supported FreeBSD releases +include commit 22e564c74eb20e14bd93fd9fdde20e38a29cfcf1. + --- libgcc/unwind.inc.orig 2025-04-12 08:18:17 UTC +++ libgcc/unwind.inc @@ -212,8 +212,8 @@ _Unwind_ForcedUnwind (struct _Unwind_Exception *exc, diff --git a/lang/gcc12/files/patch-libgcc_unwind.inc b/lang/gcc12/files/patch-libgcc_unwind.inc index 42155a9ba48e..94fb7f65d5fb 100644 --- a/lang/gcc12/files/patch-libgcc_unwind.inc +++ b/lang/gcc12/files/patch-libgcc_unwind.inc @@ -13,6 +13,9 @@ at once). Linux does not have libthr, so Linux is not affected. Moreover Linux is likely to build everything with GCC. +This patch will become obsolete once all supported FreeBSD releases +include commit 22e564c74eb20e14bd93fd9fdde20e38a29cfcf1. + --- libgcc/unwind.inc.orig 2025-04-12 08:18:17 UTC +++ libgcc/unwind.inc @@ -212,8 +212,8 @@ _Unwind_ForcedUnwind (struct _Unwind_Exception *exc, diff --git a/lang/gcc13-devel/Makefile b/lang/gcc13-devel/Makefile index a66514428fa5..12715c5e60bc 100644 --- a/lang/gcc13-devel/Makefile +++ b/lang/gcc13-devel/Makefile @@ -1,5 +1,5 @@ PORTNAME= gcc -PORTVERSION= 13.3.1.s20250418 +PORTVERSION= 13.3.1.s20250424 CATEGORIES= lang MASTER_SITES= GCC/snapshots/${DIST_VERSION} PKGNAMESUFFIX= ${SUFFIX}-devel diff --git a/lang/gcc13-devel/distinfo b/lang/gcc13-devel/distinfo index 2cfd270950e0..b4d4762dd5dd 100644 --- a/lang/gcc13-devel/distinfo +++ b/lang/gcc13-devel/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1745138672 -SHA256 (gcc-13-20250418.tar.xz) = 3b7c8c92f0400802df12f250803d9733c775f59c527bf9a01babc60502d60cbb -SIZE (gcc-13-20250418.tar.xz) = 84528940 +TIMESTAMP = 1745914194 +SHA256 (gcc-13-20250424.tar.xz) = ef2ed6f6aad4033719bf30b17b15b907a5bb6cc393264bfdb36ee502c1cdb21f +SIZE (gcc-13-20250424.tar.xz) = 84551016 diff --git a/lang/gcc13-devel/files/patch-libgcc_unwind.inc b/lang/gcc13-devel/files/patch-libgcc_unwind.inc index 42155a9ba48e..94fb7f65d5fb 100644 --- a/lang/gcc13-devel/files/patch-libgcc_unwind.inc +++ b/lang/gcc13-devel/files/patch-libgcc_unwind.inc @@ -13,6 +13,9 @@ at once). Linux does not have libthr, so Linux is not affected. Moreover Linux is likely to build everything with GCC. +This patch will become obsolete once all supported FreeBSD releases +include commit 22e564c74eb20e14bd93fd9fdde20e38a29cfcf1. + --- libgcc/unwind.inc.orig 2025-04-12 08:18:17 UTC +++ libgcc/unwind.inc @@ -212,8 +212,8 @@ _Unwind_ForcedUnwind (struct _Unwind_Exception *exc, diff --git a/lang/gcc13/Makefile b/lang/gcc13/Makefile index fe54d1ef7c13..87a94678dcd1 100644 --- a/lang/gcc13/Makefile +++ b/lang/gcc13/Makefile @@ -1,6 +1,6 @@ PORTNAME= gcc PORTVERSION= 13.3.0 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= lang MASTER_SITES= GCC PKGNAMESUFFIX= ${SUFFIX} diff --git a/lang/gcc13/files/patch-libgcc_unwind.inc b/lang/gcc13/files/patch-libgcc_unwind.inc new file mode 100644 index 000000000000..94fb7f65d5fb --- /dev/null +++ b/lang/gcc13/files/patch-libgcc_unwind.inc @@ -0,0 +1,31 @@ +GCC generates instructions that require variables to be aligned in memory on +certain CPUs. Our libthr does not have the required alignment so these CPUs fail +to execute these instructions. The instructions generation is driven by CPUTYPE. +Some CPUs are fine to execute these instructions on unaligned data. + +This patch explicitly forbids GCC to generate instructions that require +alignment of the data. + +If the entire program is compiled by LLVM or GCC, there is no problem (with GCC +everything is aligned, with LLVM vmovdqa is not used to assign both variables +at once). + +Linux does not have libthr, so Linux is not affected. Moreover Linux is likely +to build everything with GCC. + +This patch will become obsolete once all supported FreeBSD releases +include commit 22e564c74eb20e14bd93fd9fdde20e38a29cfcf1. + +--- libgcc/unwind.inc.orig 2025-04-12 08:18:17 UTC ++++ libgcc/unwind.inc +@@ -212,8 +212,8 @@ _Unwind_ForcedUnwind (struct _Unwind_Exception *exc, + uw_init_context (&this_context); + cur_context = this_context; + +- exc->private_1 = (_Unwind_Ptr) stop; +- exc->private_2 = (_Unwind_Ptr) stop_argument; ++ __builtin_memcpy(&exc->private_1, &stop, sizeof(_Unwind_Ptr)); ++ __builtin_memcpy(&exc->private_2, &stop_argument, sizeof(_Unwind_Ptr)); + + code = _Unwind_ForcedUnwind_Phase2 (exc, &cur_context, &frames); + if (code != _URC_INSTALL_CONTEXT) diff --git a/lang/gcc14-devel/Makefile b/lang/gcc14-devel/Makefile index 0f8296485ac9..380cba0092b3 100644 --- a/lang/gcc14-devel/Makefile +++ b/lang/gcc14-devel/Makefile @@ -1,5 +1,5 @@ PORTNAME= gcc -PORTVERSION= 14.2.1.s20250419 +PORTVERSION= 14.2.1.s20250425 PORTEPOCH= 1 CATEGORIES= lang MASTER_SITES= GCC/snapshots/${DIST_VERSION} diff --git a/lang/gcc14-devel/distinfo b/lang/gcc14-devel/distinfo index 1abee7712a26..7eb9e3c68123 100644 --- a/lang/gcc14-devel/distinfo +++ b/lang/gcc14-devel/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1745138924 -SHA256 (gcc-14-20250419.tar.xz) = 387ee936ef51312f80ff8be59a8ad84cb77f696682b423f58d011c1364c236de -SIZE (gcc-14-20250419.tar.xz) = 88251960 +TIMESTAMP = 1745915178 +SHA256 (gcc-14-20250425.tar.xz) = 1994adadb9fa0ddcdadb0a1d0ac44a7530542b352272b8467e8b9f12aacbe97e +SIZE (gcc-14-20250425.tar.xz) = 88293272 diff --git a/lang/gcc14-devel/files/patch-libgcc_unwind.inc b/lang/gcc14-devel/files/patch-libgcc_unwind.inc index 42155a9ba48e..94fb7f65d5fb 100644 --- a/lang/gcc14-devel/files/patch-libgcc_unwind.inc +++ b/lang/gcc14-devel/files/patch-libgcc_unwind.inc @@ -13,6 +13,9 @@ at once). Linux does not have libthr, so Linux is not affected. Moreover Linux is likely to build everything with GCC. +This patch will become obsolete once all supported FreeBSD releases +include commit 22e564c74eb20e14bd93fd9fdde20e38a29cfcf1. + --- libgcc/unwind.inc.orig 2025-04-12 08:18:17 UTC +++ libgcc/unwind.inc @@ -212,8 +212,8 @@ _Unwind_ForcedUnwind (struct _Unwind_Exception *exc, diff --git a/lang/gcc14/files/patch-libgcc_unwind.inc b/lang/gcc14/files/patch-libgcc_unwind.inc index 42155a9ba48e..94fb7f65d5fb 100644 --- a/lang/gcc14/files/patch-libgcc_unwind.inc +++ b/lang/gcc14/files/patch-libgcc_unwind.inc @@ -13,6 +13,9 @@ at once). Linux does not have libthr, so Linux is not affected. Moreover Linux is likely to build everything with GCC. +This patch will become obsolete once all supported FreeBSD releases +include commit 22e564c74eb20e14bd93fd9fdde20e38a29cfcf1. + --- libgcc/unwind.inc.orig 2025-04-12 08:18:17 UTC +++ libgcc/unwind.inc @@ -212,8 +212,8 @@ _Unwind_ForcedUnwind (struct _Unwind_Exception *exc, diff --git a/lang/gcc15-devel/Makefile b/lang/gcc15-devel/Makefile index 5caf32b24cd0..4eed868d47df 100644 --- a/lang/gcc15-devel/Makefile +++ b/lang/gcc15-devel/Makefile @@ -1,6 +1,5 @@ PORTNAME= gcc -PORTVERSION= 15.0.1.s20250413 -PORTREVISION= 1 +PORTVERSION= 15.1.1.s20250426 CATEGORIES= lang MASTER_SITES= GCC/snapshots/${DIST_VERSION} PKGNAMESUFFIX= ${SUFFIX}-devel diff --git a/lang/gcc15-devel/distinfo b/lang/gcc15-devel/distinfo index 26336ce2eb47..c25e126fa010 100644 --- a/lang/gcc15-devel/distinfo +++ b/lang/gcc15-devel/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1744619901 -SHA256 (gcc-15-20250413.tar.xz) = f066fb74ce533d167fccb6429dc0819bdcc8eb43a992c8ad49020f8616ae2986 -SIZE (gcc-15-20250413.tar.xz) = 91915660 +TIMESTAMP = 1745914552 +SHA256 (gcc-15-20250426.tar.xz) = 5da29d2cff64251a61fbcc62bf6245710f05d2ccf8f49c8138142da700b699e7 +SIZE (gcc-15-20250426.tar.xz) = 92081764 diff --git a/lang/gcc15-devel/files/patch-libgcc_unwind.inc b/lang/gcc15-devel/files/patch-libgcc_unwind.inc index 42155a9ba48e..94fb7f65d5fb 100644 --- a/lang/gcc15-devel/files/patch-libgcc_unwind.inc +++ b/lang/gcc15-devel/files/patch-libgcc_unwind.inc @@ -13,6 +13,9 @@ at once). Linux does not have libthr, so Linux is not affected. Moreover Linux is likely to build everything with GCC. +This patch will become obsolete once all supported FreeBSD releases +include commit 22e564c74eb20e14bd93fd9fdde20e38a29cfcf1. + --- libgcc/unwind.inc.orig 2025-04-12 08:18:17 UTC +++ libgcc/unwind.inc @@ -212,8 +212,8 @@ _Unwind_ForcedUnwind (struct _Unwind_Exception *exc, diff --git a/lang/gcc15/Makefile b/lang/gcc15/Makefile new file mode 100644 index 000000000000..c9444e5e22e8 --- /dev/null +++ b/lang/gcc15/Makefile @@ -0,0 +1,189 @@ +PORTNAME= gcc +PORTVERSION= 15.1.0 +CATEGORIES= lang +MASTER_SITES= GCC +PKGNAMESUFFIX= ${SUFFIX} + +MAINTAINER= salvadore@FreeBSD.org +COMMENT= GNU Compiler Collection 15 +WWW= https://gcc.gnu.org + +LICENSE= GPLv3 GPLv3RLE +LICENSE_COMB= multi + +ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386 powerpc powerpc64 powerpc64le + +LIB_DEPENDS= libgmp.so:math/gmp \ + libmpfr.so:math/mpfr \ + libmpc.so:math/mpc +BUILD_DEPENDS+= ${LOCALBASE}/bin/as:devel/binutils +RUN_DEPENDS+= ${LOCALBASE}/bin/as:devel/binutils +.if defined(MAINTAINER_MODE) +BUILD_DEPENDS+= runtest:misc/dejagnu +.endif + +USES= compiler:c++11-lang cpe gmake iconv libtool makeinfo perl5 tar:xz +USE_BINUTILS= yes +USE_PERL5= build + +CONFLICTS= gcc15-devel + +CPE_VENDOR= gnu +CPE_VERSION= ${GCC_VERSION} + +GCC_VERSION= ${PORTVERSION} +SUFFIX= ${PORTVERSION:C/([0-9]+).*/\1/} +CFLAGS:= ${CFLAGS:N-mretpoline} -D__USE_ISOC11 +CXXFLAGS:= ${CXXFLAGS:N-mretpoline} + +OPTIONS_DEFINE= GRAPHITE +OPTIONS_DEFAULT_aarch64=STANDARD_BOOTSTRAP +OPTIONS_DEFAULT_armv6= STANDARD_BOOTSTRAP +OPTIONS_DEFAULT_armv7= STANDARD_BOOTSTRAP +OPTIONS_DEFAULT_amd64= STANDARD_BOOTSTRAP +OPTIONS_DEFAULT_i386= STANDARD_BOOTSTRAP +OPTIONS_DEFAULT_powerpc=LTO_BOOTSTRAP +OPTIONS_DEFAULT_powerpc64=LTO_BOOTSTRAP +OPTIONS_DEFAULT_powerpc64le=LTO_BOOTSTRAP +OPTIONS_RADIO= BOOTSTRAP +OPTIONS_RADIO_BOOTSTRAP= LTO_BOOTSTRAP STANDARD_BOOTSTRAP +LTO_BOOTSTRAP_DESC= Build using a full LTO bootstrap +STANDARD_BOOTSTRAP_DESC= Build using a full bootstrap without LTO +GRAPHITE_DESC= Support for Graphite loop optimizations + +.if exists(/usr/lib32/libc.so) +OPTIONS_DEFINE_amd64+= MULTILIB +OPTIONS_DEFAULT_amd64+= MULTILIB +OPTIONS_DEFINE_powerpc64+= MULTILIB +#OPTIONS_DEFAULT_powerpc64+= MULTILIB # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105010 +MULTILIB_DESC= Build support for 32-bit and 64-bit targets +MULTILIB_CONFIGURE_ENABLE= multilib +.else +CONFIGURE_ARGS+= --disable-multilib +.endif + +.if defined(CPUTYPE) && ${CPUTYPE:Mg[3-5]} +CFLAGS:= ${CFLAGS:S/mcpu=g/mcpu=G/} +CXXFLAGS:= ${CFLAGS:S/mcpu=g/mcpu=G/} +.endif + +GRAPHITE_LIB_DEPENDS= libisl.so:devel/isl +GRAPHITE_CONFIGURE_WITH+= isl + +.include <bsd.port.pre.mk> + +.if ${ARCH} == amd64 +CONFIGURE_TARGET= x86_64-portbld-${OPSYS:tl}${OSREL} + +.elif ${ARCH} == powerpc64 +CONFIGURE_ARGS+= --with-abi=elfv2 +USE_GCC= yes + +.elif ${ARCH} == powerpc64le +USE_GCC= yes +.endif + +.if ${ARCH} == i386 +LANGUAGES:= c,c++,objc,fortran +.else +LANGUAGES:= c,c++,objc,fortran,jit +.endif +TARGLIB= ${PREFIX}/lib/gcc${SUFFIX} +TARGLIB32= ${PREFIX}/lib32 # The version information is added later +LIBEXEC= ${PREFIX}/libexec/gcc${SUFFIX} +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +CONFIGURE_OUTSOURCE= yes +.if empty(PORT_OPTIONS:M*BOOTSTRAP) +CONFIGURE_ARGS+=--disable-bootstrap +.elif ${PORT_OPTIONS:MLTO_BOOTSTRAP} +CONFIGURE_ARGS+=--with-build-config=bootstrap-lto-noplugin +ALL_TARGET= bootstrap-lean +PIE_UNSAFE= yes +.else +CONFIGURE_ARGS+=--with-build-config=bootstrap-debug +ALL_TARGET= bootstrap-lean +PIE_UNSAFE= yes +.endif +INSTALL_TARGET= install-strip +.if ${UID} != 0 +BINMODE= 755 +.endif +CONFIGURE_ARGS+=--disable-nls \ + --disable-libssp \ + --enable-gnu-indirect-function \ + --enable-host-shared \ + --enable-plugin \ + --libdir=${TARGLIB} \ + --libexecdir=${LIBEXEC} \ + --program-suffix=${SUFFIX} \ + --with-as=${LOCALBASE}/bin/as \ + --with-gmp=${LOCALBASE} \ + --with-gxx-include-dir=${TARGLIB}/include/c++/ \ + --with-gxx-libcxx-include-dir=/usr/include/c++/v1 \ + --with-ld=${LOCALBASE}/bin/ld \ + ${ICONV_CONFIGURE_ARG} \ + --with-pkgversion="FreeBSD Ports Collection" \ + --with-system-zlib \ + --without-zstd +MAKE_ARGS+= MAKEINFOFLAGS="--no-split" +USE_LDCONFIG= ${TARGLIB} +PLIST_SUB+= GCC_VERSION=${GCC_VERSION} \ + GNU_HOST=${CONFIGURE_TARGET} \ + SUFFIX=${SUFFIX} +INFO= gcc${SUFFIX}/cpp \ + gcc${SUFFIX}/cppinternals \ + gcc${SUFFIX}/gcc \ + gcc${SUFFIX}/gccinstall \ + gcc${SUFFIX}/gccint \ + gcc${SUFFIX}/gfortran \ + gcc${SUFFIX}/libgccjit \ + gcc${SUFFIX}/libgomp +# Release tarballs (as opposed to snapshots) always carry this. +INFO+= gcc${SUFFIX}/libquadmath \ + gcc${SUFFIX}/libitm +SUB_FILES= pkg-message +SUB_LIST+= TARGLIB=${TARGLIB} + +CONFIGURE_ARGS+=--enable-languages=${LANGUAGES} + +.if (${ARCH} == amd64 || ${ARCH} == powerpc64) && ${PORT_OPTIONS:MMULTILIB} +USE_LDCONFIG32= ${TARGLIB32}/gcc${SUFFIX} +.endif + +pre-everything:: + @${ECHO_MSG} "Making GCC ${PORTVERSION} for ${CONFIGURE_TARGET} [${LANGUAGES}]" + +pre-configure: + cd ${WRKSRC} ; contrib/gcc_update --touch + @${RM} ${WRKSRC}/gcc/*/*.info* + +.if defined(MAINTAINER_MODE) +full-regression-test: build + cd ${TEST_WRKSRC}; ${MAKE_CMD} -sk check \ + ; ${WRKSRC}/contrib/test_summary +.endif + +post-stage: + ${RM} ${STAGEDIR}${PREFIX}/share/man/man7/* + ${RM} -r ${STAGEDIR}${TARGLIB}/gcc/*/${GCC_VERSION}/include-fixed/ + # Install ISO_Fortran_binding.h in an easily findable directory + ${MKDIR} ${STAGEDIR}${PREFIX}/include/gcc${SUFFIX} + ${INSTALL_DATA} ${STAGEDIR}${PREFIX}/lib/gcc${SUFFIX}/gcc/${CONFIGURE_TARGET}/${GCC_VERSION}/include/ISO_Fortran_binding.h \ + ${STAGEDIR}${PREFIX}/include/gcc${SUFFIX} + # Add target libraries and include files to packaging list. + ${RM} ${WRKDIR}/PLIST.lib + +.if (${ARCH} == amd64 || ${ARCH} == powerpc64) && ${PORT_OPTIONS:MMULTILIB} + ${MKDIR} ${STAGEDIR}${TARGLIB32} + ${MV} ${STAGEDIR}${PREFIX}/lib/lib32 ${STAGEDIR}${TARGLIB32}/gcc${SUFFIX} +.endif + +.for d in ${TARGLIB:S/^${PREFIX}\///} ${TARGLIB32:S/^${PREFIX}\///} ${LIBEXEC:S/^${PREFIX}\///} + cd ${STAGEDIR}${PREFIX} ; if [ -d $d ]; then \ + ${FIND} $d -type f -o -type l >>${WRKDIR}/PLIST.lib ;\ + fi +.endfor + cd ${WRKDIR} ; ${SED} -i -e "/PLIST.lib/ r PLIST.lib" ${TMPPLIST} + +.include <bsd.port.post.mk> diff --git a/lang/gcc15/distinfo b/lang/gcc15/distinfo new file mode 100644 index 000000000000..3b6b15e9e125 --- /dev/null +++ b/lang/gcc15/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1745940383 +SHA256 (gcc-15.1.0.tar.xz) = e2b09ec21660f01fecffb715e0120265216943f038d0e48a9868713e54f06cea +SIZE (gcc-15.1.0.tar.xz) = 98268344 diff --git a/lang/gcc15/files/patch-arm-unwind-cxx-support b/lang/gcc15/files/patch-arm-unwind-cxx-support new file mode 100644 index 000000000000..ec6959b9655c --- /dev/null +++ b/lang/gcc15/files/patch-arm-unwind-cxx-support @@ -0,0 +1,106 @@ +--- UTC +Index: gcc/ginclude/unwind-arm-common.h +=================================================================== +--- gcc/ginclude/unwind-arm-common.h (revision 219113) ++++ gcc/ginclude/unwind-arm-common.h (working copy) +@@ -82,7 +82,11 @@ + + struct _Unwind_Control_Block + { ++#ifdef __FreeBSD__ ++ unsigned exception_class __attribute__((__mode__(__DI__))); ++#else + char exception_class[8]; ++#endif + void (*exception_cleanup)(_Unwind_Reason_Code, _Unwind_Control_Block *); + /* Unwinder cache, private fields for the unwinder's use */ + struct +@@ -181,7 +185,11 @@ + + /* Support functions for the PR. */ + #define _Unwind_Exception _Unwind_Control_Block ++#ifdef __FreeBSD__ ++ typedef unsigned _Unwind_Exception_Class __attribute__((__mode__(__DI__))); ++#else + typedef char _Unwind_Exception_Class[8]; ++#endif + + void * _Unwind_GetLanguageSpecificData (_Unwind_Context *); + _Unwind_Ptr _Unwind_GetRegionStart (_Unwind_Context *); +Index: libstdc++-v3/libsupc++/unwind-cxx.h +=================================================================== +--- libstdc++-v3/libsupc++/unwind-cxx.h (revision 219147) ++++ libstdc++-v3/libsupc++/unwind-cxx.h (working copy) +@@ -235,7 +235,7 @@ + return reinterpret_cast<__cxa_dependent_exception *>(exc + 1) - 1; + } + +-#ifdef __ARM_EABI_UNWINDER__ ++#if defined(__ARM_EABI_UNWINDER__) && !defined(__FreeBSD__) + static inline bool + __is_gxx_exception_class(_Unwind_Exception_Class c) + { +@@ -309,13 +309,7 @@ + c[6] = 'R'; + c[7] = '\0'; + } +- +-static inline void* +-__gxx_caught_object(_Unwind_Exception* eo) +-{ +- return (void*)eo->barrier_cache.bitpattern[0]; +-} +-#else // !__ARM_EABI_UNWINDER__ ++#else // !__ARM_EABI_UNWINDER__ || __FreeBSD__ + // This is the primary exception class we report -- "GNUCC++\0". + const _Unwind_Exception_Class __gxx_primary_exception_class + = ((((((((_Unwind_Exception_Class) 'G' +@@ -339,6 +333,16 @@ + << 8 | (_Unwind_Exception_Class) '+') + << 8 | (_Unwind_Exception_Class) '\x01'); + ++const _Unwind_Exception_Class __gxx_forced_unwind_class ++= ((((((((_Unwind_Exception_Class) 'G' ++ << 8 | (_Unwind_Exception_Class) 'N') ++ << 8 | (_Unwind_Exception_Class) 'U') ++ << 8 | (_Unwind_Exception_Class) 'C') ++ << 8 | (_Unwind_Exception_Class) 'F') ++ << 8 | (_Unwind_Exception_Class) 'O') ++ << 8 | (_Unwind_Exception_Class) 'R') ++ << 8 | (_Unwind_Exception_Class) '\0'); ++ + static inline bool + __is_gxx_exception_class(_Unwind_Exception_Class c) + { +@@ -346,6 +350,12 @@ + || c == __gxx_dependent_exception_class; + } + ++static inline bool ++__is_gxx_forced_unwind_class(_Unwind_Exception_Class c) ++{ ++ return c == __gxx_forced_unwind_class; ++} ++ + // Only checks for primary or dependent, but not that it is a C++ exception at + // all. + static inline bool +@@ -357,7 +367,18 @@ + #define __GXX_INIT_PRIMARY_EXCEPTION_CLASS(c) c = __gxx_primary_exception_class + #define __GXX_INIT_DEPENDENT_EXCEPTION_CLASS(c) \ + c = __gxx_dependent_exception_class ++#define __GXX_INIT_FORCED_UNWIND_CLASS(c) c = __gxx_forced_unwind_class ++#endif // __ARM_EABI_UNWINDER__ && !__FreeBSD__ + ++#ifdef __ARM_EABI_UNWINDER__ ++static inline void* ++__gxx_caught_object(_Unwind_Exception* eo) ++{ ++ return (void*)eo->barrier_cache.bitpattern[0]; ++} ++ ++#else // !__ARM_EABI_UNWINDER__ ++ + // GNU C++ personality routine, Version 0. + extern "C" _Unwind_Reason_Code __gxx_personality_v0 + (int, _Unwind_Action, _Unwind_Exception_Class, diff --git a/lang/gcc15/files/patch-gcc_Makefile.in b/lang/gcc15/files/patch-gcc_Makefile.in new file mode 100644 index 000000000000..127c87b1af79 --- /dev/null +++ b/lang/gcc15/files/patch-gcc_Makefile.in @@ -0,0 +1,19 @@ +--- gcc/Makefile.in.orig 2024-02-25 22:32:27 UTC ++++ gcc/Makefile.in +@@ -671,6 +671,8 @@ libsubdir = $(libdir)/gcc/$(real_target_noncanonical)/ + + # Directory in which the compiler finds libraries etc. + libsubdir = $(libdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) ++# Directory in which the compiler finds headers. ++libsubincludedir = $(libdir)/gcc/$(target_alias)/$(version)/include + # Directory in which the compiler finds executables + libexecsubdir = $(libexecdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) + # Directory in which all plugin resources are installed +@@ -3821,6 +3823,7 @@ installdirs: + # $(libdir)/gcc/include isn't currently searched by cpp. + installdirs: + $(mkinstalldirs) $(DESTDIR)$(libsubdir) ++ $(mkinstalldirs) $(DESTDIR)$(libsubincludedir) + $(mkinstalldirs) $(DESTDIR)$(libexecsubdir) + $(mkinstalldirs) $(DESTDIR)$(bindir) + $(mkinstalldirs) $(DESTDIR)$(includedir) diff --git a/lang/gcc15/files/patch-gcc_configure b/lang/gcc15/files/patch-gcc_configure new file mode 100644 index 000000000000..cc60593ba6f7 --- /dev/null +++ b/lang/gcc15/files/patch-gcc_configure @@ -0,0 +1,22 @@ +Enable support for .init_array and .fini_array, which FreeBSD supports +since commit 83aa9cc00c2d83d05a0efe7a1496d8aab4a153bb in the src +repository. + +There __FreeBSD_version is 1000009, so we start enabling the support +from __FreeBSD_version == 1000010. +--- gcc/configure.orig 2023-05-11 22:33:34 UTC ++++ gcc/configure +@@ -24214,6 +24214,13 @@ EOF + #else + # if defined __sun__ && defined __svr4__ + /* Solaris ld.so.1 supports .init_array/.fini_array since Solaris 8. */ ++# elif defined __FreeBSD__ ++# include <sys/param.h> ++# if __FreeBSD_version >= 1000010 ++ /* FreeBSD supports .init_array/.fini_array since FreeBSD 10. */ ++# else ++# error The C library not known to support .init_array/.fini_array ++# endif + # else + # error The C library not known to support .init_array/.fini_array + # endif diff --git a/lang/gcc15/files/patch-gcc_jit_Make-lang.in b/lang/gcc15/files/patch-gcc_jit_Make-lang.in new file mode 100644 index 000000000000..d5fdd6103146 --- /dev/null +++ b/lang/gcc15/files/patch-gcc_jit_Make-lang.in @@ -0,0 +1,14 @@ +--- gcc/jit/Make-lang.in.orig 2024-02-25 22:32:31 UTC ++++ gcc/jit/Make-lang.in +@@ -360,9 +360,9 @@ jit.install-headers: installdirs + # Install hooks: + jit.install-headers: installdirs + $(INSTALL_DATA) $(srcdir)/jit/libgccjit.h \ +- $(DESTDIR)$(includedir)/libgccjit.h ++ $(DESTDIR)$(libsubincludedir)/libgccjit.h + $(INSTALL_DATA) $(srcdir)/jit/libgccjit++.h \ +- $(DESTDIR)$(includedir)/libgccjit++.h ++ $(DESTDIR)$(libsubincludedir)/libgccjit++.h + + ifneq (,$(findstring mingw,$(target))) + jit.install-common: installdirs jit.install-headers diff --git a/lang/gcc15/files/patch-gfortran-libgcc b/lang/gcc15/files/patch-gfortran-libgcc new file mode 100644 index 000000000000..4363c2e11f36 --- /dev/null +++ b/lang/gcc15/files/patch-gfortran-libgcc @@ -0,0 +1,69 @@ +GCC has two runtime libraries: The static library libgcc.a (-lgcc) and +the shared library libgcc_s.so (-lgcc_s). Both implement many of the +same functions but they also each have their unique functions. When +gcc links programs and libraries there are three possibilities: + +1. gcc -static-libgcc or gcc -static: -lgcc + => Just use libgcc.a. + +2. gcc -shared-libgcc: -lgcc_s -lgcc + => Link with libgcc_s first, so libgcc.a is only used for its unique + functions. + +3. gcc: -lgcc -Wl,--as-needed -lgcc_s -Wl,--no-as-needed + => Link with libgcc.a first so libgcc_s is only used for its unique + functions (_Unwind_* functions). + +Approach 3 is the default for gcc and it's also what clang and clang++ use; +approach 2 is the default for gfortran, g++ and probably other front ends. + +This patch makes 3 the default for gfortran. It significantly reduces +the use of libgcc_s. The _Unwind_* functions are also available in the +old base system libgcc_s which means this reduces the need for +-rpath /usr/local/lib/gccN in ports that depend on libraries built with +gfortran. Consider a dependency tree like this: + + prog -> libA -> libgcc_s (old base system libgcc_s is fine) + -> libB -> libgcc_s (libB built with gfortran, needs new libgcc_s) + +Here prog needs to be linked with -rpath /usr/local/lib/gccN even if it's +a normal C program compiled with clang. Without -rpath it will fail to +start because it loads old libgcc_s first as a dependency of libA and then +it fails to load libB. With this patch libB works with old base system +libgcc_s or may not need libgcc_s at all, so prog does not need to be +linked with -rpath. + +Upstream is unlikely accept a patch like this because libgfortran calls +some _Unwind_* functions and so always needs libgcc_s. Also because +every Fortran program and library links to libgfortran it makes sense +that option 2 above is the default. On FreeBSD where clang and GCC +compiled code can be mixed and where multiple libgcc_s may be installed, +option 3 is just a lot easier to deal with. + +The bug that sparked this is PR 208120 (but note there's a lot of +misleading information in that bug. CMake is not actually doing +anything wrong.) + +--- UTC +--- gcc/fortran/gfortranspec.cc.orig 2022-01-23 22:32:06.000000000 +0000 ++++ gcc/fortran/gfortranspec.cc 2022-02-06 08:56:31.018286000 +0000 +@@ -406,7 +406,7 @@ + } + } + +-#ifdef ENABLE_SHARED_LIBGCC ++#if 0 + if (library) + { + unsigned int i; +--- libgfortran/Makefile.in.orig ++++ libgfortran/Makefile.in +@@ -759,7 +759,7 @@ + $(LTLDFLAGS) $(LIBQUADLIB) ../libbacktrace/libbacktrace.la \ + $(HWCAP_LDFLAGS) \ + $(LIBM) $(extra_darwin_ldflags_libgfortran) \ +- $(version_arg) -Wc,-shared-libgcc ++ $(version_arg) + + libgfortran_la_DEPENDENCIES = $(version_dep) libgfortran.spec $(LIBQUADLIB_DEP) + cafexeclib_LTLIBRARIES = libcaf_single.la diff --git a/lang/gcc15/files/patch-libcxxrt b/lang/gcc15/files/patch-libcxxrt new file mode 100644 index 000000000000..4225df7aad1e --- /dev/null +++ b/lang/gcc15/files/patch-libcxxrt @@ -0,0 +1,18 @@ +libc++ on FreeBSD always uses PathScale libcxxrt and cannot change to +LLVM libc++abi without breaking backward compatibility. Besides, mixing +different C++ ABIs is not supported unless subset via DT_FILTER. + +https://github.com/llvm/llvm-project/commit/35479ffb1251 +https://github.com/freebsd/freebsd-src/commit/cf56074e5271 + +--- gcc/cp/g++spec.cc.orig 2022-07-31 22:32:16 UTC ++++ gcc/cp/g++spec.cc +@@ -60,7 +60,7 @@ along with GCC; see the file COPYING3. If not see + #endif + + #ifndef LIBCXXABI +-#define LIBCXXABI "c++abi" ++#define LIBCXXABI "cxxrt" + #endif + #ifndef LIBCXXABI_PROFILE + #define LIBCXXABI_PROFILE LIBCXXABI diff --git a/lang/gcc15/files/patch-libgcc_enable-execute-stack-mprotect.c b/lang/gcc15/files/patch-libgcc_enable-execute-stack-mprotect.c new file mode 100644 index 000000000000..4645f084fef0 --- /dev/null +++ b/lang/gcc15/files/patch-libgcc_enable-execute-stack-mprotect.c @@ -0,0 +1,15 @@ +--- libgcc/enable-execute-stack-mprotect.c.orig 2024-11-23 12:39:04 UTC ++++ libgcc/enable-execute-stack-mprotect.c +@@ -30,10 +30,11 @@ static int need_enable_exec_stack; + + static int need_enable_exec_stack; + +-static void check_enabling (void) __attribute__ ((unused)); + extern void __enable_execute_stack (void *); + + #if defined __sun__ && defined __svr4__ ++static void check_enabling (void) __attribute__ ((unused)); ++ + static void __attribute__ ((constructor)) + check_enabling (void) + { diff --git a/lang/gcc15/files/patch-libgcc_unwind.inc b/lang/gcc15/files/patch-libgcc_unwind.inc new file mode 100644 index 000000000000..94fb7f65d5fb --- /dev/null +++ b/lang/gcc15/files/patch-libgcc_unwind.inc @@ -0,0 +1,31 @@ +GCC generates instructions that require variables to be aligned in memory on +certain CPUs. Our libthr does not have the required alignment so these CPUs fail +to execute these instructions. The instructions generation is driven by CPUTYPE. +Some CPUs are fine to execute these instructions on unaligned data. + +This patch explicitly forbids GCC to generate instructions that require +alignment of the data. + +If the entire program is compiled by LLVM or GCC, there is no problem (with GCC +everything is aligned, with LLVM vmovdqa is not used to assign both variables +at once). + +Linux does not have libthr, so Linux is not affected. Moreover Linux is likely +to build everything with GCC. + +This patch will become obsolete once all supported FreeBSD releases +include commit 22e564c74eb20e14bd93fd9fdde20e38a29cfcf1. + +--- libgcc/unwind.inc.orig 2025-04-12 08:18:17 UTC ++++ libgcc/unwind.inc +@@ -212,8 +212,8 @@ _Unwind_ForcedUnwind (struct _Unwind_Exception *exc, + uw_init_context (&this_context); + cur_context = this_context; + +- exc->private_1 = (_Unwind_Ptr) stop; +- exc->private_2 = (_Unwind_Ptr) stop_argument; ++ __builtin_memcpy(&exc->private_1, &stop, sizeof(_Unwind_Ptr)); ++ __builtin_memcpy(&exc->private_2, &stop_argument, sizeof(_Unwind_Ptr)); + + code = _Unwind_ForcedUnwind_Phase2 (exc, &cur_context, &frames); + if (code != _URC_INSTALL_CONTEXT) diff --git a/lang/gcc15/files/patch-libsanitizer_asan_asan__linux.cpp b/lang/gcc15/files/patch-libsanitizer_asan_asan__linux.cpp new file mode 100644 index 000000000000..f6c16d8730ee --- /dev/null +++ b/lang/gcc15/files/patch-libsanitizer_asan_asan__linux.cpp @@ -0,0 +1,23 @@ +Since the vDSO shared librares on Linux and FreeBSD are called +differently, the initialization order check fails on FreeBSD. +This patch fixes it by ignoring [vdso] instead of linux-vdso.so. + +GCC gets the original file from the LLVM Project, so this patch should +probably be upstreamed directly to the LLVM Project rather than to GCC. + + +--- libsanitizer/asan/asan_linux.cpp.orig 2022-11-23 11:22:41 UTC ++++ libsanitizer/asan/asan_linux.cpp +@@ -148,6 +148,12 @@ static int FindFirstDSOCallback(struct dl_phdr_info *i + return 0; + # endif + ++# if SANITIZER_FREEBSD ++ // Ignore vDSO ++ if (internal_strncmp(info->dlpi_name, "[vdso]", sizeof("[vdso]") - 1) == 0) ++ return 0; ++# endif ++ + *name = info->dlpi_name; + return 1; + } diff --git a/lang/gcc15/files/patch-libsanitizer_asan_asan__thread.cpp b/lang/gcc15/files/patch-libsanitizer_asan_asan__thread.cpp new file mode 100644 index 000000000000..61c0ccf1cd89 --- /dev/null +++ b/lang/gcc15/files/patch-libsanitizer_asan_asan__thread.cpp @@ -0,0 +1,13 @@ +--- libsanitizer/asan/asan_thread.cpp.orig 2024-01-12 13:45:52 UTC ++++ libsanitizer/asan/asan_thread.cpp +@@ -323,7 +323,9 @@ void AsanThread::ClearShadowForThreadStackAndTLS() { + if (tls_begin_ != tls_end_) { + uptr tls_begin_aligned = RoundDownTo(tls_begin_, ASAN_SHADOW_GRANULARITY); + uptr tls_end_aligned = RoundUpTo(tls_end_, ASAN_SHADOW_GRANULARITY); +- FastPoisonShadow(tls_begin_aligned, tls_end_aligned - tls_begin_aligned, 0); ++ FastPoisonShadowPartialRightRedzone(tls_begin_aligned, ++ tls_end_ - tls_begin_aligned, ++ tls_end_aligned - tls_end_, 0); + } + } + diff --git a/lang/gcc15/files/pkg-message.in b/lang/gcc15/files/pkg-message.in new file mode 100644 index 000000000000..df3ea725ce59 --- /dev/null +++ b/lang/gcc15/files/pkg-message.in @@ -0,0 +1,13 @@ +[ +{ type: install + message: <<EOD +To ensure binaries built with this toolchain find appropriate versions +of the necessary run-time libraries, you may want to link using + + -Wl,-rpath=%%TARGLIB%% + +For ports leveraging USE_GCC, USES=compiler, or USES=fortran this happens +transparently. +EOD +} +] diff --git a/lang/gcc15/pkg-descr b/lang/gcc15/pkg-descr new file mode 100644 index 000000000000..656284b17cdd --- /dev/null +++ b/lang/gcc15/pkg-descr @@ -0,0 +1,3 @@ +GCC, the GNU Compiler Collection, supports a number of languages. +This port installs the C, C++, and Fortran front ends as gcc15, g++15, +and gfortran15, respectively. diff --git a/lang/gcc15/pkg-help b/lang/gcc15/pkg-help new file mode 100644 index 000000000000..9030bbb28d3f --- /dev/null +++ b/lang/gcc15/pkg-help @@ -0,0 +1,3 @@ +Building this port with LTO_BOOTSTRAP enabled requires significant amounts of +memory and time. Consider disabling LTO_BOOTSTRAP in favor of STANDARD_BOOTSTRAP +(or disabling BOOTSTRAP altogether) in case that is a problem. diff --git a/lang/gcc15/pkg-plist b/lang/gcc15/pkg-plist new file mode 100644 index 000000000000..8dcc98c6dd52 --- /dev/null +++ b/lang/gcc15/pkg-plist @@ -0,0 +1,36 @@ +bin/%%GNU_HOST%%-c++%%SUFFIX%% +bin/%%GNU_HOST%%-g++%%SUFFIX%% +bin/%%GNU_HOST%%-gcc%%SUFFIX%% +bin/%%GNU_HOST%%-gcc-%%GCC_VERSION%% +bin/%%GNU_HOST%%-gcc-ar%%SUFFIX%% +bin/%%GNU_HOST%%-gcc-nm%%SUFFIX%% +bin/%%GNU_HOST%%-gcc-ranlib%%SUFFIX%% +bin/%%GNU_HOST%%-gfortran%%SUFFIX%% +bin/c++%%SUFFIX%% +bin/cpp%%SUFFIX%% +bin/g++%%SUFFIX%% +bin/gcc%%SUFFIX%% +bin/gcc-ar%%SUFFIX%% +bin/gcc-nm%%SUFFIX%% +bin/gcc-ranlib%%SUFFIX%% +bin/gcov%%SUFFIX%% +bin/gcov-dump%%SUFFIX%% +bin/gcov-tool%%SUFFIX%% +bin/gfortran%%SUFFIX%% +bin/lto-dump%%SUFFIX%% +include/gcc%%SUFFIX%%/ISO_Fortran_binding.h +share/man/man1/cpp%%SUFFIX%%.1.gz +share/man/man1/g++%%SUFFIX%%.1.gz +share/man/man1/gcc%%SUFFIX%%.1.gz +share/man/man1/gcov%%SUFFIX%%.1.gz +share/man/man1/gcov-dump%%SUFFIX%%.1.gz +share/man/man1/gcov-tool%%SUFFIX%%.1.gz +share/man/man1/gfortran%%SUFFIX%%.1.gz +share/man/man1/lto-dump%%SUFFIX%%.1.gz +share/gcc-%%GCC_VERSION%%/python/libstdcxx/__init__.py +share/gcc-%%GCC_VERSION%%/python/libstdcxx/v6/__init__.py +share/gcc-%%GCC_VERSION%%/python/libstdcxx/v6/printers.py +share/gcc-%%GCC_VERSION%%/python/libstdcxx/v6/xmethods.py +@postexec if type ccache-update-links >/dev/null 2>&1; then ccache-update-links -v; fi +@postunexec if type ccache-update-links >/dev/null 2>&1; then ccache-update-links -v; fi +@comment Insert PLIST.lib here diff --git a/lang/gcc16-devel/Makefile b/lang/gcc16-devel/Makefile new file mode 100644 index 000000000000..a16af13a1f09 --- /dev/null +++ b/lang/gcc16-devel/Makefile @@ -0,0 +1,194 @@ +PORTNAME= gcc +PORTVERSION= 16.0.0.s20250427 +CATEGORIES= lang +MASTER_SITES= GCC/snapshots/${DIST_VERSION} +PKGNAMESUFFIX= ${SUFFIX}-devel +DISTNAME= gcc-${DIST_VERSION} + +MAINTAINER= salvadore@FreeBSD.org +COMMENT= GNU Compiler Collection 16 +WWW= https://gcc.gnu.org + +LICENSE= GPLv3 GPLv3RLE +LICENSE_COMB= multi + +ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386 powerpc powerpc64 powerpc64le + +LIB_DEPENDS= libgmp.so:math/gmp \ + libmpfr.so:math/mpfr \ + libmpc.so:math/mpc +BUILD_DEPENDS+= ${LOCALBASE}/bin/as:devel/binutils +RUN_DEPENDS+= ${LOCALBASE}/bin/as:devel/binutils +.if defined(MAINTAINER_MODE) +BUILD_DEPENDS+= runtest:misc/dejagnu +.endif + +USES= compiler:c++11-lang cpe gmake iconv libtool makeinfo perl5 tar:xz +USE_BINUTILS= yes +USE_PERL5= build + +CPE_VENDOR= gnu +CPE_VERSION= ${GCC_VERSION} + +# DIST_VERSION relates to downloads, GCC_VERSION and SUFFIX to names +# of executables and directories once installed. A PORTVERSION of +# Y.2.1.s20140817 results in values of Y-20140817, Y.2.1, and Y +# for these three. +DIST_VERSION= ${PORTVERSION:C/([0-9]+).*\.s([0-9]+)/\1-\2/} +GCC_VERSION= ${PORTVERSION:C/(.+)\.s[0-9]{8}/\1/} +SUFFIX= ${PORTVERSION:C/([0-9]+).*/\1/} +CFLAGS:= ${CFLAGS:N-mretpoline} -D__USE_ISOC11 +CXXFLAGS:= ${CXXFLAGS:N-mretpoline} + +OPTIONS_DEFINE= GRAPHITE +OPTIONS_DEFAULT_aarch64=STANDARD_BOOTSTRAP +OPTIONS_DEFAULT_armv6= STANDARD_BOOTSTRAP +OPTIONS_DEFAULT_armv7= STANDARD_BOOTSTRAP +OPTIONS_DEFAULT_amd64= STANDARD_BOOTSTRAP +OPTIONS_DEFAULT_i386= STANDARD_BOOTSTRAP +OPTIONS_DEFAULT_powerpc=LTO_BOOTSTRAP +OPTIONS_DEFAULT_powerpc64=LTO_BOOTSTRAP +OPTIONS_DEFAULT_powerpc64le=LTO_BOOTSTRAP +OPTIONS_SINGLE= BOOTSTRAP +OPTIONS_SINGLE_BOOTSTRAP= LTO_BOOTSTRAP STANDARD_BOOTSTRAP +LTO_BOOTSTRAP_DESC= Build using a full LTO bootstrap +STANDARD_BOOTSTRAP_DESC= Build using a full bootstrap without LTO +GRAPHITE_DESC= Support for Graphite loop optimizations + +.if exists(/usr/lib32/libc.so) +OPTIONS_DEFINE_amd64+= MULTILIB +OPTIONS_DEFAULT_amd64+= MULTILIB +OPTIONS_DEFINE_powerpc64+= MULTILIB +#OPTIONS_DEFAULT_powerpc64+= MULTILIB # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105010 +MULTILIB_DESC= Build support for 32-bit and 64-bit targets +MULTILIB_CONFIGURE_ENABLE= multilib +.else +CONFIGURE_ARGS+= --disable-multilib +.endif + +.if defined(CPUTYPE) && ${CPUTYPE:Mg[3-5]} +CFLAGS:= ${CFLAGS:S/mcpu=g/mcpu=G/} +CXXFLAGS:= ${CFLAGS:S/mcpu=g/mcpu=G/} +.endif + +GRAPHITE_LIB_DEPENDS= libisl.so:devel/isl +GRAPHITE_CONFIGURE_WITH+= isl + +.include <bsd.port.pre.mk> + +.if ${ARCH} == amd64 +CONFIGURE_TARGET= x86_64-portbld-${OPSYS:tl}${OSREL} + +.elif ${ARCH} == powerpc64 +CONFIGURE_ARGS+= --with-abi=elfv2 +USE_GCC= yes + +.elif ${ARCH} == powerpc64le +USE_GCC= yes +.endif + +.if ${ARCH} == i386 +LANGUAGES:= c,c++,objc,fortran +.else +LANGUAGES:= c,c++,objc,fortran,jit +.endif +TARGLIB= ${PREFIX}/lib/gcc${SUFFIX} +TARGLIB32= ${PREFIX}/lib32 # The version information is added later +LIBEXEC= ${PREFIX}/libexec/gcc${SUFFIX} +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +CONFIGURE_OUTSOURCE= yes +.if ${PORT_OPTIONS:MLTO_BOOTSTRAP} +CONFIGURE_ARGS+=--with-build-config=bootstrap-lto-noplugin +ALL_TARGET= bootstrap-lean +PIE_UNSAFE= yes +.else +CONFIGURE_ARGS+=--with-build-config=bootstrap-debug +ALL_TARGET= bootstrap-lean +PIE_UNSAFE= yes +.endif +INSTALL_TARGET= install-strip +.if ${UID} != 0 +BINMODE= 755 +.endif +CONFIGURE_ARGS+=--disable-nls \ + --disable-libssp \ + --enable-gnu-indirect-function \ + --enable-host-shared \ + --enable-plugin \ + --libdir=${TARGLIB} \ + --libexecdir=${LIBEXEC} \ + --program-suffix=${SUFFIX} \ + --with-as=${LOCALBASE}/bin/as \ + --with-gmp=${LOCALBASE} \ + --with-gxx-include-dir=${TARGLIB}/include/c++/ \ + --with-gxx-libcxx-include-dir=/usr/include/c++/v1 \ + --with-ld=${LOCALBASE}/bin/ld \ + ${ICONV_CONFIGURE_ARG} \ + --with-pkgversion="FreeBSD Ports Collection" \ + --with-system-zlib \ + --without-zstd +MAKE_ARGS+= MAKEINFOFLAGS="--no-split" +USE_LDCONFIG= ${TARGLIB} +PLIST_SUB+= GCC_VERSION=${GCC_VERSION} \ + GNU_HOST=${CONFIGURE_TARGET} \ + SUFFIX=${SUFFIX} +INFO= gcc${SUFFIX}/cpp \ + gcc${SUFFIX}/cppinternals \ + gcc${SUFFIX}/gcc \ + gcc${SUFFIX}/gccinstall \ + gcc${SUFFIX}/gccint \ + gcc${SUFFIX}/gfortran \ + gcc${SUFFIX}/libgccjit \ + gcc${SUFFIX}/libgomp +.if ${ARCH} == amd64 || ${ARCH} == i386 +INFO+= gcc${SUFFIX}/libquadmath +.endif +.if ${ARCH} == amd64 || ${ARCH} == i386 || ${ARCH} == aarch64 || ${ARCH:Marmv?} +INFO+= gcc${SUFFIX}/libitm +.endif +SUB_FILES= pkg-message +SUB_LIST+= TARGLIB=${TARGLIB} + +CONFIGURE_ARGS+=--enable-languages=${LANGUAGES} + +.if (${ARCH} == amd64 || ${ARCH} == powerpc64) && ${PORT_OPTIONS:MMULTILIB} +USE_LDCONFIG32= ${TARGLIB32}/gcc${SUFFIX} +.endif + +pre-everything:: + @${ECHO_MSG} "Making GCC ${PORTVERSION} for ${CONFIGURE_TARGET} [${LANGUAGES}]" + +pre-configure: + cd ${WRKSRC} ; contrib/gcc_update --touch + @${RM} ${WRKSRC}/gcc/*/*.info* + +.if defined(MAINTAINER_MODE) +full-regression-test: build + cd ${TEST_WRKSRC}; ${MAKE_CMD} -sk check \ + ; ${WRKSRC}/contrib/test_summary +.endif + +post-stage: + ${RM} ${STAGEDIR}${PREFIX}/share/man/man7/* + ${RM} -r ${STAGEDIR}${TARGLIB}/gcc/*/${GCC_VERSION}/include-fixed/ + # Install ISO_Fortran_binding.h in an easily findable directory + ${MKDIR} ${STAGEDIR}${PREFIX}/include/gcc${SUFFIX} + ${INSTALL_DATA} ${STAGEDIR}${PREFIX}/lib/gcc${SUFFIX}/gcc/${CONFIGURE_TARGET}/${GCC_VERSION}/include/ISO_Fortran_binding.h \ + ${STAGEDIR}${PREFIX}/include/gcc${SUFFIX} + # Add target libraries and include files to packaging list. + ${RM} ${WRKDIR}/PLIST.lib + +.if (${ARCH} == amd64 || ${ARCH} == powerpc64) && ${PORT_OPTIONS:MMULTILIB} + ${MKDIR} ${STAGEDIR}${TARGLIB32} + ${MV} ${STAGEDIR}${PREFIX}/lib/lib32 ${STAGEDIR}${TARGLIB32}/gcc${SUFFIX} +.endif + +.for d in ${TARGLIB:S/^${PREFIX}\///} ${TARGLIB32:S/^${PREFIX}\///} ${LIBEXEC:S/^${PREFIX}\///} + cd ${STAGEDIR}${PREFIX} ; if [ -d $d ]; then \ + ${FIND} $d -type f -o -type l >>${WRKDIR}/PLIST.lib ;\ + fi +.endfor + cd ${WRKDIR} ; ${SED} -i -e "/PLIST.lib/ r PLIST.lib" ${TMPPLIST} + +.include <bsd.port.post.mk> diff --git a/lang/gcc16-devel/distinfo b/lang/gcc16-devel/distinfo new file mode 100644 index 000000000000..6fcbe70fb548 --- /dev/null +++ b/lang/gcc16-devel/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1745932552 +SHA256 (gcc-16-20250427.tar.xz) = 545b46c123dcc303c2bcd319ceda174733c30cd4574f8ed732f582c3aba7af5e +SIZE (gcc-16-20250427.tar.xz) = 92158556 diff --git a/lang/gcc16-devel/files/patch-arm-unwind-cxx-support b/lang/gcc16-devel/files/patch-arm-unwind-cxx-support new file mode 100644 index 000000000000..ec6959b9655c --- /dev/null +++ b/lang/gcc16-devel/files/patch-arm-unwind-cxx-support @@ -0,0 +1,106 @@ +--- UTC +Index: gcc/ginclude/unwind-arm-common.h +=================================================================== +--- gcc/ginclude/unwind-arm-common.h (revision 219113) ++++ gcc/ginclude/unwind-arm-common.h (working copy) +@@ -82,7 +82,11 @@ + + struct _Unwind_Control_Block + { ++#ifdef __FreeBSD__ ++ unsigned exception_class __attribute__((__mode__(__DI__))); ++#else + char exception_class[8]; ++#endif + void (*exception_cleanup)(_Unwind_Reason_Code, _Unwind_Control_Block *); + /* Unwinder cache, private fields for the unwinder's use */ + struct +@@ -181,7 +185,11 @@ + + /* Support functions for the PR. */ + #define _Unwind_Exception _Unwind_Control_Block ++#ifdef __FreeBSD__ ++ typedef unsigned _Unwind_Exception_Class __attribute__((__mode__(__DI__))); ++#else + typedef char _Unwind_Exception_Class[8]; ++#endif + + void * _Unwind_GetLanguageSpecificData (_Unwind_Context *); + _Unwind_Ptr _Unwind_GetRegionStart (_Unwind_Context *); +Index: libstdc++-v3/libsupc++/unwind-cxx.h +=================================================================== +--- libstdc++-v3/libsupc++/unwind-cxx.h (revision 219147) ++++ libstdc++-v3/libsupc++/unwind-cxx.h (working copy) +@@ -235,7 +235,7 @@ + return reinterpret_cast<__cxa_dependent_exception *>(exc + 1) - 1; + } + +-#ifdef __ARM_EABI_UNWINDER__ ++#if defined(__ARM_EABI_UNWINDER__) && !defined(__FreeBSD__) + static inline bool + __is_gxx_exception_class(_Unwind_Exception_Class c) + { +@@ -309,13 +309,7 @@ + c[6] = 'R'; + c[7] = '\0'; + } +- +-static inline void* +-__gxx_caught_object(_Unwind_Exception* eo) +-{ +- return (void*)eo->barrier_cache.bitpattern[0]; +-} +-#else // !__ARM_EABI_UNWINDER__ ++#else // !__ARM_EABI_UNWINDER__ || __FreeBSD__ + // This is the primary exception class we report -- "GNUCC++\0". + const _Unwind_Exception_Class __gxx_primary_exception_class + = ((((((((_Unwind_Exception_Class) 'G' +@@ -339,6 +333,16 @@ + << 8 | (_Unwind_Exception_Class) '+') + << 8 | (_Unwind_Exception_Class) '\x01'); + ++const _Unwind_Exception_Class __gxx_forced_unwind_class ++= ((((((((_Unwind_Exception_Class) 'G' ++ << 8 | (_Unwind_Exception_Class) 'N') ++ << 8 | (_Unwind_Exception_Class) 'U') ++ << 8 | (_Unwind_Exception_Class) 'C') ++ << 8 | (_Unwind_Exception_Class) 'F') ++ << 8 | (_Unwind_Exception_Class) 'O') ++ << 8 | (_Unwind_Exception_Class) 'R') ++ << 8 | (_Unwind_Exception_Class) '\0'); ++ + static inline bool + __is_gxx_exception_class(_Unwind_Exception_Class c) + { +@@ -346,6 +350,12 @@ + || c == __gxx_dependent_exception_class; + } + ++static inline bool ++__is_gxx_forced_unwind_class(_Unwind_Exception_Class c) ++{ ++ return c == __gxx_forced_unwind_class; ++} ++ + // Only checks for primary or dependent, but not that it is a C++ exception at + // all. + static inline bool +@@ -357,7 +367,18 @@ + #define __GXX_INIT_PRIMARY_EXCEPTION_CLASS(c) c = __gxx_primary_exception_class + #define __GXX_INIT_DEPENDENT_EXCEPTION_CLASS(c) \ + c = __gxx_dependent_exception_class ++#define __GXX_INIT_FORCED_UNWIND_CLASS(c) c = __gxx_forced_unwind_class ++#endif // __ARM_EABI_UNWINDER__ && !__FreeBSD__ + ++#ifdef __ARM_EABI_UNWINDER__ ++static inline void* ++__gxx_caught_object(_Unwind_Exception* eo) ++{ ++ return (void*)eo->barrier_cache.bitpattern[0]; ++} ++ ++#else // !__ARM_EABI_UNWINDER__ ++ + // GNU C++ personality routine, Version 0. + extern "C" _Unwind_Reason_Code __gxx_personality_v0 + (int, _Unwind_Action, _Unwind_Exception_Class, diff --git a/lang/gcc16-devel/files/patch-gcc_Makefile.in b/lang/gcc16-devel/files/patch-gcc_Makefile.in new file mode 100644 index 000000000000..127c87b1af79 --- /dev/null +++ b/lang/gcc16-devel/files/patch-gcc_Makefile.in @@ -0,0 +1,19 @@ +--- gcc/Makefile.in.orig 2024-02-25 22:32:27 UTC ++++ gcc/Makefile.in +@@ -671,6 +671,8 @@ libsubdir = $(libdir)/gcc/$(real_target_noncanonical)/ + + # Directory in which the compiler finds libraries etc. + libsubdir = $(libdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) ++# Directory in which the compiler finds headers. ++libsubincludedir = $(libdir)/gcc/$(target_alias)/$(version)/include + # Directory in which the compiler finds executables + libexecsubdir = $(libexecdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) + # Directory in which all plugin resources are installed +@@ -3821,6 +3823,7 @@ installdirs: + # $(libdir)/gcc/include isn't currently searched by cpp. + installdirs: + $(mkinstalldirs) $(DESTDIR)$(libsubdir) ++ $(mkinstalldirs) $(DESTDIR)$(libsubincludedir) + $(mkinstalldirs) $(DESTDIR)$(libexecsubdir) + $(mkinstalldirs) $(DESTDIR)$(bindir) + $(mkinstalldirs) $(DESTDIR)$(includedir) diff --git a/lang/gcc16-devel/files/patch-gcc_configure b/lang/gcc16-devel/files/patch-gcc_configure new file mode 100644 index 000000000000..cc60593ba6f7 --- /dev/null +++ b/lang/gcc16-devel/files/patch-gcc_configure @@ -0,0 +1,22 @@ +Enable support for .init_array and .fini_array, which FreeBSD supports +since commit 83aa9cc00c2d83d05a0efe7a1496d8aab4a153bb in the src +repository. + +There __FreeBSD_version is 1000009, so we start enabling the support +from __FreeBSD_version == 1000010. +--- gcc/configure.orig 2023-05-11 22:33:34 UTC ++++ gcc/configure +@@ -24214,6 +24214,13 @@ EOF + #else + # if defined __sun__ && defined __svr4__ + /* Solaris ld.so.1 supports .init_array/.fini_array since Solaris 8. */ ++# elif defined __FreeBSD__ ++# include <sys/param.h> ++# if __FreeBSD_version >= 1000010 ++ /* FreeBSD supports .init_array/.fini_array since FreeBSD 10. */ ++# else ++# error The C library not known to support .init_array/.fini_array ++# endif + # else + # error The C library not known to support .init_array/.fini_array + # endif diff --git a/lang/gcc16-devel/files/patch-gcc_jit_Make-lang.in b/lang/gcc16-devel/files/patch-gcc_jit_Make-lang.in new file mode 100644 index 000000000000..d5fdd6103146 --- /dev/null +++ b/lang/gcc16-devel/files/patch-gcc_jit_Make-lang.in @@ -0,0 +1,14 @@ +--- gcc/jit/Make-lang.in.orig 2024-02-25 22:32:31 UTC ++++ gcc/jit/Make-lang.in +@@ -360,9 +360,9 @@ jit.install-headers: installdirs + # Install hooks: + jit.install-headers: installdirs + $(INSTALL_DATA) $(srcdir)/jit/libgccjit.h \ +- $(DESTDIR)$(includedir)/libgccjit.h ++ $(DESTDIR)$(libsubincludedir)/libgccjit.h + $(INSTALL_DATA) $(srcdir)/jit/libgccjit++.h \ +- $(DESTDIR)$(includedir)/libgccjit++.h ++ $(DESTDIR)$(libsubincludedir)/libgccjit++.h + + ifneq (,$(findstring mingw,$(target))) + jit.install-common: installdirs jit.install-headers diff --git a/lang/gcc16-devel/files/patch-gfortran-libgcc b/lang/gcc16-devel/files/patch-gfortran-libgcc new file mode 100644 index 000000000000..4363c2e11f36 --- /dev/null +++ b/lang/gcc16-devel/files/patch-gfortran-libgcc @@ -0,0 +1,69 @@ +GCC has two runtime libraries: The static library libgcc.a (-lgcc) and +the shared library libgcc_s.so (-lgcc_s). Both implement many of the +same functions but they also each have their unique functions. When +gcc links programs and libraries there are three possibilities: + +1. gcc -static-libgcc or gcc -static: -lgcc + => Just use libgcc.a. + +2. gcc -shared-libgcc: -lgcc_s -lgcc + => Link with libgcc_s first, so libgcc.a is only used for its unique + functions. + +3. gcc: -lgcc -Wl,--as-needed -lgcc_s -Wl,--no-as-needed + => Link with libgcc.a first so libgcc_s is only used for its unique + functions (_Unwind_* functions). + +Approach 3 is the default for gcc and it's also what clang and clang++ use; +approach 2 is the default for gfortran, g++ and probably other front ends. + +This patch makes 3 the default for gfortran. It significantly reduces +the use of libgcc_s. The _Unwind_* functions are also available in the +old base system libgcc_s which means this reduces the need for +-rpath /usr/local/lib/gccN in ports that depend on libraries built with +gfortran. Consider a dependency tree like this: + + prog -> libA -> libgcc_s (old base system libgcc_s is fine) + -> libB -> libgcc_s (libB built with gfortran, needs new libgcc_s) + +Here prog needs to be linked with -rpath /usr/local/lib/gccN even if it's +a normal C program compiled with clang. Without -rpath it will fail to +start because it loads old libgcc_s first as a dependency of libA and then +it fails to load libB. With this patch libB works with old base system +libgcc_s or may not need libgcc_s at all, so prog does not need to be +linked with -rpath. + +Upstream is unlikely accept a patch like this because libgfortran calls +some _Unwind_* functions and so always needs libgcc_s. Also because +every Fortran program and library links to libgfortran it makes sense +that option 2 above is the default. On FreeBSD where clang and GCC +compiled code can be mixed and where multiple libgcc_s may be installed, +option 3 is just a lot easier to deal with. + +The bug that sparked this is PR 208120 (but note there's a lot of +misleading information in that bug. CMake is not actually doing +anything wrong.) + +--- UTC +--- gcc/fortran/gfortranspec.cc.orig 2022-01-23 22:32:06.000000000 +0000 ++++ gcc/fortran/gfortranspec.cc 2022-02-06 08:56:31.018286000 +0000 +@@ -406,7 +406,7 @@ + } + } + +-#ifdef ENABLE_SHARED_LIBGCC ++#if 0 + if (library) + { + unsigned int i; +--- libgfortran/Makefile.in.orig ++++ libgfortran/Makefile.in +@@ -759,7 +759,7 @@ + $(LTLDFLAGS) $(LIBQUADLIB) ../libbacktrace/libbacktrace.la \ + $(HWCAP_LDFLAGS) \ + $(LIBM) $(extra_darwin_ldflags_libgfortran) \ +- $(version_arg) -Wc,-shared-libgcc ++ $(version_arg) + + libgfortran_la_DEPENDENCIES = $(version_dep) libgfortran.spec $(LIBQUADLIB_DEP) + cafexeclib_LTLIBRARIES = libcaf_single.la diff --git a/lang/gcc16-devel/files/patch-libcxxrt b/lang/gcc16-devel/files/patch-libcxxrt new file mode 100644 index 000000000000..4225df7aad1e --- /dev/null +++ b/lang/gcc16-devel/files/patch-libcxxrt @@ -0,0 +1,18 @@ +libc++ on FreeBSD always uses PathScale libcxxrt and cannot change to +LLVM libc++abi without breaking backward compatibility. Besides, mixing +different C++ ABIs is not supported unless subset via DT_FILTER. + +https://github.com/llvm/llvm-project/commit/35479ffb1251 +https://github.com/freebsd/freebsd-src/commit/cf56074e5271 + +--- gcc/cp/g++spec.cc.orig 2022-07-31 22:32:16 UTC ++++ gcc/cp/g++spec.cc +@@ -60,7 +60,7 @@ along with GCC; see the file COPYING3. If not see + #endif + + #ifndef LIBCXXABI +-#define LIBCXXABI "c++abi" ++#define LIBCXXABI "cxxrt" + #endif + #ifndef LIBCXXABI_PROFILE + #define LIBCXXABI_PROFILE LIBCXXABI diff --git a/lang/gcc16-devel/files/patch-libgcc_enable-execute-stack-mprotect.c b/lang/gcc16-devel/files/patch-libgcc_enable-execute-stack-mprotect.c new file mode 100644 index 000000000000..4645f084fef0 --- /dev/null +++ b/lang/gcc16-devel/files/patch-libgcc_enable-execute-stack-mprotect.c @@ -0,0 +1,15 @@ +--- libgcc/enable-execute-stack-mprotect.c.orig 2024-11-23 12:39:04 UTC ++++ libgcc/enable-execute-stack-mprotect.c +@@ -30,10 +30,11 @@ static int need_enable_exec_stack; + + static int need_enable_exec_stack; + +-static void check_enabling (void) __attribute__ ((unused)); + extern void __enable_execute_stack (void *); + + #if defined __sun__ && defined __svr4__ ++static void check_enabling (void) __attribute__ ((unused)); ++ + static void __attribute__ ((constructor)) + check_enabling (void) + { diff --git a/lang/gcc16-devel/files/patch-libgcc_unwind.inc b/lang/gcc16-devel/files/patch-libgcc_unwind.inc new file mode 100644 index 000000000000..94fb7f65d5fb --- /dev/null +++ b/lang/gcc16-devel/files/patch-libgcc_unwind.inc @@ -0,0 +1,31 @@ +GCC generates instructions that require variables to be aligned in memory on +certain CPUs. Our libthr does not have the required alignment so these CPUs fail +to execute these instructions. The instructions generation is driven by CPUTYPE. +Some CPUs are fine to execute these instructions on unaligned data. + +This patch explicitly forbids GCC to generate instructions that require +alignment of the data. + +If the entire program is compiled by LLVM or GCC, there is no problem (with GCC +everything is aligned, with LLVM vmovdqa is not used to assign both variables +at once). + +Linux does not have libthr, so Linux is not affected. Moreover Linux is likely +to build everything with GCC. + +This patch will become obsolete once all supported FreeBSD releases +include commit 22e564c74eb20e14bd93fd9fdde20e38a29cfcf1. + +--- libgcc/unwind.inc.orig 2025-04-12 08:18:17 UTC ++++ libgcc/unwind.inc +@@ -212,8 +212,8 @@ _Unwind_ForcedUnwind (struct _Unwind_Exception *exc, + uw_init_context (&this_context); + cur_context = this_context; + +- exc->private_1 = (_Unwind_Ptr) stop; +- exc->private_2 = (_Unwind_Ptr) stop_argument; ++ __builtin_memcpy(&exc->private_1, &stop, sizeof(_Unwind_Ptr)); ++ __builtin_memcpy(&exc->private_2, &stop_argument, sizeof(_Unwind_Ptr)); + + code = _Unwind_ForcedUnwind_Phase2 (exc, &cur_context, &frames); + if (code != _URC_INSTALL_CONTEXT) diff --git a/lang/gcc16-devel/files/patch-libsanitizer_asan_asan__linux.cpp b/lang/gcc16-devel/files/patch-libsanitizer_asan_asan__linux.cpp new file mode 100644 index 000000000000..f6c16d8730ee --- /dev/null +++ b/lang/gcc16-devel/files/patch-libsanitizer_asan_asan__linux.cpp @@ -0,0 +1,23 @@ +Since the vDSO shared librares on Linux and FreeBSD are called +differently, the initialization order check fails on FreeBSD. +This patch fixes it by ignoring [vdso] instead of linux-vdso.so. + +GCC gets the original file from the LLVM Project, so this patch should +probably be upstreamed directly to the LLVM Project rather than to GCC. + + +--- libsanitizer/asan/asan_linux.cpp.orig 2022-11-23 11:22:41 UTC ++++ libsanitizer/asan/asan_linux.cpp +@@ -148,6 +148,12 @@ static int FindFirstDSOCallback(struct dl_phdr_info *i + return 0; + # endif + ++# if SANITIZER_FREEBSD ++ // Ignore vDSO ++ if (internal_strncmp(info->dlpi_name, "[vdso]", sizeof("[vdso]") - 1) == 0) ++ return 0; ++# endif ++ + *name = info->dlpi_name; + return 1; + } diff --git a/lang/gcc16-devel/files/patch-libsanitizer_asan_asan__thread.cpp b/lang/gcc16-devel/files/patch-libsanitizer_asan_asan__thread.cpp new file mode 100644 index 000000000000..61c0ccf1cd89 --- /dev/null +++ b/lang/gcc16-devel/files/patch-libsanitizer_asan_asan__thread.cpp @@ -0,0 +1,13 @@ +--- libsanitizer/asan/asan_thread.cpp.orig 2024-01-12 13:45:52 UTC ++++ libsanitizer/asan/asan_thread.cpp +@@ -323,7 +323,9 @@ void AsanThread::ClearShadowForThreadStackAndTLS() { + if (tls_begin_ != tls_end_) { + uptr tls_begin_aligned = RoundDownTo(tls_begin_, ASAN_SHADOW_GRANULARITY); + uptr tls_end_aligned = RoundUpTo(tls_end_, ASAN_SHADOW_GRANULARITY); +- FastPoisonShadow(tls_begin_aligned, tls_end_aligned - tls_begin_aligned, 0); ++ FastPoisonShadowPartialRightRedzone(tls_begin_aligned, ++ tls_end_ - tls_begin_aligned, ++ tls_end_aligned - tls_end_, 0); + } + } + diff --git a/lang/gcc16-devel/files/pkg-message.in b/lang/gcc16-devel/files/pkg-message.in new file mode 100644 index 000000000000..df3ea725ce59 --- /dev/null +++ b/lang/gcc16-devel/files/pkg-message.in @@ -0,0 +1,13 @@ +[ +{ type: install + message: <<EOD +To ensure binaries built with this toolchain find appropriate versions +of the necessary run-time libraries, you may want to link using + + -Wl,-rpath=%%TARGLIB%% + +For ports leveraging USE_GCC, USES=compiler, or USES=fortran this happens +transparently. +EOD +} +] diff --git a/lang/gcc16-devel/pkg-descr b/lang/gcc16-devel/pkg-descr new file mode 100644 index 000000000000..ef9ec53c6ab2 --- /dev/null +++ b/lang/gcc16-devel/pkg-descr @@ -0,0 +1,3 @@ +GCC, the GNU Compiler Collection, supports a number of languages. +This port installs the C, C++, and Fortran front ends as gcc16, g++16, +and gfortran16, respectively. diff --git a/lang/gcc16-devel/pkg-help b/lang/gcc16-devel/pkg-help new file mode 100644 index 000000000000..9030bbb28d3f --- /dev/null +++ b/lang/gcc16-devel/pkg-help @@ -0,0 +1,3 @@ +Building this port with LTO_BOOTSTRAP enabled requires significant amounts of +memory and time. Consider disabling LTO_BOOTSTRAP in favor of STANDARD_BOOTSTRAP +(or disabling BOOTSTRAP altogether) in case that is a problem. diff --git a/lang/gcc16-devel/pkg-plist b/lang/gcc16-devel/pkg-plist new file mode 100644 index 000000000000..8dcc98c6dd52 --- /dev/null +++ b/lang/gcc16-devel/pkg-plist @@ -0,0 +1,36 @@ +bin/%%GNU_HOST%%-c++%%SUFFIX%% +bin/%%GNU_HOST%%-g++%%SUFFIX%% +bin/%%GNU_HOST%%-gcc%%SUFFIX%% +bin/%%GNU_HOST%%-gcc-%%GCC_VERSION%% +bin/%%GNU_HOST%%-gcc-ar%%SUFFIX%% +bin/%%GNU_HOST%%-gcc-nm%%SUFFIX%% +bin/%%GNU_HOST%%-gcc-ranlib%%SUFFIX%% +bin/%%GNU_HOST%%-gfortran%%SUFFIX%% +bin/c++%%SUFFIX%% +bin/cpp%%SUFFIX%% +bin/g++%%SUFFIX%% +bin/gcc%%SUFFIX%% +bin/gcc-ar%%SUFFIX%% +bin/gcc-nm%%SUFFIX%% +bin/gcc-ranlib%%SUFFIX%% +bin/gcov%%SUFFIX%% +bin/gcov-dump%%SUFFIX%% +bin/gcov-tool%%SUFFIX%% +bin/gfortran%%SUFFIX%% +bin/lto-dump%%SUFFIX%% +include/gcc%%SUFFIX%%/ISO_Fortran_binding.h +share/man/man1/cpp%%SUFFIX%%.1.gz +share/man/man1/g++%%SUFFIX%%.1.gz +share/man/man1/gcc%%SUFFIX%%.1.gz +share/man/man1/gcov%%SUFFIX%%.1.gz +share/man/man1/gcov-dump%%SUFFIX%%.1.gz +share/man/man1/gcov-tool%%SUFFIX%%.1.gz +share/man/man1/gfortran%%SUFFIX%%.1.gz +share/man/man1/lto-dump%%SUFFIX%%.1.gz +share/gcc-%%GCC_VERSION%%/python/libstdcxx/__init__.py +share/gcc-%%GCC_VERSION%%/python/libstdcxx/v6/__init__.py +share/gcc-%%GCC_VERSION%%/python/libstdcxx/v6/printers.py +share/gcc-%%GCC_VERSION%%/python/libstdcxx/v6/xmethods.py +@postexec if type ccache-update-links >/dev/null 2>&1; then ccache-update-links -v; fi +@postunexec if type ccache-update-links >/dev/null 2>&1; then ccache-update-links -v; fi +@comment Insert PLIST.lib here diff --git a/lang/ghc/Makefile b/lang/ghc/Makefile index 5b61a79f7de4..b3f995dd1052 100644 --- a/lang/ghc/Makefile +++ b/lang/ghc/Makefile @@ -1,6 +1,6 @@ PORTNAME= ghc PORTVERSION= ${GHC_VERSION} -PORTREVISION?= 2 +PORTREVISION?= 0 CATEGORIES= lang haskell MASTER_SITES= https://www.haskell.org/ghc/dist/${PORTVERSION}/:source \ LOCAL/arrowd/:boot @@ -75,21 +75,21 @@ GMP_VARS_OFF= hadrian_gmp_arg=--bignum=native PROFILE_VARS= enable_profile=YES hadrian_setting_profile=True PROFILE_VARS_OFF= enable_profile=NO hadrian_setting_profile=False -GHC_VERSION?= 9.6.6 +GHC_VERSION?= 9.6.7 LLVM_VERSION?= 15 BOOT_GHC_VERSION?= 9.2.8 # LLVM version that bootstrap compiler uses BOOT_LLVM_VERSION?= 12 -BASE_PACKAGES?= Cabal-3.10.3.0 array-0.5.6.0 base-4.18.2.1 binary-0.8.9.1 \ - bytestring-0.11.5.3 containers-0.6.7 deepseq-1.4.8.1 \ - directory-1.3.8.5 exceptions-0.10.7 filepath-1.4.300.1 \ +BASE_PACKAGES?= Cabal-3.10.3.0 array-0.5.8.0 base-4.18.3.0 binary-0.8.9.1 \ + bytestring-0.11.5.4 containers-0.6.7 deepseq-1.4.8.1 \ + directory-1.3.8.5 exceptions-0.10.7 filepath-1.4.301.0 \ ghc-${GHC_VERSION} ghc-bignum-1.3 ghc-compact-0.1.0.0 \ ghc-prim-0.10.0 haskeline-0.8.2.1 hpc-0.6.2.0 \ integer-gmp-1.1 mtl-2.3.1 parsec-3.1.16.1 pretty-1.1.3.6 \ process-1.6.19.0 stm-2.5.1.0 template-haskell-2.20.0.0 \ terminfo-0.4.1.6 text-2.0.2 time-1.12.2 \ - transformers-0.6.1.0 unix-2.8.4.0 xhtml-3000.2.2.1 + transformers-0.6.1.0 unix-2.8.6.0 xhtml-3000.2.2.1 .for pkg in ${BASE_PACKAGES} PLIST_SUB+= ${pkg:C/-([0-9.])+//:tu}_VERSION=${pkg:C/^([^\.]*-)+//} @@ -260,10 +260,6 @@ RUNHASKELL?= ${BOOT_INSTALL_DIR}/bin/runhaskell RUNHASKELL?= ${LOCALBASE}/bin/runhaskell .endif -.PHONY: fixup-plist -fixup-plist: - ${RUNHASKELL} ${PATCHDIR}/fixup-plist.hs ${.CURDIR}/pkg-plist - # Create a bootstrap compiler tar ball: run this in an interactive poudriere jail # Set all OPTIONS to OFF when generating bootstraps .PHONY: create-bootstrap diff --git a/lang/ghc/distinfo b/lang/ghc/distinfo index f15f3bc36ba3..1bf8de21de8b 100644 --- a/lang/ghc/distinfo +++ b/lang/ghc/distinfo @@ -1,14 +1,14 @@ -TIMESTAMP = 1720354511 -SHA256 (ghc-9.6.6-src.tar.xz) = 008f7a04d89ad10baae6486c96645d7d726aaac7e1476199f6dd86c6bd9977ad -SIZE (ghc-9.6.6-src.tar.xz) = 29443464 +TIMESTAMP = 1746281969 +SHA256 (ghc-9.6.7-src.tar.xz) = d053bf6ce1d588a75cfe8c9316269486e9d8fb89dcdf6fd92836fa2e3df61305 +SIZE (ghc-9.6.7-src.tar.xz) = 31770824 SHA256 (ghc-9.4.8-src.tar.xz) = 0bf407eb67fe3e3c24b0f4c8dea8cb63e07f63ca0f76cf2058565143507ab85e SIZE (ghc-9.4.8-src.tar.xz) = 28655220 SHA256 (ghc-9.2.8-src.tar.xz) = 5f13d1786bf4fd12f4b45faa37abedb5bb3f36d5e58f7da5307e8bfe88a567a1 SIZE (ghc-9.2.8-src.tar.xz) = 24661260 SHA256 (ghc-8.10.7-src.tar.xz) = e3eef6229ce9908dfe1ea41436befb0455fefb1932559e860ad4c606b0d03c9d SIZE (ghc-8.10.7-src.tar.xz) = 19932668 -SHA256 (hadrian-9.6.6-boot.tar.gz) = a5a7e6721d693c0e004fecff5745e47b2ec0c703b8378ccc5144e20a76049f95 -SIZE (hadrian-9.6.6-boot.tar.gz) = 1495606 +SHA256 (hadrian-9.6.7-boot.tar.gz) = f81dc59b4aef59c62c645da7be0b1fb8720aba338c80004963a99bc1219d3a05 +SIZE (hadrian-9.6.7-boot.tar.gz) = 1495514 SHA256 (hadrian-9.4.8-boot.tar.gz) = 5eb060655686921b086645dcbdd6268f09bc66baf8cc76fce74dea9b8b55ab5d SIZE (hadrian-9.4.8-boot.tar.gz) = 1495586 SHA256 (hadrian-9.2.8-boot.tar.gz) = 730412e1c17309670075be8f76dbca9ebadedfa10b758e605f9e67804e9e8ac5 diff --git a/lang/ghc/files/fixup-plist.hs b/lang/ghc/files/fixup-plist.hs deleted file mode 100644 index 9b6ade1d5aa0..000000000000 --- a/lang/ghc/files/fixup-plist.hs +++ /dev/null @@ -1,30 +0,0 @@ -import Data.List -import System.Environment - -main = do - [pkgplist] <- getArgs - plistLines <- lines <$> readFile pkgplist - mapM (putStrLn . processLine2 . processLine1) plistLines - -processLine1 l - | "%%DYNAMIC%%" `isPrefixOf` l || - "%%PROFILE%%" `isPrefixOf` l || - "%%GMP%%" `isPrefixOf` l || - "%%SIMPLE%%" `isPrefixOf` l = l - - | ".dyn_hi" `isSuffixOf` l || - "/ghc-iserv-dyn" `isSuffixOf` l || - ".so" `isSuffixOf` l = "%%DYNAMIC%%" ++ l - - | ".p_hi" `isSuffixOf` l || - "/ghc-iserv-prof" `isSuffixOf` l || - ".p_o" `isSuffixOf` l || - "_p.a" `isSuffixOf` l = "%%PROFILE%%" ++ l - - | otherwise = l - -processLine2 l - | "%%GMP%%" `isPrefixOf` l || - "%%SIMPLE%%" `isPrefixOf` l = l - | "/libCffi" `isInfixOf` l = "%%NODYNAMIC%%" ++ l - | otherwise = l diff --git a/lang/ghc/files/patch-hadrian_hadrian.cabal b/lang/ghc/files/patch-hadrian_hadrian.cabal new file mode 100644 index 000000000000..7994110951d4 --- /dev/null +++ b/lang/ghc/files/patch-hadrian_hadrian.cabal @@ -0,0 +1,15 @@ +Hack the bounds to avoid re-rolling the bootstrap compiler. +The bound was added due to https://gitlab.haskell.org/ghc/ghc/-/issues/24382 +but we somehow doesn't seem to be affected by this + +--- hadrian/hadrian.cabal.orig 2025-03-02 13:05:33 UTC ++++ hadrian/hadrian.cabal +@@ -155,7 +155,7 @@ executable hadrian + , containers >= 0.5 && < 0.7 + -- N.B. directory >=1.3.9 as earlier versions are + -- afflicted by #24382. +- , directory >= 1.3.9.0 && < 1.4 ++ , directory < 1.4 + , extra >= 1.4.7 + , filepath + , time diff --git a/lang/ghc/files/patch-hadrian_src_Hadrian_Haskell_Cabal_Parse.hs b/lang/ghc/files/patch-hadrian_src_Hadrian_Haskell_Cabal_Parse.hs index 1e59fb6d677e..528e592425f4 100644 --- a/lang/ghc/files/patch-hadrian_src_Hadrian_Haskell_Cabal_Parse.hs +++ b/lang/ghc/files/patch-hadrian_src_Hadrian_Haskell_Cabal_Parse.hs @@ -1,6 +1,6 @@ ---- hadrian/src/Hadrian/Haskell/Cabal/Parse.hs.orig 2024-01-08 13:24:59 UTC +--- hadrian/src/Hadrian/Haskell/Cabal/Parse.hs.orig 2025-03-02 13:05:33 UTC +++ hadrian/src/Hadrian/Haskell/Cabal/Parse.hs -@@ -320,8 +320,8 @@ write_inplace_conf pkg_path res_path pd lbi = do +@@ -321,8 +321,8 @@ write_inplace_conf pkg_path res_path pd lbi = do pkg_name = C.display (C.pkgName (CP.sourcePackageId installedPkgInfo)) final_ipi = installedPkgInfo { Installed.includeDirs = concatMap fixupIncludeDir (Installed.includeDirs installedPkgInfo), diff --git a/lang/ghc/files/patch-libraries_base_GHC_Event_KQueue.hsc b/lang/ghc/files/patch-libraries_base_GHC_Event_KQueue.hsc deleted file mode 100644 index 1413a39d9705..000000000000 --- a/lang/ghc/files/patch-libraries_base_GHC_Event_KQueue.hsc +++ /dev/null @@ -1,45 +0,0 @@ -https://gitlab.haskell.org/ghc/ghc/-/merge_requests/13276 - ---- libraries/base/GHC/Event/KQueue.hsc.orig 2024-06-30 22:49:26 UTC -+++ libraries/base/GHC/Event/KQueue.hsc -@@ -44,8 +44,8 @@ import GHC.Event.Internal (Timeout(..)) - import GHC.Real (quotRem, fromIntegral) - import GHC.Show (Show(show)) - import GHC.Event.Internal (Timeout(..)) --import System.Posix.Internals (c_close) --import System.Posix.Types (Fd(..)) -+import System.Posix.Internals (c_close, c_getpid) -+import System.Posix.Types (Fd(..), CPid) - import qualified GHC.Event.Array as A - - #if defined(netbsd_HOST_OS) -@@ -73,19 +73,26 @@ data KQueue = KQueue { - data KQueue = KQueue { - kqueueFd :: {-# UNPACK #-} !KQueueFd - , kqueueEvents :: {-# UNPACK #-} !(A.Array Event) -+ , kqueuePid :: {-# UNPACK #-} !CPid -- ^ pid, used to detect forks - } - - new :: IO E.Backend - new = do - kqfd <- kqueue - events <- A.new 64 -- let !be = E.backend poll modifyFd modifyFdOnce delete (KQueue kqfd events) -+ pid <- c_getpid -+ let !be = E.backend poll modifyFd modifyFdOnce delete (KQueue kqfd events pid) - return be - - delete :: KQueue -> IO () - delete kq = do -- _ <- c_close . fromKQueueFd . kqueueFd $ kq -- return () -+ -- detect forks: the queue isn't inherited by a child process created with -+ -- fork. Hence we mustn't try to close the old fd or we might close a random -+ -- one (e.g. the one used by timerfd, cf #24672). -+ pid <- c_getpid -+ when (pid == kqueuePid kq) $ do -+ _ <- c_close . fromKQueueFd . kqueueFd $ kq -+ return () - - modifyFd :: KQueue -> Fd -> E.Event -> E.Event -> IO Bool - modifyFd kq fd oevt nevt = do diff --git a/lang/ghc/pkg-plist.hadrian b/lang/ghc/pkg-plist.hadrian index c022c2dc43b9..cacd6ae91bee 100644 --- a/lang/ghc/pkg-plist.hadrian +++ b/lang/ghc/pkg-plist.hadrian @@ -2853,6 +2853,27 @@ lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_V lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/UnionFind.dyn_hi lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/UnionFind.hi lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/UnionFind.p_hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/Word64Map.dyn_hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/Word64Map.hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/Word64Map.p_hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/Word64Map/Internal.dyn_hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/Word64Map/Internal.hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/Word64Map/Internal.p_hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/Word64Map/Lazy.dyn_hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/Word64Map/Lazy.hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/Word64Map/Lazy.p_hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/Word64Map/Strict.dyn_hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/Word64Map/Strict.hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/Word64Map/Strict.p_hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/Word64Map/Strict/Internal.dyn_hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/Word64Map/Strict/Internal.hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/Word64Map/Strict/Internal.p_hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/Word64Set.dyn_hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/Word64Set.hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/Word64Set.p_hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/Word64Set/Internal.dyn_hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/Word64Set/Internal.hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Data/Word64Set/Internal.p_hi lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Driver/Backend.dyn_hi lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Driver/Backend.hi lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Driver/Backend.p_hi @@ -4182,6 +4203,12 @@ lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_V lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Utils/Constants.dyn_hi lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Utils/Constants.hi lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Utils/Constants.p_hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Utils/Containers/Internal/BitUtil.dyn_hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Utils/Containers/Internal/BitUtil.hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Utils/Containers/Internal/BitUtil.p_hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Utils/Containers/Internal/StrictPair.dyn_hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Utils/Containers/Internal/StrictPair.hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Utils/Containers/Internal/StrictPair.p_hi lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Utils/Error.dyn_hi lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Utils/Error.hi lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Utils/Error.p_hi @@ -4239,6 +4266,12 @@ lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_V lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Utils/Trace.dyn_hi lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Utils/Trace.hi lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Utils/Trace.p_hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Utils/Unique.dyn_hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Utils/Unique.hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Utils/Unique.p_hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Utils/Word64.dyn_hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Utils/Word64.hi +lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Utils/Word64.p_hi lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Wasm/ControlFlow.dyn_hi lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Wasm/ControlFlow.hi lib/ghc-%%GHC_VERSION%%/lib/%%GHC_ARCH%%-freebsd-ghc-%%GHC_VERSION%%/ghc-%%GHC_VERSION%%/GHC/Wasm/ControlFlow.p_hi diff --git a/lang/go124/Makefile b/lang/go124/Makefile index b75789bcfa27..6c5877f0e501 100644 --- a/lang/go124/Makefile +++ b/lang/go124/Makefile @@ -1,4 +1,4 @@ -DISTVERSION= 1.24.2 +DISTVERSION= 1.24.3 # Always set PORTREVISION explicitly as otherwise they are inherited from lang/go-devel PORTREVISION= 0 MASTER_SITES= https://golang.org/dl/ diff --git a/lang/go124/distinfo b/lang/go124/distinfo index 8786b1bdd7d3..86f143a69842 100644 --- a/lang/go124/distinfo +++ b/lang/go124/distinfo @@ -1,6 +1,6 @@ -TIMESTAMP = 1743558664 -SHA256 (go1.24.2.src.tar.gz) = 9dc77ffadc16d837a1bf32d99c624cb4df0647cee7b119edd9e7b1bcc05f2e00 -SIZE (go1.24.2.src.tar.gz) = 30787666 +TIMESTAMP = 1746623181 +SHA256 (go1.24.3.src.tar.gz) = 229c08b600b1446798109fae1f569228102c8473caba8104b6418cb5bc032878 +SIZE (go1.24.3.src.tar.gz) = 30789282 SHA256 (go1.23.7.freebsd-arm64.tar.gz) = 2b51c940898fad6708609495b9a27b5869cf5195381fc4a31a013006aa4eb156 SIZE (go1.23.7.freebsd-arm64.tar.gz) = 69903435 SHA256 (go1.23.7.freebsd-amd64.tar.gz) = c0e7a5ff1875eb79d7c2acfa1616718ad892c0b2637d56594fdc3332e313efd4 diff --git a/lang/julia/Makefile b/lang/julia/Makefile index 529f181eef3b..a0c827ea4f5d 100644 --- a/lang/julia/Makefile +++ b/lang/julia/Makefile @@ -1,6 +1,6 @@ PORTNAME= julia DISTVERSION= 1.10.3 -PORTREVISION= 6 +PORTREVISION= 7 DISTVERSIONSUFFIX= -full CATEGORIES= lang math MASTER_SITES= https://github.com/JuliaLang/${PORTNAME}/releases/download/v${DISTVERSION}/ diff --git a/lang/pharo/Makefile b/lang/pharo/Makefile index 837c5db14e2d..e9cbfdcde9bf 100644 --- a/lang/pharo/Makefile +++ b/lang/pharo/Makefile @@ -1,5 +1,6 @@ PORTNAME= pharo DISTVERSION= 10.2.0 +PORTREVISION= 1 DISTVERSIONSUFFIX= f4c5e2a CATEGORIES= lang MASTER_SITES= http://files.pharo.org/vm/pharo-spur64-headless/Linux-x86_64/source/ diff --git a/lang/quickjs-ng/Makefile b/lang/quickjs-ng/Makefile index e1689f7f08a3..401c3af51810 100644 --- a/lang/quickjs-ng/Makefile +++ b/lang/quickjs-ng/Makefile @@ -1,5 +1,5 @@ PORTNAME= quickjs -DISTVERSION= 0.9.0 +DISTVERSION= 0.10.0 DISTVERSIONPREFIX= v CATEGORIES= lang devel PKGNAMESUFFIX= -ng diff --git a/lang/quickjs-ng/distinfo b/lang/quickjs-ng/distinfo index 9c1178f5337b..c1ce7d5bc652 100644 --- a/lang/quickjs-ng/distinfo +++ b/lang/quickjs-ng/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1746032333 -SHA256 (quickjs-ng-quickjs-v0.9.0_GH0.tar.gz) = 77f9e79b42e2e7cff9517bae612431af47e120730286cb1dcfad0753bc160f10 -SIZE (quickjs-ng-quickjs-v0.9.0_GH0.tar.gz) = 816194 +TIMESTAMP = 1746467397 +SHA256 (quickjs-ng-quickjs-v0.10.0_GH0.tar.gz) = c54007e6ce9893b0074d53feac47c64a362900df20493110800c9e1f5c43427b +SIZE (quickjs-ng-quickjs-v0.10.0_GH0.tar.gz) = 783751 diff --git a/lang/quickjs-ng/files/patch-CMakeLists.txt b/lang/quickjs-ng/files/patch-CMakeLists.txt index b8ce45e00734..72d0174b9d0e 100644 --- a/lang/quickjs-ng/files/patch-CMakeLists.txt +++ b/lang/quickjs-ng/files/patch-CMakeLists.txt @@ -1,11 +1,28 @@ ---- CMakeLists.txt.orig 2025-01-28 23:42:03 UTC +--- CMakeLists.txt.orig 2025-05-01 21:30:10 UTC +++ CMakeLists.txt -@@ -28,8 +28,6 @@ if(NOT MSVC AND NOT IOS) +@@ -39,8 +39,6 @@ if(NOT MSVC AND NOT IOS) xcheck_add_c_compiler_flag(-Wall) if(NOT MSVC AND NOT IOS) - xcheck_add_c_compiler_flag(-Werror) - xcheck_add_c_compiler_flag(-Wextra) endif() + xcheck_add_c_compiler_flag(-Wformat=2) xcheck_add_c_compiler_flag(-Wno-implicit-fallthrough) - xcheck_add_c_compiler_flag(-Wno-sign-compare) +@@ -418,10 +416,12 @@ if(NOT IOS) + + if(NOT IOS) + file(STRINGS quickjs.h quickjs_h REGEX QJS_VERSION) +- string(REGEX MATCHALL "([0-9])" QJS_VERSION "${quickjs_h}") +- list(GET QJS_VERSION 0 QJS_VERSION_MAJOR) +- list(GET QJS_VERSION 1 QJS_VERSION_MINOR) +- list(GET QJS_VERSION 2 QJS_VERSION_PATCH) ++ string(REGEX MATCH "QJS_VERSION_MAJOR ([0-9]*)" _ "${quickjs_h}") ++ set(QJS_VERSION_MAJOR ${CMAKE_MATCH_1}) ++ string(REGEX MATCH "QJS_VERSION_MINOR ([0-9]*)" _ "${quickjs_h}") ++ set(QJS_VERSION_MINOR ${CMAKE_MATCH_1}) ++ string(REGEX MATCH "QJS_VERSION_PATCH ([0-9]*)" _ "${quickjs_h}") ++ set(QJS_VERSION_PATCH ${CMAKE_MATCH_1}) + set_target_properties(qjs PROPERTIES + VERSION ${QJS_VERSION_MAJOR}.${QJS_VERSION_MINOR}.${QJS_VERSION_PATCH} + SOVERSION ${QJS_VERSION_MAJOR} diff --git a/lang/quickjs/Makefile b/lang/quickjs/Makefile index 2a5783bc4440..0a382adc5215 100644 --- a/lang/quickjs/Makefile +++ b/lang/quickjs/Makefile @@ -1,6 +1,5 @@ PORTNAME= quickjs -DISTVERSION= 2024.01.13-20240727 -PORTREVISION= 2 +DISTVERSION= 2025.04.26-20250426 CATEGORIES= lang devel #MASTER_SITES= https://bellard.org/${PORTNAME}/ #DISTNAME= ${PORTNAME}-${DISTVERSION:S/./-/g} diff --git a/lang/quickjs/distinfo b/lang/quickjs/distinfo index 68c3dc392c63..7637f8f4e79b 100644 --- a/lang/quickjs/distinfo +++ b/lang/quickjs/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1739453157 -SHA256 (bellard-quickjs-2024.01.13-20240727-6e2e68fd0896957f92eb6c242a2e048c1ef3cae0_GH0.tar.gz) = 3ceab2edf529ffc4ed4111e613e6878c8ffa4ca792d66a989f6a05fa35f9ec59 -SIZE (bellard-quickjs-2024.01.13-20240727-6e2e68fd0896957f92eb6c242a2e048c1ef3cae0_GH0.tar.gz) = 628637 +TIMESTAMP = 1746485237 +SHA256 (bellard-quickjs-2025.04.26-20250426-6e2e68fd0896957f92eb6c242a2e048c1ef3cae0_GH0.tar.gz) = 3ceab2edf529ffc4ed4111e613e6878c8ffa4ca792d66a989f6a05fa35f9ec59 +SIZE (bellard-quickjs-2025.04.26-20250426-6e2e68fd0896957f92eb6c242a2e048c1ef3cae0_GH0.tar.gz) = 628637 diff --git a/lang/rizin/Makefile b/lang/rizin/Makefile index bd391e2468ad..84ee28c04047 100644 --- a/lang/rizin/Makefile +++ b/lang/rizin/Makefile @@ -1,6 +1,6 @@ PORTNAME= rizin DISTVERSIONPREFIX= v -DISTVERSION= 0.8.0 +DISTVERSION= 0.8.1 CATEGORIES= lang security shells MAINTAINER= arrowd@FreeBSD.org diff --git a/lang/rizin/distinfo b/lang/rizin/distinfo index 69536203d5b9..689027e95966 100644 --- a/lang/rizin/distinfo +++ b/lang/rizin/distinfo @@ -1,6 +1,6 @@ -TIMESTAMP = 1745908880 -SHA256 (rizinorg-rizin-v0.8.0_GH0.tar.gz) = aab8d392fa6d8af2e8b048bc98f66763bcbaaae55d374a95b03c2232a4dda859 -SIZE (rizinorg-rizin-v0.8.0_GH0.tar.gz) = 8254719 +TIMESTAMP = 1746430615 +SHA256 (rizinorg-rizin-v0.8.1_GH0.tar.gz) = 7dc451968f426e846c04430f7d6d45f1402db8eed1afa902f0631c03f19bc22e +SIZE (rizinorg-rizin-v0.8.1_GH0.tar.gz) = 8255059 SHA256 (rizinorg-rz-libdemangle-0031d1a_GH0.tar.gz) = 50ddfc40f2b6e80d2bedb56b0f29f796ab4384c2c2f5e84a867ab7bce8b58d66 SIZE (rizinorg-rz-libdemangle-0031d1a_GH0.tar.gz) = 180562 SHA256 (rizinorg-rizin-grammar-c-8158457_GH0.tar.gz) = 77f3a5ced05d6ac70d19d9ad783f04b412b8f61ae7a912f0d06884ff5e284df2 diff --git a/lang/rizin/files/patch-meson.build b/lang/rizin/files/patch-meson.build deleted file mode 100644 index abea05cec04a..000000000000 --- a/lang/rizin/files/patch-meson.build +++ /dev/null @@ -1,11 +0,0 @@ ---- meson.build.orig 2025-04-24 18:28:05 UTC -+++ meson.build -@@ -321,7 +321,7 @@ endif - error(subproject_clean_error_msg) - endif - --rizin_grammar_c_dep = dependency('rizin-grammar-c', required: get_option('use_sys_tree_sitter'), static: is_static_build, fallback: []) -+rizin_grammar_c_dep = dependency('rizin-grammar-c', required: false, static: is_static_build, fallback: []) - if not rizin_grammar_c_dep.found() - rizin_grammar_c_proj = subproject('rizin-grammar-c', default_options: ['default_library=static']) - rizin_grammar_c_dep = rizin_grammar_c_proj.get_variable('rizin_grammar_c_dep') diff --git a/lang/ruby35/Makefile b/lang/ruby35/Makefile index 564bb8fface9..cc5866718a21 100644 --- a/lang/ruby35/Makefile +++ b/lang/ruby35/Makefile @@ -26,7 +26,11 @@ CPE_UPDATE= p0 USE_LDCONFIG= yes GNU_CONFIGURE= yes -# Bug?: With preview1 `./configure --with-ruby-version=minor` sets ruby version string to "3.5+0" +# Upstream says "+0" is intentionally added to ruby version string +# ("3.5+0" for example ) with pre-release version. +# So use --with-ruby-version="${RUBY_VER}" rather than +# --with-ruby-version=minor until 3.5.0 is released. +# Reference; https://bugs.ruby-lang.org/issues/21278 CONFIGURE_ARGS= ${RUBY_CONFIGURE_ARGS} \ --disable-rpath \ --enable-install-static-library \ diff --git a/lang/s7/Makefile.master b/lang/s7/Makefile.master index 019f8a0352bc..528bb554cb8b 100644 --- a/lang/s7/Makefile.master +++ b/lang/s7/Makefile.master @@ -1,7 +1,7 @@ PORTNAME= s7 CATEGORIES= lang lisp # S7_MAJOR_VERSION / S7_MINOR_VERSION / S7_DATE from s7.h -PORTVERSION= 11.3.20250110 +PORTVERSION= 11.4.20250505 MAINTAINER?= fuz@FreeBSD.org WWW= https://ccrma.stanford.edu/software/snd/snd/s7.html @@ -12,7 +12,7 @@ USES= localbase:ldflags USE_GITLAB= yes GL_SITE= https://cm-gitlab.stanford.edu GL_ACCOUNT= bil -GL_TAGNAME= 3cad48b9b7ae7f104cc3d0db689cf121a691628d +GL_TAGNAME= f9a99df1cb1470b7daa19daf7148e76363f7bceb CFLAGS+= -DS7_LOAD_PATH=\"${DATADIR}\" \ -DHAVE_COMPLEX_NUMBERS \ diff --git a/lang/s7/distinfo b/lang/s7/distinfo index aaac86dc5c09..f47e005d8ac9 100644 --- a/lang/s7/distinfo +++ b/lang/s7/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1736525120 -SHA256 (bil-s7-3cad48b9b7ae7f104cc3d0db689cf121a691628d_GL0.tar.gz) = 6293759d657ce1a44f77b5f519f36b54f8f98847efccc7bfd219c78034437c59 -SIZE (bil-s7-3cad48b9b7ae7f104cc3d0db689cf121a691628d_GL0.tar.gz) = 2797386 +TIMESTAMP = 1746427498 +SHA256 (bil-s7-f9a99df1cb1470b7daa19daf7148e76363f7bceb_GL0.tar.gz) = 3833f0226fdeda4691189ee38702aec52ed98d67253a002c21fb671c109e2400 +SIZE (bil-s7-f9a99df1cb1470b7daa19daf7148e76363f7bceb_GL0.tar.gz) = 2818205 |