curl/src
Viktor Szakats 12a6de2f66
GHA: add iOS jobs with LibreSSL, enable dependencies for Android via vcpkg
iOS:

- add jobs with autotools, CMake, CMake Xcode generator.
  The Xcode generator is >10x slower than Unix Makefiles. Keep it
  because it's the one recommended by CMake and for having its own
  quirks we may want to know about.
- build, cache and use LibreSSL for these jobs.
  With workaround for an iOS build issue fixed in master.
- make Xcode generator work by explicitly disabling code signing.
- make tests and examples build with the Xcode generator by setting
  `-DMACOSX_BUNDLE_GUI_IDENTIFIER=se.curl`, to avoid
  "Bundle identifier is missing" errors.
- cmake: disable `CURL_USE_PKGCONFIG` by default for Apple device.
- cmake: add `stdc++` library for BoringSSL and AWS-LC, with
  `OPENSSL_USE_STATIC_LIBS=ON` set.
- cmake: add workaround for Xcode generator issue, where it cannot
  handle two targets depending on one custom command. A better fix may
  be dropping `tool_hugehelp.c` and `tool_ca_embed.c` from curltool
  library. For a future PR.

Android:

- add vcpkg to Android jobs, enable dependencies.
  Assisted-by: Tal Regev via #16045
- make vcpkg work with autotools.
- pass `--with-brotli` to autotools to detect the vcpkg-supplied brotli.
- enable BoringSSL for Android and add a job with it.
- silence 457 CMake configure warnings about the Android NDK CMake
  scripts targeting freshly deprecated CMake versions.

These were much more involved than imagined. Basically nothing works out
of the box, and when combined, everything becomes a unique edge case.
autotools builds were a much easier to make work than CMake ones.

Also:

- GHA/non-native: re-sync names to be shorter and more aligned with
  other workflows.
- GHA: add `persist-credentials: false` where missing.

Unresolved issues:

- `OPENSSL_ROOT_DIR` ignored/mis-used when pointing it to LibreSSL.
  CMake seems to prepend the sysroot to the passed absolute directory.
  Found no workaround.
- CMake when combined with Android, both the Google-recommended method
  and the built-in CMake method fail to provide a way to avoid
  `pkg-config` packages at system directories. Failed to find a knob
  that can remove `/usr/include` from the search path. The workaround is
  to disable zstd. (I enabled it by default in this release, maybe
  premature?: f2adb3b6d7 #15431)
  Disabling `pkg-config` doesn't work because vcpkg dependencies do not
  link without it.
- CMake's Xcode generator is slow because each `try_compile()` feature
  check springs a new CMake + Xcode project taking a long time to run,
  just to compile single-liner C files. A known issue, with no solution.
  `-DCMAKE_MACOSX_BUNDLE=OFF` did not help, limiting build types to
  a single one (e.g. `Debug`) also had no effect.
   make | Xcode | GHA run
  :---- | :---- | :--------------------------------------------------------------------
    16s | 2m57s | https://github.com/curl/curl/actions/runs/12866334102/job/35868712426
    23s | 4m13s | https://github.com/curl/curl/actions/runs/12868128013/job/35874212461
    16s | 3m39s | https://github.com/curl/curl/actions/runs/12859073531/job/35849041880
    14s | 2m23s | https://github.com/curl/curl/actions/runs/12858298423/job/35847201313
    15s | 2m36s | https://github.com/curl/curl/actions/runs/12858058492/job/35846669761
    19s | 3m19s | https://github.com/curl/curl/actions/runs/12868919430/job/35876601168

Closes #16043
2025-01-20 22:32:06 +01:00
..
.checksrc checksrc: introduce 'banfunc' to ban specific functions 2024-12-30 08:25:56 +01:00
.gitignore tidy-up: delete stray references from autotools, docs 2025-01-09 02:12:53 +01:00
CMakeLists.txt GHA: add iOS jobs with LibreSSL, enable dependencies for Android via vcpkg 2025-01-20 22:32:06 +01:00
curl.rc (lib)curl.rc: set debug flag also for CURLDEBUG and UNITTESTS 2024-05-22 08:38:12 +02:00
Makefile.am clang-tidy: add to CI, add cmake support, fix fallouts 2024-12-27 13:42:32 +01:00
Makefile.inc vtls: feature ssls-export for SSL session im-/export 2025-01-08 23:32:07 +01: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.h binmode: convert to macro and use it from tests 2024-12-21 13:29:24 +01: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 curl: use realtime in trace timestamps 2024-12-02 21:21:18 +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 src: drop support for CURL_TESTDIR debug env 2025-01-02 14:44:39 +01: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 Makefile.mk: drop in favour of autotools and cmake (MS-DOS, AmigaOS3) 2024-12-16 23:20:55 +01: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 windows: drop redundant USE_WIN32_SMALL_FILES macro 2025-01-12 00:34:21 +01: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 tidy-up: misc 2024-12-24 01:27:26 +01: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 vtls: feature ssls-export for SSL session im-/export 2025-01-08 23:32:07 +01: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 tidy-up: drop parenthesis around return expression 2025-01-14 12:11:42 +01:00
tool_doswin.h system.h: drop compilers lacking 64-bit integer type (Windows/MS-DOS) 2025-01-10 22:46:19 +01: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 Makefile.mk: drop in favour of autotools and cmake (MS-DOS, AmigaOS3) 2024-12-16 23:20:55 +01:00
tool_findfile.h windows: use built-in _WIN32 macro to detect Windows 2023-11-22 15:42:25 +00:00
tool_formparse.c tool_formparse.c: make curlx_uztoso a static in here 2024-12-21 13:59:05 +01:00
tool_formparse.h copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
tool_getparam.c tool_getparam: ECH param parsing refix 2025-01-16 09:17:01 +01:00
tool_getparam.h vtls: feature ssls-export for SSL session im-/export 2025-01-08 23:32:07 +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 Makefile.mk: drop in favour of autotools and cmake (MS-DOS, AmigaOS3) 2024-12-16 23:20:55 +01:00
tool_help.h tool_help: handle longer lines, exit on too long 2024-08-07 00:31:07 +02:00
tool_helpers.c curl: add byte range support to --variable reading from file 2024-12-21 11:46:27 +01: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 vtls: feature ssls-export for SSL session im-/export 2025-01-08 23:32:07 +01:00
tool_libinfo.h vtls: feature ssls-export for SSL session im-/export 2025-01-08 23:32:07 +01:00
tool_listhelp.c vtls: feature ssls-export for SSL session im-/export 2025-01-08 23:32:07 +01:00
tool_main.c system.h: drop compilers lacking 64-bit integer type (Windows/MS-DOS) 2025-01-10 22:46:19 +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 vtls: feature ssls-export for SSL session im-/export 2025-01-08 23:32:07 +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 tidy-up: drop parenthesis around return expression 2025-01-14 12:11:42 +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 curl: add byte range support to --variable reading from file 2024-12-21 11:46:27 +01:00
tool_paramhlp.h curl: add byte range support to --variable reading from file 2024-12-21 11:46:27 +01: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 tidy-up: extend CURL_O_BINARY to lib and tests 2025-01-16 12:36:07 +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_ssls.c tool_ssls: fix "ignored return value" warning 2025-01-09 17:24:47 +01:00
tool_ssls.h vtls: feature ssls-export for SSL session im-/export 2025-01-08 23:32:07 +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_urlglob: parse character globbing range without sscanf 2024-12-05 07:56:55 +01: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 src: add CURL_STRICMP() macro, use _stricmp() on Windows 2024-12-23 22:06:07 +01:00
tool_util.h curl: use realtime in trace timestamps 2024-12-02 21:21:18 +01: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 docs: use lowercase curl and libcurl 2025-01-02 17:15:54 +01: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 clang-tidy: add to CI, add cmake support, fix fallouts 2024-12-27 13:42:32 +01:00
tool_writeout.h getinfo: fix CURLINFO_QUEUE_TIME_T and add 'time_queue' var 2024-12-21 12:04:48 +01: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 curl/var: change byte offset syntax for assignments 2024-12-30 15:55:54 +01:00
var.h Rename struct var to fix AIX build 2024-11-15 13:55:55 -08:00