You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It looks like it's basically not possible for MSVC to pick up nghttp2 otherwise
because that detection requires `pkg-config`. I'm sort of personally real tired
of dealing with build systems, so instead use the `cc` crate to do everything.
This commit switches builds from source to always use the `cc` crate and we
manually list all the relevant `#define` directives as well as the list of files
that we're interested in. This is likely not reproducing exactly what libcurl
requires 100%, but it's providing a lot of other benefits:
* This build strategy truly will be cross platform modulo us fixing bugs. We can
now actually get dependency detection and such working across all platforms as
we don't rely on external tools.
* We can now use the vanilla upstream `curl` submodule because there's no need
to generate a configure script.
* The `curl` CLI tool is no longer built, we never needed it anyway!
* We have much more precise control about what's happening in that we can
precisely and programmatically know what's activated in the build.
Downsides of this approach include:
* Updates of the `curl` submodule are likely going to be harder as we need to
make sure all the right files are built and they're built with the right
`#define`s. This is expected to be a very low cost over time compared to the
headache dealing with cross-platform builds right now.
* We likely aren't building `curl` in the exact same way, for example some
`#define` might be required to make curl "go fast" on newer platforms, but we
may forget to pass it until much later. This is again, however, seen as not
much of a problem compared to the current headache trying to build curl in a
cross-platform manner that hooks up all the dependencies correctly.
0 commit comments