mingw: delete support for legacy mingw.org toolchain#11625
mingw: delete support for legacy mingw.org toolchain#11625vszakats wants to merge 15 commits intocurl:masterfrom
Conversation
|
I may have missed some bits, feel free to update, or report. Also, I'm uncertain if we announced this for 8.3.0 (released in September), or after 8.3.0. If the latter, feel free to flag it "next-feature-window". |
|
The checks for The predef details seems to suggest that's only set by v1? |
|
I think we have said we will remove this in September, so it misses the August feature window. |
|
Either way, good idea to check these. I'll review them. |
|
This |
139414a to
5bac934
Compare
|
note __MINGW64_VERSION_MAJOR is not a compiler predefine, it is defined by _mingw.h so if we have to evaluate it in the future then we'll need that include |
|
I'm aware. This patch deletes all uses of |
|
I just landed #10056 which has a legacy mingw workaround so when you rebase on master you'll want to remove these lines: |
1b7f309 to
b7a50f6
Compare
|
Thanks @jay, it's done now. |
|
I deleted a list of compatibility constants, that were not marked "old mingw"-specific in the source. Part of them had this information in the commit message of 3d3a3f9. With the rest I took a chance and assumed that if those constants were already defined by mingw-w64 1.0 (2011-09-26), they were also present in the official SDK released with supported MSVC versions (2010 and later). curl also seems to support Pelles C. I have no idea about what's available there and CI doesn't test it. AFAIR Pelles C used to have fairly decent Windows headers. Tried to download it but even binaries are only offered via cleartext HTTP and even that was a 404. The compiler feels abandoned. We can restore any necessary compatibility macro as we go. Also, there may be more compatibility macros that were added for old-mingw, but not marked as such. We might also exclude such updates from this PR if this feels risky. |
a00680b to
20940b1
Compare
20940b1 to
0f416a5
Compare
Drop support for "old" / "legacy" / "classic" MinGW or "mingw32": https://en.wikipedia.org/wiki/MinGW, https://osdn.net/projects/mingw/ Its homepage used to be http://mingw.org/ [no HTTPS], and broken now. It supported the x86 CPU only and used a old Windows API header and implib set, often causing issues. It also misses most modern Windows features, offering old versions of both binutils and gcc (no llvm/clang support). It was last updated 2 years ago. curl now relies on toolchains based on the mingw-w64 project: https://www.mingw-w64.org/ https://sourceforge.net/projects/mingw-w64/ https://www.msys2.org/ https://github.com/msys2/msys2 https://github.com/mstorsjo/llvm-mingw Also available via Linux and macOS package managers. Closes curl#11625
cegcc uses the headers from "old-mingw" and thus suffer from some of the same limitations. Restore some code deleted when dropping old-mingw. Adapt the rest to build with wince. Certificate verification always fails with cegcc due the limitations. Drop a pre-existing wince #error and let the build finish anyway. Ref: 3802910 curl#11625
cegcc uses the headers from "old-mingw" and thus suffer from some of the same limitations. Restore some code deleted when dropping old-mingw. Adapt the rest to build with wince. Certificate verification always fails with cegcc due the limitations. Drop a pre-existing wince #error and let the build finish anyway. Ref: 3802910 curl#11625
cegcc uses the headers from "old-mingw" and thus suffer from some of the same limitations. Restore some code deleted when dropping old-mingw. Adapt the rest to build with wince. Certificate verification always fails with cegcc due the limitations. Drop a pre-existing wince #error and let the build finish anyway. Ref: 3802910 curl#11625
cegcc uses the headers from "old-mingw" and thus suffer from some of the same limitations. Restore some code deleted when dropping old-mingw. Adapt the rest to build with wince. Certificate verification always fails with cegcc due the limitations. Drop a pre-existing wince #error and let the build finish anyway. Ref: 3802910 curl#11625
cegcc uses the headers from "old-mingw" and thus suffer from some of the same limitations. Restore some code deleted when dropping old-mingw. Adapt the rest to build with wince. Certificate verification always fails with cegcc due the limitations. Drop a pre-existing wince #error and let the build finish anyway. Ref: 3802910 curl#11625
cegcc uses the headers from "old-mingw" and thus suffer from some of the same limitations. Restore some code deleted when dropping old-mingw. Adapt the rest to build with wince. Certificate verification always fails with cegcc due the limitations. Drop a pre-existing wince #error and let the build finish anyway. Ref: 3802910 curl#11625
cegcc uses the headers from "old-mingw" and thus suffer from some of the same limitations. Restore some code deleted when dropping old-mingw. Adapt the rest to build with wince. Certificate verification always fails with cegcc due the limitations. Drop a pre-existing wince #error and let the build finish anyway. Ref: 3802910 curl#11625
cegcc uses the headers from "old-mingw" and thus suffer from some of the same limitations. Restore some code deleted when dropping old-mingw. Adapt the rest to build with wince. Certificate verification always fails with cegcc due the limitations. Drop a pre-existing wince #error and let the build finish anyway. Ref: 3802910 curl#11625
cegcc uses the headers from "old-mingw" and thus suffer from some of the same limitations. Restore some code deleted when dropping old-mingw. Adapt the rest to build with wince. Certificate verification always fails with cegcc due the limitations. Drop a pre-existing wince #error and let the build finish anyway. Ref: 3802910 curl#11625
cegcc uses the headers from "old-mingw" and thus suffer from some of the same limitations. Restore some code deleted when dropping old-mingw. Adapt the rest to build with wince. Certificate verification always fails with cegcc due the limitations. Drop a pre-existing wince #error and let the build finish anyway. Ref: 3802910 curl#11625
cegcc uses the headers from "old-mingw" and thus suffer from some of the same limitations. Restore some code deleted when dropping old-mingw. Adapt the rest to build with wince. Certificate verification always fails with cegcc due the limitations. Drop a pre-existing wince #error and let the build finish anyway. Ref: 3802910 curl#11625
cegcc uses the headers from "old-mingw" and thus suffer from some of the same limitations. Restore some code deleted when dropping old-mingw. Adapt the rest to build with wince. Certificate verification always fails with cegcc due the limitations. Drop a pre-existing wince #error and let the build finish anyway. Ref: 3802910 curl#11625
cegcc uses the headers from "old-mingw" and thus suffer from some of the same limitations. Restore some code deleted when dropping old-mingw. Adapt the rest to build with wince. Certificate verification always fails with cegcc due the limitations. Drop a pre-existing wince #error and let the build finish anyway. Ref: 3802910 curl#11625
cegcc uses the headers from "old-mingw" and thus suffer from some of the same limitations. Restore some code deleted when dropping old-mingw. Adapt the rest to build with wince. Certificate verification always fails with cegcc due the limitations. Drop a pre-existing wince #error and let the build finish anyway. Ref: 3802910 curl#11625
cegcc uses the headers from "old-mingw" and thus suffer from some of the same limitations. Restore some code deleted when dropping old-mingw. Adapt the rest to build with wince. Certificate verification always fails with cegcc due the limitations. Drop a pre-existing wince #error and let the build finish anyway. Ref: 3802910 curl#11625
cegcc uses the headers from "old-mingw" and thus suffer from some of the same limitations. Restore some code deleted when dropping old-mingw. Adapt the rest to build with wince. Certificate verification always fails with cegcc due the limitations. Drop a pre-existing wince #error and let the build finish anyway. Ref: 3802910 curl#11625
cegcc uses the headers from "old-mingw" and thus suffer from some of the same limitations. Restore some code deleted when dropping old-mingw. Adapt the rest to build with wince. Certificate verification always fails with cegcc due the limitations. Drop a pre-existing wince #error and let the build finish anyway. Ref: 3802910 curl#11625
cegcc uses the headers from "old-mingw" and thus suffer from some of the same limitations. Restore some code deleted when dropping old-mingw. Adapt the rest to build with wince. Certificate verification always fails with cegcc due the limitations. Drop a pre-existing wince #error and let the build finish anyway. Ref: 3802910 curl#11625
cegcc uses the headers from "old-mingw" and thus suffer from some of the same limitations. Restore some code deleted when dropping old-mingw. Adapt the rest to build with wince. Certificate verification always fails with cegcc due the limitations. Drop a pre-existing wince #error and let the build finish anyway. Ref: 3802910 curl#11625
cegcc uses the headers from "old-mingw" and thus suffer from some of the same limitations. Restore some code deleted when dropping old-mingw. Adapt the rest to build with wince. Certificate verification always fails with cegcc due the limitations. Drop a pre-existing wince #error and let the build finish anyway. Ref: 3802910 curl#11625
cegcc uses the headers from "old-mingw" and thus suffer from some of the same limitations. Restore some code deleted when dropping old-mingw. Adapt the rest to build with wince. Certificate verification always fails with cegcc due the limitations. Drop a pre-existing wince #error and let the build finish anyway. Ref: 3802910 curl#11625
cegcc uses the headers from "old-mingw" and thus suffer from some of the same limitations. Restore some code deleted when dropping old-mingw. Adapt the rest to build with wince. Certificate verification always fails with cegcc due the limitations. Drop a pre-existing wince #error and let the build finish anyway. Ref: 3802910 curl#11625
Follow-up to 3802910 curl#11625 Closes curl#15087
curl no longer supports old mingw. Follow-up to 3802910 curl#11625 Follow-up to 856b133 curl#9412
curl no longer supports old/legacy/classic mingw. This mitigation was addressing slow perf seen in CI with old mingw. The slow perf is not seen in current CI with supported compilers. Remove the duplicate DLL load function from libtest. It's no longer used after this patch. Current CI run times for test3026 on GHA/windows: ``` test 3026...[curl_global_init thread-safety] # mingw, CM clang-x86_64 gnutls libssh -------e--- OK (1715 out of 1738, remaining: 00:02, took 0.196s, duration: 02:55) # dl-mingw, CM 9.5.0-x86_64 schannel -------e--- OK (1554 out of 1577, remaining: 00:02, took 0.217s, duration: 02:29) # msvc, CM x64-windows schannel +examples -------e--- OK (1578 out of 1601, remaining: 00:02, took 0.205s, duration: 02:50) ``` Follow-up to 3802910 #11625 Follow-up to 856b133 #9412 Ref: #17413 Closes #17414
Replace `_beginthreadex()` C runtime calls with native win32 API `CreateThread()`. The latter was already used in `src/tool_doswin.c` and in UWP and Windows CE builds before this patch. After this patch all Windows flavors use it. To drop PP logic and simplify code. While working on this it turned out that `src/tool_doswin.c` calls `TerminateThread()`, which isn't recommended by the documentation, except for "the most extreme cases". This patch makes no attempt to change that code. Ref: 9a26633 #17572 Ref: https://learn.microsoft.com/windows/win32/api/processthreadsapi/nf-processthreadsapi-terminatethread Also: - use `WaitForSingleObjectEx()` on all desktop Windows. Ref: 4be80d5 Ref: https://sourceforge.net/p/curl/feature-requests/82/ Ref: https://learn.microsoft.com/windows/win32/api/synchapi/nf-synchapi-waitforsingleobjectex - tests: drop redundant casts. - lib3207: fix to not rely on thread macros when building without thread support. Assisted-by: Jay Satiro Assisted-by: Marcel Raad Assisted-by: Michał Petryka Follow-up to 3802910 #11625 Closes #18451
Drop support for "old" / "legacy" / "classic" / "v1" / "mingw32" MinGW:
https://en.wikipedia.org/wiki/MinGW, https://osdn.net/projects/mingw/
Its homepage used to be http://mingw.org/ [no HTTPS], and broken now.
It supported the x86 CPU only and used a old Windows API header and
implib set, often causing issues. It also misses most modern Windows
features, offering old versions of both binutils and gcc (no llvm/clang
support). It was last updated 2 years ago.
curl now relies on toolchains based on the mingw-w64 project:
https://www.mingw-w64.org/ https://sourceforge.net/projects/mingw-w64/
https://www.msys2.org/ https://github.com/msys2/msys2
https://github.com/mstorsjo/llvm-mingw
(Also available via Linux and macOS package managers.)
Closes #11625