dc6d990317
in declarations when compiling C++ code. Patch the perl.h and XSUB.h headers to avoid using this attribute if using GCC<3.4 and building C++ modules. This fixes PR pkg/33403 by OBATA Akio. Bump PKGREVISION to 2.
348 lines
11 KiB
Makefile
348 lines
11 KiB
Makefile
# $NetBSD: Makefile,v 1.120 2006/05/06 12:32:20 jlam Exp $
|
|
|
|
DISTNAME= perl-5.8.8
|
|
PKGREVISION= 2
|
|
CATEGORIES= lang devel perl5
|
|
MASTER_SITES= ${MASTER_SITE_PERL_CPAN:S,/modules/by-module/$,/src/,}
|
|
EXTRACT_SUFX= .tar.bz2
|
|
DISTFILES+= ${DISTNAME}${EXTRACT_SUFX}
|
|
|
|
MAINTAINER= jlam@pkgsrc.org
|
|
HOMEPAGE= http://www.perl.org/
|
|
COMMENT= Practical Extraction and Report Language
|
|
|
|
CONFLICTS= perl-base-[0-9]* perl-thread-[0-9]* \
|
|
p5-CGI-2.66 p5-CGI-2.75 p5-CGI-2.75.[0-2]
|
|
|
|
.include "../../mk/bsd.prefs.mk"
|
|
|
|
# Determine the Perl API version from the patchlevel.h file from the
|
|
# source distribution.
|
|
#
|
|
PERL5_API_VERS= ${PERL5_API_VERS_cmd:sh}
|
|
PERL5_API_VERS_cmd= \
|
|
if ${TEST} -f ${WRKSRC}/patchlevel.h; then \
|
|
${AWK} '/\#define[ ]*PERL_API_REVISION/ { R = $$3 }\
|
|
/\#define[ ]*PERL_API_VERSION/ { r = "."$$3 } \
|
|
/\#define[ ]*PERL_API_SUBVERSION/ { s = "."$$3 } \
|
|
END { printf "%s%s%s\n", R, r, s }' \
|
|
${WRKSRC}/patchlevel.h; \
|
|
else \
|
|
${ECHO} "unknown"; \
|
|
fi
|
|
|
|
PERL5_PREFIX= ${PREFIX}
|
|
PERL5_VENDORPREFIX= ${PERL5_PREFIX}
|
|
PERL5_SITEPREFIX?= ${PERL5_PREFIX}
|
|
BUILD_DEFS+= PERL5_SITEPREFIX
|
|
|
|
PERL5= ${PERL5_PREFIX}/bin/perl
|
|
PERL5_PERLBASE= ${PERL5_PREFIX}/lib/perl5
|
|
PERL5_VENDORBASE= ${PERL5_VENDORPREFIX}/lib/perl5/vendor_perl
|
|
#
|
|
# The unusual check for empty(PERL5_SITEPREFIX) is because ${PREFIX} isn't
|
|
# defined until bsd.pkg.mk is included, so when we inspect its value at
|
|
# this point, it's empty.
|
|
#
|
|
.if empty(PERL5_SITEPREFIX) || \
|
|
!empty(PERL5_SITEPREFIX:M${LOCALBASE}) || \
|
|
!empty(PERL5_SITEPREFIX:M${LOCALBASE}/*)
|
|
PERL5_SITEBASE= ${PERL5_SITEPREFIX}/lib/perl5/site_perl
|
|
.else
|
|
PERL5_SITEBASE= ${PERL5_SITEPREFIX}
|
|
.endif
|
|
|
|
PERL5_PRIVLIB= ${PERL5_PERLBASE}/${PERL5_API_VERS}
|
|
PERL5_VENDORLIB= ${PERL5_VENDORBASE}/${PERL5_API_VERS}
|
|
.if !empty(PERL5_SITEBASE:M*lib/perl5/site_perl)
|
|
PERL5_SITELIB= ${PERL5_SITEBASE}/${PERL5_API_VERS}
|
|
.else
|
|
PERL5_SITELIB= ${PERL5_SITEBASE}/lib/perl5/site_perl/${PERL5_API_VERS}
|
|
.endif
|
|
|
|
.include "../../mk/compiler.mk"
|
|
|
|
HAS_CONFIGURE= yes
|
|
CONFIGURE_SCRIPT= ./Configure
|
|
CONFIGURE_ARGS+= -sde
|
|
CONFIGURE_ARGS+= -Darchname="${MACHINE_ARCH}-${LOWER_OPSYS}"
|
|
CONFIGURE_ARGS+= -Dcc=${CC:Q}
|
|
CONFIGURE_ARGS+= -Doptimize=${CFLAGS:M*:Q}
|
|
CONFIGURE_ARGS+= -Duseshrplib
|
|
CONFIGURE_ARGS+= -Ui_malloc
|
|
CONFIGURE_ARGS+= -Uusemymalloc
|
|
CONFIGURE_ARGS+= -Uinstallusrbinperl
|
|
MAKE_ENV+= LC_ALL="C"
|
|
|
|
TEST_TARGET= test
|
|
|
|
###
|
|
### Installation directories for "perl", "vendor" and "site" bits.
|
|
###
|
|
CONFIGURE_ARGS+= -Dinstallstyle="lib/perl5"
|
|
CONFIGURE_ARGS+= -Dprefix=${PERL5_PREFIX:Q}
|
|
CONFIGURE_ARGS+= -Dsiteprefix=${PERL5_SITEPREFIX:Q}
|
|
CONFIGURE_ARGS+= -Dvendorprefix=${PERL5_VENDORPREFIX:Q}
|
|
|
|
# The Perl Configure script will install scripts into "*/script"
|
|
# directories if they exist, so override with explicit settings.
|
|
#
|
|
CONFIGURE_ARGS+= -Dscriptdir=${PERL5_PERLBASE:Q}/bin
|
|
CONFIGURE_ARGS+= -Dsitescript=${PERL5_SITEBASE:Q}/bin
|
|
CONFIGURE_ARGS+= -Dvendorscript=${PERL5_VENDORBASE:Q}/bin
|
|
|
|
# Put any compiled binaries into vendor- and site-specific locations to
|
|
# avoid conflicts with each other. The perllink script will handle all
|
|
# the appropriate symlinking.
|
|
#
|
|
CONFIGURE_ARGS+= -Dsitebin=${PERL5_SITEBASE:Q}/bin
|
|
CONFIGURE_ARGS+= -Dvendorbin=${PERL5_VENDORBASE:Q}/bin
|
|
|
|
# Put the API-specific files into API-specific directories instead
|
|
# of the default version-specific directories.
|
|
#
|
|
CONFIGURE_ARGS+= -Dprivlib=${PERL5_PRIVLIB:Q}
|
|
CONFIGURE_ARGS+= -Dsitelib=${PERL5_SITELIB:Q}
|
|
CONFIGURE_ARGS+= -Dvendorlib=${PERL5_VENDORLIB:Q}
|
|
|
|
# Search for version-specific directories under these directories.
|
|
CONFIGURE_ARGS+= -Dsitelib_stem=${PERL5_SITEBASE:Q}
|
|
CONFIGURE_ARGS+= -Dvendorlib_stem=${PERL5_VENDORBASE:Q}
|
|
|
|
# Avoid manpage conflicts between the standard Perl library, 3rd-party
|
|
# modules, and other packages.
|
|
#
|
|
CONFIGURE_ARGS+= -Dman1ext="1"
|
|
CONFIGURE_ARGS+= -Dman1dir=${PERL5_PERLBASE:Q}/${PKGMANDIR:Q}/man1
|
|
CONFIGURE_ARGS+= -Dsiteman1dir=${PERL5_SITEBASE:Q}/${PKGMANDIR:Q}/man1
|
|
CONFIGURE_ARGS+= -Dvendorman1dir=${PERL5_VENDORBASE:Q}/${PKGMANDIR:Q}/man1
|
|
CONFIGURE_ARGS+= -Dman3ext="3"
|
|
CONFIGURE_ARGS+= -Dman3dir=${PERL5_PERLBASE:Q}/${PKGMANDIR:Q}/man3
|
|
CONFIGURE_ARGS+= -Dsiteman3dir=${PERL5_SITEBASE:Q}/${PKGMANDIR:Q}/man3
|
|
CONFIGURE_ARGS+= -Dvendorman3dir=${PERL5_VENDORBASE:Q}/${PKGMANDIR:Q}/man3
|
|
|
|
.if ${OPSYS} == "Darwin"
|
|
#
|
|
# The Perl build attempts to work around case-insensitivity problems on
|
|
# HFS filesystems by using GNUmakefiles, so we need to use GNU make.
|
|
#
|
|
USE_TOOLS+= gmake
|
|
.endif
|
|
|
|
# Perl embeds the full paths to the following tools in several installed
|
|
# files, so make sure the paths to the ones in ${TOOLS_DIR} aren't used.
|
|
#
|
|
USE_TOOLS+= hostname ln sed test
|
|
CONFIGURE_ARGS+= -Daphostname=${TOOLS_HOSTNAME_CMD:Q}
|
|
CONFIGURE_ARGS+= -Dln=${TOOLS_LN:Q}
|
|
CONFIGURE_ARGS+= -Dsed=${TOOLS_SED:Q}
|
|
CONFIGURE_ARGS+= -Dsh=${TOOLS_SH:Q}
|
|
CONFIGURE_ARGS+= -Dissymlink="${TOOLS_TEST} -h"
|
|
|
|
# Nail down the needed libraries for each platform here to avoid hidden
|
|
# dependencies. If this isn't defined, then use the perl defaults for the
|
|
# particular operating system.
|
|
#
|
|
LIBSWANTED.Darwin= m c
|
|
LIBSWANTED.DragonFly= m crypt
|
|
LIBSWANTED.FreeBSD= m crypt
|
|
LIBSWANTED.IRIX= m crypt
|
|
LIBSWANTED.Interix= m dl
|
|
LIBSWANTED.NetBSD= m crypt
|
|
LIBSWANTED.OpenBSD= m crypt
|
|
LIBSWANTED.SunOS= m crypt dl socket nsl
|
|
LIBSWANTED= ${LIBSWANTED.${OPSYS}}
|
|
|
|
# Nail down the directories in which the system libraries may be found.
|
|
# If this isn't defined, then use the perl defaults for the particular
|
|
# operating system.
|
|
#
|
|
SYSLIBPATH.Darwin= /usr/lib
|
|
SYSLIBPATH.DragonFly= /usr/lib
|
|
SYSLIBPATH.FreeBSD= /usr/lib
|
|
SYSLIBPATH.Interix= /usr/lib
|
|
SYSLIBPATH.NetBSD= /usr/lib
|
|
SYSLIBPATH.OpenBSD= /usr/lib
|
|
SYSLIBPATH.SunOS= /usr/lib
|
|
SYSLIBPATH= ${SYSLIBPATH.${OPSYS}}
|
|
|
|
# Nail down the directories in which headers and libraries of
|
|
# locally-installed software may be found.
|
|
#
|
|
LOCLIBPATH= ${LOCALBASE}/lib
|
|
LOCINCPATH= ${LOCALBASE}/include
|
|
|
|
# On a.out platforms, we link with "ld" and on ELF platforms, we link with
|
|
# "cc", so we need to use different options to pass the run-time search path
|
|
# flags to the link command in the right way.
|
|
#
|
|
.if ${OBJECT_FMT} == "a.out"
|
|
LOCLIBRPATHFLAGS= ${LOCLIBPATH:S/^/${LINKER_RPATH_FLAG} /g}
|
|
.elif ${OBJECT_FMT} == "ELF"
|
|
LOCLIBRPATHFLAGS= ${LOCLIBPATH:S/^/${COMPILER_RPATH_FLAG}/g}
|
|
.else
|
|
LOCLIBRPATHFLAGS= # empty
|
|
.endif
|
|
|
|
.include "../../mk/dlopen.buildlink3.mk"
|
|
|
|
CHECK_BUILTIN.pthread:= yes
|
|
.include "../../mk/pthread.builtin.mk"
|
|
CHECK_BUILTIN.pthread:= no
|
|
|
|
# By default, build with threads only if the threads are native.
|
|
.if !empty(USE_BUILTIN.pthread:M[yY][eE][sS])
|
|
PERL5_BUILD_THREADS_SUPPORT= yes
|
|
.else
|
|
PERL5_BUILD_THREADS_SUPPORT= ${DLOPEN_REQUIRE_PTHREADS}
|
|
.endif
|
|
|
|
### [Sat Dec 18 17:29:44 EST 2004 : jlam]
|
|
### Native threading on VAX isn't ready for primetime in NetBSD>=2.0.
|
|
### Build Perl without threads-support until VAX native threads are
|
|
### known to work.
|
|
###
|
|
.if !empty(MACHINE_PLATFORM:MNetBSD-*-vax) && \
|
|
!empty(USE_BUILTIN.pthread:M[yY][eE][sS])
|
|
PKG_HACKS+= broken-vax-pthreads
|
|
PERL5_BUILD_THREADS_SUPPORT= no
|
|
.endif
|
|
|
|
PKG_OPTIONS_VAR= PKG_OPTIONS.perl
|
|
PKG_SUPPORTED_OPTIONS= threads
|
|
.if !empty(PERL5_BUILD_THREADS_SUPPORT:M[yY][eE][sS])
|
|
PKG_SUGGESTED_OPTIONS= threads
|
|
.endif
|
|
|
|
.include "../../mk/bsd.options.mk"
|
|
|
|
.if !empty(PKG_OPTIONS:Mthreads)
|
|
. include "../../mk/pthread.buildlink3.mk"
|
|
CONFIGURE_ARGS+= -Duseithreads
|
|
CFLAGS+= ${PTHREAD_CFLAGS}
|
|
LIBSWANTED+= ${PTHREAD_LIBS:M-l*:S/^-l//}
|
|
.else
|
|
CONFIGURE_ARGS+= -Uuseithreads
|
|
.endif
|
|
|
|
.if !empty(LIBSWANTED)
|
|
CONFIGURE_ARGS+= -Dlibswanted=${LIBSWANTED:Q}
|
|
.endif
|
|
|
|
.include "../../mk/compiler.mk"
|
|
|
|
.if ${OPSYS} == "IRIX"
|
|
. if ${ABI} == "64"
|
|
CONFIGURE_ARGS+= -Dcc=${CC:Q}" -64" -Duse64bitint
|
|
. else
|
|
CONFIGURE_ARGS+= -Dcc=${CC:Q}" -n32"
|
|
. endif
|
|
.endif
|
|
|
|
# Some platforms may want the directory mode not to be 0755. This
|
|
# is, unfortunately, hardcoded in quite a few places in Perl, so
|
|
# let's substitute what pkgsrc says instead.
|
|
#
|
|
SUBST_CLASSES+= dirmode
|
|
SUBST_STAGE.dirmode= post-patch
|
|
SUBST_FILES.dirmode= installhtml installman installperl \
|
|
lib/ExtUtils/Install.pm
|
|
SUBST_SED.dirmode= -e "s/755/${PKGDIRMODE}/g;/umask(/d"
|
|
|
|
# It's tough to guess which hints file will be used, so add our modifications
|
|
# to all of them:
|
|
#
|
|
# - Add the pkgsrc-derived LDFLAGS for linking against pthreads to the
|
|
# usethreads.cbu call-back script.
|
|
#
|
|
# - Generate a pkgsrc.cbu call-back script that sets the correct LDFLAGS
|
|
# for linking against pkgsrc-installed libraries.
|
|
#
|
|
# - Explicitly set the local compiler search paths to contain only the
|
|
# pkgsrc-controlled directories.
|
|
#
|
|
pre-configure:
|
|
.if defined(PTHREAD_LDFLAGS) && !empty(PTHREAD_LDFLAGS)
|
|
hintdir="${WRKSRC}/hints"; \
|
|
for hints in $${hintdir}/*.sh; do \
|
|
${CHMOD} +w $${hints}; \
|
|
{ ${ECHO} ""; \
|
|
${ECHO} "cat >> UU/usethreads.cbu <<'EOCBU'"; \
|
|
${ECHO} ""; \
|
|
${ECHO} "# Add pkgsrc-derived ldflags to link with thread support."; \
|
|
${ECHO} 'ldflags="'${PTHREAD_LDFLAGS:Q}' $$ldflags"'; \
|
|
${ECHO} 'lddlflags="'${PTHREAD_LDFLAGS:Q}' $$lddlflags"'; \
|
|
${ECHO} "EOCBU"; \
|
|
} >> $${hints}; \
|
|
done
|
|
.endif
|
|
hintdir="${WRKSRC}/hints"; \
|
|
for hints in $${hintdir}/*.sh; do \
|
|
${CHMOD} +w $${hints}; \
|
|
{ ${ECHO} ""; \
|
|
${ECHO} "cat > UU/pkgsrc.cbu <<'EOCBU'"; \
|
|
${ECHO} "# This script UU/pkgsrc.cbu will get 'called-back' by Configure to set"; \
|
|
${ECHO} '# linker options after all other call-back scripts have been invoked.'; \
|
|
${ECHO} 'ldflags="'${LOCLIBRPATHFLAGS:Q}' $$ldflags"'; \
|
|
${ECHO} 'lddlflags="'${LOCLIBRPATHFLAGS:Q}' $$lddlflags"'; \
|
|
${ECHO} "EOCBU"; \
|
|
} >> $${hints}; \
|
|
done
|
|
hintdir="${WRKSRC}/hints"; \
|
|
for hints in $${hintdir}/*.sh; do \
|
|
${CHMOD} +w $${hints}; \
|
|
{ ${ECHO} ""; \
|
|
${ECHO} "# Set pkgsrc defaults for library and header search paths."; \
|
|
${ECHO} 'locincpth="'${LOCINCPATH:Q}'"'; \
|
|
${ECHO} 'loclibpth="'${LOCLIBPATH:Q}'"'; \
|
|
} >> $${hints}; \
|
|
done
|
|
.if !empty(SYSLIBPATH)
|
|
hintdir="${WRKSRC}/hints"; \
|
|
for hints in $${hintdir}/*.sh; do \
|
|
${CHMOD} +w $${hints}; \
|
|
${ECHO} 'glibpth="'${SYSLIBPATH:Q}'"' >> $${hints}; \
|
|
done
|
|
.endif
|
|
|
|
post-build:
|
|
${SED} -e "s,@PERL5@,"${PERL5:Q}",g" \
|
|
-e "s,@SH@,"${SH:Q}",g" \
|
|
-e "s,@PKGMANDIR@,"${PKGMANDIR:Q}",g" \
|
|
${FILESDIR}/perllink.in > ${WRKDIR}/perllink.sh
|
|
|
|
INSTALLATION_DIRS= bin ${PKGMANDIR}/man1
|
|
PERL5_PACKLIST_DIR_cmd= eval `${PERL5} -V:installarchlib 2>/dev/null`; \
|
|
echo $$installarchlib
|
|
PERL5_PACKLIST_DIR= ${PERL5_PACKLIST_DIR_cmd:sh}
|
|
PERL5_PACKLIST= .packlist
|
|
FILES_SUBST+= PERL5_COMMENT=\#
|
|
FILES_SUBST+= PERL5_PACKLIST=
|
|
PLIST_SRC= ${WRKDIR}/.PLIST_SRC
|
|
|
|
post-install: perl5-post-install
|
|
|
|
perl5-post-install:
|
|
if ${TEST} -x ${PREFIX}/bin/a2p; then \
|
|
strip ${PREFIX}/bin/a2p; \
|
|
fi
|
|
eval `${PERL5} -V:installsitearch 2>/dev/null`; \
|
|
eval `${PERL5} -V:installvendorarch 2>/dev/null`; \
|
|
${RMDIR} -p $$installsitearch 2>/dev/null || ${TRUE}; \
|
|
${RMDIR} -p $$installvendorarch 2>/dev/null || ${TRUE}; \
|
|
eval `${PERL5} -V:scriptdir 2>/dev/null`; \
|
|
eval `${PERL5} -V:man1dir 2>/dev/null`; \
|
|
${INSTALL_SCRIPT} ${WRKDIR}/perllink.sh $$scriptdir/perllink; \
|
|
${INSTALL_MAN} ${FILESDIR}/perllink.1 $$man1dir/perllink.1; \
|
|
${RM} -f ${PREFIX}/bin/perllink \
|
|
${PREFIX}/${PKGMANDIR}/man1/perllink.1; \
|
|
${LN} -s $$scriptdir/perllink ${PREFIX}/bin/perllink; \
|
|
${LN} -s $$man1dir/perllink.1 \
|
|
${PREFIX}/${PKGMANDIR}/man1/perllink.1; \
|
|
{ ${CAT} ${PKGDIR}/PLIST; \
|
|
${ECHO} "$$scriptdir/perllink"; \
|
|
${ECHO} "$$man1dir/perllink.1"; \
|
|
} | ${SED} -e "s,^"${PREFIX:Q}"/,," > ${PLIST_SRC}
|
|
|
|
.include "packlist.mk"
|
|
.include "../../mk/bsd.pkg.mk"
|