diff --git a/lang/gcc12/Makefile b/lang/gcc12/Makefile index 03aa59736457..f1eb0557e635 100644 --- a/lang/gcc12/Makefile +++ b/lang/gcc12/Makefile @@ -1,188 +1,192 @@ PORTNAME= gcc PORTVERSION= 12.4.0 -PORTREVISION= 3 +PORTREVISION= 4 CATEGORIES= lang MASTER_SITES= GCC PKGNAMESUFFIX= ${SUFFIX} MAINTAINER= salvadore@FreeBSD.org COMMENT= GNU Compiler Collection 12 WWW= https://gcc.gnu.org LICENSE= GPLv3 GPLv3RLE LICENSE_COMB= multi ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386 powerpc powerpc64 powerpc64le riscv64 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= gcc12-devel CPE_VENDOR= gnu GCC_VERSION= ${PORTVERSION} SUFFIX= ${PORTVERSION:C/([0-9]+).*/\1/} CFLAGS:= ${CFLAGS:N-mretpoline} CXXFLAGS:= ${CXXFLAGS:N-mretpoline} OPTIONS_DEFINE= GRAPHITE OPTIONS_DEFAULT_aarch64=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 +.if ${ARCH} == powerpc64le && ${OSVERSION} >= 1600019 +CONFIGURE_ARGS+= --with-long-double-format=ieee +.endif + # Extraction fails with poudriere on aarch64 for GCC 12. # It seems that the bug is specific to lang/gcc11 and lang/gcc12 only. # No other GCC port is affected. # See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=271052 # and https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=246670 .if ${ARCH} == aarch64 EXTRACT_CMD= ${SETENV} LC_ALL=en_US.UTF-8 /usr/bin/bsdtar .endif .if ${ARCH} == amd64 CONFIGURE_TARGET= x86_64-portbld-${OPSYS:tl}${OSREL} .elif ${ARCH} == powerpc64 CONFIGURE_ARGS+= --with-abi=elfv2 .endif LANGUAGES:= c,c++,objc,fortran,jit 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 diff --git a/lang/gcc12/files/patch-gcc_config.gcc b/lang/gcc12/files/patch-gcc_config.gcc new file mode 100644 index 000000000000..4748ac147b45 --- /dev/null +++ b/lang/gcc12/files/patch-gcc_config.gcc @@ -0,0 +1,14 @@ +--- gcc/config.gcc.orig ++++ gcc/config.gcc +@@ -2925,7 +2925,10 @@ + tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm" + case ${target} in + powerpc*le-*-*) +- tm_file="${tm_file} rs6000/sysv4le.h" ;; ++ tm_file="${tm_file} rs6000/sysv4le.h" ++ if test x$with_long_double_format = xieee; then ++ tm_defines="${tm_defines} RS6000_DEFAULT_LONG_DOUBLE_SIZE=128 TARGET_IEEEQUAD_DEFAULT=1 TARGET_FLOAT128_ENABLE_TYPE=1" ++ fi ;; + esac + case ${target} in + powerpc64*) diff --git a/lang/gcc12/files/patch-libgcc_config.host b/lang/gcc12/files/patch-libgcc_config.host new file mode 100644 index 000000000000..0a4d89aba26d --- /dev/null +++ b/lang/gcc12/files/patch-libgcc_config.host @@ -0,0 +1,15 @@ +--- libgcc/config.host.orig ++++ libgcc/config.host +@@ -1202,6 +1202,12 @@ + powerpc64*) + tmake_file="${tmake_file} rs6000/t-freebsd64" + md_unwind_header=rs6000/freebsd-unwind.h ++ if test $libgcc_cv_powerpc_float128 = yes; then ++ tmake_file="${tmake_file} rs6000/t-float128" ++ fi ++ if test $libgcc_cv_powerpc_float128_hw = yes; then ++ tmake_file="${tmake_file} rs6000/t-float128-hw" ++ fi + ;; + esac + ;; diff --git a/lang/gcc13/Makefile b/lang/gcc13/Makefile index 87a94678dcd1..51eab576cca3 100644 --- a/lang/gcc13/Makefile +++ b/lang/gcc13/Makefile @@ -1,179 +1,183 @@ PORTNAME= gcc PORTVERSION= 13.3.0 -PORTREVISION= 3 +PORTREVISION= 4 CATEGORIES= lang MASTER_SITES= GCC PKGNAMESUFFIX= ${SUFFIX} MAINTAINER= salvadore@FreeBSD.org COMMENT= GNU Compiler Collection 13 WWW= https://gcc.gnu.org LICENSE= GPLv3 GPLv3RLE LICENSE_COMB= multi ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386 powerpc powerpc64 powerpc64le riscv64 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= gcc13-devel CPE_VENDOR= gnu CPE_VERSION= ${GCC_VERSION} GCC_VERSION= ${PORTVERSION} SUFFIX= ${PORTVERSION:C/([0-9]+).*/\1/} CFLAGS:= ${CFLAGS:N-mretpoline} CXXFLAGS:= ${CXXFLAGS:N-mretpoline} OPTIONS_DEFINE= GRAPHITE OPTIONS_DEFAULT_aarch64=STANDARD_BOOTSTRAP OPTIONS_DEFAULT_amd64= STANDARD_BOOTSTRAP OPTIONS_DEFAULT_i386= STANDARD_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 +.if ${ARCH} == powerpc64le && ${OSVERSION} >= 1600019 +CONFIGURE_ARGS+= --with-long-double-format=ieee +.endif + .if ${ARCH} == amd64 CONFIGURE_TARGET= x86_64-portbld-${OPSYS:tl}${OSREL} .elif ${ARCH} == powerpc64 CONFIGURE_ARGS+= --with-abi=elfv2 .endif LANGUAGES:= c,c++,objc,fortran,jit 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 diff --git a/lang/gcc13/files/patch-gcc_config.gcc b/lang/gcc13/files/patch-gcc_config.gcc new file mode 100644 index 000000000000..ba3857024a0c --- /dev/null +++ b/lang/gcc13/files/patch-gcc_config.gcc @@ -0,0 +1,14 @@ +--- gcc/config.gcc.orig ++++ gcc/config.gcc +@@ -2896,7 +2896,10 @@ + tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm" + case ${target} in + powerpc*le-*-*) +- tm_file="${tm_file} rs6000/sysv4le.h" ;; ++ tm_file="${tm_file} rs6000/sysv4le.h" ++ if test x$with_long_double_format = xieee; then ++ tm_defines="${tm_defines} RS6000_DEFAULT_LONG_DOUBLE_SIZE=128 TARGET_IEEEQUAD_DEFAULT=1 TARGET_FLOAT128_ENABLE_TYPE=1" ++ fi ;; + esac + case ${target} in + powerpc64*) diff --git a/lang/gcc13/files/patch-libgcc_config.host b/lang/gcc13/files/patch-libgcc_config.host new file mode 100644 index 000000000000..c8a166903ca8 --- /dev/null +++ b/lang/gcc13/files/patch-libgcc_config.host @@ -0,0 +1,15 @@ +--- libgcc/config.host.orig ++++ libgcc/config.host +@@ -1186,6 +1186,12 @@ + powerpc64*) + tmake_file="${tmake_file} rs6000/t-freebsd64" + md_unwind_header=rs6000/freebsd-unwind.h ++ if test $libgcc_cv_powerpc_float128 = yes; then ++ tmake_file="${tmake_file} rs6000/t-float128" ++ fi ++ if test $libgcc_cv_powerpc_float128_hw = yes; then ++ tmake_file="${tmake_file} rs6000/t-float128-hw" ++ fi + ;; + esac + ;; diff --git a/lang/gcc14/Makefile b/lang/gcc14/Makefile index 3f2d7cf4848d..17159a0be400 100644 --- a/lang/gcc14/Makefile +++ b/lang/gcc14/Makefile @@ -1,186 +1,190 @@ PORTNAME= gcc PORTVERSION= 14.2.0 -PORTREVISION= 4 +PORTREVISION= 5 CATEGORIES= lang MASTER_SITES= GCC PKGNAMESUFFIX= ${SUFFIX} MAINTAINER= salvadore@FreeBSD.org COMMENT= GNU Compiler Collection 14 WWW= https://gcc.gnu.org LICENSE= GPLv3 GPLv3RLE LICENSE_COMB= multi ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386 powerpc powerpc64 powerpc64le riscv64 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= gcc14-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= STANDARD_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 +.if ${ARCH} == powerpc64le && ${OSVERSION} >= 1600019 +CONFIGURE_ARGS+= --with-long-double-format=ieee +.endif + .if ${ARCH} == amd64 CONFIGURE_TARGET= x86_64-portbld-${OPSYS:tl}${OSREL} .elif ${ARCH} == powerpc64 CONFIGURE_ARGS+= --with-abi=elfv2 .endif LANGUAGES= c,c++,objc,fortran .if ${ARCH} != i386 && !empty(PORT_OPTIONS:M*BOOTSTRAP) LANGUAGES:= ${LANGUAGES},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 diff --git a/lang/gcc14/files/patch-gcc_config.gcc b/lang/gcc14/files/patch-gcc_config.gcc new file mode 100644 index 000000000000..88982d862539 --- /dev/null +++ b/lang/gcc14/files/patch-gcc_config.gcc @@ -0,0 +1,14 @@ +--- gcc/config.gcc.orig ++++ gcc/config.gcc +@@ -2982,7 +2982,10 @@ + tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm" + case ${target} in + powerpc*le-*-*) +- tm_file="${tm_file} rs6000/sysv4le.h" ;; ++ tm_file="${tm_file} rs6000/sysv4le.h" ++ if test x$with_long_double_format = xieee; then ++ tm_defines="${tm_defines} RS6000_DEFAULT_LONG_DOUBLE_SIZE=128 TARGET_IEEEQUAD_DEFAULT=1 TARGET_FLOAT128_ENABLE_TYPE=1" ++ fi ;; + esac + case ${target} in + powerpc64*) diff --git a/lang/gcc14/files/patch-gcc_configure b/lang/gcc14/files/patch-gcc_configure index cc60593ba6f7..f5fff9e6160c 100644 --- a/lang/gcc14/files/patch-gcc_configure +++ b/lang/gcc14/files/patch-gcc_configure @@ -1,22 +1,12 @@ -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.orig +++ 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 -+# 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 +@@ -33568,7 +33568,8 @@ + if test "${with_long_double_format+set}" = set; then : + withval=$with_long_double_format; + case "$target:$with_long_double_format" in +- powerpc64le-*-linux*:ieee | powerpc64le-*-linux*:ibm) ++ powerpc64le-*-linux*:ieee | powerpc64le-*-linux*:ibm | \ ++ powerpc64le-*-freebsd*:ieee | powerpc64le-*-freebsd*:ibm) + : + ;; + powerpc64-*-linux*:ieee | powerpc64-*-linux*:ibm) diff --git a/lang/gcc14/files/patch-libgcc_config.host b/lang/gcc14/files/patch-libgcc_config.host new file mode 100644 index 000000000000..9df98d888ad2 --- /dev/null +++ b/lang/gcc14/files/patch-libgcc_config.host @@ -0,0 +1,15 @@ +--- libgcc/config.host.orig ++++ libgcc/config.host +@@ -1230,6 +1230,12 @@ + powerpc64*) + tmake_file="${tmake_file} rs6000/t-freebsd64" + md_unwind_header=rs6000/freebsd-unwind.h ++ if test $libgcc_cv_powerpc_float128 = yes; then ++ tmake_file="${tmake_file} rs6000/t-float128" ++ fi ++ if test $libgcc_cv_powerpc_float128_hw = yes; then ++ tmake_file="${tmake_file} rs6000/t-float128-hw" ++ fi + ;; + esac + ;; diff --git a/lang/gcc14/files/patch-libgcc_config_rs6000_freebsd-unwind.h b/lang/gcc14/files/patch-libgcc_config_rs6000_freebsd-unwind.h new file mode 100644 index 000000000000..ad0a9045ecd6 --- /dev/null +++ b/lang/gcc14/files/patch-libgcc_config_rs6000_freebsd-unwind.h @@ -0,0 +1,48 @@ +--- libgcc/config/rs6000/freebsd-unwind.h.orig ++++ libgcc/config/rs6000/freebsd-unwind.h +@@ -33,6 +33,11 @@ + const unsigned int *pc = (const unsigned int *) context->ra; + + #ifdef __powerpc64__ ++#if _CALL_ELF == 2 ++#define TOC_SAVE_SLOT 24 ++#else ++#define TOC_SAVE_SLOT 40 ++#endif + if (fs->regs.how[2] == REG_UNSAVED) + { + /* If the current unwind info (FS) does not contain explicit info +@@ -40,9 +45,9 @@ + figure out if it was saved. The big problem here is that the + code that does the save/restore is generated by the linker, so + we have no good way to determine at compile time what to do. */ +- if (pc[0] == 0xF8410028 ++ if (pc[0] == 0xF8410000 + TOC_SAVE_SLOT + || ((pc[0] & 0xFFFF0000) == 0x3D820000 +- && pc[1] == 0xF8410028)) ++ && pc[1] == 0xF8410000 + TOC_SAVE_SLOT)) + { + /* We are in a plt call stub or r2 adjusting long branch stub, + before r2 has been saved. Keep REG_UNSAVED. */ +@@ -51,17 +56,17 @@ + { + unsigned int *insn + = (unsigned int *) _Unwind_GetGR (context, R_LR); +- if (insn && *insn == 0xE8410028) +- _Unwind_SetGRPtr (context, 2, context->cfa + 40); ++ if (insn && *insn == 0xE8410000 + TOC_SAVE_SLOT) ++ _Unwind_SetGRPtr (context, 2, context->cfa + TOC_SAVE_SLOT); + else if (pc[0] == 0x4E800421 +- && pc[1] == 0xE8410028) ++ && pc[1] == 0xE8410000 + TOC_SAVE_SLOT) + { + /* We are at the bctrl instruction in a call via function + pointer. gcc always emits the load of the new R2 just + before the bctrl so this is the first and only place + we need to use the stored R2. */ + _Unwind_Word sp = _Unwind_GetGR (context, 1); +- _Unwind_SetGRPtr (context, 2, (void *)(sp + 40)); ++ _Unwind_SetGRPtr (context, 2, (void *)(sp + TOC_SAVE_SLOT)); + } + } + } diff --git a/lang/gcc15/Makefile b/lang/gcc15/Makefile index d4e52f6d3815..62443af95010 100644 --- a/lang/gcc15/Makefile +++ b/lang/gcc15/Makefile @@ -1,186 +1,190 @@ PORTNAME= gcc PORTVERSION= 15.2.0 -PORTREVISION= 1 +PORTREVISION= 2 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 +.if ${ARCH} == powerpc64le && ${OSVERSION} >= 1600019 +CONFIGURE_ARGS+= --with-long-double-format=ieee +.endif + .if ${ARCH} == amd64 CONFIGURE_TARGET= x86_64-portbld-${OPSYS:tl}${OSREL} .elif ${ARCH} == powerpc64 CONFIGURE_ARGS+= --with-abi=elfv2 .endif LANGUAGES= c,c++,objc,fortran .if ${ARCH} != i386 && !empty(PORT_OPTIONS:M*BOOTSTRAP) LANGUAGES:= ${LANGUAGES},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 diff --git a/lang/gcc15/files/patch-gcc_config.gcc b/lang/gcc15/files/patch-gcc_config.gcc new file mode 100644 index 000000000000..f4411b855d0f --- /dev/null +++ b/lang/gcc15/files/patch-gcc_config.gcc @@ -0,0 +1,14 @@ +--- gcc/config.gcc.orig ++++ gcc/config.gcc +@@ -3001,7 +3001,10 @@ + tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm" + case ${target} in + powerpc*le-*-*) +- tm_file="${tm_file} rs6000/sysv4le.h" ;; ++ tm_file="${tm_file} rs6000/sysv4le.h" ++ if test x$with_long_double_format = xieee; then ++ tm_defines="${tm_defines} RS6000_DEFAULT_LONG_DOUBLE_SIZE=128 TARGET_IEEEQUAD_DEFAULT=1 TARGET_FLOAT128_ENABLE_TYPE=1" ++ fi ;; + esac + case ${target} in + powerpc64*) diff --git a/lang/gcc15/files/patch-libgcc_config.host b/lang/gcc15/files/patch-libgcc_config.host new file mode 100644 index 000000000000..1fe3e9673157 --- /dev/null +++ b/lang/gcc15/files/patch-libgcc_config.host @@ -0,0 +1,15 @@ +--- libgcc/config.host.orig ++++ libgcc/config.host +@@ -1236,6 +1236,12 @@ + powerpc64*) + tmake_file="${tmake_file} rs6000/t-freebsd64" + md_unwind_header=rs6000/freebsd-unwind.h ++ if test $libgcc_cv_powerpc_float128 = yes; then ++ tmake_file="${tmake_file} rs6000/t-float128" ++ fi ++ if test $libgcc_cv_powerpc_float128_hw = yes; then ++ tmake_file="${tmake_file} rs6000/t-float128-hw" ++ fi + ;; + esac + ;; diff --git a/lang/gcc16/Makefile b/lang/gcc16/Makefile index a7e4e81c243e..50f171686af8 100644 --- a/lang/gcc16/Makefile +++ b/lang/gcc16/Makefile @@ -1,185 +1,190 @@ PORTNAME= gcc PORTVERSION= 16.1.0 +PORTREVISION= 1 CATEGORIES= lang MASTER_SITES= GCC PKGNAMESUFFIX= ${SUFFIX} 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 CONFLICTS= gcc16-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 +.if ${ARCH} == powerpc64le && ${OSVERSION} >= 1600019 +CONFIGURE_ARGS+= --with-long-double-format=ieee +.endif + .if ${ARCH} == amd64 CONFIGURE_TARGET= x86_64-portbld-${OPSYS:tl}${OSREL} .elif ${ARCH} == powerpc64 CONFIGURE_ARGS+= --with-abi=elfv2 .endif LANGUAGES= c,c++,objc,fortran .if ${ARCH} != i386 && !empty(PORT_OPTIONS:M*BOOTSTRAP) LANGUAGES:= ${LANGUAGES},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 diff --git a/lang/gcc16/files/patch-gcc_config.gcc b/lang/gcc16/files/patch-gcc_config.gcc new file mode 100644 index 000000000000..781d84f0fbd2 --- /dev/null +++ b/lang/gcc16/files/patch-gcc_config.gcc @@ -0,0 +1,14 @@ +--- gcc/config.gcc.orig ++++ gcc/config.gcc +@@ -3071,7 +3071,10 @@ + tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm" + case ${target} in + powerpc*le-*-*) +- tm_file="${tm_file} rs6000/sysv4le.h" ;; ++ tm_file="${tm_file} rs6000/sysv4le.h" ++ if test x$with_long_double_format = xieee; then ++ tm_defines="${tm_defines} RS6000_DEFAULT_LONG_DOUBLE_SIZE=128 TARGET_IEEEQUAD_DEFAULT=1 TARGET_FLOAT128_ENABLE_TYPE=1" ++ fi ;; + esac + case ${target} in + powerpc64*) diff --git a/lang/gcc16/files/patch-libgcc_config.host b/lang/gcc16/files/patch-libgcc_config.host new file mode 100644 index 000000000000..a66af11c0545 --- /dev/null +++ b/lang/gcc16/files/patch-libgcc_config.host @@ -0,0 +1,15 @@ +--- libgcc/config.host.orig ++++ libgcc/config.host +@@ -1234,6 +1234,12 @@ + powerpc64*) + tmake_file="${tmake_file} rs6000/t-freebsd64" + md_unwind_header=rs6000/freebsd-unwind.h ++ if test $libgcc_cv_powerpc_float128 = yes; then ++ tmake_file="${tmake_file} rs6000/t-float128" ++ fi ++ if test $libgcc_cv_powerpc_float128_hw = yes; then ++ tmake_file="${tmake_file} rs6000/t-float128-hw" ++ fi + ;; + esac + ;;