7c4a6df8e8
link-time optimization framework and optimizations. GCC 4.6 has been seeing a lot of work since GCC 4.5, but we are still keeping this disable by default for now Using LTO adds libelf as a new dependency and in either case the environment does not have an influence any more. Bumping PORTREVISION since someone who had libelf on his system previously to this change would get LTO enabled automatically and then run into problems if libelf was removed.
175 lines
4.9 KiB
Makefile
175 lines
4.9 KiB
Makefile
# ex:ts=8
|
|
# Ports collection makefile for: gcc46
|
|
# Date created: 2010-04-25
|
|
# Whom: Gerald Pfeifer <gerald@FreeBSD.org>
|
|
#
|
|
# $FreeBSD$
|
|
#
|
|
|
|
PORTNAME= gcc
|
|
PORTVERSION= 4.6.0.20100828
|
|
PORTREVISION= 1
|
|
CATEGORIES= lang java
|
|
MASTER_SITES= ${MASTER_SITE_GCC}
|
|
MASTER_SITE_SUBDIR= snapshots/${VERSIONSTRING}
|
|
DISTFILES= gcc-core-${VERSIONSTRING}${EXTRACT_SUFX} \
|
|
gcc-fortran-${VERSIONSTRING}${EXTRACT_SUFX} \
|
|
gcc-g++-${VERSIONSTRING}${EXTRACT_SUFX}
|
|
|
|
MAINTAINER= gerald@FreeBSD.org
|
|
COMMENT= GNU Compiler Collection 4.6
|
|
|
|
LIB_DEPENDS= gmp.10:${PORTSDIR}/math/gmp \
|
|
mpfr.4:${PORTSDIR}/math/mpfr \
|
|
mpc.2:${PORTSDIR}/math/mpc
|
|
BUILD_DEPENDS+= ${LOCALBASE}/bin/as:${PORTSDIR}/devel/binutils
|
|
RUN_DEPENDS+= ${LOCALBASE}/bin/as:${PORTSDIR}/devel/binutils
|
|
|
|
.if defined(MAINTAINER_MODE)
|
|
DISTFILES+= gcc-testsuite-${VERSIONSTRING}${EXTRACT_SUFX}
|
|
BUILD_DEPENDS+= runtest:${PORTSDIR}/misc/dejagnu
|
|
.endif
|
|
|
|
VERSIONSTRING= ${PORTVERSION:C/([0-9]+\.[0-9]+).*\.([0-9]+)/\1-\2/}
|
|
SUFFIX= ${PORTVERSION:C/([0-9]+).([0-9]+).*/\1\2/}
|
|
LATEST_LINK= gcc${SUFFIX}${PKGNAMESUFFIX}
|
|
ONLY_FOR_ARCHS= amd64 i386 sparc64
|
|
USE_BISON= build
|
|
USE_BZIP2= yes
|
|
USE_GMAKE= yes
|
|
USE_ICONV= yes
|
|
USE_PERL5_BUILD=yes
|
|
MAKE_JOBS_SAFE= yes
|
|
|
|
PATCH_WRKSRC= ${SRCDIR}
|
|
CONFIGURE_SCRIPT= ../${SRCDIR:S/${WRKDIR}\///}/configure
|
|
|
|
OPTIONS= LTO "Enable link-time optimizations (LTO)" off \
|
|
JAVA "Enable the Java frontend (i386 and amd64 only)" on
|
|
|
|
.include <bsd.port.pre.mk>
|
|
|
|
.if defined(WITH_LTO)
|
|
LIB_DEPENDS+= elf.0:${PORTSDIR}/devel/libelf
|
|
CONFIGURE_ARGS+= --enable-lto=yes \
|
|
--with-libelf=${LOCALBASE}
|
|
.else
|
|
CONFIGURE_ARGS+= --enable-lto=no
|
|
.endif
|
|
|
|
.if ${ARCH} != i386 && ${ARCH} != amd64
|
|
WITHOUT_JAVA= yes
|
|
.endif
|
|
|
|
.if ${ARCH} == "amd64"
|
|
CONFIGURE_TARGET= x86_64-portbld-freebsd${OSREL}
|
|
.else
|
|
CONFIGURE_TARGET= ${ARCH}-portbld-freebsd${OSREL}
|
|
.endif
|
|
|
|
SRCDIR= ${WRKDIR}/gcc-${VERSIONSTRING}
|
|
WRKSRC= ${WRKDIR}/build
|
|
TARGLIB= ${PREFIX}/lib/gcc${SUFFIX}
|
|
LIBEXEC= ${PREFIX}/libexec/gcc${SUFFIX}
|
|
GNU_CONFIGURE= yes
|
|
CFLAGS+= -I${LOCALBASE}/include
|
|
CONFIGURE_ARGS+=--disable-nls \
|
|
--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 \
|
|
--with-libiconv-prefix=${LOCALBASE} \
|
|
--with-system-zlib
|
|
MAKE_ARGS+= MAKEINFOFLAGS="--no-split"
|
|
ALL_TARGET= bootstrap-lean
|
|
USE_LDCONFIG= ${TARGLIB}
|
|
PLIST_SUB= GCC_VER=${PORTVERSION:C/(.+)\.[0-9]+/\1/} \
|
|
GNU_HOST=${CONFIGURE_TARGET} \
|
|
SUFFIX=${SUFFIX}
|
|
MAN1= cpp${SUFFIX}.1 \
|
|
g++${SUFFIX}.1 \
|
|
gcc${SUFFIX}.1 \
|
|
gcov${SUFFIX}.1 \
|
|
gfortran${SUFFIX}.1
|
|
INFO= gcc${SUFFIX}/cpp \
|
|
gcc${SUFFIX}/cppinternals \
|
|
gcc${SUFFIX}/gcc \
|
|
gcc${SUFFIX}/gccinstall \
|
|
gcc${SUFFIX}/gccint \
|
|
gcc${SUFFIX}/gfortran \
|
|
gcc${SUFFIX}/libgomp
|
|
|
|
.if ! defined(WITHOUT_JAVA)
|
|
DISTFILES+= gcc-java-${VERSIONSTRING}${EXTRACT_SUFX}
|
|
BUILD_DEPENDS+= zip:${PORTSDIR}/archivers/zip
|
|
EXTRA_PATCHES+= ${FILESDIR}/java-patch-hier
|
|
# FIXME: we are currently getting weird build failures with libjava on
|
|
# some 4.x and 5.x systems, which the following works around. PR 81788.
|
|
CONFIGURE_ARGS+=--disable-rpath
|
|
MAN1+= aot-compile${SUFFIX}.1 \
|
|
gappletviewer${SUFFIX}.1 \
|
|
gc-analyze${SUFFIX}.1 \
|
|
gcj${SUFFIX}.1 \
|
|
gcj-dbtool${SUFFIX}.1 \
|
|
gcjh${SUFFIX}.1 \
|
|
gij${SUFFIX}.1 \
|
|
gjar${SUFFIX}.1 \
|
|
gjarsigner${SUFFIX}.1 \
|
|
gjavah${SUFFIX}.1 \
|
|
gjdoc${SUFFIX}.1 \
|
|
gkeytool${SUFFIX}.1 \
|
|
gnative2ascii${SUFFIX}.1 \
|
|
gorbd${SUFFIX}.1 \
|
|
grmic${SUFFIX}.1 \
|
|
grmid${SUFFIX}.1 \
|
|
grmiregistry${SUFFIX}.1 \
|
|
gserialver${SUFFIX}.1 \
|
|
gtnameserv${SUFFIX}.1 \
|
|
jcf-dump${SUFFIX}.1 \
|
|
jv-convert${SUFFIX}.1 \
|
|
rebuild-gcj-db${SUFFIX}.1
|
|
MAN3= ffi${SUFFIX}.3 \
|
|
ffi_call${SUFFIX}.3 \
|
|
ffi_prep_cif${SUFFIX}.3
|
|
INFO+= gcc${SUFFIX}/cp-tools \
|
|
gcc${SUFFIX}/gcj
|
|
PLIST_SUB+= JAVA=""
|
|
.else
|
|
CONFIGURE_ARGS+=--disable-libgcj
|
|
PLIST_SUB+= JAVA="@comment "
|
|
.endif
|
|
|
|
pre-everything::
|
|
@${ECHO_MSG} "Making GCC ${PORTVERSION} for ${OPSYS} ${OSREL} target=${CONFIGURE_TARGET}"
|
|
|
|
post-patch:
|
|
@${REINPLACE_CMD} -e 's|\(const char version_string.*\)";|\1 [FreeBSD]";|' \
|
|
${SRCDIR}/gcc/version.c
|
|
|
|
pre-configure:
|
|
cd ${SRCDIR} ; contrib/gcc_update --touch
|
|
@${RM} -f ${SRCDIR}/gcc/*/*.info*
|
|
@${MKDIR} ${CONFIGURE_WRKSRC}
|
|
|
|
full-regression-test: build
|
|
cd ${WRKSRC}; ${GMAKE} -sk check
|
|
|
|
post-install:
|
|
${RM} -f ${PREFIX}/man/man7/fsf-funding.7 \
|
|
${PREFIX}/man/man7/gfdl.7 ${PREFIX}/man/man7/gpl.7
|
|
${RM} -f ${TARGLIB}/*.la
|
|
# 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 ${PREFIX} ; if [ -d $d ]; then \
|
|
${FIND} $d -type f -o -type l >>${WRKDIR}/PLIST.lib ;\
|
|
${FIND} $d -type d | ${SORT} -r \
|
|
| ${SED} -e 's/^/@dirrm /g' >>${WRKDIR}/PLIST.lib ;\
|
|
fi
|
|
.endfor
|
|
cd ${WRKDIR} ; ${SED} -i -e "/PLIST.lib/ r PLIST.lib" ${TMPPLIST}
|
|
|
|
.include <bsd.port.post.mk>
|