134 lines
4.5 KiB
Makefile
134 lines
4.5 KiB
Makefile
# $NetBSD$
|
|
|
|
# Makefile module for producing packages of Pike (primarily internal) modules
|
|
.if !defined(PIKE8.0_BUILTIN_MODULE_MK)
|
|
PIKE8.0_BUILTIN_MODULE_MK:=
|
|
|
|
PIKEVERSUFFIX= 8.0
|
|
|
|
.include "../../wip/pike${PIKEVERSUFFIX}/version.mk"
|
|
|
|
INTERNAL_MODULENAME?= ${MODULENAME}
|
|
MODULE_TYPE?= module
|
|
|
|
# if set to yes, build a module modref. most bundled modules already have this included
|
|
# in the main pike build, so it's not usually necessary to include a second one.
|
|
MAKE_MODREF?= no
|
|
|
|
# should the build process check to make sure that the resulting module.so contains
|
|
# some elements? empty modules usually indicate a configure-time problem, so this
|
|
# is a good way to check that all of the libs were found and enabled.
|
|
CHECK_MODULE_ENABLED?= yes
|
|
|
|
.if (${MODULE_TYPE} != "post_module" && ${MODULE_TYPE} != "module")
|
|
. error MODULE_TYPE must be module or post_module
|
|
.endif
|
|
NAME= pike${PIKEVERSUFFIX}-${MODULENAME}
|
|
PKGNAME= ${NAME}-${PIKE_VERSION}
|
|
DISTNAME= Pike-v${PIKE_VERSION}
|
|
|
|
PIKE_EXECUTABLE= pike${PIKEVERSUFFIX}
|
|
|
|
CHECK_SSP= no
|
|
# pike performs dynamic allocation and machine code generation,
|
|
# so leaving SSP enabled causes problems.
|
|
SSP_SUPPORTED= no
|
|
|
|
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
|
|
MAINTAINER= william@welliver.org
|
|
HOMEPAGE= https://pike.lysator.liu.se/
|
|
COMMENT= ${MODULENAME} module for Pike ${PIKEVERSUFFIX}
|
|
|
|
BUILD_DEPENDS+= pkgconf-[0-9]*:../../devel/pkgconf
|
|
MAKE_JOBS_SAFE= no
|
|
USE_TOOLS+= gmake
|
|
USE_LANGUAGES= c c++
|
|
SHARED_DOCS_LOC= ${PREFIX}/share/doc/${NAME}
|
|
|
|
PIKE_MODULE_SRC= src/${MODULE_TYPE}s/${INTERNAL_MODULENAME}
|
|
PIKE_MODULE_OVERLAPPING_FILES=
|
|
|
|
SYSTEM_MODULE_PATH!= pike${PIKEVERSUFFIX} -x module --query=system_module_path
|
|
SYSTEM_DOC_PATH= ${PREFIX}/share/pike${PIKEVERSUFFIX}/refdoc
|
|
|
|
EXTRACT_ELEMENTS+= ${DISTNAME}/src/${MODULE_TYPE}s/${INTERNAL_MODULENAME} \
|
|
${DISTNAME}/refdoc
|
|
FILES_SUBST+= NAME="${NAME}"
|
|
FILES_SUBST+= MODULENAME="${MODULENAME}"
|
|
FILES_SUBST+= MODULENAME="${INTERNAL_MODULENAME}"
|
|
FILES_SUBST+= PIKEVERSUFFIX="${PIKEVERSUFFIX}"
|
|
FILES_SUBST+= PIKE_EXECUTABLE="${PIKE_EXECUTABLE}"
|
|
|
|
# remove any dumped modules from the list, as their generation is not deterministic
|
|
PRINT_PLIST_AWK+= /^lib\/.*(\.pike\.o|\.pmod\.o)$$/ { next; }
|
|
|
|
do-configure:
|
|
cd ${WRKSRC}/${PIKE_MODULE_SRC} && ${PIKE_EXECUTABLE} -x module --configure
|
|
touch -t 201501010000 ${WRKSRC}/${PIKE_MODULE_SRC}/acconfig.h
|
|
touch ${WRKSRC}/${PIKE_MODULE_SRC}/configure
|
|
|
|
do-build:
|
|
cd ${WRKSRC}/${PIKE_MODULE_SRC} && ${MAKE_FLAGS} ${PIKE_EXECUTABLE} -x module
|
|
|
|
# run some build checks and make the module modref if desired.
|
|
post-build:
|
|
.if(${CHECK_MODULE_ENABLED} != "no")
|
|
cd ${WRKSRC}/${PIKE_MODULE_SRC} && ${PIKE_EXECUTABLE} \
|
|
-e 'return !sizeof(indices(load_module("./module.so"))+indices(load_module("./module.so")()));' \
|
|
|| (${ECHO} "Module empty, configure problem?" && exit 1)
|
|
.endif
|
|
.if(${MAKE_MODREF} != "no")
|
|
cd ${WRKSRC}/${PIKE_MODULE_SRC} && ${PIKE_EXECUTABLE} \
|
|
-x module SYSTEM_DOC_PATH=${SYSTEM_DOC_PATH} module_modref
|
|
.endif
|
|
|
|
do-install:
|
|
${MKDIR} ${DESTDIR}${SYSTEM_MODULE_PATH}
|
|
cd ${WRKSRC}/${PIKE_MODULE_SRC} \
|
|
&& SYSTEM_MODULE_PATH=`${PIKE_EXECUTABLE} -x module --query=system_module_path` \
|
|
${PIKE_EXECUTABLE} -x module \
|
|
SYSTEM_MODULE_PATH=${DESTDIR}${SYSTEM_MODULE_PATH} install
|
|
|
|
post-install: remove-dumped-modules remove-main-package-files prepare-docs-dir \
|
|
install-shared-docs install-modrefs
|
|
|
|
.PHONY: remove-main-package-files remove-dumped-modules prepare-docs-dir \
|
|
install-modrefs install-shared-docs
|
|
|
|
# remove files that overlap with files in the main pike package, located under PREFIX
|
|
remove-main-package-files:
|
|
cd ${DESTDIR}/${PREFIX} && \
|
|
if [ "x${PIKE_MODULE_OVERLAPPING_FILES}" != "x" ] ; then \
|
|
for remove in ${PIKE_MODULE_OVERLAPPING_FILES} ; do \
|
|
${ECHO} removing $${remove} ; \
|
|
rm $${remove} ; \
|
|
done ; \
|
|
fi
|
|
|
|
remove-dumped-modules:
|
|
cd ${DESTDIR}/${PREFIX}/lib/pike${PIKEVERSUFFIX} && \
|
|
find . -type f | sed -n -e '/\.pmod\.o$$/p' -e '/\.pike\.o$$/p' \
|
|
| xargs -n 20 rm -f
|
|
|
|
prepare-docs-dir:
|
|
rm -rf ${DESTDIR}/${PREFIX}/doc
|
|
rm -rf ${DESTDIR}/${SHARED_DOCS_LOC}
|
|
${MKDIR} ${DESTDIR}/${SHARED_DOCS_LOC}
|
|
|
|
install-modrefs:
|
|
.if(${MAKE_MODREF} != "no")
|
|
cd ${WRKSRC}/src/${MODULE_TYPE}s/${INTERNAL_MODULENAME} && \
|
|
cp -rf refdoc/modref ${DESTDIR}/${SHARED_DOCS_LOC}
|
|
.endif
|
|
|
|
install-shared-docs:
|
|
# cd ${WRKSRC} &&\
|
|
# for x in "${INSTALL_SHARED_DOCS}"; do\
|
|
# ${INSTALL_DATA} $$x "${DESTDIR}/${SHARED_DOCS_LOC}"; done
|
|
|
|
.include "../../wip/pike${PIKEVERSUFFIX}/buildlink3.mk"
|
|
|
|
.endif #PIKE8.0_BUILTIN_MODULE_MK
|