e557fc6c76
This relates to the case when GCC is built using clang host CC. In that case the runtime libraries are not built with RELRO for some reason. for the gcc*-libs/ packages, mark them as RELRO_SUPPORTED=no unconditionally. RELRO status depends on how the parent gcc package was built so we don't need nor care about the RELRO status here.
218 lines
7 KiB
Makefile
218 lines
7 KiB
Makefile
# $NetBSD: Makefile,v 1.30 2021/10/12 13:46:15 tnn Exp $
|
|
|
|
GCC_PKGNAME= gcc8
|
|
.include "version.mk"
|
|
|
|
DISTNAME= gcc-${GCC8_DIST_VERSION}
|
|
PKGNAME= ${GCC_PKGNAME}-${GCC8_DIST_VERSION}
|
|
PKGREVISION= 5
|
|
## When bumping the PKGREVISION of this package the PKGREVISION of
|
|
## lang/gcc8-libs needs to be bumped to be at least 1 more than the
|
|
## PKGREVISION of this package!
|
|
CATEGORIES= lang
|
|
MASTER_SITES= ${MASTER_SITE_GNU:=gcc/gcc-${GCC8_DIST_VERSION}/}
|
|
EXTRACT_SUFX= .tar.xz
|
|
|
|
MAINTAINER= pkgsrc-users@NetBSD.org
|
|
HOMEPAGE= https://gcc.gnu.org/
|
|
COMMENT= The GNU Compiler Collection (GCC) - 8.0 Release Series
|
|
LICENSE= gnu-gpl-v2 AND gnu-gpl-v3 AND gnu-lgpl-v2 AND gnu-lgpl-v3
|
|
|
|
DISTFILES= ${DEFAULT_DISTFILES}
|
|
EXTRACT_ONLY= ${DEFAULT_DISTFILES}
|
|
|
|
# Relocations result in a linker error on AArch64, but not x86.
|
|
MKPIE_SUPPORTED= no
|
|
|
|
NOT_FOR_PLATFORM= Interix-*-* Darwin-*-aarch64
|
|
|
|
USE_LANGUAGES= c99 c++
|
|
USE_TOOLS+= gmake makeinfo sed:run tar:build
|
|
USE_TOOLS.NetBSD+= gsed
|
|
|
|
GNU_CONFIGURE= yes
|
|
GNU_CONFIGURE_STRICT= no
|
|
## Build outside ${WRKSRC}
|
|
OBJDIR= ../build
|
|
CONFIGURE_DIRS= ${OBJDIR}
|
|
CONFIGURE_SCRIPT= ../${DISTNAME}/configure
|
|
GCC_SUBPREFIX= ${GCC_PKGNAME}
|
|
GCC_PREFIX= ${PREFIX}/${GCC_SUBPREFIX}
|
|
GNU_CONFIGURE_PREFIX= ${GCC_PREFIX}
|
|
INFO_FILES= yes
|
|
CONFIGURE_ARGS+= --disable-libstdcxx-pch
|
|
|
|
UNLIMIT_RESOURCES+= datasize
|
|
UNLIMIT_RESOURCES+= stacksize
|
|
|
|
CHECK_PORTABILITY_SKIP+= contrib/*
|
|
|
|
.include "../../mk/bsd.prefs.mk"
|
|
|
|
LANGS= c
|
|
|
|
# In some cases LINKER_RPATH_FLAG needs a trailing space.
|
|
LINKER_RPATH_FLAG:= ${LINKER_RPATH_FLAG:S/-rpath/& /}
|
|
|
|
## The Library rpath to use in end programs.
|
|
LDFLAGS_FOR_TARGET= ${LDFLAGS:M${COMPILER_RPATH_FLAG}*:N*/usr/lib*} ${LDFLAGS:M-Wl,-z*}
|
|
|
|
# The "-static-libstdc++ -static-libgcc" flags are normally added to the
|
|
# boot-ldflags by configure but because we are supply the boot-ldflags
|
|
# we mash supply them.
|
|
BOOT_LDFLAGS= -static-libstdc++ -static-libgcc ${LDFLAGS_FOR_TARGET}
|
|
# Needed on Darwin when LDFLAGS point to a SDK
|
|
BOOT_LDFLAGS+= ${LDFLAGS:M-Wl,-syslibroot*}
|
|
# GCC does not understand this option; remove it, or stage build will fail
|
|
BUILDLINK_TRANSFORM+= rm:-stdlib=libc++
|
|
|
|
# Disable fixincludes on SmartOS, header changes result in broken includes
|
|
# being generated, see https://github.com/joyent/pkgsrc-legacy/issues/270
|
|
.if ${OS_VARIANT} == "SmartOS"
|
|
SUBST_CLASSES+= fixinc
|
|
SUBST_STAGE.fixinc= pre-configure
|
|
SUBST_FILES.fixinc= gcc/Makefile.in
|
|
SUBST_SED.fixinc= -e "s,\./fixinc.sh,-c true,"
|
|
.endif
|
|
|
|
SUBST_CLASSES+= vars
|
|
SUBST_MESSAGE.vars= Setting target machine name path in ${SUBST_FILES.vars}
|
|
SUBST_STAGE.vars= pre-configure
|
|
SUBST_FILES.vars= gcc/Makefile.in
|
|
SUBST_VARS.vars= MACHINE_GNU_PLATFORM
|
|
|
|
.include "options.mk"
|
|
|
|
## For graphite support.
|
|
.if !empty(PKG_OPTIONS:Mgcc-graphite)
|
|
|
|
post-extract:
|
|
${TAR} -jxf ${DISTDIR}/${ISL16}.tar.bz2 -C ${WRKSRC}
|
|
${MV} ${WRKSRC}/${ISL16} ${WRKSRC}/isl
|
|
.endif
|
|
|
|
.if !empty(MACHINE_PLATFORM:MNetBSD-*-*)
|
|
# on NetBSD, use the native SSP code in libc
|
|
CONFIGURE_ARGS+= --disable-libssp
|
|
# Match base libstdc++ major
|
|
SUBST_CLASSES+= libstdc
|
|
SUBST_STAGE.libstdc= pre-configure
|
|
SUBST_FILES.libstdc= libstdc++-v3/configure
|
|
SUBST_MESSAGE.libstdc= Bumping libstdc++ major to 7
|
|
SUBST_SED.libstdc= -e 's,libtool_VERSION=6:,libtool_VERSION=7:,g'
|
|
.else
|
|
CONFIGURE_ARGS+= --enable-libssp
|
|
.endif
|
|
|
|
## For target librarys and libjava programs.
|
|
CONFIGURE_ENV+= LDFLAGS_FOR_TARGET=${LDFLAGS_FOR_TARGET:Q}
|
|
|
|
CONFIGURE_ARGS+= --enable-languages=${LANGS:Q}
|
|
CONFIGURE_ARGS+= --enable-shared
|
|
CONFIGURE_ARGS+= --enable-long-long
|
|
CONFIGURE_ARGS+= --with-local-prefix=${GCC_PREFIX:Q}
|
|
CONFIGURE_ARGS+= --enable-threads=posix
|
|
CONFIGURE_ARGS+= --with-boot-ldflags=${BOOT_LDFLAGS:Q}
|
|
# multilib on Darwin requires fat-binaries
|
|
CONFIGURE_ARGS.Darwin+= --disable-multilib
|
|
.if !empty(OSX_SDK_PATH)
|
|
CONFIGURE_ARGS.Darwin+= --with-sysroot=${OSX_SDK_PATH}
|
|
.endif
|
|
CONFIGURE_ARGS.NetBSD+= --with-gnu-ld --with-ld=/usr/bin/ld
|
|
CONFIGURE_ARGS.NetBSD+= --with-gnu-as --with-as=/usr/bin/as
|
|
MAKE_ENV.NetBSD+= ac_cv_func_clock_gettime=yes
|
|
MAKE_ENV.NetBSD+= ac_cv_func_gethostbyname_r=no
|
|
MAKE_ENV.NetBSD+= ac_cv_func_freelocale=no
|
|
MAKE_ENV.NetBSD+= ac_cv_func_newlocale=no
|
|
MAKE_ENV.NetBSD+= ac_cv_func_uselocale=no
|
|
MAKE_ENV.SunOS+= ac_cv_func_mkostemp=no
|
|
|
|
.if !empty(PKGSRC_COMPILER:Mclang) || ${OPSYS} == "DragonFly"
|
|
CONFIGURE_ARGS+= --disable-bootstrap
|
|
CHECK_RELRO_SKIP+= ${GCC_PKGNAME}/lib/*
|
|
.endif
|
|
|
|
.if !empty(MACHINE_PLATFORM:MNetBSD-*-i386) || !empty(MACHINE_PLATFORM:MLinux-*-i386)
|
|
CONFIGURE_ARGS+= --with-arch=i486 --with-tune=i486
|
|
.endif
|
|
|
|
.if !empty(MACHINE_PLATFORM:MNetBSD-*-x86_64) || !empty(MACHINE_PLATFORM:MLinux-*-x86_64)
|
|
CONFIGURE_ARGS+= --with-arch=nocona --with-tune=nocona --with-fpmath=sse
|
|
.endif
|
|
|
|
.if !empty(MACHINE_PLATFORM:MDarwin-[0-8].*-*)
|
|
CONFIGURE_ARGS+= --with-dwarf2
|
|
.endif
|
|
|
|
# ${WRKSRC}/fixincludes/ looks for sed and compiles the path to sed into
|
|
# a binary so we need to make sure we give it the installed sed and not
|
|
# the tool wrapped one.
|
|
MAKE_ENV+= ac_cv_path_SED=${TOOLS_SED}
|
|
MAKE_ENV+= lt_cv_path_SED=${TOOLS_SED}
|
|
|
|
# Determine whether to use binutils
|
|
.if ${OPSYS} == "SunOS"
|
|
. if exists(/usr/sfw/bin/gobjdump)
|
|
CONFIGURE_ENV+= OBJDUMP=/usr/sfw/bin/gobjdump
|
|
. endif
|
|
. if exists(/usr/bin/ld)
|
|
CONFIGURE_ARGS+= --without-gnu-ld --with-ld=/usr/bin/ld
|
|
. else
|
|
CONFIGURE_ARGS+= --without-gnu-ld --with-ld=/usr/ccs/bin/ld
|
|
. endif
|
|
. if exists(/usr/sfw/bin/gas)
|
|
CONFIGURE_ARGS+= --with-gnu-as --with-as=/usr/sfw/bin/gas
|
|
. elif exists(/usr/ccs/bin/as)
|
|
CONFIGURE_ARGS+= --without-gnu-as --with-as=/usr/ccs/bin/as
|
|
. else
|
|
BUILDLINK_DEPMETHOD.binutils= full
|
|
. include "../../devel/binutils/buildlink3.mk"
|
|
CONFIGURE_ARGS+= --with-gnu-as --with-as=${PREFIX}/bin/gas
|
|
. endif
|
|
.endif
|
|
|
|
.if ${OS_VARIANT} == "SmartOS"
|
|
SUBST_CLASSES+= ccs
|
|
SUBST_STAGE.ccs= pre-configure
|
|
SUBST_FILES.ccs= contrib/make_sunver.pl
|
|
SUBST_SED.ccs= -e 's,/usr/ccs/bin,/usr/bin,g'
|
|
.endif
|
|
|
|
CTF_FILES_SKIP+= */gengtype # CPU limit exceeded
|
|
|
|
pre-configure:
|
|
${RUN} cd ${WRKSRC} && ${MKDIR} ${OBJDIR}
|
|
|
|
TEST_TARGET= -j ${MAKE_JOBS} -k check || ${TRUE}
|
|
TEST_DEPENDS+= dejagnu-[0-9]*:../../devel/dejagnu
|
|
|
|
post-test:
|
|
${RUN} cd ${WRKSRC} && cd ${OBJDIR} && \
|
|
${SHELL} ${WRKSRC}/contrib/test_summary >${WRKDIR}/test_summary.log
|
|
${INFO_MSG} "Test summary are available in ${WRKDIR}/test_summary.log"
|
|
|
|
post-install:
|
|
${TEST} -f ${DESTDIR}${GCC_PREFIX}/bin/cc || \
|
|
( cd ${DESTDIR}${GCC_PREFIX}/bin ; ${LN} -f gcc cc )
|
|
.if !empty(MACHINE_PLATFORM:MSunOS-*-*86*) && ${OS_VERSION} != "5.11"
|
|
${SH} files/values.c ${DESTDIR}${GCC_PREFIX}/bin/gcc -m32 || ${TRUE}
|
|
${SH} files/values.c ${DESTDIR}${GCC_PREFIX}/bin/gcc -m64 || ${TRUE}
|
|
.endif
|
|
|
|
GENERATE_PLIST+= \
|
|
cd ${DESTDIR}${PREFIX} && \
|
|
${FIND} ${GCC_SUBPREFIX} \( -type f -o -type l \) -print | ${SORT};
|
|
|
|
CHECK_BUILTIN.zlib:= yes
|
|
.include "../../devel/zlib/builtin.mk"
|
|
CHECK_BUILTIN.zlib:= no
|
|
.if !empty(USE_BUILTIN.zlib:M[yY][eE][sS])
|
|
CONFIGURE_ARGS+= --with-system-zlib
|
|
.include "../../devel/zlib/buildlink3.mk"
|
|
.else
|
|
CONFIGURE_ARGS+= --without-system-zlib
|
|
.endif
|
|
.include "../../lang/python/application.mk"
|
|
.include "../../mk/dlopen.buildlink3.mk"
|
|
.include "../../mk/pthread.buildlink3.mk"
|
|
.include "../../mk/bsd.pkg.mk"
|