Now that GCC 8.1 has been released and the GCC 8 branch created, GCC
mainline has become GCC 9 and the 20180429 snapshot of GCC 9.0.0 is the first of its kind. Accordingly introduce the gcc9-devel port to track this development of what ultimately is going to become the GCC 9 release series.
This commit is contained in:
parent
96fb5601ca
commit
db23a2053a
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=469251
@ -109,6 +109,7 @@
|
||||
SUBDIR += gcc7
|
||||
SUBDIR += gcc7-devel
|
||||
SUBDIR += gcc8-devel
|
||||
SUBDIR += gcc9-devel
|
||||
SUBDIR += gforth
|
||||
SUBDIR += ghc
|
||||
SUBDIR += gjs
|
||||
|
149
lang/gcc9-devel/Makefile
Normal file
149
lang/gcc9-devel/Makefile
Normal file
@ -0,0 +1,149 @@
|
||||
# Created by: Gerald Pfeifer <gerald@FreeBSD.org>
|
||||
# $FreeBSD$
|
||||
|
||||
PORTNAME= gcc
|
||||
PORTVERSION= 9.0.0.s20180429
|
||||
CATEGORIES= lang
|
||||
MASTER_SITES= GCC/snapshots/${DIST_VERSION}
|
||||
PKGNAMESUFFIX= ${SUFFIX}-devel
|
||||
DISTNAME= gcc-${DIST_VERSION}
|
||||
|
||||
MAINTAINER= gerald@FreeBSD.org
|
||||
COMMENT= GNU Compiler Collection 9
|
||||
|
||||
LICENSE= GPLv3 GPLv3RLE
|
||||
LICENSE_COMB= multi
|
||||
|
||||
ONLY_FOR_ARCHS= aarch64 amd64 arm armv6 armv7 i386 powerpc powerpc64 powerpcspe sparc64
|
||||
|
||||
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
|
||||
|
||||
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/}
|
||||
USES= compiler cpe gmake iconv libtool makeinfo perl5 tar:xz
|
||||
USE_BINUTILS= yes
|
||||
USE_PERL5= build
|
||||
SSP_UNSAFE= yes
|
||||
|
||||
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_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"
|
||||
USE_GCC= yes
|
||||
|
||||
.elif ${ARCH} == powerpcspe
|
||||
CONFIGURE_ARGS+= --with-cpu=8540 --enable-e500_double --without-fp
|
||||
.endif
|
||||
|
||||
LANGUAGES:= c,c++,objc,fortran
|
||||
TARGLIB= ${PREFIX}/lib/gcc${SUFFIX}
|
||||
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 \
|
||||
--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
|
||||
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}/libgomp
|
||||
.if ${ARCH} == amd64 || ${ARCH} == i386
|
||||
INFO+= gcc${SUFFIX}/libquadmath \
|
||||
gcc${SUFFIX}/libitm
|
||||
.endif
|
||||
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
|
||||
.for d in ${TARGLIB: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>
|
3
lang/gcc9-devel/distinfo
Normal file
3
lang/gcc9-devel/distinfo
Normal file
@ -0,0 +1,3 @@
|
||||
TIMESTAMP = 1525635369
|
||||
SHA256 (gcc-9-20180429.tar.xz) = 86a0ce4f11fe43c9d591b0b503c1c82db6dfc597575366844b204efc702670fe
|
||||
SIZE (gcc-9-20180429.tar.xz) = 61615416
|
106
lang/gcc9-devel/files/patch-arm-unwind-cxx-support
Normal file
106
lang/gcc9-devel/files/patch-arm-unwind-cxx-support
Normal file
@ -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,
|
15
lang/gcc9-devel/files/patch-spe-config
Normal file
15
lang/gcc9-devel/files/patch-spe-config
Normal file
@ -0,0 +1,15 @@
|
||||
--- UTC
|
||||
Index: gcc/config.gcc
|
||||
===================================================================
|
||||
--- gcc/config.gcc.old 2017-04-05 17:48:03.045750000 -0500
|
||||
+++ gcc/config.gcc 2017-04-05 17:49:22.143572000 -0500
|
||||
@@ -2383,6 +2383,9 @@
|
||||
tmake_file="${tmake_file} rs6000/t-freebsd64"
|
||||
extra_options="${extra_options} rs6000/linux64.opt"
|
||||
;;
|
||||
+ powerpcspe-*)
|
||||
+ tm_file="${tm_file} powerpcspe/freebsd.h powerpcspe/linuxspe.h powerpcspe/e500.h"
|
||||
+ ;;
|
||||
*)
|
||||
tm_file="${tm_file} rs6000/freebsd.h"
|
||||
;;
|
7
lang/gcc9-devel/files/pkg-message.in
Normal file
7
lang/gcc9-devel/files/pkg-message.in
Normal file
@ -0,0 +1,7 @@
|
||||
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.
|
7
lang/gcc9-devel/pkg-descr
Normal file
7
lang/gcc9-devel/pkg-descr
Normal file
@ -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 gcc9, g++9, gfortran9,
|
||||
respectively.
|
||||
|
||||
WWW: https://gcc.gnu.org
|
||||
|
||||
Gerald Pfeifer <gerald@FreeBSD.org>
|
33
lang/gcc9-devel/pkg-plist
Normal file
33
lang/gcc9-devel/pkg-plist
Normal file
@ -0,0 +1,33 @@
|
||||
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%%
|
||||
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
|
||||
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
|
Loading…
Reference in New Issue
Block a user