pkgsrc/lang/gnat-aux/Makefile
wiz d2ca14a3f1 Bump all packages for perl-5.18, that
a) refer 'perl' in their Makefile, or
b) have a directory name of p5-*, or
c) have any dependency on any p5-* package

Like last time, where this caused no complaints.
2013-05-31 12:39:57 +00:00

313 lines
10 KiB
Makefile

# $NetBSD: Makefile,v 1.16 2013/05/31 12:41:11 wiz Exp $
#
PKGNAME= gnat-aux-${SNAPSHOT}
DISTNAME= gcc-${GCC_VERSION}
PKGREVISION= 1
CATEGORIES= lang
MASTER_SITES= ${MASTER_SITE_GNU:=gcc/gcc-${GCC_VERSION}/}
DISTFILES= gcc-core-${GCC_VERSION}.tar.bz2
MAINTAINER= draco@marino.st
HOMEPAGE= http://www.dragonlace.net/
COMMENT= GNAT Ada compiler based on GCC ${GCC_BRANCH}
LICENSE= gnu-gpl-v3 AND gnu-lgpl-v3
SNAPSHOT= 20130412
GCC_BRANCH= 4.6
GCC_POINT= 4
GCC_VERSION= ${GCC_BRANCH}.${GCC_POINT}
LANGS= c
USE_TOOLS+= gmake sed perl makeinfo bzip2 patch pod2man
USE_BUILTIN.iconv= no
APPLY_DIFFS= core
.include "../../mk/bsd.prefs.mk"
.include "options.mk"
# Requires bootstrap compiler, which is only available for NetBSD i386/AMD64
# and DragonFly i386/AMD64. Actually bootstrap compilers for OpenBSD and
# FreeBSD also exist, but native packages will be available for those ports.
ONLY_FOR_PLATFORM= DragonFly-*-* \
NetBSD-[5-9]*-i386 \
NetBSD-[5-9]*-x86_64 \
SunOS-5.*-i386
BLD_TARGET= ${MACHINE_ARCH}-aux-${LOWER_OPSYS}${OS_VERSION}
THREAD_MODEL= posix
OS_LABEL4VERS= [pkgsrc]
BOOTSTRAP_COMPILER= NOT_REQUIRED
INTENDED_COMPILER= NATIVE
BOOTSTRAP_TRIPLET= NOT SET
FULL_GNATGCC= NOT SET
FULL_PATH= /sbin:/bin:/usr/sbin:/usr/bin:${PREFIX}/sbin:${PREFIX}/bin
OLD_EH= register_frame
REBUILD_LIB= Rebuild the following library first:
BOOTSTRAP_SITES= http://downloads.dragonlace.net/src/
.if ${OPSYS} == "DragonFly"
.if ${MACHINE_ARCH} == "i386"
OS_LABEL4VERS= [DragonFly]
BOOTSTRAP_TRIPLET= i386-bootstrap-dragonfly2.8/4.6.0
.endif
.if ${MACHINE_ARCH} == "x86_64"
OS_LABEL4VERS= [DragonFly64]
BOOTSTRAP_TRIPLET= x86_64-bootstrap-dragonfly2.8/4.6.0
.endif
BOOTSTRAP_COMPILER= gnat-bootstrap.${MACHINE_ARCH}.dragonfly.tar.bz2
LINK_HEADER= /usr/include/sys/link_elf.h
.endif
.if ${OPSYS} == "NetBSD"
.if empty(OS_VERSION:M5.99.*)
NSUFF= ${OS_VERSION}
.else
NSUFF= 6.0_DEV
.endif
.if ${MACHINE_ARCH} == "i386"
OS_LABEL4VERS= [NetBSD]
BOOTSTRAP_TRIPLET= i386-bootstrap-netbsdelf5.1/4.6.0
BLD_TARGET= ${MACHINE_ARCH}-aux-netbsdelf${NSUFF}
.endif
.if ${MACHINE_ARCH} == "x86_64"
OS_LABEL4VERS= [NetBSD64]
BOOTSTRAP_TRIPLET= x86_64-bootstrap-netbsd5.1/4.6.0
BLD_TARGET= ${MACHINE_ARCH}-aux-netbsd${NSUFF}
.endif
BOOTSTRAP_COMPILER= gnat-bootstrap.${MACHINE_ARCH}.netbsd.tar.bz2
LINK_HEADER= /usr/include/link_elf.h
SUBST_CLASSES+= net1
SUBST_STAGE.net1= post-patch
SUBST_FILES.net1= gcc/config/i386/netbsd-elf.h
SUBST_MESSAGE.net1= Fixing libgcc linkage problem on NetBSD
SUBST_SED.net1= -e "s,@EXEC_PREFIX@,${PREFIX},"
.endif
.if ${OPSYS} == "SunOS"
.if ${MACHINE_ARCH} == "i386"
OS_LABEL4VERS= [Solaris]
BOOTSTRAP_TRIPLET= i386-bootstrap-solaris5.11/4.6.1
.endif
SOL_OSV= `expr substr ${OS_VERSION} 3 2`
BLD_TARGET= ${MACHINE_ARCH}-aux-${LOWER_OPSYS}2.${SOL_OSV}
BOOTSTRAP_COMPILER= gnat-bootstrap.${MACHINE_ARCH}.solaris.tar.bz2
.endif
# Let's build this without bash
CONFIG_SHELL= ${TOOLS_PATH.sh}
# define some important directories and files
BUILDDIR= ${WRKDIR}/build
WRKSRC= ${WRKDIR}/gcc-${GCC_VERSION}
PKG_PREFIX= ${PREFIX}
CFG_SCRIPT= ${WRKSRC}/configure
BOOTSTRAP_PREFIX= ${WRKDIR}/bootstrap
REVFILE= ${WRKSRC}/gcc/REVISION
BASELIB= ${PREFIX}/lib
# testing if gnatgcc, gnatlink, gnatbind and gnatmake are in standard location
# exists function will NOT expand any variable, so it has to be hard-coded
.if exists(/usr/pkg/bin/gnatgcc) || exists(/opt/ipp/pkg/bin/gnatgcc)
.if exists(/usr/pkg/bin/gnatbind) || exists(/opt/ipp/pkg/bin/gnatbind)
.if exists(/usr/pkg/bin/gnatlink) || exists(/opt/ipp/pkg/bin/gnatlink)
.if exists(/usr/pkg/bin/gnatmake) || exists(/opt/ipp/pkg/bin/gnatmake)
FULL_GNATGCC=${PREFIX}/bin/gnatgcc
.endif #gnatmake
.endif #gnatlink
.endif #gnatbind
.endif #gnatgcc
.if ${FULL_GNATGCC} == "NOT SET"
# here we know we need to install the bootstrap compiler
INTENDED_COMPILER=BOOTSTRAP
FULL_GNATGCC=${BOOTSTRAP_PREFIX}/bin/gnatgcc
DISTFILES+= ${BOOTSTRAP_COMPILER}
SITES.${BOOTSTRAP_COMPILER}= ${BOOTSTRAP_SITES}
FULL_PATH=${BOOTSTRAP_PREFIX}/bin:/sbin:/bin:/usr/sbin:/usr/bin:${PREFIX}/sbin:${PREFIX}/bin
.endif
# For pkg maintenance, uncomment to invoke "bmake mdi PLUS_BOOTSTRAPS=1"
.if defined(PLUS_BOOTSTRAPS)
BS1= gnat-bootstrap.i386.dragonfly.tar.bz2
BS2= gnat-bootstrap.x86_64.dragonfly.tar.bz2
BS3= gnat-bootstrap.i386.netbsd.tar.bz2
BS4= gnat-bootstrap.x86_64.netbsd.tar.bz2
BS5= gnat-bootstrap.i386.solaris.tar.bz2
. for bsite in ${BS1} ${BS2} ${BS3} ${BS4} ${BS5}
SITES.${bsite}= ${BOOTSTRAP_SITES}
. endfor
DISTFILES= \
gcc-core-${GCC_VERSION}.tar.bz2 \
gcc-ada-${GCC_VERSION}.tar.bz2 \
gcc-g++-${GCC_VERSION}.tar.bz2 \
gcc-fortran-${GCC_VERSION}.tar.bz2 \
gcc-objc-${GCC_VERSION}.tar.bz2 \
gcc-testsuite-${GCC_VERSION}.tar.bz2 \
${BS1} ${BS2} ${BS3} ${BS4} ${BS5}
.endif
# establish ada-aware compiler for use
MY_CONFIGURE_ENV= CC=${FULL_GNATGCC}
MY_CONFIGURE_ENV+= PATH=${FULL_PATH}
MY_CONFIGURE_ENV+= CONFIG_SHELL=${CONFIG_SHELL}
MY_MAKE_ENV= PATH=${FULL_PATH}
MY_MAKE_ENV+= LD_LIBRARY_PATH=${BUILDDIR}/gcc
# The standard configuration options
CONFIGURE_ARGS= --enable-languages=${LANGS:Q}
CONFIGURE_ARGS+= --build=${BLD_TARGET}
CONFIGURE_ARGS+= --program-prefix=gnat
CONFIGURE_ARGS+= --prefix=${PREFIX}
CONFIGURE_ARGS+= --with-system-zlib
CONFIGURE_ARGS+= --with-gmp=${BUILDLINK_PREFIX.gmp}
CONFIGURE_ARGS+= --with-mpfr=${BUILDLINK_PREFIX.mpfr}
CONFIGURE_ARGS+= --with-mpc=${BUILDLINK_PREFIX.mpcomplex}
CONFIGURE_ARGS+= --with-libiconv-prefix=${PKG_PREFIX}
CONFIGURE_ARGS+= --enable-shared
CONFIGURE_ARGS+= --enable-threads=${THREAD_MODEL}
CONFIGURE_ARGS+= --disable-bootstrap
CONFIGURE_ARGS+= ${QUADOPT}
CONFIGURE_ARGS+= --disable-libmudflap
CONFIGURE_ARGS+= --disable-libgomp
CONFIGURE_ARGS+= --disable-libssp
CONFIGURE_ARGS+= --disable-nls
# Automatic package list generation
GENERATE_PLIST= cd ${DESTDIR}${PREFIX};
GENERATE_PLIST+= ${FIND} * \( -type f -or -type l \) | ${SORT} -dr;
post-extract:
# Personalize GNAT for each different machine
@${ECHO} "-=> GNAT AUX ${OS_LABEL4VERS}" > ${REVFILE}
# Create new directories in preparation of applying diff files
.if !empty(PKG_OPTIONS:Mcxx)
${MKDIR} ${WRKSRC}/libstdc++-v3/config/locale/dragonfly
${MKDIR} ${WRKSRC}/libstdc++-v3/config/os/bsd/dragonfly
.endif
# Apply required composite diff files
.for suffix in ${APPLY_DIFFS}
@${ECHO} "Applying composite patch diff-${suffix}"
@${PATCH} -d ${WRKSRC} -s -E < ${FILESDIR}/diff-${suffix}
.endfor
.if ${INTENDED_COMPILER} == "BOOTSTRAP"
# Bootstrap compiler has statically linked z, gmp, mpc, mpfr and iconv
# The only shared lib is libc.so.7, so it should work for a long time.
# It is at least 28MB and doesn't come with shared libraries.
${MKDIR} ${BOOTSTRAP_PREFIX}
mv ${BOOTSTRAP_PREFIX}/../bin ${BOOTSTRAP_PREFIX}
mv ${BOOTSTRAP_PREFIX}/../lib ${BOOTSTRAP_PREFIX}
mv ${BOOTSTRAP_PREFIX}/../libexec ${BOOTSTRAP_PREFIX}
# Bootstrap compiler malfunctions in NetBSD 6 unless include-fixed
# directory is removed first. It will eventually cause problems
# for DragonFly and Solaris as well, so just unconditionally kill it.
${RM} -rf ${BOOTSTRAP_PREFIX}/lib/gcc/${BOOTSTRAP_TRIPLET}/include-fixed
.endif
pre-configure:
# NetBSD's system compiler is not configured to use dl_iterate_phdr which is
# required to build shared libraries if gnat-aux handles exceptions via
# dl_iterate_phdr. Therefore this functionality is disabled for NetBSD until
# further notice. DragonFly introduced this functionality with 2.11, but it's
# possible the shared libraries were built with an earlier compiler in the
# case of an upgrade. We need to detect this situation and stop the build
# if the libraries need to be rebuilt.
.if ${OPSYS} == "DragonFly"
@if ${GREP} dl_iterate_phdr ${LINK_HEADER} > /dev/null; then \
if ${GREP} ${OLD_EH} ${BASELIB}/libmpc.so > /dev/null; then \
${ERROR_MSG} "${REBUILD_LIB} math/mpcomplex"; \
exit 101; \
fi; \
if ${GREP} ${OLD_EH} ${BASELIB}/libmpfr.so > /dev/null; then \
${ERROR_MSG} "${REBUILD_LIB} math/mpfr"; \
exit 102; \
fi; \
if ${GREP} ${OLD_EH} ${BASELIB}/libgmp.so > /dev/null; then \
${ERROR_MSG} "${REBUILD_LIB} devel/gmp"; \
exit 103; \
fi; \
if ${GREP} ${OLD_EH} ${BASELIB}/libiconv.so > /dev/null; then \
${ERROR_MSG} "${REBUILD_LIB} converters/libiconv"; \
exit 104; \
fi; \
fi
.endif
do-configure:
${MKDIR} ${BUILDDIR}
cd ${BUILDDIR} && ${SETENV} ${MY_CONFIGURE_ENV} \
${CFG_SCRIPT} ${CONFIGURE_ARGS}
do-build:
# The unlimited stacksize is for NetBSD64
cd ${BUILDDIR} && \
${ULIMIT_CMD_stacksize} && \
${SETENV} ${MY_MAKE_ENV} ${GMAKE} -j${MAKE_JOBS:U1:Q} all
do-test: build
.if !empty(PKG_OPTIONS:Mtestada)
.if (${OPSYS} == "NetBSD") && (${MACHINE_ARCH} == "x86_64")
# NetBSD has an extremely small default stacksize of 2MB, which is
# insufficient for the gnat.dg testsuite.
# specifically: entry_queues test on AMD64
# Unlimiting stack resources on i386-netbsdelf* will result in
# failure of gnat.dg/task_stack_align.adb execution test.
cd ${BUILDDIR} && \
${ULIMIT_CMD_stacksize} && \
${SETENV} ${MY_MAKE_ENV} ${GMAKE} -sk check-ada
.else
cd ${BUILDDIR} && ${SETENV} ${MY_MAKE_ENV} ${GMAKE} -sk check-ada
.endif
.endif
.if !empty(PKG_OPTIONS:Mfortran) && !empty(PKG_OPTIONS:Mtestfortran)
cd ${BUILDDIR} && ${SETENV} ${MY_MAKE_ENV} ${GMAKE} -sk check-fortran
.endif
.if !empty(PKG_OPTIONS:Mobjc) && !empty(PKG_OPTIONS:Mtestobjc)
cd ${BUILDDIR} && ${SETENV} ${MY_MAKE_ENV} ${GMAKE} -sk check-objc
.endif
.if !empty(PKG_OPTIONS:Mcxx) && !empty(PKG_OPTIONS:Mtestcxx)
# libstdc++ always ends with error status, so ignore it
cd ${BUILDDIR} && ${SETENV} ${MY_MAKE_ENV} ${GMAKE} -sk \
check-c++ || ${TRUE}
.endif
.if !empty(PKG_OPTIONS:Mtestgcc)
cd ${BUILDDIR} && ${SETENV} ${MY_MAKE_ENV} ${GMAKE} -sk check-c
.endif
do-install:
cd ${BUILDDIR} && ${SETENV} ${MY_MAKE_ENV} ${GMAKE} install-strip \
DESTDIR=${DESTDIR}
.include "../../devel/zlib/buildlink3.mk"
.include "../../devel/gmp/buildlink3.mk"
.include "../../math/mpfr/buildlink3.mk"
.include "../../math/mpcomplex/buildlink3.mk"
.include "../../converters/libiconv/buildlink3.mk"
.include "../../mk/bsd.pkg.mk"