Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 18 Jun 2021 20:09:30 GMT
From:      Gerald Pfeifer <gerald@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 8f52533f6367 - main - lang/gcc11: New port cloned from gcc11-devel
Message-ID:  <202106182009.15IK9UfQ036939@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by gerald:

URL: https://cgit.FreeBSD.org/ports/commit/?id=8f52533f636733a36dda6f804c4784077da8a7f2

commit 8f52533f636733a36dda6f804c4784077da8a7f2
Author:     Gerald Pfeifer <gerald@FreeBSD.org>
AuthorDate: 2021-06-18 17:08:44 +0000
Commit:     Gerald Pfeifer <gerald@FreeBSD.org>
CommitDate: 2021-06-18 20:08:57 +0000

    lang/gcc11: New port cloned from gcc11-devel
    
    Welcome GCC 11.1, the first release of the GCC 11 series!
    
    https://gcc.gnu.org/gcc-11/changes.html has a comprehensive overview
    of many improvements and changes and
    https://gcc.gnu.org/gcc-11/porting_to.html highlights issues you may
    encounter porting to this version. This release series should not
    prove too disruptive, mainly C++ defaulting to GNU++17 and some more
    libstdc++ headers will need to be included explicitly.
    
    To give a brief overview of some of the more noticable changes:
    
    Some short options of the gcov tool have been renamed: -i to -j and
    -j to -H.
    
    Debugging information defaults to DWARF 5.
    
    Vectorizer improvements, a new IPA-modref pass to track side effects
    of function calls and improve precision of points-to-analysis, better
    interprocedural constant propagation (IP-CP), smaller link-time
    optimization (LTO) object files.
    
    OpenMP 4.5 is now fully supported and OpenMP 5.0 support has been
    extended.
    
    A set of new warnings including -Wmismatched-dealloc, -Wsizeof-array-div,
    -Wstringop-overread, and enhancements to existing warnings.
    
    Several new features from the upcoming C2X revision of the ISO C
    standard are supported with -std=c2x and -std=gnu2x.
    
    Several C++20 features have been implemented and even some of the
    upcoming C++23 draft features with the -std=c++23 and the like.
    
    libstdc++ features improved C++17 support.
    
    And, last but not least, loads of improvements for all of FreeBSD's
    architectures.
---
 lang/Makefile                                 |   1 +
 lang/gcc11/Makefile                           | 159 ++++++++++++++++++++++++++
 lang/gcc11/distinfo                           |   3 +
 lang/gcc11/files/patch-arm-unwind-cxx-support | 106 +++++++++++++++++
 lang/gcc11/files/patch-gets-no-more           |  47 ++++++++
 lang/gcc11/files/patch-gfortran-libgcc        |  70 ++++++++++++
 lang/gcc11/files/pkg-message.in               |  13 +++
 lang/gcc11/pkg-descr                          |   7 ++
 lang/gcc11/pkg-plist                          |  37 ++++++
 9 files changed, 443 insertions(+)

diff --git a/lang/Makefile b/lang/Makefile
index 5fb64e9b8df6..019eb2e27843 100644
--- a/lang/Makefile
+++ b/lang/Makefile
@@ -92,6 +92,7 @@
     SUBDIR += gcc-ecj45
     SUBDIR += gcc10
     SUBDIR += gcc10-devel
+    SUBDIR += gcc11
     SUBDIR += gcc11-devel
     SUBDIR += gcc12-devel
     SUBDIR += gcc48
diff --git a/lang/gcc11/Makefile b/lang/gcc11/Makefile
new file mode 100644
index 000000000000..1fbfbccf684b
--- /dev/null
+++ b/lang/gcc11/Makefile
@@ -0,0 +1,159 @@
+# Created by: Gerald Pfeifer <gerald@FreeBSD.org>
+
+PORTNAME=	gcc
+PORTVERSION=	11.1.0
+CATEGORIES=	lang
+MASTER_SITES=	GCC
+PKGNAMESUFFIX=	${SUFFIX}
+
+MAINTAINER=	gerald@FreeBSD.org
+COMMENT=	GNU Compiler Collection 11
+
+LICENSE=	GPLv3 GPLv3RLE
+LICENSE_COMB=	multi
+
+ONLY_FOR_ARCHS=	aarch64 amd64 arm 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=	gcc11-devel-11.*
+
+CPE_VENDOR=	gnu
+
+GCC_VERSION=	${PORTVERSION}
+SUFFIX=		${PORTVERSION:C/([0-9]+).*/\1/}
+CFLAGS:=	${CFLAGS:N-mretpoline}
+CXXFLAGS:=	${CXXFLAGS:N-mretpoline}
+
+OPTIONS_DEFINE=		BOOTSTRAP GRAPHITE
+OPTIONS_DEFAULT=	BOOTSTRAP
+BOOTSTRAP_DESC=		Build using a full bootstrap
+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
+MULTILIB_DESC=		Build support for 32-bit and 64-bit targets
+MULTILIB_CONFIGURE_ENABLE=	multilib
+.else
+CONFIGURE_ARGS+=	--disable-multilib
+.endif
+
+.include <bsd.port.pre.mk>
+
+.if ${ARCH} == amd64
+CONFIGURE_TARGET=	x86_64-portbld-${OPSYS:tl}${OSREL}
+
+.elif ${ARCH} == powerpc64
+CONFIGURE_ENV+=	UNAME_m="powerpc64"
+. if defined(PPC_ABI) && ${PPC_ABI} == ELFv2
+CONFIGURE_ARGS+=	--with-abi=elfv2
+. endif
+USE_GCC=	yes
+
+.elif ${ARCH} == powerpc64le
+USE_GCC=	yes
+.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
+CONFIGURE_OUTSOURCE=	yes
+.if empty(PORT_OPTIONS:MBOOTSTRAP)
+CONFIGURE_ARGS+=--disable-bootstrap
+.else
+CONFIGURE_ARGS+=--with-build-config=bootstrap-debug
+ALL_TARGET=	bootstrap-lean
+.endif
+INSTALL_TARGET=	install-strip
+.if ${UID} != 0
+BINMODE=	755
+.endif
+CONFIGURE_ARGS+=--disable-nls \
+		--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-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}
+
+.if ${PORT_OPTIONS:MGRAPHITE}
+LIB_DEPENDS+=	libisl.so:devel/isl
+CONFIGURE_ARGS+=--with-isl=${LOCALBASE}
+.endif
+
+CONFIGURE_ARGS+=--enable-languages=${LANGUAGES}
+
+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}/man/man7/*
+	${RM} -r ${STAGEDIR}${TARGLIB}/gcc/*/${GCC_VERSION}/include-fixed/
+	# 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/gcc11/distinfo b/lang/gcc11/distinfo
new file mode 100644
index 000000000000..e53fecad6e79
--- /dev/null
+++ b/lang/gcc11/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1623859481
+SHA256 (gcc-11.1.0.tar.xz) = 4c4a6fb8a8396059241c2e674b85b351c26a5d678274007f076957afa1cc9ddf
+SIZE (gcc-11.1.0.tar.xz) = 78877216
diff --git a/lang/gcc11/files/patch-arm-unwind-cxx-support b/lang/gcc11/files/patch-arm-unwind-cxx-support
new file mode 100644
index 000000000000..ec6959b9655c
--- /dev/null
+++ b/lang/gcc11/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/gcc11/files/patch-gets-no-more b/lang/gcc11/files/patch-gets-no-more
new file mode 100644
index 000000000000..4b49aba3ca28
--- /dev/null
+++ b/lang/gcc11/files/patch-gets-no-more
@@ -0,0 +1,47 @@
+Disable the build/use of libssp/gets-chk since FreeBSD 12 and later
+do not feature gets() any longer.
+
+--- UTC
+Index: libssp/Makefile.am
+===================================================================
+--- libssp/Makefile.am	(revision 263319)
++++ libssp/Makefile.am	(working copy)
+@@ -42,7 +42,7 @@
+ nobase_libsubinclude_HEADERS = ssp/ssp.h ssp/string.h ssp/stdio.h ssp/unistd.h
+ 
+ libssp_la_SOURCES = \
+-	ssp.c gets-chk.c memcpy-chk.c memmove-chk.c mempcpy-chk.c \
++	ssp.c memcpy-chk.c memmove-chk.c mempcpy-chk.c \
+ 	memset-chk.c snprintf-chk.c sprintf-chk.c stpcpy-chk.c \
+ 	strcat-chk.c strcpy-chk.c strncat-chk.c strncpy-chk.c \
+ 	vsnprintf-chk.c vsprintf-chk.c
+Index: libssp/Makefile.in
+===================================================================
+--- libssp/Makefile.in	(revision 263319)
++++ libssp/Makefile.in	(working copy)
+@@ -108,7 +108,7 @@
+ am__installdirs = "$(DESTDIR)$(toolexeclibdir)" \
+ 	"$(DESTDIR)$(libsubincludedir)"
+ LTLIBRARIES = $(toolexeclib_LTLIBRARIES)
+-am_libssp_la_OBJECTS = ssp.lo gets-chk.lo memcpy-chk.lo memmove-chk.lo \
++am_libssp_la_OBJECTS = ssp.lo memcpy-chk.lo memmove-chk.lo \
+ 	mempcpy-chk.lo memset-chk.lo snprintf-chk.lo sprintf-chk.lo \
+ 	stpcpy-chk.lo strcat-chk.lo strcpy-chk.lo strncat-chk.lo \
+ 	strncpy-chk.lo vsnprintf-chk.lo vsprintf-chk.lo
+@@ -291,7 +291,7 @@
+ libsubincludedir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include
+ nobase_libsubinclude_HEADERS = ssp/ssp.h ssp/string.h ssp/stdio.h ssp/unistd.h
+ libssp_la_SOURCES = \
+-	ssp.c gets-chk.c memcpy-chk.c memmove-chk.c mempcpy-chk.c \
++	ssp.c memcpy-chk.c memmove-chk.c mempcpy-chk.c \
+ 	memset-chk.c snprintf-chk.c sprintf-chk.c stpcpy-chk.c \
+ 	strcat-chk.c strcpy-chk.c strncat-chk.c strncpy-chk.c \
+ 	vsnprintf-chk.c vsprintf-chk.c
+@@ -452,7 +452,6 @@
+ distclean-compile:
+ 	-rm -f *.tab.c
+ 
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gets-chk.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libssp_nonshared_la-ssp-local.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memcpy-chk.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memmove-chk.Plo@am__quote@
diff --git a/lang/gcc11/files/patch-gfortran-libgcc b/lang/gcc11/files/patch-gfortran-libgcc
new file mode 100644
index 000000000000..89c6cb902c42
--- /dev/null
+++ b/lang/gcc11/files/patch-gfortran-libgcc
@@ -0,0 +1,70 @@
+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.c.orig	2015-06-26 17:47:23 UTC
++++ gcc/fortran/gfortranspec.c
+@@ -404,7 +404,7 @@ For more information about these matters
+ 	}
+     }
+ 
+-#ifdef ENABLE_SHARED_LIBGCC
++#if 0
+   if (library)
+     {
+       unsigned int i;
+
+--- libgfortran/Makefile.in.orig	2019-02-22 14:22:13.000000000 +0000
++++ libgfortran/Makefile.in	2019-02-27 16:27:08.856408000 +0000
+@@ -625,7 +625,7 @@
+ 	$(LTLDFLAGS) $(LIBQUADLIB) ../libbacktrace/libbacktrace.la \
+ 	$(HWCAP_LDFLAGS) \
+ 	-lm $(extra_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/gcc11/files/pkg-message.in b/lang/gcc11/files/pkg-message.in
new file mode 100644
index 000000000000..df3ea725ce59
--- /dev/null
+++ b/lang/gcc11/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/gcc11/pkg-descr b/lang/gcc11/pkg-descr
new file mode 100644
index 000000000000..da60c54f5b5d
--- /dev/null
+++ b/lang/gcc11/pkg-descr
@@ -0,0 +1,7 @@
+GCC, the GNU Compiler Collection, supports a number of languages.
+This port installs the C, C++, and Fortran front ends as gcc11, g++11,
+and gfortran11, respectively.
+
+WWW: https://gcc.gnu.org
+
+Gerald Pfeifer <gerald@FreeBSD.org>
diff --git a/lang/gcc11/pkg-plist b/lang/gcc11/pkg-plist
new file mode 100644
index 000000000000..cada193c9907
--- /dev/null
+++ b/lang/gcc11/pkg-plist
@@ -0,0 +1,37 @@
+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/libgccjit++.h
+include/libgccjit.h
+man/man1/cpp%%SUFFIX%%.1.gz
+man/man1/g++%%SUFFIX%%.1.gz
+man/man1/gcc%%SUFFIX%%.1.gz
+man/man1/gcov%%SUFFIX%%.1.gz
+man/man1/gcov-dump%%SUFFIX%%.1.gz
+man/man1/gcov-tool%%SUFFIX%%.1.gz
+man/man1/gfortran%%SUFFIX%%.1.gz
+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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202106182009.15IK9UfQ036939>