diff options
Diffstat (limited to 'lang/perl5.32/Makefile')
-rw-r--r-- | lang/perl5.32/Makefile | 293 |
1 files changed, 293 insertions, 0 deletions
diff --git a/lang/perl5.32/Makefile b/lang/perl5.32/Makefile new file mode 100644 index 000000000000..bb20591af385 --- /dev/null +++ b/lang/perl5.32/Makefile @@ -0,0 +1,293 @@ +# $FreeBSD$ + +PORTNAME= perl +DISTVERSION= ${PERL_VERSION}-RC1 +PORTREVISION= 0 +CATEGORIES= lang devel perl5 +MASTER_SITES= CPAN/../../src/5.0 +DIST_SUBDIR= perl + +MAINTAINER= mat@FreeBSD.org +COMMENT= Practical Extraction and Report Language + +LICENSE= ART10 GPLv1+ +LICENSE_COMB= dual +LICENSE_FILE_ART10= ${WRKSRC}/Artistic +LICENSE_FILE_GPLv1+ = ${WRKSRC}/Copying + +# Uncomment when the default Perl is switched to 5.3(X+2) +#DEPRECATED= Support end three years after .0 release, please upgrade to a more recent version of Perl +#EXPIRATION_DATE=<Release date of .0 + 3 years> + +USES= cpe tar:xz + +# Give a hint of where libperl.so can be found. +USE_LDCONFIG= ${PREFIX}/${_ARCH_LIB}/CORE + +TEST_TARGET= test_harness +TEST_ENV= ${MAKE_ENV} \ + LD_LIBRARY_PATH=${WRKSRC} \ + TEST_JOBS=${MAKE_JOBS_NUMBER} + +PORTSCOUT= limit:^${PERL_VER}. + +HAS_CONFIGURE= yes +CONFIGURE_SCRIPT= Configure +CONFIGURE_ARGS= -Darchlib=${PREFIX}/${_ARCH_LIB} \ + -Dcc="${CC}" \ + -Dcf_by=${MAINTAINER:C,@.*,,} \ + -Dcf_email=${MAINTAINER} \ + -Dcf_time="`${STAT} -t \"%a %b %d %T %Z %Y\" -f %Sm ${_DISTDIR}/${DISTNAME}${EXTRACT_SUFX}`" \ + -Dinc_version_list=none \ + -Dlibperl=libperl.so.${PERL_VERSION} \ + -Dman1dir=${PREFIX}/${PERLMANPREFIX_REL}/man/man1 \ + -Dman3dir=${PREFIX}/${PERLMANPREFIX_REL}/man/man3 \ + -Dprefix=${PREFIX} \ + -Dprivlib=${PREFIX}/${_PRIV_LIB} \ + -Dscriptdir=${PREFIX}/bin \ + -Dsitearch=${SITE_ARCH} \ + -Dsitelib=${SITE_PERL} \ + -Dsiteman1dir=${SITE_MAN1} \ + -Dsiteman3dir=${SITE_MAN3} \ + -Dusenm=n \ + -Duseshrplib \ + -sde \ + -Ui_iconv \ + -Ui_malloc \ + -Uinstallusrbinperl +# Keep the following two in sync. +# lddlflags is used for all .so linking +# shrpldflags is used for libperl.so, so remove all the extra bits inherited from lddlflags. +CONFIGURE_ARGS+= -Alddlflags='-L${WRKSRC} -L${PREFIX}/${_ARCH_LIB}/CORE -lperl' \ + -Dshrpldflags='$$(LDDLFLAGS:N-L${WRKSRC}:N-L${PREFIX}/${_ARCH_LIB}/CORE:N-lperl) -Wl,-soname,$$(LIBPERL:R)' + +# When built from a git repository, newvers.sh can put a = in the version. +CONFIGURE_ENV= UNAME_v="$$(uname -v | sed 'y/=/ /')" + +SUB_FILES= perl-man.conf + +INSTALL_TARGET= install-strip + +.if defined(PERL_VENDOR_PREFIX) +CONFIGURE_ARGS+= -Dvendorarch=${PERL_VENDOR_PREFIX}/${_ARCH_LIB} \ + -Dvendorbin=${PERL_VENDOR_PREFIX}/bin \ + -Dvendorlib=${PERL_VENDOR_PREFIX}/${_PRIV_LIB} \ + -Dvendorman1dir=${PERL_VENDOR_PREFIX}/man/man1 \ + -Dvendorman3dir=${PERL_VENDOR_PREFIX}/${_PRIV_LIB}/man/man3 \ + -Dvendorprefix=${PERL_VENDOR_PREFIX} +.endif + +# http://perl5.git.perl.org/perl.git/commit/b83080de5c4254 +# PERLIOBUF_DEFAULT_BUFSIZ size in bytes (default: 8192 bytes) +.if defined(PERLIOBUF_DEFAULT_BUFSIZ) +CONFIGURE_ARGS+= -Accflags=-DPERLIOBUF_DEFAULT_BUFSIZ=${PERLIOBUF_DEFAULT_BUFSIZ} +.endif + +PLIST_SUB= ARCH_LIB=${_ARCH_LIB} \ + MAN1=${PERLMANPREFIX_REL}/man/man1 \ + MAN3=${PERLMANPREFIX_REL}/man/man3 \ + PERL_ARCH=${PERL_ARCH} \ + PERL_ARCH_regex=\b${PERL_ARCH}\b \ + PERL_VER=${PERL_VER} \ + PERL_VERSION=${PERL_VERSION} \ + PERLMANPREFIX=${PERLMANPREFIX_REL} \ + PERLMANPREFIX_regex=${PERLMANPREFIX_REL}\b \ + PKGNAMESUFFIX=${PKGNAMESUFFIX} \ + PRIV_LIB=${_PRIV_LIB} \ + SITE_ARCH=${SITE_ARCH_REL} \ + SITE_PERL=${SITE_PERL_REL} \ + SITEMANPREFIX=${SITE_MAN_PREFIX} + +SUB_LIST= PERL_ARCH=${PERL_ARCH} \ + PERL_VER=${PERL_VER} \ + PERL_VERSION=${PERL_VERSION} \ + PERLMANPREFIX=${PERLMANPREFIX_REL} \ + PRIV_LIB=${_PRIV_LIB} \ + SITE_PERL=${SITE_PERL_REL} \ + SITEMANPREFIX=${SITE_MAN_PREFIX} + +.include "version.mk" +PERL_VER?= ${PERL_VERSION:C/\.[0-9]+$//} +PERL_ARCH= mach +SITE_PERL_REL?= lib/perl5/site_perl +SITE_PERL?= ${PREFIX}/${SITE_PERL_REL} +SITE_ARCH_REL?= ${SITE_PERL_REL}/${PERL_ARCH}/${PERL_VER} +SITE_ARCH?= ${PREFIX}/${SITE_ARCH_REL} +SITE_MAN_PREFIX= ${SITE_PERL_REL} +SITE_MAN3_REL?= ${SITE_MAN_PREFIX}/man/man3 +SITE_MAN3?= ${PREFIX}/${SITE_MAN3_REL} +SITE_MAN1_REL?= ${SITE_MAN_PREFIX}/man/man1 +SITE_MAN1?= ${PREFIX}/${SITE_MAN1_REL} + +_PRIV_LIB= lib/perl5/${PERL_VER} +_ARCH_LIB= ${_PRIV_LIB}/${PERL_ARCH} + +PERLMANPREFIX_REL= ${_PRIV_LIB}/perl +PERLMANPREFIX= ${PREFIX}/${PERLMANPREFIX_REL} +MANDIRS= ${PERLMANPREFIX}/man + +OPTIONS_DEFINE= DEBUG DOT_INC DTRACE GDBM MULTIPLICITY PERL_64BITINT \ + PERL_MALLOC SITECUSTOMIZE THREADS +OPTIONS_DEFAULT= DTRACE MULTIPLICITY PERL_64BITINT THREADS + +.if !exists(/usr/sbin/dtrace) +OPTIONS_EXCLUDE= DTRACE +.endif +.for a in aarch64 arm armv6 armv7 \ + mips mips64 mips64el mips64elhf mips64hf mipsel mipselhf mipshf mipsn32 \ + powerpc powerpc64 powerpcspe \ + riscv64 riscv64sf sparc64 +OPTIONS_EXCLUDE_${a}= DTRACE +.endfor +OPTIONS_SUB= yes + +DOT_INC_DESC= Add '.' to @INC (unsafe) +GDBM_DESC= GDBM_File extension +MULTIPLICITY_DESC= Use multiplicity +PERL_64BITINT_DESC= Use 64 bit integers (on i386) +PERL_MALLOC_DESC= Use Perl malloc +SITECUSTOMIZE_DESC= Run-time customization of @INC +THREADS_DESC= Build threaded perl + +DEBUG_CONFIGURE_ON= -DDEBUGGING \ + -Doptimize="-g" +DEBUG_CONFIGURE_OFF= -Doptimize="${CFLAGS}" +DOT_INC_CONFIGURE_ON= -Ddefault_inc_excludes_dot=n +DTRACE_CONFIGURE_ON= -Dusedtrace +DTRACE_CONFIGURE_OFF= -Uusedtrace +GDBM_CONFIGURE_ON= -Di_gdbm +GDBM_CONFIGURE_OFF= -Ui_gdbm +GDBM_LIB_DEPENDS= libgdbm.so:databases/gdbm +MULTIPLICITY_CONFIGURE_ON= -Dusemultiplicity=y +MULTIPLICITY_CONFIGURE_OFF= -Dusemultiplicity=n +PERL_64BITINT_CONFIGURE_ON= -Duse64bitint +PERL_MALLOC_CONFIGURE_ON= -Dusemymalloc=y +PERL_MALLOC_CONFIGURE_OFF= -Dusemymalloc=n +SITECUSTOMIZE_CONFIGURE_ON= -Dusesitecustomize +THREADS_CONFIGURE_ON= -Dusethreads=y +THREADS_CONFIGURE_OFF= -Dusethreads=n + +# Why this is required is explained in: +# https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=227356#c5 +_PERL5_DEFAULT_FILE= /tmp/PERL5_DEFAULT + +# Get the default version, and possibly, overwrite it. +.include <bsd.port.options.mk> +.sinclude "${_PERL5_DEFAULT_FILE}" + +.if ${OSVERSION} >= 1200004 +CONFIGURE_ARGS+= -Accflags='-DUSE_THREAD_SAFE_LOCALE' +.endif + +# if this port is default due PERL5_DEFAULT +# change PKGNAME to reflect this +.if ${PERL_VER} == ${PERL5_DEFAULT} +PKGNAMESUFFIX= 5 +IAMDEFAULTPERL= yes +.else +# make PKGNAME unique among other lang/perl5.x +PKGNAMESUFFIX= ${PERL_VER} +.endif + +# Am I building the default Perl ? +.if defined(IAMDEFAULTPERL) +PLIST_SUB+= BINSUFFIX="" \ + DEFAULT="" +.else +BINSUFFIX= ${PERL_VERSION} +PLIST_SUB+= BINSUFFIX=${PERL_VERSION} \ + DEFAULT="@comment " +CONFIGURE_ARGS+= -Dversiononly +.endif + +.if !defined(IAMDEFAULTPERL) +pre-everything:: + @${ECHO_MSG} "##################################################" + @${ECHO_MSG} "" + @${ECHO_MSG} " This is *NOT* the DEFAULT perl version" + @${ECHO_MSG} "" + @${ECHO_MSG} "It will *NOT* install ${PREFIX}/bin/perl" + @${ECHO_MSG} "" + @${ECHO_MSG} "It will *ONLY* install ${PREFIX}/bin/perl${PERL_VERSION}" + @${ECHO_MSG} "" + @${ECHO_MSG} "The default Perl version currently is ${PERL5_DEFAULT}." + @${ECHO_MSG} "" + @${ECHO_MSG} "If you want to use this version as the default," + @${ECHO_MSG} "stop the build now, add this line to your" + @${ECHO_MSG} "/etc/make.conf, and then restart the build." + @${ECHO_MSG} "" + @${ECHO_MSG} "DEFAULT_VERSIONS+=perl5=${PERL_VER}" + @${ECHO_MSG} "" + @${ECHO_MSG} "##################################################" +. if !(defined(PACKAGE_BUILDING) || defined(BATCH)) + @sleep 30 +. endif +.endif + +# Put a symlink to the future libperl.so.x.yy so that -lperl works. +# Also, save PERL5_DEFAULT in case someone is not using the default Perl +# version whilst not having set DEFAULT_VERSIONS=perl5=blah. While upgrading, +# portmaster/portupgrade will remove the installed Perl version, and it will +# remove any way to guess what the default Perl version is needed. +post-extract: + ${LN} -s libperl.so.${PERL_VERSION} ${WRKSRC}/libperl.so + ${LN} -s libperl.so.${PERL_VERSION} ${WRKSRC}/libperl.so.${PERL_VER} +.if !defined(PACKAGE_BUILDING) + @${ECHO_CMD} "PERL5_DEFAULT=${PERL5_DEFAULT}" > ${_PERL5_DEFAULT_FILE} +.endif + +.if !defined(PACKAGE_BUILDING) +post-clean: + @${RM} ${_PERL5_DEFAULT_FILE} +.endif + +post-patch: + ${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g' \ + ${WRKSRC}/Configure ${WRKSRC}/hints/freebsd.sh +.if !defined(IAMDEFAULTPERL) + ${REINPLACE_CMD} -e '/do_installprivlib = 0 if .versiononly/d; \ + /^if.*nopods.*versiononly || /s/.*/if (1) {/' \ + ${WRKSRC}/installperl +.endif + +post-install: + @${REINPLACE_CMD} -e '/^lddlflags/s|-L${WRKSRC} ||' \ + ${STAGEDIR}${PREFIX}/${_ARCH_LIB}/Config_heavy.pl + @${TOUCH} -r ${STAGEDIR}${PREFIX}/${_ARCH_LIB}/Config_heavy.pl.bak ${STAGEDIR}${PREFIX}/${_ARCH_LIB}/Config_heavy.pl + @${RM} ${STAGEDIR}${PREFIX}/${_ARCH_LIB}/Config_heavy.pl.bak +.if ${CC} == /nxb-bin/usr/bin/cc + @${REINPLACE_CMD} -e 's=/nxb-bin==' \ + ${STAGEDIR}${PREFIX}/${_ARCH_LIB}/Config.pm ${STAGEDIR}${PREFIX}/${_ARCH_LIB}/Config_heavy.pl +# Restore Config.pm's timestamp so that Perl's build system does not think it +# needs to rebuild everything. + @${TOUCH} -r ${STAGEDIR}${PREFIX}/${_ARCH_LIB}/Config.pm.bak ${STAGEDIR}${PREFIX}/${_ARCH_LIB}/Config.pm + @${TOUCH} -r ${STAGEDIR}${PREFIX}/${_ARCH_LIB}/Config_heavy.pl.bak ${STAGEDIR}${PREFIX}/${_ARCH_LIB}/Config_heavy.pl + @${RM} ${STAGEDIR}${PREFIX}/${_ARCH_LIB}/Config.pm.bak ${STAGEDIR}${PREFIX}/${_ARCH_LIB}/Config_heavy.pl.bak +.endif + + ${MKDIR} ${STAGEDIR}${SITE_MAN1} ${STAGEDIR}${SITE_MAN3} + ${MKDIR} ${STAGEDIR}${SITE_ARCH}/auto + ${MKDIR} ${STAGEDIR}${SITE_PERL}/auto +.if defined(IAMDEFAULTPERL) + ${LN} -sf perl ${STAGEDIR}${PREFIX}/bin/perl${PERL_VERSION} +.endif + ${LN} -sf libperl.so.${PERL_VERSION} ${STAGEDIR}${PREFIX}/${_ARCH_LIB}/CORE/libperl.so + ${LN} -sf libperl.so.${PERL_VERSION} ${STAGEDIR}${PREFIX}/${_ARCH_LIB}/CORE/libperl.so.${PERL_VER} + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/perl${PERL_VERSION} + ${MKDIR} ${STAGEDIR}${SITE_ARCH}/machine + ${MKDIR} ${STAGEDIR}${SITE_ARCH}/sys +# h2ph needs perl, but perl is not installed, it's only +# staged, so, use the one in WRKDIR + (cd /usr/include && ${SETENV} LD_LIBRARY_PATH=${WRKSRC} \ + ${WRKSRC}/perl -I ${WRKSRC}/lib ${STAGEDIR}${PREFIX}/bin/h2ph${BINSUFFIX} \ + -d ${STAGEDIR}${SITE_ARCH} *.h machine/*.h sys/*.h >/dev/null) + @${FIND} ${STAGEDIR}${SITE_ARCH} -name '*.ph' | sed -e 's|${STAGEDIR}||' >> ${TMPPLIST} + ${FIND} ${STAGEDIR} -name '*.so*' -type f | while read f; \ + do \ + ${CHMOD} 644 $$f; \ + ${STRIP_CMD} $$f; \ + ${CHMOD} 444 $$f; \ + done + ${INSTALL_DATA} ${WRKDIR}/perl-man.conf ${STAGEDIR}${PREFIX}/etc/man.d/perl${PKGNAMESUFFIX}.conf + +.include <bsd.port.mk> |