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... ๐ )
Requires D3610, D3630.
----
There are two dependencies that are not using `pkg-config` in this revision entirely, although they support it, a further two where support is only used on certain systems, and a fifth that is only used in certain conditions.
* `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`:
- Now use pkg-config on OSX
- 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`:
- Now use pkg-config on OSX
- 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
* https://repology.org/badge/vertical-allrepos/miniupnpc.svg?minversion=2.1
- 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//
* https://repology.org/badge/vertical-allrepos/miniupnpc.svg?minversion=2.2.1
* `spidermonkey`:
- Uses `pkg-config` if `--with-system-mozjs` is passed to `update-workspaces.sh`
----
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 | no | bundled (libraries/source); `--cflags` result questionable |
| `vorbis` | yes | no -> yes | |
| `wxwidgets` | no | - | using `wx-config` instead |
| `x11` | yes | yes | |
| `zlib` | yes | no -> yes | |