This revision attempts to use pkg-config for as many of our dependencies as feasibility permits.
It also attempts to use pkg-config for the osx dependencies acquired and built by the build-osx-libs.sh script.
This is intended as an experiment to see how far we can take this pkg-config thing, (and to see if we even want to).
(It's also a test to see how badly this fails on the CI... 😝 )
(With this revision applied:)
- tinygettext:
- Supports being found by pkg-config, however we don't use that support instead always using the bundled files.
- This is because tinygettext is available on very few systems - https://repology.org/badge/vertical-allrepos/tinygettext.svg
- fmt:
- Supports being found by pkg-config, but we only make use of this on macOS systems.
- Requires fmt 5.3.0 (or better) to be more widespread across Linux and BSD systems to be used there
- 5.3.0 is the earliest that pkg-config is supported
- https://repology.org/badge/vertical-allrepos/fmt.svg?minversion=5.3
- miniupnpc:
- Supports being found by pkg-config, but we only make use of this on macOS systems.
- Requires miniupnpc 2.1 (or better) to be more widespread across Linux and BSD systems to be able to use pkg-config to locate libraries
- Requires miniupnpc 2.2.1 (or better) to be more widespread across Linux and BSD systems to be able to use pkg-config to locate headers correctly
- spidermonkey:
- Supports being found by pkg-config, but we only make use of this when we're using the system-installed version (--with-system-mozjs is passed to update-workspaces.sh)
- D3941 is an attempt to use pkg-config with the bundled spidermonkey
Our dependencies; whether they support pkg-config; and whether we actually use that support (and the change if applicable).
Dependency | Supported | Used | Notes |
---|---|---|---|
boost | no | - | |
comsuppw | N/A | - | windows dependency only |
cxxtest | no | - | bundled (libraries/source) |
encryption | no | - | bundled (source/third_party) |
enet | yes | no -> yes | |
fcollada | no | - | bundled (libraries/source) |
fmt | see note | no -> osx | req. fmt 5.3.0 |
gloox | yes | yes | |
gmp | yes | no -> libs | dep. of gnutls; only needed on osx |
gnutls | yes | no -> libs | dep. of gloox; only needed on osx |
iconv | no | - | windows/osx only |
jsonspirit | no | - | bundled (source/third_party); https://repology.org/project/json-spirit/versions |
icu | yes | yes | |
libcurl | yes | no -> yes | |
libogg | yes | no -> yes | |
libpng | yes | D3610 | |
libsodium | yes | no -> yes | |
libxml | yes | yes | |
mikktspace | no | - | bundled (source/third_party); https://github.com/mmikk/MikkTSpace |
miniupnpc | yes | no -> osx | see comment in extern_libs.sh |
mongoose | no | - | bundled (source/third_party); https://github.com/cesanta/mongoose |
nettle | yes | no -> libs | dep. of gnutls; only needed on osx; also provides hogweed lib |
nvtt | no | - | bundled (libraries/source); optionally use system |
ogre3d_preprocessor | no | - | bundled (source/third_party); OGRE itself does support pkgconfig |
openal | yes | no -> yes | |
opengl | yes | no -> yes | |
sdl2 | yes | yes | |
spidermonkey | yes | sometimes | bundled (libraries/source); optionally use system; see above note |
tinygettext | yes | no | bundled (source/third_party) |
valgrind | yes | D3646 | |
vorbis | yes | no -> yes | |
wxwidgets | no | - | using wx-config instead |
x11 | yes | yes | |
zlib | yes | no -> yes | |