pkgsrc/lang/gcc12/Makefile
2022-12-06 14:23:02 +00:00

221 lines
7.1 KiB
Makefile

# $NetBSD: Makefile,v 1.4 2022/12/06 14:23:02 jperkin Exp $
GCC_PKGNAME= gcc12
.include "version.mk"
DISTNAME= gcc-${GCC12_DIST_VERSION}
PKGNAME= ${GCC_PKGNAME}-${GCC12_DIST_VERSION}
## When bumping the PKGREVISION of this package the PKGREVISION of
## lang/gcc12-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-${GCC12_DIST_VERSION}/}
EXTRACT_SUFX= .tar.xz
MAINTAINER= pkgsrc-users@NetBSD.org
HOMEPAGE= https://gcc.gnu.org/
COMMENT= The GNU Compiler Collection (GCC) - 12.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
CHECK_RELRO_SKIP+= ${GCC_PKGNAME}/lib/*
NOT_FOR_PLATFORM= Interix-*-*
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/*
CHECK_PORTABILITY_SKIP+= gcc/configure.orig_dist
.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
.include "options.mk"
.if ${MACHINE_PLATFORM:MDarwin-*-aarch64}
BUILDLINK_TRANSFORM+= rm:-nodefaultrpaths
CONFIGURE_ARGS+= --disable-darwin-at-rpath
PATCHFILES= gcc-12.2.0-arm.diff
PATCH_SITES= https://raw.githubusercontent.com/Homebrew/formula-patches/1d184289/gcc/
PATCH_DIST_STRIP= -p1
.endif
## 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}
CONFIGURE_ARGS+= --without-zstd
# causes build errors even when using lang/gcc12 to self-host.
CONFIGURE_ARGS.SunOS+= --disable-libsanitizer
# 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
.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 ${USE_BUILTIN.zlib:M[yY][eE][sS]}
CONFIGURE_ARGS+= --with-system-zlib
.else
CONFIGURE_ARGS+= --without-system-zlib
.endif
.include "../../mk/dlopen.buildlink3.mk"
.include "../../mk/pthread.buildlink3.mk"
.include "../../mk/bsd.pkg.mk"