73 lines
2.5 KiB
Makefile
73 lines
2.5 KiB
Makefile
# $NetBSD: pkg-build-options.mk,v 1.16 2020/03/15 10:33:42 rillig Exp $
|
|
#
|
|
# This procedure determines the PKG_OPTIONS that have been in effect
|
|
# when the package ${pkgbase} has been built. When the package is not
|
|
# yet installed, its current PKG_OPTIONS are queried.
|
|
#
|
|
# Parameters:
|
|
# pkgbase
|
|
# The package identifier, as in the package's buildlink3.mk
|
|
# file.
|
|
#
|
|
# Returns:
|
|
# PKG_BUILD_OPTIONS.${pkgbase}
|
|
# The build options of the package.
|
|
#
|
|
# Example:
|
|
# # in emulators/wine/buildlink3.mk
|
|
# pkgbase := wine
|
|
# .include "../../mk/pkg-build-options.mk"
|
|
#
|
|
# Keywords: options pkg-build-options PKG_BUILD_OPTIONS
|
|
#
|
|
|
|
.if !defined(pkgbase)
|
|
. for including in ${.INCLUDEDFROMDIR}/${.INCLUDEDFROMFILE}
|
|
PKG_FAIL_REASON+= "[pkg-build-options.mk] ${including}: pkgbase must be set"
|
|
. endfor
|
|
.endif
|
|
|
|
.include "bsd.fast.prefs.mk"
|
|
|
|
# For the check for inclusion from non-buildlink3.mk, it is irrelevant
|
|
# whether BUILDLINK_TREE was empty or undefined, so defining it here
|
|
# avoids dealing one case.
|
|
BUILDLINK_TREE?=
|
|
|
|
# Counting words doesn't work as expected for empty strings, they
|
|
# still have one word. Older make doesn't like the code without
|
|
# variable assignment for unknown reasons.
|
|
_BUILDLINK_TREE_WITH:= ${BUILDLINK_TREE:M-*:[\#]}
|
|
_BUILDLINK_TREE_WITHOUT:= ${BUILDLINK_TREE:N-*:[\#]}
|
|
.if (empty(BUILDLINK_TREE:M-*) && empty(BUILDLINK_TREE:N-*)) || \
|
|
(!empty(BUILDLINK_TREE:M-*) && !empty(BUILDLINK_TREE:N-*) && \
|
|
${_BUILDLINK_TREE_WITH} == ${_BUILDLINK_TREE_WITHOUT})
|
|
. for b in ${pkgbase}
|
|
PKG_BUILD_OPTIONS.${b}=
|
|
PKG_FAIL_REASON+= "[pkg-build-options.mk] This file may only be included from a buildlink3.mk file (pkgbase=${b})."
|
|
. endfor
|
|
.else
|
|
. for b in ${pkgbase}
|
|
. if !defined(PKG_BUILD_OPTIONS.${b}) && defined(PBULK_CACHE_DIRECTORY)
|
|
.sinclude "${PBULK_CACHE_DIRECTORY}/build-options.${b}"
|
|
. endif
|
|
. if !defined(PKG_BUILD_OPTIONS.${b})
|
|
PKG_BUILD_OPTIONS.${b}!= \
|
|
echo ""; \
|
|
${PKG_INFO} -Q PKG_OPTIONS ${b} 2>/dev/null \
|
|
|| { cd ${BUILDLINK_PKGSRCDIR.${b}} \
|
|
&& ${MAKE} ${MAKEFLAGS} show-var VARNAME=PKG_OPTIONS; }
|
|
. if defined(PBULK_CACHE_DIRECTORY)
|
|
_PKG_BUILD_OPTIONS.${b}!= \
|
|
mkdir -p ${PBULK_CACHE_DIRECTORY:Q}; \
|
|
echo PKG_BUILD_OPTIONS.${b:Q}=${PKG_BUILD_OPTIONS.${b:Q}} > ${PBULK_CACHE_DIRECTORY:Q}/build-options.${pkgbase}.$$$$; \
|
|
mv ${PBULK_CACHE_DIRECTORY:Q}/build-options.${pkgbase}.$$$$ ${PBULK_CACHE_DIRECTORY:Q}/build-options.${pkgbase}
|
|
. endif
|
|
MAKEFLAGS+= PKG_BUILD_OPTIONS.${b}=${PKG_BUILD_OPTIONS.${b}:Q}
|
|
. endif
|
|
|
|
MAKEVARS+= PKG_BUILD_OPTIONS.${b}
|
|
. endfor
|
|
.endif
|
|
|
|
.undef pkgbase # prepare for the next invocation
|