Open micolous opened 1 year ago
@alexcrichton Any feedback on this? This is currently the last PR blocking https://github.com/mcgoo/vcpkg-rs/pull/52, because curl-rust
is in its CI configuration.
Sorry for the delay, but I'm not confident myself signing off on this just yet. I would need to investigate the relevant packages and pieces involved here to ensure that everything works as I'd expect and I don't see any issues with this integration. I don't have the time to do this right now, though. @sagebind do you have thoughts on this though?
This change addresses two issues building for Windows:
Allow using
vcpkg
on any Windows build, not just MSVC.vcpkg-rs
includescurl-sys
as part of its integration tests, butcurl-sys
includes extra guards which block its use with non-MSVC targets. While it doesn't support-pc-windows-gnu
(mingw) yet, its integration tests will try to buildcurl-sys
, so these guards are a problem.That part of the change should have no effect for
*-pc-windows-gnu
, and should still fall back to existing options.Using
vcpkg
with the GNU toolchain is particularly useful for cross-compiling Windows binaries on non-Windows platforms where MSYS' version ofpacman
is not available. Technically you could also usevcpkg
to provide non-Windows platforms' libraries, but I haven't gone that far as yet.Try to use
vcpkg::find_package
forlibcurl
and its dependencies, rather than trying to guess which features it was built with.Those guesses are currently wrong on
-pc-windows-gnu
, as they assume MSVC-style library naming (sozlib
is broken); but I've left these alone for now to reduce risk.Those guesses also result in spurious additional linkages on
-pc-windows-msvc
: for example, ifcurl
was not built withlibssh
oropenssl
support, butlibssh
oropenssl
was installed on the build machine, it would result in a useless extra linkage.While here, I've disabled
fail_fast
in the CI configuration, as a single-platform flake cancels tests on slower platforms (eg: MSVC).