curl/.github/scripts
Viktor Szakats 9f56bb608e
GHA/configure-vs-cmake: check libcurl.pc/curl-config, fix issues
Add CI checker to compare `libcurl.pc` and `curl-config` files
generated by autotools and cmake builds.

Fix differences and apply tiny cleanups:
- curl-config: use single-quotes for literals.
- curl-config: quote all variables.
- curl-config: replace double with single quotes in a substituted value
  that's always literal (`@prefix@`).
- libcurl.pc: spelling in `Description:`.
- libcurl.pc: avoid substitution in a comment.
- cmake: fill `libdir` with `${exec_prefix}` instead of a literal.
  To sync with './configure'.
- configure: fix `CURL_CA_BUNDLE` value to not generate nested quotes
  in `curl-config`.
- configure: add missing `LDFLAGS` to `Libs.private` in `libcurl.pc`.
  To sync with CMake.
- cmake: skip adding `CMAKE_C_IMPLICIT_LINK_LIBRARIES` for MINGW and
  UNIX. They added these values as seen in CI:
  MINGW: `-lmingw32 -lgcc -lmoldname -lmingwex -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lmoldname -lmingwex`
  Linux: `-lgcc -lgcc_s -lc -lgcc -lgcc_s`
- cmake: delete FIXME about enabling libssh2 by default.
  `./configure` has special defaults for these packages (called: "off"):
  brotli, zstd, libpsl, libssh2, libssh, wolfssl, librtmp
  It looks for them, but only at system locations, which makes them
  never detected e.g. on macOS. CMake doesn't offer such default mode
  for now.
- GHA/macos: drop now redundant `-DCURL_DISABLE_LDAPS=ON`.
- cmake: use `CMAKE_INSTALL_INCLUDEDIR` and `CMAKE_INSTALL_LIBDIR`
  instead of hardcoded `include`/`lib` when generating `libcurl.pc`.

Updates to the GHA workflow:
- move autotools out-of-tree and rename cmake out-of-tree directory
  to `bld_cm` to tell it's cmake.
- disable static libcurl for `./configure` to match cmake.
- enable `pkg-config` debug output with `./configure`.
- dump list of Homebrew packages on macOS.
- dump `./configure` detailed logs.
- disable zstd and brotli for Linux, to match cmake.

There remain differences, mostly due to detection order and method. Also
some values are inherently different when using CMake and autotools,
such as `--cc`, `--configure`. autotools also generates duplicates for
`-lssl` and `-lcrypto`. macOS LDAP wants to link `-lber` while autotools
doesn't. Some build defaults are also different in autotools and cmake.
These differences are smoothened out for now by the checker script, or
via build options. Notice that lib order (a dupes) _can_ be significant
in some cases. E.g. the binutils linker is infamous for that on Windows.

Closes #14681
2024-09-21 12:08:35 +02:00
..
badwords.pl tidy-up: use /usr/bin/env perl shebang 2024-06-26 23:58:10 +02:00
badwords.txt CONTRIBUTE: polished 2024-08-26 15:04:01 +02:00
binarycheck.pl GHA: scan git repository and detect unvetted binary files 2024-08-01 12:30:36 +02:00
binarycheck.sums GHA: scan git repository and detect unvetted binary files 2024-08-01 12:30:36 +02:00
cleancmd.pl tidy-up: use /usr/bin/env perl shebang 2024-06-26 23:58:10 +02:00
cleanspell.pl tidy-up: use /usr/bin/env perl shebang 2024-06-26 23:58:10 +02:00
cmp-config.pl cmake: delete unused NEED_LBER_H, HAVE_LDAP_H 2024-09-19 17:48:57 +02:00
cmp-pkg-config.sh GHA/configure-vs-cmake: check libcurl.pc/curl-config, fix issues 2024-09-21 12:08:35 +02:00
codespell-ignore.txt mbedTLS: implement CURLOPT_SSL_CIPHER_LIST option 2024-04-24 14:30:37 +02:00
distfiles.sh dist: add CI job to detect files missing from distro 2024-08-10 10:02:49 +02:00
shellcheck.sh OS400: fix shellcheck warnings in scripts 2024-04-11 07:48:51 +00:00
spacecheck.pl winbuild: MS-DOS batch tidy-ups 2024-07-02 19:26:15 +02:00
spellcheck.words CONTRIBUTE: polished 2024-08-26 15:04:01 +02:00
spellcheck.yaml docs: update CIPHERS.md 2024-08-12 23:35:56 +02:00
trimmarkdownheader.pl GHA: trim markdown headers before proselinting 2024-08-22 23:45:40 +02:00
verify-examples.pl docs: introduce "curldown" for libcurl man page format 2024-01-23 00:29:02 +01:00
verify-synopsis.pl verify-synopsis.pl: work with .md files 2024-06-27 12:45:06 +02:00
VERSIONS GHA: update wolfSSL and mod_h2 2024-07-10 16:27:21 +02:00
yamlcheck.sh GHA: add yamlcheck 2024-08-23 18:42:55 +02:00
yamlcheck.yaml GHA: add yamlcheck 2024-08-23 18:42:55 +02:00