From db24a4e800810df62aa827722a22a8af4d1708ef Mon Sep 17 00:00:00 2001 From: dillo Date: Sun, 8 May 2005 13:43:30 +0000 Subject: Rewrite how PKG_OPTIONS is computed: - PKG_SUGGESTED_OPTIONS (set by pkg maintainer in pkg Makefile) lists options enabled by default. - PKG_DEFAULT_OPTIONS (set by user in /etc/mk.conf) enables or disables (when prefixed with `-') options for all packages, takes precedence over PKG_SUGGESTED_OPTIONS - PKG_OPTIONS.foo (set by user in /etc/mk.conf) enables or disables (when prefixed with `-') options for a specific package, takes precedence over PKG_DEFAULT_OPTIONS and PKG_SUGGESTED_OPTIONS Also simplify conversion of legacy USE_XXX variables to options via the new PKG_OPTIONS_LEGACY_VARS variable and emit warnings if legacy variables are in use. Add a new target describe-options that lists all supported options with a one-line description, the options enabled by default and the currently enabled optoions. Reviewed by jlam and wiz. XXX: defaults/options.description has to be filled in XXX: the pkgsrc guide has to be updated --- mk/bsd.options.mk | 209 ++++++++++++++++------------------ mk/defaults/mk.conf | 10 +- mk/defaults/obsolete.mk | 98 ++++++---------- mk/defaults/options.description | 242 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 375 insertions(+), 184 deletions(-) create mode 100644 mk/defaults/options.description diff --git a/mk/bsd.options.mk b/mk/bsd.options.mk index 130864e9b50..a1325ce65c6 100644 --- a/mk/bsd.options.mk +++ b/mk/bsd.options.mk @@ -1,54 +1,42 @@ -# $NetBSD: bsd.options.mk,v 1.19 2005/04/28 21:58:44 jlam Exp $ +# $NetBSD: bsd.options.mk,v 1.20 2005/05/08 13:43:30 dillo Exp $ # # This Makefile fragment provides boilerplate code for standard naming # conventions for handling per-package build options. # -# Before including this file, the following variables should be defined: +# Before including this file, the following variables can be defined: # -# PKG_OPTIONS_VAR -# This is a list of the name of the make(1) variables that -# contain the options the user wishes to select. This -# variable should be set in a package Makefile. E.g., -# -# PKG_OPTIONS_VAR= WIBBLE_OPTIONS -# or -# PKG_OPTIONS_VAR= FOO_OPTIONS BAR_OPTIONS -# -# PKG_SUPPORTED_OPTIONS +# PKG_SUPPORTED_OPTIONS (must be defined) # This is a list of build options supported by the package. # This variable should be set in a package Makefile. E.g., # # PKG_SUPPORTED_OPTIONS= kerberos ldap ssl # -# Optionally, the following variables may also be defined: +# PKG_OPTION_VAR (must be defined) +# The variable the user can set to enable or disable +# options specifically for this package. +# +# PKG_SUGGESTED_OPTIONS (defaults to empty) +# This is a list of build options which are enabled by default. +# +# PKG_OPTION_LEGACY_VARS +# This is a list of USE_VARIABLE:option pairs that +# map legacy /etc/mk.conf variables to their option +# counterparts. +# +# +# Optionally, the user may define the following variables in /etc/mk.conf: # # PKG_DEFAULT_OPTIONS -# This is a list the options that should be built into -# every package, if that option is supported. This -# variable should be set in /etc/mk.conf. -# -# ${PKG_OPTIONS_VAR} (the variables named in PKG_OPTIONS_VAR) -# These variables list the selected build options and -# override any default options given in PKG_DEFAULT_OPTIONS. -# If any of the options begin with a '-', then that option -# is always removed from the selected build options, e.g. -# -# PKG_DEFAULT_OPTIONS= kerberos ldap sasl -# PKG_OPTIONS_VAR= WIBBLE_OPTIONS -# WIBBLE_OPTIONS= ${PKG_DEFAULT_OPTIONS} -sasl -# # implies PKG_OPTIONS == "kerberos ldap" -# or -# PKG_OPTIONS_VAR= WIBBLE_OPTIONS -# WIBBLE_OPTIONS= kerberos -ldap ldap -# # implies PKG_OPTIONS == "kerberos" -# -# This variable should be set in /etc/mk.conf. -# -# PKG_FAIL_UNSUPPORTED_OPTIONS -# If this is set to "yes", then the presence of unsupported -# options in PKG_OPTIONS. (see below) causes the build -# to fail. Set this to "no" to silently ignore unsupported -# options. Default: "no". +# This variable can be used to override default +# options for every package. Options listed in this +# variable will be enabled in every package that +# supports them. If you prefix an option with `-', +# it will be disabled in every package. +# +# ${PKG_OPTIONS_VAR} +# This variable can be used to override default +# options and options listed in PKG_DEFAULT_OPTIONS. +# The syntax is the same as PKG_DEFAULT_OPTIONS. # # After including this file, the following variables are defined: # @@ -59,26 +47,22 @@ # Example usage: # # -------------8<-------------8<-------------8<-------------8<------------- -# # Global and legacy options -# .if defined(WIBBLE_USE_OPENLDAP) && !empty(WIBBLE_USE_OPENLDAP:M[yY][eE][sS]) -# PKG_DEFAULT_OPTIONS+= ldap -# .endif -# .if defined(WIBBLE_USE_SASL2) && !empty(WIBBLE_USE_SASL2:M[yY][eE][sS]) -# PKG_DEFAULT_OPTIONS+= sasl -# .endif +# PKG_SUPPORTED_OPTIONS= foo ldap sasl +# PKG_SUGGESTED_OPTIONS= foo +# PKG_OPTIONS_LEGACY_VARS+= WIBBLE_USE_OPENLDAP:ldap +# PKG_OPTIONS_LEGACY_VARS+= WIBBLE_USE_SASL2:sasl # -# PKG_OPTIONS_VAR= PKG_OPTIONS.wibble -# PKG_SUPPORTED_OPTIONS= ldap sasl -# # -# # Default options for ``wibble'' package. -# # -# .if !defined(PKG_OPTIONS.wibble) -# PKG_DEFAULT_OPTIONS+= sasl -# .endif # .include "../../mk/bsd.options.mk" # # # Package-specific option-handling # +# ### +# ### FOO support +# ### +# .if !empty(PKG_OPTIONS:Mfoo) +# CONFIGURE_ARGS+= --enable-foo +# .endif + # ### # ### LDAP support # ### @@ -106,59 +90,48 @@ PKG_FAIL_REASON+= "bsd.options.mk: PKG_SUPPORTED_OPTIONS is not defined." PKG_FAIL_REASON+= "bsd.options.mk: PKG_OPTIONS_VAR is not defined." .endif -# If none of the variables listed in PKG_OPTIONS_VAR is defined, then use -# the global options provided in ${PKG_DEFAULT_OPTIONS}. -# -_PKG_DEFAULT_OPTIONS= # empty -.for _opt_ in ${PKG_DEFAULT_OPTIONS} -. if !empty(PKG_SUPPORTED_OPTIONS:M${_opt_}) -_PKG_DEFAULT_OPTIONS+= ${_opt_} -. endif -.endfor -.undef _opt_ -_PKG_OPTIONS_VAR= # empty -.for _var_ in ${PKG_OPTIONS_VAR} -. if defined(${_var_}) -_PKG_OPTIONS_VAR+= ${_var_} -. endif -.endfor -.undef _var_ -.if empty(_PKG_OPTIONS_VAR) -_PKG_OPTIONS_VAR= _PKG_DEFAULT_OPTIONS +# include deprecated variable to options mapping +.if exists(${.CURDIR}/mk/defaults/obsolete.mk) +. include "${.CURDIR}/mk/defaults/obsolete.mk" +.elif exists(${.CURDIR}/../mk/defaults/obsolete.mk) +. include "${.CURDIR}/../mk/defaults/obsolete.mk" +.elif exists(${.CURDIR}/../../mk/defaults/obsolete.mk) +. include "${.CURDIR}/../../mk/defaults/obsolete.mk" .endif -# If this is set to "yes", then the presence of unsupported options in -# the variable named by ${PKG_OPTIONS_VAR} causes the build to fail. Set -# this to "no" to silently ignore unsupported options. -# -PKG_FAIL_UNSUPPORTED_OPTIONS?= no - -# Separate out the selected options into "positive" and "negative" lists. -_PKG_YES_OPTIONS= # contains the "positive" options -.for _var_ in ${_PKG_OPTIONS_VAR} -_PKG_YES_OPTIONS+= ${${_var_}:N-*} +.for _m_ in ${PKG_OPTIONS_LEGACY_VARS} +.if !empty(PKG_SUPPORTED_OPTIONS:M${_m_:C/.*://}) && defined(${_m_:C/:.*//}) && !empty(${_m_:C/:.*//}:M[yY][eE][sS]) +_PKG_LEGACY_OPTIONS+=${_m_:C/.*://} +_DEPRECATED_WARNING+="Deprecated variable "${_m_:C/:.*//:Q}" used, use PKG_DEFAULT_OPTIONS+="${_m_:C/.*://:Q}" instead." +.endif .endfor -_PKG_NO_OPTIONS= # contains the "negative" options -.for _var_ in ${_PKG_OPTIONS_VAR} -_PKG_NO_OPTIONS+= ${${_var_}:M-*:S/^-//} + +# +# reverse options in PKG_OPTIONS_VAR for backwards compatibility to +# PKG_OPTIONS.foo=${PKG_DEFAULT_OPTIONS} -foo +# +_PKG_OPTIONS_USER=#empty +.for _opt_ in ${${PKG_OPTIONS_VAR}} +_PKG_OPTIONS_USER:=${_opt_} ${_PKG_OPTIONS_USER} .endfor -.undef _var_ -# Filter out unsupported and duplicate build options and store the result -# in PKG_OPTIONS. We keep all of the "positive" options first, then remove -# all of the "negative" options last, so "negative" options always have -# the strongest effect. -# -PKG_OPTIONS= # empty -.for _opt_ in ${_PKG_YES_OPTIONS} -. if empty(_PKG_NO_OPTIONS:M${_opt_}) && empty(PKG_OPTIONS:M${_opt_}) -. if !empty(PKG_SUPPORTED_OPTIONS:M${_opt_}) -PKG_OPTIONS+= ${_opt_} -. elif !empty(PKG_FAIL_UNSUPPORTED_OPTIONS:M[yY][eE][sS]) -PKG_FAIL_REASON+= "\"${_opt_}\" is not a supported build option." -. endif +# +# process options from specific to generic +# +PKG_OPTIONS=#empty +_PKG_OPTIONS_NOT=#empty +.for _opt_ in ${_PKG_OPTIONS_USER} ${PKG_DEFAULT_OPTIONS} ${_PKG_LEGACY_OPTIONS} ${PKG_SUGGESTED_OPTIONS} +_tmp_=${_opt_} +. if !empty(_tmp_:M-*) && empty(_PKG_OPTIONS_NOT:M${_opt_}) +_PKG_OPTIONS_NOT+=${_opt_} +. elif empty(PKG_OPTIONS:M${_opt_}) && !empty(PKG_SUPPORTED_OPTIONS:M${_opt_}) && empty(_PKG_OPTIONS_NOT:M-${_opt_}) +PKG_OPTIONS+=${_opt_} . endif .endfor +.undef _opt_ +.undef _tmp_ +.undef _PKG_OPTIONS_NOT +.undef _PKG_OPTIONS_USER _PKG_OPTIONS_WORDWRAP_FILTER= \ ${AWK} ' \ @@ -176,10 +149,20 @@ _PKG_OPTIONS_WORDWRAP_FILTER= \ END { if (length(line) > 0) print " "line } \ ' +.PHONY: describe-options +describe-options: + @${ECHO} The following options are supported by this package: +.for _opt_ in ${PKG_SUPPORTED_OPTIONS:O} + @${ECHO} " "${_opt_:Q}" "`${SED} -n "s/^"${_opt_:Q}" //p" ../../mk/defaults/options.description` +.endfor + @${ECHO} + @${ECHO} "These options are enabled by default: "${PKG_SUGGESTED_OPTIONS:O:Q} + @${ECHO} "These options are currently enabled: "${PKG_OPTIONS:O:Q} + .PHONY: show-options show-options: @${ECHO} "available: "${PKG_SUPPORTED_OPTIONS:O:Q} - @${ECHO} "default: "${PKG_DEFAULT_OPTIONS:O:Q} + @${ECHO} "default: "${PKG_SUGGESTED_OPTIONS:O:Q} @${ECHO} "enabled: "${PKG_OPTIONS:O:Q} .if defined(PKG_SUPPORTED_OPTIONS) @@ -198,17 +181,21 @@ supported-options-message: @${ECHO} ${PKG_OPTIONS:O:Q} | ${XARGS} -n 1 | ${_PKG_OPTIONS_WORDWRAP_FILTER} . endif @${ECHO} "" - @${ECHO} "You can select which build options to use by setting the following" - @${ECHO} "variables. Their current value is shown:" + @${ECHO} "You can select which build options to use by setting PKG_DEFAULT_OPTIONS" + @${ECHO} "or the following variable. Its current value is shown:" @${ECHO} "" -. for _var_ in ${PKG_OPTIONS_VAR} -. if !defined(${_var_}) - @${ECHO} " ${_var_} (not defined)" -. else - @${ECHO} " ${_var_} = ${${_var_}}" -. endif -. endfor -. undef _var_ +. if !defined(${PKG_OPTIONS_VAR}) + @${ECHO} " ${PKG_OPTIONS_VAR} (not defined)" +. else + @${ECHO} " ${PKG_OPTIONS_VAR} = ${${PKG_OPTIONS_VAR}}" +. endif +. if defined(_DEPRECATED_WARNING) + @${ECHO} + @for l in ${_DEPRECATED_WARNING}; \ + do \ + ${ECHO} "$$l"; \ + done +. endif @${ECHO} "" @${ECHO} "==========================================================================" . endif diff --git a/mk/defaults/mk.conf b/mk/defaults/mk.conf index 9ed369eedc9..4ab984de23c 100644 --- a/mk/defaults/mk.conf +++ b/mk/defaults/mk.conf @@ -1,4 +1,4 @@ -# $NetBSD: mk.conf,v 1.39 2005/05/07 22:17:00 wiz Exp $ +# $NetBSD: mk.conf,v 1.40 2005/05/08 13:43:30 dillo Exp $ # # A file providing defaults for pkgsrc and the packages collection. @@ -2443,11 +2443,3 @@ XEN12_USE_COM2?= NO # ftp://ftp2.fr.NetBSD.org/pub/NetBSD/packages/distfiles/ #MASTER_SITE_LOCAL= \ # ftp://ftp.fr.NetBSD.org/pub/NetBSD/packages/distfiles/LOCAL_PORTS/ - -.if exists(${.CURDIR}/mk/defaults/obsolete.mk) -. include "${.CURDIR}/mk/defaults/obsolete.mk" -.elif exists(${.CURDIR}/../mk/defaults/obsolete.mk) -. include "${.CURDIR}/../mk/defaults/obsolete.mk" -.elif exists(${.CURDIR}/../../mk/defaults/obsolete.mk) -. include "${.CURDIR}/../../mk/defaults/obsolete.mk" -.endif diff --git a/mk/defaults/obsolete.mk b/mk/defaults/obsolete.mk index f0e561be359..0141e0bd17c 100644 --- a/mk/defaults/obsolete.mk +++ b/mk/defaults/obsolete.mk @@ -1,4 +1,4 @@ -# $NetBSD: obsolete.mk,v 1.5 2005/03/28 09:39:57 jlam Exp $ +# $NetBSD: obsolete.mk,v 1.6 2005/05/08 13:43:31 dillo Exp $ # # This file holds make(1) logic to allow obsolete or deprecated variables # still to be used. These may eventually disappear over time as the contents @@ -9,73 +9,43 @@ PKG_SYSCONFDIR.priv?= ${PRIV_CONF_DIR} .endif ### -### Set PKG_DEFAULT_OPTIONS based on to-be-deprecated global variables. +### Set _PKG_LEGACY_OPTIONS based on to-be-deprecated global variables. ### + .if defined(KERBEROS) -. if ${KERBEROS} == "4" -PKG_DEFAULT_OPTIONS+= kerberos4 -. else -PKG_DEFAULT_OPTIONS+= kerberos +. if ${KERBEROS} == "4" && !empty(PKG_SUPPORTED_OPTIONS:Mkerberos4) +_PKG_LEGACY_OPTIONS+= kerberos4 +_DEPRECATED_WARNING+="Deprecated variable KERBEROS used, use PKG_DEFAULT_OPTIONS+=kerberos4 instead." +. elif !empty(PKG_SUPPORTED_OPTIONS:Mkerberos) +_PKG_LEGACY_OPTIONS+= kerberos +_DEPRECATED_WARNING+="Deprecated variable KERBEROS used, use PKG_DEFAULT_OPTIONS+=kerberos instead." . endif .endif -.if defined(USE_CANNA) && !empty(USE_CANNA:M[yY][eE][sS]) -PKG_DEFAULT_OPTIONS+= canna -.endif -.if defined(USE_CUPS) && !empty(USE_CUPS:M[yY][eE][sS]) -PKG_DEFAULT_OPTIONS+= cups -.endif -.if defined(USE_DB4) && !empty(USE_DB4:M[yY][eE][sS]) -PKG_DEFAULT_OPTIONS+= db4 -.endif -.if defined(USE_ESOUND) && !empty(USE_ESOUND:M[yY][eE][sS]) -PKG_DEFAULT_OPTIONS+= esound -.endif -.if defined(USE_GIF) -PKG_DEFAULT_OPTIONS+= gif -.endif -.if defined(USE_I586) && !empty(USE_I586:M[yY][eE][sS]) -PKG_DEFAULT_OPTIONS+= i586 -.endif -.if defined(USE_IDEA) && !empty(USE_IDEA:M[yY][eE][sS]) -PKG_DEFAULT_OPTIONS+= idea -.endif -.if defined(USE_INN) && !empty(USE_INN:M[yY][eE][sS]) -PKG_DEFAULT_OPTIONS+= inn -.endif -.if defined(USE_LIBCRACK) && !empty(USE_LIBCRACK:M[yY][eE][sS]) -PKG_DEFAULT_OPTIONS+= libcrack -.endif -.if defined(USE_MMX) && !empty(USE_MMX:M[yY][eE][sS]) -PKG_DEFAULT_OPTIONS+= mmx -.endif -.if defined(USE_OPENLDAP) && !empty(USE_OPENLDAP:M[yY][eE][sS]) -PKG_DEFAULT_OPTIONS+= ldap -.endif -.if defined(USE_OSS) -PKG_DEFAULT_OPTIONS+= oss -.endif -.if defined(USE_RSAREF2) && !empty(USE_RSAREF2:M[yY][eE][sS]) -PKG_DEFAULT_OPTIONS+= rsaref -.endif -.if defined(USE_SASL) && !empty(USE_SASL:M[yY][eE][sS]) -PKG_DEFAULT_OPTIONS+= sasl -.endif -.if defined(USE_SASL2) && !empty(USE_SASL2:M[yY][eE][sS]) -PKG_DEFAULT_OPTIONS+= sasl -.endif -.if defined(USE_SJ3) && !empty(USE_SJ3:M[yY][eE][sS]) -PKG_DEFAULT_OPTIONS+= sj3 -.endif .if defined(USE_SOCKS) -. if ${USE_SOCKS} == "4" -PKG_DEFAULT_OPTIONS+= socks4 -. elif ${USE_SOCKS} == "5" -PKG_DEFAULT_OPTIONS+= socks5 +. if ${USE_SOCKS} == "4" && !empty(PKG_SUPPORTED_OPTIONS:Msocks4) +_PKG_LEGACY_OPTIONS+= socks4 +_DEPRECATED_WARNING+="Deprecated variable SOCKS used, use PKG_DEFAULT_OPTIONS+=socks4 instead." +. elif ${USE_SOCKS} == "5 && !empty(PKG_SUPPORTED_OPTIONS:Msocks5)" +_PKG_LEGACY_OPTIONS+= socks5 +_DEPRECATED_WARNING+="Deprecated variable SOCKS used, use PKG_DEFAULT_OPTIONS+=socks5 instead." . endif .endif -.if defined(USE_WNN4) && !empty(USE_WNN4:M[yY][eE][sS]) -PKG_DEFAULT_OPTIONS+= wnn4 -.endif -.if defined(USE_XFACE) && !empty(USE_XFACE:M[yY][eE][sS]) -PKG_DEFAULT_OPTIONS+= xface -.endif + +PKG_OPTIONS_LEGACY_VARS+= USE_CANNA:canna +PKG_OPTIONS_LEGACY_VARS+= USE_CUPS:cups +PKG_OPTIONS_LEGACY_VARS+= USE_DB4:db4 +PKG_OPTIONS_LEGACY_VARS+= USE_ESOUND:esound +PKG_OPTIONS_LEGACY_VARS+= USE_GIF:gif +PKG_OPTIONS_LEGACY_VARS+= USE_I586:i586 +PKG_OPTIONS_LEGACY_VARS+= USE_IDEA:idea +PKG_OPTIONS_LEGACY_VARS+= USE_INN:inn +PKG_OPTIONS_LEGACY_VARS+= USE_LIBCRACK:libcrack +PKG_OPTIONS_LEGACY_VARS+= USE_MMX:mmx +PKG_OPTIONS_LEGACY_VARS+= USE_OPENLDAP:ldap +PKG_OPTIONS_LEGACY_VARS+= USE_OSS:oss +PKG_OPTIONS_LEGACY_VARS+= USE_RSAREF2:rsaref +PKG_OPTIONS_LEGACY_VARS+= USE_SASL:sasl +PKG_OPTIONS_LEGACY_VARS+= USE_SASL2:sasl +PKG_OPTIONS_LEGACY_VARS+= USE_SJ3:sj3 +PKG_OPTIONS_LEGACY_VARS+= USE_WNN4:wnn4 +PKG_OPTIONS_LEGACY_VARS+= USE_XFACE:xface diff --git a/mk/defaults/options.description b/mk/defaults/options.description new file mode 100644 index 00000000000..f2bbd1b8a4c --- /dev/null +++ b/mk/defaults/options.description @@ -0,0 +1,242 @@ +2ch_dict +a52 +aac +ac3_passthrough +ads +alsa +althash +anthy +antialias +apm +apop +ark +arping1 +arping2 +arts +aspell +ati +audiofile +authlib +avifile +awl-sql-tests +backend-mysql +backend-pgsql +badrcptto +bayes-sql-tests +bdb +bigdns +bktr +bpf +buffy-size +canna +catalog-pgsql +catalog-sqlite +charset +charts +chips +chroot +cirrus +cups +curl +curses +cyrix +darwin +db +db2 +db4 +debug +domainscale +drac +dummy +dynamic +eb +edit +esound Enable support for Enlightment Sound Daemon. +faac +faad +fam +ffmpeg +flac +freetype +frontend-fastcgi +frontend-modperl1 +frontend-modperl2 +gd +gdbm +gdk-pixbuf +glib1 +glint +glpk +gnome +gnupg +gnuplot +gnutls +gpgsm +graphs +gsasl +gssapi +gstreamer +gtk +gtkfe +gucharmap +hdf5 +homedir +hpn-patch +hub +i128 +i586-optimized +i740 +i810 +iconv +id3 +idea +ifevents +ignoreip2 +imlib +imlib2 +imstt +inet6 +ipfilter +iptables +ipv6 +ispell +java +jpeg +jpilot +kde +kerberos +kerberos4 +kqueue +krb4 +krb5 +lame +largefile +largescale +ldap +ldap-compat +leaf +libcrack +libgcrypt +libnet10 +libnet11 +long-usernames +lookup +lua +lynxkey +lzw +m17n +m68060-optimized +mad +magick +mdc2 +metarefresh +mga +mhash +milter +mmx +modperl +multibyte +mysql +mysql4 +native +ncurses +neomagic +net-tests +netqmail +newport +nogui +nospoof +nsc +nullenvsender +nv +ogg +okinawa_dict +opengl Use OpenGL as display library. +openldap +openssl +outgoingip +pam +patchviewer +pcre +perf-tuning +perl +perl-taint-checks +perl-warnings +pf +pgsql +plplot +portals +postgresql +postgresql73 +postgresql74 +prefix-cmds +python +qregex +qt +quota +radius +rc5 +readline +realrcptto +recommended-db +remoteinc +rendition +rrdtool +s3 +s3virge +samba +sasl +savage +sdl Use SDL as display library. +siliconmotion +sis +skey +slang +slp +snmp +socketmap +socks +socks4 +socks5 +sqlite +ssl +starttls +static +subshell +suexec +svn +syncdir +tcpd +tcpwrappers +tdb +tdfx +tga +tinydns64 +tls +trident +truetype +tseng +unicode +unrealircd +vesa +vflib +vfs +vga +via +virtualchroot +viruscan +vmware +vorbis +vpop +wrap +wx +x11 +xface +xft +xft2 +xmlimportbugs +xmms-eq +xvid +zaptel +zip +ziplinks -- cgit v1.2.3