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}" .endif
The 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>.