-
-
Notifications
You must be signed in to change notification settings - Fork 6.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
msvc: require VS2005 for large file support #15958
Conversation
I have Visual C++ 6.0 and 7.1 installed in an XP VM but as far as I know they cannot build curl. We removed support for those versions some time ago I thought? Anyway I am not sure about the _fseeki64 declaration. I cannot find it in the DLLs used by those versions which is probably why it's not declared? It is in the static versions of the CRT though which is odd. For example in 7.1 I created a test project and set the CRT via |
You're right, it's indeed only in these static libs: In that case, we can guard it for I could find no information in repo about the minimum MSVC version |
Well it's more like over time we kind of whittled it down. The project generator in projects/ used to support Visual Studio 2008 or Visual C++ versions VC6 - VC9 (1998-2008) but they became too old to maintain and were removed years ago. winbuild still supports those old versions because we didn't really need to do anything special for them except this so there was no additional maintenance. Somehow 0.4% of people are still using libcurl in Windows CE according to the 2024 survey but the Windows CE SDK I think only works for Visual Studio 2008 and earlier. I don't have the Windows CE stuff installed and I don't know how to build libcurl for Windows CE unless there is some private build method we don't know about. Sounds theoretical but someone may still be using lib/config-win32ce.h just in some way I can't figure out |
Windows CE is a mystery to me too! I've been fixing up WinCE issues for The strangest is there is never a report/submission about WinCE. I'd be glad to see how a WinCE build is done, and ideally we should have As for desktop Windows, I'm referring to this article: That's why I was holding VS2003 as a last supported version, a "random" I'm fine with making VS2010 the minimal required version, but I think What would be a good place for it? |
I worked with a customer just a few years ago who built and used curl just fine on WinCE. I mean, to the extent anything can be fine there. They used libcurl instead of native solutions because they needed a modern TLS version and winCE offers no such thing natively. |
No doubt they did it, but it leaves me wondering, how? Is it a recent curl WinCE must also use Unicode, except at a few places, like A casual search hinted that VS2008 is the last version supporting CE. |
I just asked on the libcurl mailing list. |
Meanwhile confirmed that VS2005 headers do declare |
Windows CE got renamed to Windows Embedded Compact later. Windows Embedded Compact 2013 applications can be built with Visual Studio 2015: |
Found out there is also a CeGCC cross-toolchain for macOS: The CeGCC project being dead isn't so much of an issue, because Anyhow the build launches now with CMake + CeGCC, and it looks like |
bb437c0
to
f721613
Compare
_fseeki64()
for VS2003
There was one reply on the mailing list from someone who builds libcurl for Windows CE. They said they can provide info on how to build it. So I'd wait for that to see how they're doing it before any decisions are made. |
Thanks! I suppose this PR is valid regardless? It was not my intention to change the cutoff version or anything like it. Just to fix this build case. |
Yes, no objections. I meant we should wait before we make any decisions on minimum MSVC. Requiring cegcc to build libcurl for Windows CE might not work, so if it were me I would not put time into it until we hear from this guy that was successful using Visual Studio 2008 but we don't know exactly how yet. |
Agreed, CeGCC is not a solution to replace MSVC for WinCE. But, it has nice properties as an extra option:
I went ahead with CeGCC. It brings back the pain as I remembered. There is no I'm down to 15 warnings, no more errors, and static/shared libs, |
The CRT has this function but its declaration is missing from headers. (This may be true for VS2002 or earlier versions but I didn't check.) Confirmed by looking at the public CRT source, headers and libs, but haven't made an actual build.
This reverts commit a0e24ce. It's only in the static CRT.
7d6a060
to
bc34bc7
Compare
Large file support requires
_fseeki64()
. This function is offered inVS2005 and upper.
VS2003 has it in the static CRT only, with declaration missing from
headers, so it's not usable.
Ref: https://archive.org/details/X10-38445 (MS Visual Studio .NET 2003)
Ref: 8b76a8a #15526