curl/src
Viktor Szakats a72b479dec
build: fix MSVC UWP builds
The MSVC UWP job in CI did not actually enable UWP. Fix this and
the fallouts discovered after enabling it.

- GHA/windows: make sure to enable UWP in MSVC vcpkg UWP job.
  Use the CMake options and C flags already used for mingw-w64, but use
  `WINAPI_FAMILY_PC_APP` instead of the deprecated `WINAPI_FAMILY_APP`.
  (The former is not supported by mingw-w64, so leave it there as-is.)
  Follow-up to cb22cfca69 #14077

- GHA/windows: by default the MSVC UWP job became 2x-3x slower than
  others after actually enabling UWP. Most of it is caused by
  CMake/MSBuild automatically building full APPX containers for each
  `.exe` target. This includes 21 CMake feature detections. Each
  detection app is built into a 15MB APPX project, with code signing,
  logos, etc. Example:
    https://github.com/curl/curl/actions/runs/12056968170/job/33620610958
  Disable this overhead for curl build targets via custom
  `CMAKE_VS_GLOBALS` options. I've found no way to apply them to feature
  detection targets, so those remain slow.

- cmake: automatically enable Unicode for UWP builds. It's required.
  Also stop enabling it manually in the existing CI job.

- tests: fix `getpid()` use for Windows UWP:
  ```
  tests\server\util.c(281,21): warning C4013: 'getpid' undefined; assuming extern returning int
  ```
  Ref: https://github.com/curl/curl/actions/runs/12061215311/job/33632904249#step:11:38

- src/tool_doswin: disable `GetLoadedModulePaths()` for UWP.
  mingw-w64 UWP was okay with this, but MS SDK headers are not.
  This makes `--dump-module-paths` return empty for UWP builds.
  ```
  src\tool_doswin.c(620,3): error C2065: 'MODULEENTRY32': undeclared identifier
  src\tool_doswin.c(626,11): warning C4013: 'CreateToolhelp32Snapshot' undefined; assuming extern returning int
  src\tool_doswin.c(626,36): error C2065: 'TH32CS_SNAPMODULE': undeclared identifier
  src\tool_doswin.c(632,7): warning C4013: 'Module32First' undefined; assuming extern returning int
  ```
  Ref: https://github.com/curl/curl/actions/runs/12055081933/job/33614629930#step:9:35

- examples: fix `websocket.c` to include `winsock2.h` before `windows.h`
  to make it build with MSVC UWP:
  ```
  include\curl\curl.h(143,16): error C2061: syntax error: identifier 'curl_socket_t'
  include\curl\curl.h(143,16): error C2059: syntax error: ';'
  include\curl\curl.h(417,52): error C2146: syntax error: missing ')' before identifier 'curlfd'
  include\curl\curl.h(417,38): error C2081: 'curl_socket_t': name in formal parameter list illegal
  ```
  Ref: https://github.com/curl/curl/actions/runs/12055317910/job/33615644427#step:14:126

- GHA/windows: silence linker warning with MSVC UWP builds:
  ```
  LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification
  ```
  Ref: https://github.com/curl/curl/actions/runs/12055696808/job/33616629610#step:11:38

- GHA/windows: set `/INCREMENTAL:NO` for all MSVC jobs to improve
  performance a little.

- cmake: show `UWP` platform flag.

Ref: #15652
Closes #15657
2024-11-28 14:24:03 +01:00
..
.checksrc tool_getparam: replace two uses of strncpy(), ban strncpy 2024-10-09 23:43:24 +02:00
.gitignore curl: support embedding a CA bundle 2024-08-03 09:22:26 +02:00
CMakeLists.txt cmake: replace CURL_*_DIR with {PROJECT,CMAKE_CURRENT}_*_DIR 2024-10-22 19:13:08 +02:00
curl.rc (lib)curl.rc: set debug flag also for CURLDEBUG and UNITTESTS 2024-05-22 08:38:12 +02:00
Makefile.am tidy-up: indent, whitespace, #error in make files 2024-09-22 09:51:15 +02:00
Makefile.inc code: language cleanup in comments 2024-07-01 22:58:55 +02:00
Makefile.mk Makefile.mk: update to use Markdown sources for manual 2024-09-06 21:57:54 +02:00
mk-file-embed.pl src: guard for double declaration of curl_ca_embed in unity builds 2024-10-16 17:27:56 +02:00
mkhelp.pl tidy-up: misc build, tests, lib/macos.c 2024-08-16 16:05:36 +02:00
slist_wc.c copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
slist_wc.h copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
terminal.c source: avoid use of 'very' in comments 2024-10-17 13:36:33 +02:00
terminal.h curl: make warnings and other messages aware of terminal width 2024-05-28 23:12:32 +02:00
tool_binmode.c build: detect and use _setmode() with Cygwin/MSYS, also use on Windows 2024-10-07 12:31:21 +02:00
tool_binmode.h build: detect and use _setmode() with Cygwin/MSYS, also use on Windows 2024-10-07 12:31:21 +02:00
tool_bname.c copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
tool_bname.h copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
tool_cb_dbg.c src/lib: remove redundant ternary operators 2024-10-29 08:18:30 +01:00
tool_cb_dbg.h copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
tool_cb_hdr.c tool: support --show-headers AND --remote-header-name 2024-10-02 08:04:33 +02:00
tool_cb_hdr.h tool: support --show-headers AND --remote-header-name 2024-10-02 08:04:33 +02:00
tool_cb_prg.c lib/src: white space edits to comply better with code style 2024-09-19 14:59:12 +02:00
tool_cb_prg.h curl: make warnings and other messages aware of terminal width 2024-05-28 23:12:32 +02:00
tool_cb_rea.c lib/src: white space edits to comply better with code style 2024-09-19 14:59:12 +02:00
tool_cb_rea.h copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
tool_cb_see.c src: fix potential macro confusion in cmake unity builds 2024-08-22 10:45:04 +02:00
tool_cb_see.h tool: move tool_ftruncate64 to tool_util.c 2024-04-25 09:20:38 +02:00
tool_cb_soc.c curl: (on linux) add MPTCP support 2024-06-07 10:54:19 +02:00
tool_cb_soc.h curl: (on linux) add MPTCP support 2024-06-07 10:54:19 +02:00
tool_cb_wrt.c tool: support --show-headers AND --remote-header-name 2024-10-02 08:04:33 +02:00
tool_cb_wrt.h copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
tool_cfgable.c curl: detect ECH support dynamically, not at build time 2024-10-24 16:10:39 +02:00
tool_cfgable.h Rename struct var to fix AIX build 2024-11-15 13:55:55 -08:00
tool_dirhie.c src: fix potential macro confusion in cmake unity builds 2024-08-22 10:45:04 +02:00
tool_dirhie.h tool: use errorf() for error output 2023-06-01 08:19:11 +02:00
tool_doswin.c build: fix MSVC UWP builds 2024-11-28 14:24:03 +01:00
tool_doswin.h tool_doswin: simplify; remove unused options and strncpy calls 2024-09-26 10:45:08 +02:00
tool_easysrc.c lib, src: delete stray curl_ prefix from printf calls 2024-08-26 11:00:15 +02:00
tool_easysrc.h build: enable missing OpenSSF-recommended warnings, with fixes 2023-12-16 13:12:37 +00:00
tool_filetime.c tidy-up: rename CURL_WINDOWS_APP to CURL_WINDOWS_UWP 2024-09-19 19:24:12 +02:00
tool_filetime.h windows: use built-in _WIN32 macro to detect Windows 2023-11-22 15:42:25 +00:00
tool_findfile.c lib, src: delete stray curl_ prefix from printf calls 2024-08-26 11:00:15 +02:00
tool_findfile.h windows: use built-in _WIN32 macro to detect Windows 2023-11-22 15:42:25 +00:00
tool_formparse.c src: fix potential macro confusion in cmake unity builds 2024-08-22 10:45:04 +02:00
tool_formparse.h copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
tool_getparam.c curl: --test-duphandle in debug builds runs "duphandled" 2024-11-08 13:22:47 +01:00
tool_getparam.h curl: --test-duphandle in debug builds runs "duphandled" 2024-11-08 13:22:47 +01:00
tool_getpass.c tool_getpass: replace getch() call with _getch() on Windows 2024-11-27 11:19:16 +01:00
tool_getpass.h code: language cleanup in comments 2024-07-01 22:58:55 +02:00
tool_help.c ipfs: add options to disable 2024-09-21 12:08:32 +02:00
tool_help.h tool_help: handle longer lines, exit on too long 2024-08-07 00:31:07 +02:00
tool_helpers.c tool: support --show-headers AND --remote-header-name 2024-10-02 08:04:33 +02:00
tool_helpers.h src: tidy up types, add necessary casts 2024-05-17 12:32:04 +02:00
tool_hugehelp.c.cvs buildconf.bat: fix tool_hugehelp.c generation 2024-08-21 03:36:18 -04:00
tool_hugehelp.h curl: --help [option] displays documentation for given cmdline option 2024-08-04 16:06:17 +02:00
tool_ipfs.c ipfs: add options to disable 2024-09-21 12:08:32 +02:00
tool_ipfs.h ipfs: add options to disable 2024-09-21 12:08:32 +02:00
tool_libinfo.c curl: detect ECH support dynamically, not at build time 2024-10-24 16:10:39 +02:00
tool_libinfo.h curl: detect ECH support dynamically, not at build time 2024-10-24 16:10:39 +02:00
tool_listhelp.c TLS: TLSv1.3 earlydata support for curl 2024-10-11 12:28:22 +02:00
tool_main.c build: fix clang-cl builds, add CI job 2024-10-30 23:15:32 +01:00
tool_main.h tool: use our own stderr variable 2023-09-28 10:50:56 +00:00
tool_msgs.c lib, src: delete stray curl_ prefix from printf calls 2024-08-26 11:00:15 +02:00
tool_msgs.h build: enable missing OpenSSF-recommended warnings, with fixes 2023-12-16 13:12:37 +00:00
tool_operate.c curl.h: mark two error codes as obsolete 2024-11-16 23:39:04 +01:00
tool_operate.h tool_operate: split up the huge single_transfer into sub functions 2024-10-23 23:12:54 +02:00
tool_operhlp.c src/lib: remove redundant ternary operators 2024-10-29 08:18:30 +01:00
tool_operhlp.h tool_cb_wrt: use "curl_response" if no file name in URL 2024-09-17 13:39:51 +02:00
tool_paramhlp.c lib, src: delete stray curl_ prefix from printf calls 2024-08-26 11:00:15 +02:00
tool_paramhlp.h tool_paramhlp: bump maximum post data size in memory to 16GB 2024-08-14 07:57:24 +02:00
tool_parsecfg.c src/lib: remove redundant ternary operators 2024-10-29 08:18:30 +01:00
tool_parsecfg.h copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
tool_progress.c src: fix potential macro confusion in cmake unity builds 2024-08-22 10:45:04 +02:00
tool_progress.h copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
tool_sdecls.h src: namespace symbols clashing with lib 2024-09-05 00:55:44 +02:00
tool_setopt.c src: fix potential macro confusion in cmake unity builds 2024-08-22 10:45:04 +02:00
tool_setopt.h curl: make --libcurl output better CURLOPT_*SSLVERSION 2024-03-14 17:59:22 +01:00
tool_setup.h config: rename the OS define to CURL_OS to reduce collision risk 2024-10-30 14:59:54 +01:00
tool_sleep.c select: use poll() if existing, avoid poll() with no sockets 2024-10-01 15:11:50 +02:00
tool_sleep.h copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
tool_stderr.c tool: use our own stderr variable 2023-09-28 10:50:56 +00:00
tool_stderr.h tool: use errorf() for error output 2023-06-01 08:19:11 +02:00
tool_strdup.c copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
tool_strdup.h copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
tool_urlglob.c tool_operate: split up the huge single_transfer into sub functions 2024-10-23 23:12:54 +02:00
tool_urlglob.h tool_operate: split up the huge single_transfer into sub functions 2024-10-23 23:12:54 +02:00
tool_util.c curl: add options for safe/no CA bundle search (Windows) 2024-09-22 18:17:25 +02:00
tool_util.h curl: add options for safe/no CA bundle search (Windows) 2024-09-22 18:17:25 +02:00
tool_version.h config: rename the OS define to CURL_OS to reduce collision risk 2024-10-30 14:59:54 +01:00
tool_vms.c src: fix potential macro confusion in cmake unity builds 2024-08-22 10:45:04 +02:00
tool_vms.h copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
tool_writeout_json.c src: fix potential macro confusion in cmake unity builds 2024-08-22 10:45:04 +02:00
tool_writeout_json.h tool_writeout: bsearch the variable name 2024-06-10 23:12:05 +02:00
tool_writeout.c tool_operate: split up the huge single_transfer into sub functions 2024-10-23 23:12:54 +02:00
tool_writeout.h curl: fix the -w urle.* variables 2024-08-15 14:01:24 +02:00
tool_xattr.c tool_xattr: create the user.creator xattr attribute 2024-10-11 10:13:37 -07:00
tool_xattr.h copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
var.c Rename struct var to fix AIX build 2024-11-15 13:55:55 -08:00
var.h Rename struct var to fix AIX build 2024-11-15 13:55:55 -08:00