This section describes the status of the wxWidgets libraries in the ports tree and its integration with the ports system.
There are many versions of the wxWidgets libraries which conflict between them (install files under the same name). In the ports tree this problem has been solved by installing each version under a different name using version number suffixes.
The obvious disadvantage of this is that each
	application has to be modified to find the expected version.
	Fortunately, most of the applications call the
	wx-config script to determine the
	necessary compiler and linker flags.  The script is named
	differently for every available version.  Majority of
	applications respect an environment variable, or accept a
	configure argument, to specify which
	wx-config script to call.  Otherwise they
	have to be patched.
To make the port use a specific version of wxWidgets there are two variables available for defining (if only one is defined the other will be set to a default value):
| Variable | Description | Default value | 
|---|---|---|
USE_WX | List of versions the port can use | All available versions | 
USE_WX_NOT | List of versions the port cannot use | None | 
The available wxWidgets versions and the corresponding ports in the tree are:
The variables in Table 6.30, “Variables to Select wxWidgets Versions” can be set to one or more of these combinations separated by spaces:
| Description | Example | 
|---|---|
| Single version | 2.8 | 
| Ascending range | 2.8+ | 
| Descending range | 3.0- | 
| Full range (must be ascending) | 2.8-3.0 | 
There are also some variables to select the preferred versions from the available ones. They can be set to a list of versions, the first ones will have higher priority.
| Name | Designed for | 
|---|---|
WANT_WX_VER | the port | 
WITH_WX_VER | the user | 
There are other applications that, while not being
	wxWidgets libraries, are related
	to them.  These applications can be specified in
	WX_COMPS.  These
	components are available:
| Name | Description | Version restriction | 
|---|---|---|
wx | main library | none | 
contrib | contributed libraries | none | 
python | wxPython (Python bindings) | 2.8-3.0 | 
The dependency type can be selected for each component by adding a suffix separated by a semicolon. If not present then a default type will be used (see Table 6.36, “Default wxWidgets Dependency Types”). These types are available:
| Name | Description | 
|---|---|
build | Component is required for building, equivalent
		to BUILD_DEPENDS | 
run | Component is required for running, equivalent
		to RUN_DEPENDS | 
lib | Component is required for building and running,
		equivalent to LIB_DEPENDS | 
The default values for the components are detailed in this table:
| Component | Dependency type | 
|---|---|
wx | lib | 
contrib | lib | 
python | run | 
mozilla | lib | 
svg | lib | 
This fragment corresponds to a port which
	  uses wxWidgets version
	  2.4 and its contributed
	  libraries.
USE_WX= 2.8 WX_COMPS= wx contrib
To detect an installed version, define
	WANT_WX.  If it is not set to a
	specific version then the components will have a version
	suffix.  HAVE_WX will be
	filled after detection.
This fragment can be used in a port that uses wxWidgets if it is installed, or an option is selected.
WANT_WX= yes .include <bsd.port.pre.mk> .if defined(WITH_WX) || !empty(PORT_OPTIONS:MWX) || !empty(HAVE_WX:Mwx-2.8) USE_WX= 2.8 CONFIGURE_ARGS+= --enable-wx .endif
This fragment can be used in a port that
	  enables wxPython support if it
	  is installed or if an option is selected, in addition to
	  wxWidgets, both version
	  2.8.
USE_WX= 2.8 WX_COMPS= wx WANT_WX= 2.8 .include <bsd.port.pre.mk> .if defined(WITH_WXPYTHON) || !empty(PORT_OPTIONS:MWXPYTHON) || !empty(HAVE_WX:Mpython) WX_COMPS+= python CONFIGURE_ARGS+= --enable-wxpython .endif
These variables are available in the port (after defining one from Table 6.30, “Variables to Select wxWidgets Versions”).
| Name | Description | 
|---|---|
WX_CONFIG | The path to the
		wxWidgets
		wx-config script (with different
		name) | 
WXRC_CMD | The path to the
		wxWidgets
		wxrc program (with different
		name) | 
WX_VERSION | The wxWidgets
		version that is going to be used (for example,
		2.6) | 
Define WX_PREMK to be able to use the
	variables right after including
	bsd.port.pre.mk.
When defining WX_PREMK, then the
	  version, dependencies, components and defined variables
	  will not change if modifying the
	  wxWidgets port variables
	  after including
	  bsd.port.pre.mk.
This fragment illustrates the use of
	  WX_PREMK by running the
	  wx-config script to obtain the full
	  version string, assign it to a variable and pass it to the
	  program.
USE_WX=		2.8
WX_PREMK=	yes
.include <bsd.port.pre.mk>
.if exists(${WX_CONFIG})
VER_STR!=	${WX_CONFIG} --release
PLIST_SUB+=	VERSION="${VER_STR}"
.endifThe wxWidgets variables can
	  be safely used in commands when they are inside targets
	  without the need of WX_PREMK.
Some GNU configure scripts cannot
	find wxWidgets with just the
	WX_CONFIG environment variable set,
	requiring additional arguments.
	WX_CONF_ARGS can be used for
	provide them.
WX_CONF_ARGS| Possible value | Resulting argument | 
|---|---|
absolute | --with-wx-config=${WX_CONFIG} | 
relative | --with-wx=${LOCALBASE}
		  --with-wx-config=${WX_CONFIG:T} | 
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
    documentation may be
    sent to <freebsd-questions@FreeBSD.org>.
    Send questions about this document to <freebsd-doc@FreeBSD.org>.