pkgsrc-wip/pike8.0/Makefile

148 lines
5.2 KiB
Makefile

# $NetBSD$
.include "./version.mk"
NAME= pike${PIKEVERSUFFIX}
PKGNAME= ${NAME}-${PIKE_VERSION}
DISTNAME= Pike-v${PIKE_VERSION}
CATEGORIES= lang
MASTER_SITES= http://pike.lysator.liu.se/pub/pike/${PIKE_RELEASE_TYPE}/${PIKE_VERSION}/
LICENSE= gnu-gpl-v2 OR gnu-lgpl-v2.1 OR mpl-1.1
#LICENSE+= gnu-lgpl-v2.1
#LICENSE+= mpl-v1.1
MAINTAINER= william@welliver.org
HOMEPAGE= https://pike.lysator.liu.se/
COMMENT= Dynamic language with a syntax similar to Java and C
CHECK_SSP= no
# pike performs dynamic allocation and machine code generation,
# so leaving SSP enabled causes problems.
SSP_SUPPORTED= no
BUILD_DEPENDS+= pkgconf-[0-9]*:../../devel/pkgconf
BUILD_DEPENDS+= pkg_alternatives-[0-9]*:../../pkgtools/pkg_alternatives
MAKE_JOBS_SAFE= no
GNU_CONFIGURE= yes
CONFIGURE_SCRIPT= src/configure
#CONFIGURE_ARGS+= --without-machine-code
CFLAGS+= -O
BUILD_MAKE_FLAGS+=
USE_TOOLS+= gmake
USE_LANGUAGES= c c++
SHARED_DOCS_LOC= ${PREFIX}/share/doc/${NAME}
INSTALL_SHARED_DOCS= ANNOUNCE CHANGES COMMITTERS COPYING COPYRIGHT README README-GIT
INSTALL_TARGET_ARGS+= INSTALLARGS="buildroot='${DESTDIR}' prefix='${PREFIX}' \
include_prefix='${PREFIX}/include/${NAME}' \
lib_prefix='${PREFIX}/lib/${NAME}' --verbose --traditional"
INSTALL_TARGET_ARGS+= buildroot='${DESTDIR}' prefix='${PREFIX}'
.if (defined(ABI))
CONFIGURE_ARGS+= --with-abi=${ABI}
.endif
FILES_SUBST+= NAME="${NAME}"
REPLACE_INTERPRETER+= pike
REPLACE.pike.old= pike
REPLACE.pike.new= ${PREFIX}/bin/pike${PIKEVERSUFFIX}
REPLACE_FILES.pike= lib/modules/Tools.pmod/Standalone.pmod/cgrep.pike
REPLACE_FILES.pike+= bin/test_pike.pike
REPLACE_FILES.pike+= lib/modules/Tools.pmod/Standalone.pmod/test_pike.pike
REPLACE_FILES.pike+= lib/modules/Tools.pmod/Standalone.pmod/rsif.pike
# remove any dumped modules from the list, as their generation is not deterministic
PRINT_PLIST_AWK+= /^lib\/.*(\.pike\.o|\.pmod\.o)$$/ { next; }
# needed to keep make from removing all precompiled cmods because of a patched file.
post-configure:
touch -t 201501010000 ${WRKSRC}/src/acconfig.h
cp ${WRKSRC}/src/backend.c ${WRKSRC}/src/backend.cmod.c
cp ${WRKSRC}/src/builtin.c ${WRKSRC}/src/builtin.cmod.c
cp ${WRKSRC}/src/iterators.c ${WRKSRC}/src/iterators.cmod.c
touch ${WRKSRC}/src/backend.c
touch ${WRKSRC}/src/builtin.c
touch ${WRKSRC}/src/iterators.c
do-install:
cd ${WRKSRC} \
&& env ${MAKE_ENV} \
${MAKE_PROGRAM} ${INSTALL_MAKE_FLAGS} \
-f ${MAKE_FILE} \
${INSTALL_TARGET} ${INSTALL_TARGET_ARGS}
post-build:
cd ${WRKSRC} && \
${PKGSRC_SETENV} ${INSTALL_ENV} ${MAKE_ENV} \
${MAKE_PROGRAM} ${MAKE_FLAGS} \
-f ${MAKE_FILE} DESTDIR="" DOCTARGET="all" documentation ; \
${SED} -e 's~${WRKSRC}/smartlink~${PREFIX}/include/${NAME}/smartlink~' \
< ${WRKSRC}/specs > ${WRKSRC}/specs.tmp
mv ${WRKSRC}/specs.tmp ${WRKSRC}/specs
.PHONY: remove-subpackage-modules remove-dumped-modules fix-versioned-filenames \
prepare-docs-dir install-modrefs install-shared-docs print-vars
post-install: remove-dumped-modules remove-subpackage-modules fix-versioned-filenames \
prepare-docs-dir install-shared-docs install-modrefs
remove-subpackage-modules:
cd ${DESTDIR}/${PREFIX}/lib/${NAME}/modules && \
rm ___Java.so ___GTK2.so ___Mysql.so ___Fuse.so ____Image_TIFF.so \
_Image_FreeType.so _Image_SVG.so _Image_WebP.so Gdbm.so Odbc.so
remove-dumped-modules:
cd ${DESTDIR}/${PREFIX}/lib/${NAME} && find . -type f | \
sed -n -e '/\.pmod\.o$$/p' -e '/\.pike\.o$$/p' | xargs -n 20 rm -f
if [ -f ${DESTDIR}/${PREFIX}/include/${NAME}/y.tab.h ] ; then \
rm ${DESTDIR}/${PREFIX}/include/${NAME}/y.tab.h ; fi
fix-versioned-filenames:
mv ${DESTDIR}/${PREFIX}/bin/pike ${DESTDIR}/${PREFIX}/bin/${NAME}
mv ${DESTDIR}/${PREFIX}/bin/pike.syms ${DESTDIR}/${PREFIX}/bin/${NAME}.syms
if [ -f ${DESTDIR}/${PREFIX}/${PKGMANDIR}/man1/pike.1 ] ; then \
mv ${DESTDIR}/${PREFIX}/${PKGMANDIR}/man1/pike.1 \
${DESTDIR}/${PREFIX}/${PKGMANDIR}/man1/${NAME}.1 ; \
elif [ -f ${DESTDIR}/${PREFIX}/share/man/man1/pike.1 ] ; then \
mkdir -p ${DESTDIR}/${PREFIX}/${PKGMANDIR}/man1 ; \
mv ${DESTDIR}/${PREFIX}/share/man/man1/pike.1 \
${DESTDIR}/${PREFIX}/${PKGMANDIR}/man1/${NAME}.1 ; \
else \
exit 1 ; \
fi
prepare-docs-dir:
rm -rf ${DESTDIR}/${PREFIX}/doc
rm -rf ${DESTDIR}/${SHARED_DOCS_LOC}
mkdir -p ${DESTDIR}/${SHARED_DOCS_LOC}
install-modrefs:
cd ${WRKSRC} && \
cp -rf refdoc/modref ${DESTDIR}/${SHARED_DOCS_LOC} && \
cp -rf refdoc/traditional_manual ${DESTDIR}/${SHARED_DOCS_LOC}
install-shared-docs:
cd ${WRKSRC} &&\
for x in "${INSTALL_SHARED_DOCS}"; do\
${INSTALL_DATA} $$x "${DESTDIR}/${SHARED_DOCS_LOC}"; done
${MKDIR} ${DESTDIR}/${PREFIX}/share/${NAME}/refdoc/src
cd ${WRKSRC} && cp -rf refdoc/structure ${DESTDIR}/${PREFIX}/share/${NAME}/refdoc/src
cd ${WRKSRC} && cp -rf refdoc/src_images ${DESTDIR}/${PREFIX}/share/${NAME}/refdoc/src
cd ${WRKSRC} && cp -rf refdoc/presentation ${DESTDIR}/${PREFIX}/share/${NAME}/refdoc/src
cd ${WRKSRC} && cp -rf refdoc/Makefile ${DESTDIR}/${PREFIX}/share/${NAME}/refdoc/src
.include "../../devel/gmp/buildlink3.mk"
.include "../../devel/zlib/buildlink3.mk"
.include "../../security/nettle/buildlink3.mk"
.include "../../databases/sqlite3/buildlink3.mk"
.include "../../mk/jpeg.buildlink3.mk"
.include "../../mk/bsd.pkg.mk"
print-vars:
${ECHO} vars
.for x in ${MAKEVARS}
${ECHO} ${x}: ${${x}}
.endfor