This revision attempts to use `pkg-config` for all (but fourthree) of our dependencies that support it.
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... ๐ )
Requires D3610, D3630.
----
The four dependencies that are not using `pkg-config` in this revision, although they support it:
* `tinygettext` and `valgrind`:
- These are currently bundled and we never use system-provided packages
- `tinygettext` is available on very few systems - https://repology.org/badge/vertical-allrepos/tinygettext.svg
- `valgrind` could perhaps be unbundled (requires research) - https://repology.org/badge/vertical-allrepos/valgrind.svg
* `fmt`:
- Requires `fmt 5.3.0` (or better) to be more widespread
* https://repology.org/badge/vertical-allrepos/fmt.svg?minversion=5.3
- `5.3.0` is the earliest that `pkg-config` is supported
* `miniupnpc`:
- Requires `miniupnpc 2.2.1` (or better)
- Whilst `miniupnpc` has supported `pkg-config` for a while, they have a breaking change in `2.2.1` in the output of `pkg-config --cflags miniupnpc`
* (`/usr/include/miniupnpc` -> `/usr/include`)
- We actually //want// the newer output (it means we don't have to change our `<miniupnpc/{...}.h>` includes to `<{...}.h>`), however `2.2.1` has barely hit package repositories yet.
* https://repology.org/badge/vertical-allrepos/miniupnpc.svg?minversion=2.2.1
----
Our dependencies; whether they support `pkg-config`; and whether we currently actually use that support.
(Entries with `Used` == `no*` have been given support in this revision) (and the change if applicable).
| Dependency | Supported | Used | Notes |
|-----------------------|-----------|-------|--------------------------------------------------------------------------------- | Notes |
| `boost` | no | - | -----------------------|-----------|------------|---------------------------------------------------------------------------------|
| `comsuppw`| `boost` | N/Ano | - | windows dependency only |
| `cxxtest` omsuppw` | no N/A | - | bundled (libraries/source)windows dependency only |
| `encryption`| `cxxtest` | no | - | bundled (source/third_party)libraries/source) |
| `enet` cryption` | yesno | no* |- | bundled (source/third_party) |
| `fcollada`| `enet` | noyes | - | no -> yes | bundled (libraries/source) |
| `fmtcollada` | see note | no| no | - | req. `fmt 5.3.0` bundled (libraries/source) |
| `gloox`| `fmt` | yes | yes see note | no -> osx | req. `fmt 5.3.0` |
| `gmp` loox` | yes | libsyes | dep. of `gnutls`, only handled on osx |
| `gnutls`mp` | yes | no -> libs | only handled on osx | dep. of `gnutls`; only needed on osx |
| `iconv` | `gnutls` | noyes | - | windows/osx| no -> libs | dep. of `gloox`; only needed on osx |
| `jsonspirit`| `iconv` | no | - | bundled (source/third_party), https://repology.org/project/json-spirit/versions |windows/osx only |
| `icu` | `jsonspirit` | yesno | yes |- || bundled (source/third_party); https://repology.org/project/json-spirit/versions |
| `libcurl`| `icu` | yes | no*yes | |
| `libogg` curl` | yes | no* -> yes | |
| `libpnogg` | yes | D3610no -> yes | |
| `libsodium`png` | yes | no*D3610 | |
| `libxml` sodium` | yes | no -> yes | |
| `mikktspace`| `libxml` | noyes | -| yes | bundled (source/third_party), https://github.com/mmikk/MikkTSpace |
| `miniupnpckktspace` | yes| no | no| - | breaking change to `--cflags` in `v2.2.1` undled (source/third_party); https://github.com/mmikk/MikkTSpace |
| `mongoose` iniupnpc` | no yes | - | bundled (source/third_party), https://github.com/cesanta/mongooseno -> yes | see comment in `extern-libs.sh` |
| `nettl| `mongoose` | yes| no | libs| - | dep. of `gnutls`,bundled (source/third_party); only handled on osx, also provides `hogweed` libhttps://github.com/cesanta/mongoose |
| `nvtt` ettle` | noyes | - | bundled (libraries/source),| no -> libs | dep. of `gnutls`; only needed on osx; optionally use system also provides `hogweed` lib |
| `ogre3d_preprocessor`| `nvtt` | no | - | bundled (source/third_party),libraries/source); OGRE itself does support `pkgconfig`optionally use system |
| `openal` | yesgre3d_preprocessor` | no | no* |- | bundled (source/third_party); OGRE itself does support `pkgconfig` |
| `opengal` | yes | no* -> yes | |
| `sdl2` | `opengl` | yes | no -> yes | |
| `spidermonkey`dl2` | yes | yes | bundled (libraries/source), optionally use system |
| `tinygettext` | `spidermonkey` | yes | noyes | bundled (source/third_party) libraries/source); optionally use system |
| `valgrind` | `tinygettext` | yes | no | bundled (libraries/source), `--cflags` result questionablesource/third_party) |
| `vorbis` algrind` | yes | no* | | bundled (libraries/source); `--cflags` result questionable |
| `wxwidgets`| `vorbis` | noyes | - | no -> yes | using `wx-config` instead |
| `x11` | `wxwidgets` | yesno | yes |- | using `wx-config` instead |
| `zlib`| `x11` | noyes | -| yes | |
| `zlib` | yes | no -> yes | |