diff options
author | jlam <jlam> | 2007-09-07 21:55:44 +0000 |
---|---|---|
committer | jlam <jlam> | 2007-09-07 21:55:44 +0000 |
commit | e171b3e72c0ce464b861171360ced4827f067d10 (patch) | |
tree | ff0c089399e086cc93978efdca1b4228d64d1465 | |
parent | 88064aaf4d9ccb63d9f73d078893ec38e9ce1223 (diff) | |
download | pkgsrc-e171b3e72c0ce464b861171360ced4827f067d10.tar.gz |
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.
-rw-r--r-- | mk/bsd.pkg.mk | 4 | ||||
-rw-r--r-- | mk/bsd.prefs.mk | 5 | ||||
-rw-r--r-- | mk/features/features-vars.mk | 82 | ||||
-rw-r--r-- | mk/features/features.mk | 50 |
4 files changed, 139 insertions, 2 deletions
diff --git a/mk/bsd.pkg.mk b/mk/bsd.pkg.mk index 1fd1e225450..6033993a66b 100644 --- a/mk/bsd.pkg.mk +++ b/mk/bsd.pkg.mk @@ -1,4 +1,4 @@ -# $NetBSD: bsd.pkg.mk,v 1.1923 2007/09/07 15:51:53 rillig Exp $ +# $NetBSD: bsd.pkg.mk,v 1.1924 2007/09/07 21:55:44 jlam Exp $ # # This file is in the public domain. # @@ -25,6 +25,8 @@ . include "${.PARSEDIR}/emulator/emulator.mk" .endif +.include "${.PARSEDIR}/features/features.mk" + .include "${.PARSEDIR}/flavor/bsd.flavor-vars.mk" .include "${.PARSEDIR}/check/bsd.check-vars.mk" .include "${.PARSEDIR}/depends/bsd.depends-vars.mk" diff --git a/mk/bsd.prefs.mk b/mk/bsd.prefs.mk index 0c3a0201343..714e6c72c22 100644 --- a/mk/bsd.prefs.mk +++ b/mk/bsd.prefs.mk @@ -1,4 +1,4 @@ -# $NetBSD: bsd.prefs.mk,v 1.265 2007/08/17 20:27:30 joerg Exp $ +# $NetBSD: bsd.prefs.mk,v 1.266 2007/09/07 21:55:44 jlam Exp $ # # This file includes the mk.conf file, which contains the user settings. # @@ -619,6 +619,9 @@ PREPEND_PATH+= ${LOCALBASE}/bin . include "${PKGSRCDIR}/mk/emulator/emulator-vars.mk" .endif +# System features framework +.include "${PKGSRCDIR}/mk/features/features-vars.mk" + # Package system flavor definitions .include "${PKGSRCDIR}/mk/flavor/bsd.flavor-vars.mk" 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 |