curl-rust
curl-rust copied to clipboard
Allow using vcpkg on any Windows target, and use find_package
This change addresses two issues building for Windows:
-
Allow using
vcpkgon any Windows build, not just MSVC.vcpkg-rsincludescurl-sysas part of its integration tests, butcurl-sysincludes 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
vcpkgwith the GNU toolchain is particularly useful for cross-compiling Windows binaries on non-Windows platforms where MSYS' version ofpacmanis not available. Technically you could also usevcpkgto provide non-Windows platforms' libraries, but I haven't gone that far as yet. -
Try to use
vcpkg::find_packageforlibcurland 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 (sozlibis 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, ifcurlwas not built withlibsshoropensslsupport, butlibsshoropensslwas 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).
@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?