curl/CMake
Viktor Szakats 5e70566094
build: detect and use _setmode() with Cygwin/MSYS, also use on Windows
Before this patch `setmode()` was not detected with Cygwin/MSYS, because
it's a macro, not a function, and detection is looking for a function.

Switching to symbol detection doesn't work because it mis-detects it on
BSD systems which features a function with the same name but different
functionality and arguments.

Fix it by looking for a `_setmode()` function on Cygwin/MSYS, and use it
if available.

`_setmode()` is recommended over `setmode()` by Windows documentation so
use that on Windows too. It seems to be available on all supported
compilers, so omit detection.

https://learn.microsoft.com/cpp/c-runtime-library/reference/posix-setmode
https://learn.microsoft.com/cpp/c-runtime-library/reference/setmode

Officially Windows requires argument `_O_BINARY` with an underscore.
`O_BINARY` is also supported but bound to conditions. Continue to use it
for simplicity. Cygwin supports `O_BINARY` (no underscore).

Closes #15169
2024-10-07 12:31:21 +02:00
..
Platforms build: detect and use _setmode() with Cygwin/MSYS, also use on Windows 2024-10-07 12:31:21 +02:00
cmake_uninstall.cmake.in cmake: more small tidy-ups and fixes 2024-08-08 13:48:28 +02:00
CMakeConfigurableFile.in copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
curl-config.cmake.in cmake: tidy up 2024-09-22 09:51:15 +02:00
CurlSymbolHiding.cmake cmake: tidy up option descriptions 2024-08-21 23:36:12 +02:00
CurlTests.c cmake: tidy-ups 2024-08-03 20:49:15 +02:00
FindBearSSL.cmake cmake: fix Find module and package names 2024-08-20 00:44:43 +02:00
FindBrotli.cmake cmake: tidy up more in Find modules 2024-08-18 22:53:09 +02:00
FindCares.cmake cmake: rename Find modules 2024-08-20 00:50:10 +02:00
FindGSS.cmake cmake: minor tidy-ups 2024-08-26 11:00:08 +02:00
FindLibgsasl.cmake cmake: respect cflags/libdirs of native pkg-config detections 2024-08-23 10:43:43 +02:00
FindLibidn2.cmake cmake: respect cflags/libdirs of native pkg-config detections 2024-08-23 10:43:43 +02:00
FindLibpsl.cmake cmake: rename Find modules 2024-08-20 00:50:10 +02:00
FindLibssh2.cmake cmake: rename Find modules 2024-08-20 00:50:10 +02:00
FindLibssh.cmake cmake: respect cflags/libdirs of native pkg-config detections 2024-08-23 10:43:43 +02:00
FindLibuv.cmake cmake: respect cflags/libdirs of native pkg-config detections 2024-08-23 10:43:43 +02:00
FindMbedTLS.cmake cmake: tidy up more in Find modules 2024-08-18 22:53:09 +02:00
FindMSH3.cmake cmake: tidy up more in Find modules 2024-08-18 22:53:09 +02:00
FindNettle.cmake cmake: respect cflags/libdirs of native pkg-config detections 2024-08-23 10:43:43 +02:00
FindNGHTTP2.cmake cmake: tidy up more in Find modules 2024-08-18 22:53:09 +02:00
FindNGHTTP3.cmake cmake: tidy up more in Find modules 2024-08-18 22:53:09 +02:00
FindNGTCP2.cmake cmake/FindNGTCP2: use library path as hint for finding the crypto module 2024-09-19 15:56:30 +02:00
FindQuiche.cmake cmake: rename Find modules 2024-08-20 00:50:10 +02:00
FindRustls.cmake cmake: rename Find modules 2024-08-20 00:50:10 +02:00
FindWolfSSH.cmake cmake: tidy up more in Find modules 2024-08-18 22:53:09 +02:00
FindWolfSSL.cmake cmake: tidy up more in Find modules 2024-08-18 22:53:09 +02:00
FindZstd.cmake cmake: tidy up more in Find modules 2024-08-18 22:53:09 +02:00
Macros.cmake cmake: drop redundant zlib var, rename function (internals) 2024-09-19 12:56:22 +02:00
OtherTests.cmake select: use poll() if existing, avoid poll() with no sockets 2024-10-01 15:11:50 +02:00
PickyWarnings.cmake build: fix possible -Wformat-overflow in lib557 with test bundle builds 2024-09-23 11:52:55 +02:00
Utilities.cmake cmake: more syntax tidy-up 2024-08-07 23:41:27 +02:00