mirror of
https://git.FreeBSD.org/ports.git
synced 2024-12-11 02:50:24 +00:00
dad9e883dd
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
164 lines
4.6 KiB
Makefile
164 lines
4.6 KiB
Makefile
# Created by: Gerald Pfeifer <gerald@FreeBSD.org>
|
|
# $FreeBSD$
|
|
|
|
PORTNAME= gcc
|
|
PORTVERSION= 4.8.5
|
|
PORTREVISION= 1
|
|
CATEGORIES= lang java
|
|
MASTER_SITES= GCC/releases/gcc-${DISTVERSION}
|
|
PKGNAMESUFFIX= ${SUFFIX}
|
|
|
|
MAINTAINER= gerald@FreeBSD.org
|
|
COMMENT= GNU Compiler Collection 4.8
|
|
|
|
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
|
|
|
|
CONFLICTS= gcc-4.8.*
|
|
CPE_VENDOR= gnu
|
|
CPE_VERSION= ${GCC_VERSION}
|
|
|
|
# DISTVERSION relates to downloads, GCC_VERSION and SUFFIX to names
|
|
# of executables and directories once installed.
|
|
DISTVERSION= ${PORTVERSION}
|
|
GCC_VERSION= ${PORTVERSION:C/(.+)\.[0-9]{8}/\1/}
|
|
SUFFIX= ${PORTVERSION:C/([0-9]+).([0-9]+).*/\1\2/}
|
|
ONLY_FOR_ARCHS= amd64 i386 powerpc powerpc64 sparc64
|
|
USES= cpe gmake iconv libtool makeinfo perl5 tar:bzip2
|
|
USE_BINUTILS= yes
|
|
USE_PERL5= build
|
|
SSP_UNSAFE= yes
|
|
|
|
PATCH_WRKSRC= ${SRCDIR}
|
|
CONFIGURE_SCRIPT= ../${SRCDIR:S/${WRKDIR}\///}/configure
|
|
|
|
OPTIONS_DEFINE= BOOTSTRAP
|
|
OPTIONS_DEFINE_i386= JAVA
|
|
OPTIONS_DEFINE_amd64= JAVA
|
|
OPTIONS_DEFAULT= BOOTSTRAP
|
|
OPTIONS_DEFAULT_i386= JAVA
|
|
OPTIONS_DEFAULT_amd64= JAVA
|
|
OPTIONS_EXCLUDE_DragonFly= JAVA
|
|
BOOTSTRAP_DESC= Build using a full bootstrap
|
|
|
|
.if exists(/usr/lib32/libc.so)
|
|
OPTIONS_DEFINE_powerpc64= MULTILIB
|
|
OPTIONS_DEFAULT_powerpc64= MULTILIB
|
|
MULTILIB_DESC= Build support for 32-bit and 64-bit target types
|
|
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}
|
|
.else
|
|
CONFIGURE_TARGET= ${ARCH}-portbld-${OPSYS:tl}${OSREL}
|
|
.endif
|
|
|
|
.if ${ARCH} == powerpc64
|
|
CONFIGURE_ENV+= UNAME_m="powerpc64"
|
|
.endif
|
|
|
|
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
|
|
CONFIGURE_ARGS+=--with-build-config=bootstrap-debug
|
|
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
|
|
# Release tarballs (as opposed to snapshots) always carry this.
|
|
#.if ${ARCH} == "i386" || ${ARCH} == "amd64"
|
|
INFO+= gcc${SUFFIX}/libquadmath \
|
|
gcc${SUFFIX}/libitm
|
|
#.endif
|
|
SUB_FILES= pkg-message
|
|
SUB_LIST+= TARGLIB=${TARGLIB}
|
|
|
|
.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
|
|
cd ${WRKSRC}; ${MAKE_CMD} -sk check \
|
|
; ${SRCDIR}/contrib/test_summary
|
|
.endif
|
|
|
|
post-stage:
|
|
${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>
|