2014-04-28 23:19:17 +02:00
|
|
|
# Created by: Gerald Pfeifer <gerald@FreeBSD.org>
|
|
|
|
# $FreeBSD$
|
|
|
|
|
2015-03-23 00:11:13 +01:00
|
|
|
PORTNAME= gcc
|
2015-12-05 19:25:46 +01:00
|
|
|
PORTVERSION= 5.3.0
|
2014-04-28 23:19:17 +02:00
|
|
|
CATEGORIES= lang java
|
2015-04-28 22:11:07 +02:00
|
|
|
MASTER_SITES= GCC/releases/gcc-${DISTVERSION}
|
2015-03-23 00:11:13 +01:00
|
|
|
PKGNAMESUFFIX= ${SUFFIX}
|
2014-04-28 23:19:17 +02:00
|
|
|
|
|
|
|
MAINTAINER= gerald@FreeBSD.org
|
2014-08-23 14:31:36 +02:00
|
|
|
COMMENT= GNU Compiler Collection 5
|
2014-04-28 23:19:17 +02:00
|
|
|
|
|
|
|
LICENSE= GPLv3 GPLv3RLE
|
|
|
|
LICENSE_COMB= multi
|
|
|
|
|
|
|
|
LIB_DEPENDS= libgmp.so:${PORTSDIR}/math/gmp \
|
|
|
|
libmpfr.so:${PORTSDIR}/math/mpfr \
|
|
|
|
libmpc.so:${PORTSDIR}/math/mpc
|
|
|
|
BUILD_DEPENDS+= ${LOCALBASE}/bin/as:${PORTSDIR}/devel/binutils
|
|
|
|
RUN_DEPENDS+= ${LOCALBASE}/bin/as:${PORTSDIR}/devel/binutils
|
|
|
|
|
|
|
|
.if defined(MAINTAINER_MODE)
|
|
|
|
BUILD_DEPENDS+= runtest:${PORTSDIR}/misc/dejagnu
|
|
|
|
.endif
|
|
|
|
|
2015-03-23 00:11:13 +01:00
|
|
|
CPE_VENDOR= gnu
|
|
|
|
CPE_VERSION= ${GCC_VERSION}
|
|
|
|
|
2014-04-28 23:19:17 +02:00
|
|
|
# DISTVERSION relates to downloads, GCC_VERSION and SUFFIX to names
|
|
|
|
# of executables and directories once installed. A PORTVERSION of
|
2015-04-20 00:07:22 +02:00
|
|
|
# Y.2.1.s20140817 results in values of Y-20140817, Y.2.1, and Y
|
2014-04-28 23:19:17 +02:00
|
|
|
# for these three.
|
2014-08-23 14:31:36 +02:00
|
|
|
DISTVERSION= ${PORTVERSION:C/([0-9]+).*\.s([0-9]+)/\1-\2/}
|
2015-04-19 03:03:14 +02:00
|
|
|
GCC_VERSION= ${PORTVERSION:C/(.+)\.s[0-9]{8}/\1/}
|
2014-08-23 14:31:36 +02:00
|
|
|
SUFFIX= ${PORTVERSION:C/([0-9]+).*/\1/}
|
2015-01-28 06:37:26 +01:00
|
|
|
ONLY_FOR_ARCHS= amd64 i386 powerpc powerpc64 sparc64 arm armv6 armv6hf
|
2015-10-05 18:59:50 +02:00
|
|
|
USES= compiler cpe gmake iconv libtool makeinfo perl5 tar:bzip2
|
2014-04-28 23:19:17 +02:00
|
|
|
USE_BINUTILS= yes
|
|
|
|
USE_PERL5= build
|
|
|
|
SSP_UNSAFE= yes
|
|
|
|
|
|
|
|
PATCH_WRKSRC= ${SRCDIR}
|
|
|
|
CONFIGURE_SCRIPT= ../${SRCDIR:S/${WRKDIR}\///}/configure
|
|
|
|
|
2015-12-05 19:25:46 +01:00
|
|
|
OPTIONS_DEFINE= BOOTSTRAP GRAPHITE
|
2014-04-28 23:19:17 +02:00
|
|
|
OPTIONS_DEFINE_i386= JAVA
|
|
|
|
OPTIONS_DEFINE_amd64= JAVA
|
|
|
|
OPTIONS_DEFAULT= BOOTSTRAP
|
2015-02-02 01:46:28 +01:00
|
|
|
OPTIONS_DEFAULT_i386= JAVA
|
|
|
|
OPTIONS_DEFAULT_amd64= JAVA
|
2015-03-26 21:36:04 +01:00
|
|
|
OPTIONS_EXCLUDE_DragonFly= JAVA
|
2014-04-28 23:19:17 +02:00
|
|
|
BOOTSTRAP_DESC= Build using a full bootstrap
|
2015-11-20 23:19:24 +01:00
|
|
|
GRAPHITE_DESC= Support for Graphite loop optimizations
|
2014-04-28 23:19:17 +02:00
|
|
|
|
Add a MULTILIB option to gcc{,48,49,5} for powerpc64
This change is the same as r400632, which updated gcc[56]-devel, but now
for gcc{,48,49,5}. This change is the second attempt at doing this: the
first attempt went in r401072 and was reverted in r401074 because the diff
was bogus and enabled the new MULTILIB option under all platforms instead
of just powerpc64.
This fixes the build of gcc{,48,49,5} under powerpc64 when the system
is built without the lib32 libraries.
More in detail:
If the system is built with lib32 support (WITH_LIB32, which is the default),
building gcc from ports results in a compiler that can target both 64-bit and
32-bit binaries on powerpc64. However, when lib32 support is disabled
(WITHOUT_LIB32), gcc should only be built with 64-bit support or otherwise
the build fails.
To fix this, explicitly disable 32-bit support when /usr/lib32 is not present
and add a MULTILIB option (which is only defined for powerpc64 when 32-bit
support is possible and defaults to yes to preserve the current behavior) to
allow the user to explicitly control this feature.
Approved by: gerald (maintainer), bdrewery (mentor), andreast
Differential Revision: https://reviews.freebsd.org/D3952
2015-11-22 22:06:54 +01:00
|
|
|
.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
|
|
|
|
|
2014-04-28 23:19:17 +02:00
|
|
|
.include <bsd.port.pre.mk>
|
|
|
|
|
|
|
|
.if ${ARCH} == "amd64"
|
2014-05-05 11:45:36 +02:00
|
|
|
CONFIGURE_TARGET= x86_64-portbld-${OPSYS:tl}${OSREL}
|
2014-04-28 23:19:17 +02:00
|
|
|
.else
|
2014-05-05 11:45:36 +02:00
|
|
|
CONFIGURE_TARGET= ${ARCH}-portbld-${OPSYS:tl}${OSREL}
|
2014-04-28 23:19:17 +02:00
|
|
|
.endif
|
|
|
|
|
|
|
|
.if ${ARCH} == powerpc64
|
|
|
|
CONFIGURE_ENV+= UNAME_m="powerpc64"
|
|
|
|
.endif
|
|
|
|
|
2015-01-28 06:37:26 +01:00
|
|
|
.if ${ARCH} == "armv6" || ${ARCH} == "armv6hf"
|
|
|
|
. if ${COMPILER_TYPE} == clang
|
|
|
|
. if empty(PORT_OPTIONS:MBOOTSTRAP)
|
|
|
|
MAKE_ARGS+=CXXFLAGS=-fbracket-depth=512
|
|
|
|
. else
|
|
|
|
MAKE_ARGS+=STAGE1_CXXFLAGS=-fbracket-depth=512
|
|
|
|
. endif
|
|
|
|
. endif
|
|
|
|
.endif
|
|
|
|
|
2014-04-28 23:19:17 +02:00
|
|
|
LANGUAGES:= c,c++,objc,fortran
|
|
|
|
SRCDIR= ${WRKDIR}/gcc-${DISTVERSION}
|
|
|
|
WRKSRC= ${WRKDIR}/build
|
|
|
|
TARGLIB= ${PREFIX}/lib/gcc${SUFFIX}
|
|
|
|
LIBEXEC= ${PREFIX}/libexec/gcc${SUFFIX}
|
|
|
|
GNU_CONFIGURE= yes
|
|
|
|
.if empty(PORT_OPTIONS:MBOOTSTRAP)
|
|
|
|
CONFIGURE_ARGS+=--disable-bootstrap
|
|
|
|
.else
|
2014-12-30 20:19:43 +01:00
|
|
|
CONFIGURE_ARGS+=--with-build-config=bootstrap-debug
|
2014-04-28 23:19:17 +02:00
|
|
|
ALL_TARGET= bootstrap-lean
|
|
|
|
.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
|
Update to the 5.1 release, the first release of the GCC 5 series.
The default mode for C is now -std=gnu11 instead of -std=gnu89.
New warning options -Wc90-c99-compat and -Wc99-c11-compat may
prove useful on that front.
The C++ front end now has full C++14 language support including
C++14 variable templates, C++14 aggregates with non-static data
member initializers, C++14 extended constexpr, and more.
The Standard C++ Library (libstdc++) has full C++11 support and
experimental full C++14 support. It uses a new ABI by default.
There have been significant improvements to inter-procedural optimizations
and link-time optimization such as One Definition Rule based merging of C++
types as well as register allocation.
OpenMP 4.0 specification offloading features are now supported by the C,
C++, and Fortran compilers. Cilk Plus, an extension to the C and C++
languages to support data and task parallelism, has been added as well.
New warning options -Wswitch-bool, -Wlogical-not-parentheses,
-Wbool-compare and -Wsizeof-array-argument may prove useful as
may new preprocessor directives __has_include, __has_include_next,
and __has_attribute.
GCC can now be built as a shared library for embedding in other processes
(such as interpreters), suitable for Just-In-Time compilation to machine
code. This provides a C API and a C++ wrapper API.
Many code generation improvements for AArch64, ARM, support for
AVX-512{BW,DQ,VL,IFMA,VBMI} and Intel MPX on x86-64, and generally
improvements on many targets.
The Local Register Allocator (LRA) now contains a rematerialization
subpass and is able to reuse the PIC hard register on x86/x86-64 to
improve performance of position independent code.
https://gcc.gnu.org/gcc-5/changes.html has a more extensive set of
changes and https://gcc.gnu.org/gcc-5/porting_to.html has a solid
overview of issue you may encountering porting to this new version.
2015-04-28 01:42:09 +02:00
|
|
|
# Release tarballs (as opposed to snapshots) always carry this.
|
|
|
|
#.if ${ARCH} == "i386" || ${ARCH} == "amd64"
|
2014-04-28 23:19:17 +02:00
|
|
|
INFO+= gcc${SUFFIX}/libquadmath \
|
|
|
|
gcc${SUFFIX}/libitm
|
Update to the 5.1 release, the first release of the GCC 5 series.
The default mode for C is now -std=gnu11 instead of -std=gnu89.
New warning options -Wc90-c99-compat and -Wc99-c11-compat may
prove useful on that front.
The C++ front end now has full C++14 language support including
C++14 variable templates, C++14 aggregates with non-static data
member initializers, C++14 extended constexpr, and more.
The Standard C++ Library (libstdc++) has full C++11 support and
experimental full C++14 support. It uses a new ABI by default.
There have been significant improvements to inter-procedural optimizations
and link-time optimization such as One Definition Rule based merging of C++
types as well as register allocation.
OpenMP 4.0 specification offloading features are now supported by the C,
C++, and Fortran compilers. Cilk Plus, an extension to the C and C++
languages to support data and task parallelism, has been added as well.
New warning options -Wswitch-bool, -Wlogical-not-parentheses,
-Wbool-compare and -Wsizeof-array-argument may prove useful as
may new preprocessor directives __has_include, __has_include_next,
and __has_attribute.
GCC can now be built as a shared library for embedding in other processes
(such as interpreters), suitable for Just-In-Time compilation to machine
code. This provides a C API and a C++ wrapper API.
Many code generation improvements for AArch64, ARM, support for
AVX-512{BW,DQ,VL,IFMA,VBMI} and Intel MPX on x86-64, and generally
improvements on many targets.
The Local Register Allocator (LRA) now contains a rematerialization
subpass and is able to reuse the PIC hard register on x86/x86-64 to
improve performance of position independent code.
https://gcc.gnu.org/gcc-5/changes.html has a more extensive set of
changes and https://gcc.gnu.org/gcc-5/porting_to.html has a solid
overview of issue you may encountering porting to this new version.
2015-04-28 01:42:09 +02:00
|
|
|
#.endif
|
2014-04-28 23:19:17 +02:00
|
|
|
SUB_FILES= pkg-message
|
|
|
|
SUB_LIST+= TARGLIB=${TARGLIB}
|
|
|
|
|
2015-11-20 23:19:24 +01:00
|
|
|
.if ${PORT_OPTIONS:MGRAPHITE}
|
|
|
|
LIB_DEPENDS+= libisl.so:${PORTSDIR}/devel/isl
|
|
|
|
CONFIGURE_ARGS+=--with-isl=${LOCALBASE}
|
|
|
|
.endif
|
|
|
|
|
2014-04-28 23:19:17 +02:00
|
|
|
.if ${PORT_OPTIONS:MJAVA}
|
|
|
|
ECJ_JAR= ${LOCALBASE}/share/java/ecj-4.5.jar
|
|
|
|
BUILD_DEPENDS+= ${ECJ_JAR}:${PORTSDIR}/lang/gcc-ecj45 \
|
|
|
|
zip:${PORTSDIR}/archivers/zip
|
|
|
|
RUN_DEPENDS+= ${ECJ_JAR}:${PORTSDIR}/lang/gcc-ecj45
|
|
|
|
EXTRA_PATCHES+= ${FILESDIR}/java-patch-hier
|
|
|
|
CONFIGURE_ARGS+=--with-ecj-jar=${ECJ_JAR}
|
|
|
|
LANGUAGES:= ${LANGUAGES},java
|
|
|
|
INFO+= gcc${SUFFIX}/cp-tools \
|
|
|
|
gcc${SUFFIX}/gcj
|
|
|
|
PLIST_SUB+= JAVA=""
|
|
|
|
.else
|
|
|
|
CONFIGURE_ARGS+=--disable-libgcj
|
|
|
|
PLIST_SUB+= JAVA="@comment "
|
|
|
|
.endif
|
|
|
|
CONFIGURE_ARGS+=--enable-languages=${LANGUAGES}
|
|
|
|
|
|
|
|
pre-everything::
|
|
|
|
@${ECHO_MSG} "Making GCC ${PORTVERSION} for ${CONFIGURE_TARGET} [${LANGUAGES}]"
|
|
|
|
|
|
|
|
pre-configure:
|
|
|
|
cd ${SRCDIR} ; contrib/gcc_update --touch
|
|
|
|
@${RM} -f ${SRCDIR}/gcc/*/*.info*
|
|
|
|
@${MKDIR} ${CONFIGURE_WRKSRC}
|
|
|
|
|
|
|
|
.if defined(MAINTAINER_MODE)
|
|
|
|
full-regression-test: build
|
2014-06-25 07:35:31 +02:00
|
|
|
cd ${WRKSRC}; ${MAKE_CMD} -sk check \
|
2014-04-28 23:19:17 +02:00
|
|
|
; ${SRCDIR}/contrib/test_summary
|
|
|
|
.endif
|
|
|
|
|
2014-09-11 17:30:56 +02:00
|
|
|
post-stage:
|
2014-04-28 23:19:17 +02:00
|
|
|
${RM} -f ${STAGEDIR}${PREFIX}/man/man7/*
|
|
|
|
${RM} -f ${STAGEDIR}${PREFIX}/bin/rebuild-gcj-db${SUFFIX} \
|
|
|
|
${STAGEDIR}${PREFIX}/man/man1/rebuild-gcj-db${SUFFIX}.1
|
|
|
|
# Add target libraries and include files to packaging list.
|
|
|
|
${RM} -f ${WRKDIR}/PLIST.lib
|
|
|
|
.for d in ${TARGLIB:S/^${PREFIX}\///} ${LIBEXEC:S/^${PREFIX}\///} include/gcj include/gnu include/java include/javax
|
|
|
|
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>
|