Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/pkgsrc/mk/pthread.buildlink3.mk,v rcsdiff: /ftp/cvs/cvsroot/pkgsrc/mk/pthread.buildlink3.mk,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.16 retrieving revision 1.25 diff -u -p -r1.16 -r1.25 --- pkgsrc/mk/pthread.buildlink3.mk 2004/11/12 22:34:15 1.16 +++ pkgsrc/mk/pthread.buildlink3.mk 2007/02/10 08:59:07 1.25 @@ -1,70 +1,54 @@ -# $NetBSD: pthread.buildlink3.mk,v 1.16 2004/11/12 22:34:15 jlam Exp $ +# $NetBSD: pthread.buildlink3.mk,v 1.25 2007/02/10 08:59:07 rillig Exp $ # # The pthreads strategy for pkgsrc is to "bless" a particular pthread -# package as the Official Pthread Replacement (OPR). A package that uses -# pthreads may do one of the following: +# package as the Official Pthread Replacement (OPR). The following +# variables may be set before including this file: # -# (1) Simply include pthread.buildlink3.mk. This will make the package -# use the native pthread library if it's available, or else the OPR -# package. The value of PTHREAD_TYPE may be checked to be either -# "native", or the name of the OPR package, or "none", e.g. +# PTHREAD_OPTS?= # empty +# A list of options to configure the search for a suitable pthreads +# implementation. # -# # -# # package Makefile stuff... -# # -# .include "../../mk/pthread.buildlink3.mk" +# "native" means that only a native pthreads implementation is +# acceptable. # -# .if defined(PTHREAD_TYPE) && ${PTHREAD_TYPE} == "none" -# CONFIGURE_ARGS+= --without-pthreads -# .endif +# "optional" will override the effects of any instance of +# "require". This should _only_ be used by those packages +# that can be built with or without pthreads independently +# of whether any of its dependencies need pthreads. +# Currently, this is only www/mozilla, which uses its own +# threading library if native pthreads are unavailable, +# despite that it uses GTK+, which _does_ need pthreads. # -# .include "../../mk/bsd.pkg.mk" -# -# Note that it's only safe to check and use the value of PTHREAD_TYPE -# after all other buildlink3.mk files have been included. +# "require" means that the package is skipped silently when no +# implementation can be found. # -# (2) Add "native" to PTHREAD_OPTS prior to including -# pthread.buildlink3.mk. This is like case (1), but we only check for -# the native pthread library, e.g., +# By default, the native pthreads implementation is used if it's +# available. Otherwise the OPR is used. # -# PTHREAD_OPTS+= native -# # -# # package Makefile stuff... -# # -# .include "../../mk/pthread.buildlink3.mk" +# PTHREAD_AUTO_VARS?= no +# This variable specifies whether the values of the variables +# PTHREAD_{CFLAGS,CPPFLAGS,LDFLAGS,LIBS} should be automatically +# added to their respective variables. # -# .if defined(PTHREAD_TYPE) && ${PTHREAD_TYPE} == "none" -# CONFIGURE_ARGS+= --without-pthreads -# .endif +# After inclusion of this file, the following variables may be examined: # -# .include "../../mk/bsd.pkg.mk" +# PTHREAD_TYPE +# The type of pthreads implementation that has been found. # -# (3) Add "require" to PTHREAD_OPTS prior to including -# pthread.buildlink3.mk. This will make the package use the native -# pthread library or else use the OPR package, and will otherwise set -# PKG_SKIP_REASON if neither can be used, e.g., +# "native" means that the native pthreads implementation is used. # -# PTHREAD_OPTS+= require -# # -# # package Makefile stuff... -# # -# .include "../../mk/pthread.buildlink3.mk" -# .include "../../mk/bsd.pkg.mk" +# "none" means that no suitable pthreads implementation could be +# found. # -# (4) Add both "require" and "native" to PTHREAD_OPTS prior to including -# pthread.buildlink3.mk. This is like case (3), but we only check for -# the native pthread library, e.g., +# Any other value is the name of the package that is used as the +# pthread implementation. # -# PTHREAD_OPTS+= require native -# # -# # more package Makefile stuff... -# # -# .include "../../mk/pthread.buildlink3.mk" -# .include "../../mk/bsd.pkg.mk" +# Note that it's only safe to check and use the value of PTHREAD_TYPE +# after all other buildlink3.mk files have been included. # # The case where a package must use either the native pthread library or -# some pthread package aside from the OPR is a special case of (2), e.g., -# if the required pthread package is "ptl2", then: +# some pthread package aside from the OPR (e.g. "ptl2") can be solved as +# follows: # # PTHREAD_OPTS+= native # # @@ -77,36 +61,18 @@ # .endif # # .include "../../mk/bsd.pkg.mk" -# -# A package Makefile may add the word "optional" to PTHREAD_OPTS, which -# will override the effects of any instance of the word "require". This -# should _only_ be used by those packages that can be built with or -# without pthreads _independently_ of whether any of its dependencies need -# pthreads. Currently, this only only www/mozilla, which uses its own -# threading library if native pthreads is unavailable, despite that it -# uses GTK+, which _does_ need pthreads. -# -########################################################################### -# -# PTHREAD_OPTS represents whether this package requires pthreads, and also -# whether it needs to be native. It may include the word "require" -# to denote that a pthreads implementation is required, and may also -# include the word "native" to denote that only native pthreads are -# acceptable. -# -# _PKG_PTHREAD is the fall-back package pthread implementation use by -# pthread.buildlink3.mk. -# -# _PKG_PTHREAD_COMPAT_PATTERNS matches the ONLY_FOR_PLATFORMS from the -# Makefile for ${_PKG_PTHREAD}. It's used to see if ${_PKG_PTHREADS} -# can actually be used to replace a native pthreads. -# + PTHREAD_BUILDLINK3_MK:= ${PTHREAD_BUILDLINK3_MK}+ +# The fall-back package pthread implementation _PKG_PTHREAD?= pth _PKG_PTHREAD_DEPENDS?= pth>=2.0.0 _PKG_PTHREAD_PKGSRCDIR?= ../../devel/${_PKG_PTHREAD} _PKG_PTHREAD_BUILDLINK3_MK?= ${_PKG_PTHREAD_PKGSRCDIR}/buildlink3.mk + +# _PKG_PTHREAD_COMPAT_PATTERNS matches the ONLY_FOR_PLATFORMS from the +# Makefile for ${_PKG_PTHREAD}. It is used to see if ${_PKG_PTHREADS} +# can actually be used to replace a native pthreads. _PKG_PTHREAD_COMPAT_PATTERNS= *-*-* .include "../../mk/bsd.prefs.mk" @@ -124,7 +90,7 @@ PTHREAD_TYPE= native . if !empty(PTHREAD_OPTS:Mnative) PTHREAD_TYPE= none . if !empty(PTHREAD_OPTS:Mrequire) && empty(PTHREAD_OPTS:Moptional) -PKG_SKIP_REASON= "${PKGNAME} requires a native pthreads implementation." +PKG_FAIL_REASON= "${PKGNAME} requires a native pthreads implementation." . endif . else PTHREAD_TYPE= none @@ -135,19 +101,23 @@ PTHREAD_TYPE= ${_PKG_PTHREAD} . endfor . if ${PTHREAD_TYPE} == "none" && \ !empty(PTHREAD_OPTS:Mrequire) && empty(PTHREAD_OPTS:Moptional) -PKG_SKIP_REASON= "${PKGNAME} requires a working pthreads implementation." +PKG_FAIL_REASON= "${PKGNAME} requires a working pthreads implementation." . endif . endif .endif +PTHREAD_AUTO_VARS?= no + .if ${PTHREAD_TYPE} == "native" BUILDLINK_PACKAGES:= ${BUILDLINK_PACKAGES:Npthread} BUILDLINK_PACKAGES+= pthread +BUILDLINK_ORDER:= ${BUILDLINK_ORDER} ${BUILDLINK_DEPTH}pthread BUILDLINK_BUILTIN_MK.pthread= ../../mk/pthread.builtin.mk +BUILDLINK_AUTO_VARS.pthread?= ${PTHREAD_AUTO_VARS} .elif ${PTHREAD_TYPE} == "${_PKG_PTHREAD}" . if exists(${_PKG_PTHREAD_BUILDLINK3_MK}) . if !empty(_PKG_PTHREAD_DEPENDS) -BUILDLINK_DEPENDS.${_PKG_PTHREAD}+= ${_PKG_PTHREAD_DEPENDS} +BUILDLINK_API_DEPENDS.${_PKG_PTHREAD}+= ${_PKG_PTHREAD_DEPENDS} . endif . include "${_PKG_PTHREAD_BUILDLINK3_MK}" BUILDLINK_PREFIX.pthread= ${BUILDLINK_PREFIX.${_PKG_PTHREAD}} @@ -157,8 +127,10 @@ BUILDLINK_CPPFLAGS.pthread= ${BUILDLINK BUILDLINK_LDFLAGS.pthread= ${BUILDLINK_LDFLAGS.${_PKG_PTHREAD}} BUILDLINK_LIBS.${_PKG_PTHREAD}?= -lpthread BUILDLINK_LIBS.pthread= ${BUILDLINK_LIBS.${_PKG_PTHREAD}} +BUILDLINK_AUTO_VARS.${_PKG_PTHREAD}?= ${PTHREAD_AUTO_VARS} +BUILDLINK_AUTO_VARS.pthread= ${BUILDLINK_AUTO_VARS.${_PKG_PTHREAD}} . else -PKG_SKIP_REASON= "${PKGNAME} needs pthreads, but ${_PKG_PTHREAD_BUILDLINK3_MK} is missing." +PKG_FAIL_REASON= ${PKGNAME:Q}" needs pthreads, but "${_PKG_PTHREAD_BUILDLINK3_MK:Q}" is missing." . endif .endif @@ -171,15 +143,15 @@ PTHREAD_CFLAGS= ${BUILDLINK_CFLAGS.pthr PTHREAD_CFLAGS+= ${BUILDLINK_CPPFLAGS.pthread} PTHREAD_LDFLAGS= ${BUILDLINK_LDFLAGS.pthread} PTHREAD_LIBS= ${BUILDLINK_LIBS.pthread} -CONFIGURE_ENV+= PTHREAD_CFLAGS="${PTHREAD_CFLAGS}" -CONFIGURE_ENV+= PTHREAD_LDFLAGS="${PTHREAD_LDFLAGS}" -CONFIGURE_ENV+= PTHREAD_LIBS="${PTHREAD_LIBS}" -MAKE_ENV+= PTHREAD_CFLAGS="${PTHREAD_CFLAGS}" -MAKE_ENV+= PTHREAD_LDFLAGS="${PTHREAD_LDFLAGS}" -MAKE_ENV+= PTHREAD_LIBS="${PTHREAD_LIBS}" +CONFIGURE_ENV+= PTHREAD_CFLAGS=${PTHREAD_CFLAGS:Q} +CONFIGURE_ENV+= PTHREAD_LDFLAGS=${PTHREAD_LDFLAGS:Q} +CONFIGURE_ENV+= PTHREAD_LIBS=${PTHREAD_LIBS:Q} +MAKE_ENV+= PTHREAD_CFLAGS=${PTHREAD_CFLAGS:Q} +MAKE_ENV+= PTHREAD_LDFLAGS=${PTHREAD_LDFLAGS:Q} +MAKE_ENV+= PTHREAD_LIBS=${PTHREAD_LIBS:Q} PTHREADBASE= ${BUILDLINK_PREFIX.pthread} -CONFIGURE_ENV+= PTHREADBASE=${PTHREADBASE} -MAKE_ENV+= PTHREADBASE=${PTHREADBASE} +CONFIGURE_ENV+= PTHREADBASE=${PTHREADBASE:Q} +MAKE_ENV+= PTHREADBASE=${PTHREADBASE:Q} .endif # PTHREAD_BUILDLINK3_MK