From e171b3e72c0ce464b861171360ced4827f067d10 Mon Sep 17 00:00:00 2001 From: jlam Date: Fri, 7 Sep 2007 21:55:44 +0000 Subject: Add a "system features" framework that will eventually be used to automatically supply missing "basic" headers and libraries from an older system, e.g. IRIX 5.x or Interix or AIX, etc. Example usage: USE_FEATURES+= snprintf glob regex For now, we just pull in libnbcompat to supply the missing bits. --- mk/features/features-vars.mk | 82 ++++++++++++++++++++++++++++++++++++++++++++ mk/features/features.mk | 50 +++++++++++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 mk/features/features-vars.mk create mode 100644 mk/features/features.mk (limited to 'mk/features') diff --git a/mk/features/features-vars.mk b/mk/features/features-vars.mk new file mode 100644 index 00000000000..bed2d0b7fac --- /dev/null +++ b/mk/features/features-vars.mk @@ -0,0 +1,82 @@ +# $NetBSD: features-vars.mk,v 1.1 2007/09/07 21:55:46 jlam Exp $ +# +# This file is include by bsd.prefs.mk. +# +# Package-settable variables: +# +# USE_FEATURES +# Lists the system features required by the package. +# +# Default value: undefined +# +# Variables defined by this file: +# +# MISSING_FEATURES +# The features listed in USE_FEATURES that are missing on the +# current system. Also includes "inet6" if the system doesn't +# support IPv6. +# + +MISSING_FEATURES= # empty + +# +# Handle "inet6" feature specially -- we always add it to +# MISSING_FEATURES if the operating system doesn't support IPv6, +# regardless of whether or not "inet6" is a requested feature +# in USE_FEATURES. +# +.if defined(_OPSYS_HAS_INET6) && empty(_OPSYS_HAS_INET6:M[nN][oO]) +MISSING_FEATURES+= inet6 +.endif + +.for _feature_ in err warn +. if defined(USE_FEATURES) && !empty(USE_FEATURES:M${_feature_}) +. if (${OPSYS} != NetBSD) && (${OPSYS} != FreeBSD) && (${OPSYS} != DragonFly) +MISSING_FEATURES+= ${_feature_} +. endif +. endif +.endfor + +.if defined(USE_FEATURES) && !empty(USE_FEATURES:Mgetopt_long) +. if !exists(/usr/include/getopt.h) +MISSING_FEATURES+= getopt_long +. endif +.endif + +.for _feature_ in getprogname setprogname +. if defined(USE_FEATURES) && !empty(USE_FEATURES:M${_feature_}) +. if (${OPSYS} != NetBSD) && (${OPSYS} != FreeBSD) && (${OPSYS} != DragonFly) +MISSING_FEATURES+= ${_feature_} +. endif +. endif +.endfor + +.if defined(USE_FEATURES) && !empty(USE_FEATURES:Mglob) +. if !exists(/usr/include/glob.h) +MISSING_FEATURES+= glob +. endif +.endif + +.if defined(USE_FEATURES) && !empty(USE_FEATURES:Mregex) +. if !exists(/usr/include/regex.h) +MISSING_FEATURES+= regex +. endif +.endif + +.for _feature_ in snprintf vsnprintf +. if defined(USE_FEATURES) && !empty(USE_FEATURES:M${_feature_}) +. if !empty(LOWER_OPSYS:Mirix5*) +MISSING_FEATURES+= snprintf +. endif +. endif +.endfor + +.if defined(USE_FEATURES) && !empty(USE_FEATURES:Mutimes) +. if ${OPSYS} == "Interix" +MISSING_FEATURES+= utimes +. endif +.endif + +.if defined(USE_FEATURES) && !empty(USE_FEATURES:Mnbcompat) +MISSING_FEATURES+= nbcompat +.endif diff --git a/mk/features/features.mk b/mk/features/features.mk new file mode 100644 index 00000000000..37f8795dad1 --- /dev/null +++ b/mk/features/features.mk @@ -0,0 +1,50 @@ +# $NetBSD: features.mk,v 1.1 2007/09/07 21:55:47 jlam Exp $ +# +# This file is included by bsd.pkg.mk. +# +# Variables defined by this file: +# +# FEATURE_CPPFLAGS +# FEATURE_LDFLAGS +# FEATURE_LIBS +# Preprocessor and linker flags needed to build and to link against +# the headers and libraries that supply the features missing from +# the system. +# + +.if defined(MISSING_FEATURES) +# +# Handle "inet6" feature specially -- "inet6" could be in +# MISSING_FEATURES even though it's not requested in USE_FEATURES +# so check that it appears in both before failing the package +# build. +# +. if defined(USE_FEATURES) && !empty(USE_FEATURES:Minet6) +. if !empty(MISSING_FEATURES:Minet6) +PKG_FAIL_REASON+= "${PKGNAME} requires IPv6 support" +. endif +. endif + +FEATURE_CPPFLAGS= # empty +FEATURE_LDFLAGS= # empty +FEATURE_LIBS= # empty + +. if !empty(MISSING_FEATURES:Merr) || \ + !empty(MISSING_FEATURES:Mgetopt_long) || \ + !empty(MISSING_FEATURES:Mglob) || \ + !empty(MISSING_FEATURES:Mnbcompat) || \ + !empty(MISSING_FEATURES:Mregex) || \ + !empty(MISSING_FEATURES:Msnprintf) || \ + !empty(MISSING_FEATURES:Mutimes) || \ + !empty(MISSING_FEATURES:Mvsnprintf) || \ + !empty(MISSING_FEATURES:Mwarn) +_FEATURE_NEED_NBCOMPAT= yes +. endif +_FEATURE_NEED_NBCOMPAT?= no + +. if ${_FEATURE_NEED_NBCOMPAT} == "yes" +. include "${PKGSRCDIR}/pkgtools/libnbcompat/inplace.mk" +FEATURE_LIBS+= ${LDADD.nbcompat} +. endif + +.endif # MISSING_FEATURES -- cgit v1.2.3