#
aafc074f |
| 25-Oct-2024 |
Viktor Szakats |
cmake: clear package version after `pkg-config` detection `pkg_check_modules()` seems to leave `<PACKAGE>_VERSION` defined with an empty value, if the package is not found. When
cmake: clear package version after `pkg-config` detection `pkg_check_modules()` seems to leave `<PACKAGE>_VERSION` defined with an empty value, if the package is not found. When the package is also not found in the fallback branch, `find_package_handle_standard_args()` logs and error message. In this message it includes the bogus empty value as: `(found version "")`: ``` Could NOT find Libssh2 (missing: LIBSSH2_INCLUDE_DIR LIBSSH2_LIBRARY) (found version "") ``` https://github.com/curl/curl/actions/runs/11509727553/job/32040378958?pr=15408#step:31:99 Clear the version number to avoid the confusion: ``` Could NOT find Libssh2 (missing: LIBSSH2_INCLUDE_DIR LIBSSH2_LIBRARY) ``` https://github.com/curl/curl/actions/runs/11510022503/job/32041149129?pr=15408#step:31:99 Seen with CMake v3.30.5. Follow-up to 7bab201abe3915a0167c002f9308950cb8a06e4b #15193 Closes #15409
show more ...
|
#
f66af623 |
| 24-Oct-2024 |
Viktor Szakats |
cmake: document `-D` and env build options Extend `INSTALL-CMAKE` document with the list of available options, a short description and default values. The list may not be 100% c
cmake: document `-D` and env build options Extend `INSTALL-CMAKE` document with the list of available options, a short description and default values. The list may not be 100% complete. There are no component boundaries in CMake, so the line is blurry between curl options, CMake options, CMake Find modules options. I included certain CMake options that seemed useful, and/or have dedicated use withing curl's CMake source. But, all CMake built-in options are usable, as documented upstream in CMake. The naming of the options has a heritage and the inconsistencies with it, including a lack of clear namespace. This may be subject to future updates, also after figuring out which name has special meaning within CMake and/or CMake projects out of unwritten convention or something more tangible. CMake allows to initialize any internal variable via `-D`. This may be useful to pre-initialize/override feature check results. The list doesn't contain these, and they remain officially undocumented. Also: - make adjustments to keep the spellchecker happy. - retrofit description changes to the cmake sources. - stop documenting deprecated `Find*` variables. Reported-by: Daniel Stenberg Fixes https://github.com/curl/curl/discussions/14885 Closes #15388
show more ...
|
#
ffc4e6a8 |
| 24-Oct-2024 |
Viktor Szakats |
cmake: mark as advanced some internal Find* variables To sync with other similar variables and hide them from cmake UIs. Follow-up to 7bab201abe3915a0167c002f9308950cb8a06e4b #15193
cmake: mark as advanced some internal Find* variables To sync with other similar variables and hide them from cmake UIs. Follow-up to 7bab201abe3915a0167c002f9308950cb8a06e4b #15193 Closes #15407
show more ...
|
#
7bab201a |
| 08-Oct-2024 |
Viktor Szakats |
cmake: add native `pkg-config` detection for mbedTLS, MSH3, Quiche, Rustls, wolfSSL Also: - detect and add required system libraries for Rustls on macOS and non-Windows. - add
cmake: add native `pkg-config` detection for mbedTLS, MSH3, Quiche, Rustls, wolfSSL Also: - detect and add required system libraries for Rustls on macOS and non-Windows. - add Linux CMake jobs for the touched dependencies. Caveats: - MSH3 generates a broken `libmsh3.pc`, so needs manual config. Upstream PR: https://github.com/nibanks/msh3/pull/225 - Rustls `.pc` file missing, so needs manual config. An internal change worthy of mention is that we are using the lib path and name information returned by `pkg-config` as-is. Meaning the libname doesn't include the full path, like it's usual with native cmake detection. The path comes separately and needs to be rolled separately. For this we add it to targets via `link_directories()`. We also keep tab of them in `CURL_LIBDIRS` and use that in `libcurl.pc`. Feature checks also need to receive these paths. CMake doesn't offer a `CMAKE_REQUIRED_*` variable for this purpose, only a `CMAKE_REQUIRED_LINK_OPTIONS` accepting raw linker flags. Add a macro to convert a list of paths to linker options to solve it. wolfSSL requires this for now. Closes #15193
show more ...
|
#
3e60f174 |
| 17-Aug-2024 |
Viktor Szakats |
cmake: tidy up more in Find modules - add `NAMES` where missing. - document input variables (including deprecated ones.) - comment cleanups. - FindWolfSSL: drop stray `QUIET` fro
cmake: tidy up more in Find modules - add `NAMES` where missing. - document input variables (including deprecated ones.) - comment cleanups. - FindWolfSSL: drop stray `QUIET` from `pkg_check_modules()`. (`QUIET` may be re-added for all modules in the future.) Closes #14579
show more ...
|
#
1d292465 |
| 16-Aug-2024 |
Viktor Szakats |
cmake: tidy up around ngtcp2 and wolfSSL - fix to add the `m` library without path. Follow-up to 8577f4ca084b8a3926b869a48a29d41a810eceb5 #14343 Authored-by: Tal Regev Fixe
cmake: tidy up around ngtcp2 and wolfSSL - fix to add the `m` library without path. Follow-up to 8577f4ca084b8a3926b869a48a29d41a810eceb5 #14343 Authored-by: Tal Regev Fixes #14549 - move `m` library detection to wolfSSL Find module. `m` is necessary for wolfSSL (wolfcrypt) library functions called by `libngtcp2_crypto_wolfssl`. Follow-up to 8577f4ca084b8a3926b869a48a29d41a810eceb5 #14343 - fix comment header about supported `COMPONENT` names. - quote strings. - lowercase local variables. Closes #14576
show more ...
|
#
24889acb |
| 17-Aug-2024 |
Viktor Szakats |
cmake: do not unset the deprecated mixed-case variables To avoid interference with the calling env. (Keep unsetting for the DIRS/DIR cases in BearSSL and mbedTLS, because the de
cmake: do not unset the deprecated mixed-case variables To avoid interference with the calling env. (Keep unsetting for the DIRS/DIR cases in BearSSL and mbedTLS, because the deprecated variables play a new role in the detection.) Follow-up to 9fbda4ca75483ee0a43289526e88d8f1e8ca2a78 #14574
show more ...
|
#
9fbda4ca |
| 16-Aug-2024 |
Viktor Szakats |
cmake: rename wolfSSL and zstd config variables to uppercase To match with other config variables and other projects. Rename these CMake configuration variables: - `WolfSSL_INCL
cmake: rename wolfSSL and zstd config variables to uppercase To match with other config variables and other projects. Rename these CMake configuration variables: - `WolfSSL_INCLUDE_DIR` -> `WOLFSSL_INCLUDE_DIR` - `WolfSSL_LIBRARY` -> `WOLFSSL_LIBRARY` - `Zstd_INCLUDE_DIR` -> `ZSTD_INCLUDE_DIR` - `Zstd_LIBRARY` -> `ZSTD_LIBRARY` The old values continue to work, with a warning suggesting the new name. Also: - add similar warnings for earlier renames for mbedTLS and BearSSL. - rename internal variables `PC_Zstd_*` to uppercase. Follow-up to db39c668a8e33e064b9eb20892cd027f46302f77 #14542 Closes #14574
show more ...
|
#
432f2fd9 |
| 16-Aug-2024 |
Viktor Szakats |
cmake: sync up version detection in Find modules - use the same pattern across all Find modules: - verify if the version header exists before reading it. - use a single regex per
cmake: sync up version detection in Find modules - use the same pattern across all Find modules: - verify if the version header exists before reading it. - use a single regex per lookup. - sync regexes between Find modules. - use generic temporary variable names. - improve readability. - make it simpler to transition to new CMake syntax in the future: ```cmake file(STRINGS "${CARES_INCLUDE_DIR}/ares_version.h" _version_str REGEX "<...>") unset(_version_str) set(CARES_VERSION "${CMAKE_MATCH_1}") ``` Ref: https://cmake.org/cmake/help/latest/policy/CMP0159.html#policy:CMP0159 - fix zstd version detection to be CMake 3.7 compatible. Required 3.9 before this patch, for the `CMAKE_MATCH_<n>` feature. Follow-up to c5d506e9bbf0669d7605d1d00865ae7e229b2409 #12200 Follow-up to 4e2f3641f80e233738147d82218317f331369c50 #14548 Closes #14572
show more ...
|
#
f3a03df6 |
| 16-Aug-2024 |
Viktor Szakats |
cmake: revert to `pkg_check_modules()` Prefer `pkg_check_modules()` over `pkg_search_module()`. `pkg_check_modules()` logs a line when there is a hit, and also warnings if a sub
cmake: revert to `pkg_check_modules()` Prefer `pkg_check_modules()` over `pkg_search_module()`. `pkg_check_modules()` logs a line when there is a hit, and also warnings if a sub-dependency is missing. In `QUIET` mode, both are silent. The extra info is useful to see if a detection happened via `pkg-config`. Keep `pkg_search_module()` in `FindGSS`. We pass two dependencies there and we want to keep stopping on the first one. Partially reverts c2889a7b4180fc963ae30811f59ab547b6eb03cd #14388 Closes #14573
show more ...
|
#
4e2f3641 |
| 13-Aug-2024 |
Viktor Szakats |
cmake: add missing version detection to Find modules - use `pkg-config` version when available and where it wasn't yet used. - add manual version detection for dependencies where th
cmake: add missing version detection to Find modules - use `pkg-config` version when available and where it wasn't yet used. - add manual version detection for dependencies where this is possible (via a public header) and where it wasn't done yet. Closes #14548
show more ...
|
#
65f5caee |
| 13-Aug-2024 |
Viktor Szakats |
cmake: tidy up Find modules Smoothen out minor differences between Find modules. - brotli, nghttp2: drop redundant `FOUND_VAR` specifiers from `find_package_handle_standard_ar
cmake: tidy up Find modules Smoothen out minor differences between Find modules. - brotli, nghttp2: drop redundant `FOUND_VAR` specifiers from `find_package_handle_standard_args()` calls. This function sets both `<NAME_UPPER>_FOUND` and `<NAME>_FOUND` by default. - brotli: set result vars only when found. - brotli: add missing `mark_as_advanced()` call. - brotli: delete custom fail message. - mbedtls, bearssl: use `REQUIRED_VARS` instead of `DEFAULT_MSG`. - msh3, quiche: set `<NAME>_VERSION` (via pkg-config). - wolfssl: also use `PC_WOLFSSL_INCLUDEDIR`, `PC_WOLFSSL_LIBDIR` as hints. - libpsl, libssh2, zstd: clear temporary variables used for version detection. - gss, msh3, nghttp2, nghttp3, ngtcp2, quiche, zstd: fix to apply `mark_as_advanced()` to internal variables only. Closes #14538
show more ...
|
#
8ae7049f |
| 13-Aug-2024 |
Viktor Szakats |
cmake: sync up formatting in Find modules - lowercase internal variable names (FindGSS) - comments - whitespace Closes #14527
|
#
b910122f |
| 12-Aug-2024 |
Viktor Szakats |
cmake: add `CURL_USE_PKGCONFIG` option Add option to control whether to use `pkg-config` to detect dependencies. Curl's CMake uses `pkg-config` by default for all targets except for
cmake: add `CURL_USE_PKGCONFIG` option Add option to control whether to use `pkg-config` to detect dependencies. Curl's CMake uses `pkg-config` by default for all targets except for MSVC without vcpkg. With the CMake option `-DCURL_USE_PKGCONFIG=ON` you can override it to use `pkg-config` always. If `pkg-config` is causing issues, e.g. in cross-builds or other cases, `-DCURL_USE_PKGCONFIG=OFF` disables all use of `pkg-config`. Also add it to `curl-config.cmake`. Not yet used, but will be once curl starts referencing any curl-specific `Find*` module from this public script. Follow-up to 9dfdc6ff42ba045ec48056bb6d2072f2fcac2e9d #14483 Closes #14504
show more ...
|
#
9dfdc6ff |
| 10-Aug-2024 |
Viktor Szakats |
cmake: allow `pkg-config` in more envs Before this patch, `pkg-config` was used for `UNIX` builds only (with a few exceptions like wolfSSL, libssh, gsasl, libuv). This patch extends
cmake: allow `pkg-config` in more envs Before this patch, `pkg-config` was used for `UNIX` builds only (with a few exceptions like wolfSSL, libssh, gsasl, libuv). This patch extends `pkg-config` use to all envs except: `MSVC` without vcpkg. Meaning MSVC with vcpkg will now use it. Also mingw on Windows. Also apply the new condition to options where `pkg-config` was used unconditionally (= for all targets). These are: `-DCURL_USE_WOLFSSL=ON`, `-DCURL_USE_LIBSSH=ON`, `-DCURL_USE_GSASL=ON` and `-DCURL_USE_LIBUV=ON` This patch may still cause regressions for cross-builds (e.g. mingw cross-build from Unix) and potentially other cases. If that happens, we recommend using some of these methods to explicitly disable `pkg-config` when using CMake: - CMake option: `-DPKG_CONFIG_EXECUTABLE=` (or `-DPKG_CONFIG_EXECUTABLE=nonexistent` or similar) This is similar to the (curl-specific) `PKG_CONFIG` env for autotools. - export env: `PKG_CONFIG_LIBDIR=` (or `PKG_CONFIG_PATH`, `PKG_CONFIG_SYSROOT_DIR`, or the CMake-specific `PKG_CONFIG`) We may improve control over this in a future patch, also allowing opting in MSVC (without vcpkg). Ref: #14405 Ref: #14408 Ref: #14140 Closes #14483
show more ...
|
#
c2889a7b |
| 04-Aug-2024 |
Viktor Szakats |
cmake: more syntax tidy-up - quote string literals. In the hope it improves syntax-highlighting and readability. - use lowercase, underscore-prefixed local var names. As
cmake: more syntax tidy-up - quote string literals. In the hope it improves syntax-highlighting and readability. - use lowercase, underscore-prefixed local var names. As a hint for scope, to help readability. - prefer `pkg_search_module` (over `pkg_check_modules`). They are the same, but `pkg_search_module` stops searching at the first hit. - more `IN LISTS` in `foreach()`. - OtherTests.cmake: clear `CMAKE_EXTRA_INCLUDE_FILES` after use. - add `PROJECT_LABEL` for http/client and unit test targets. - sync `Find*` module comments and formatting. - drop a few local variables. - drop bogus `CARES_LIBRARIES` from comment. - unquote numeric literal. Follow-up to acbc6b703f6b0ee568d053f6f2565fbc107b5fd3 #14197 Closes #14388
show more ...
|
#
d68a1212 |
| 30-Jun-2024 |
Viktor Szakats |
cmake: improve wolfSSL detection - support detecting wolfSSL via pkg-config (like autotools.) - detect wolfSSL version. - detect `HAVE_WOLFSSL_DES_ECB_ENCRYPT`. (need
cmake: improve wolfSSL detection - support detecting wolfSSL via pkg-config (like autotools.) - detect wolfSSL version. - detect `HAVE_WOLFSSL_DES_ECB_ENCRYPT`. (needs e.g. `--enable-curl` when building wolfSSL) - detect `HAVE_WOLFSSL_FULL_BIO` and enable HTTPS-proxy feature. (needs e.g. `--enable-opensslall` when building wolfSSL) - fix to show `HTTPS-proxy` in cmake feature list. Ref: 55807e6c056f27846d70cec70ee6ac3f0e5b3bbe #9962 - fix to show `NTLM` in cmake feature list. - fix to show `smb` and `smbs` in cmake protocol list. - add wolfSSL CMake job to GHA (for macOS). - fix mqtt and wolfSSL symbol clash. ``` ./curl/lib/mqtt.c: In function 'mqtt_doing': ./curl/lib/mqtt.c:746:17: error: declaration of 'byte' shadows a global declaration [-Werror=shadow] 746 | unsigned char byte; | ^~~~ /opt/homebrew/Cellar/wolfssl/5.7.0_1/include/wolfssl/wolfcrypt/types.h:85:36: note: shadowed declaration is here 85 | typedef unsigned char byte; | ^~~~ ``` - format `FindWolfSSL.cmake` closer to neighbours. Closes #14064
show more ...
|
#
2bc1d775 |
| 02-Jan-2023 |
Daniel Stenberg |
copyright: update all copyright lines and remove year ranges - they are mostly pointless in all major jurisdictions - many big corporations and projects already don't use them - save
copyright: update all copyright lines and remove year ranges - they are mostly pointless in all major jurisdictions - many big corporations and projects already don't use them - saves us from pointless churn - git keeps history for us - the year range is kept in COPYING checksrc is updated to allow non-year using copyright statements Closes #10205
show more ...
|
#
ad9bc597 |
| 17-May-2022 |
max.mehl |
copyright: make repository REUSE compliant Add licensing and copyright information for all files in this repository. This either happens in the file itself as a comment header or in the
copyright: make repository REUSE compliant Add licensing and copyright information for all files in this repository. This either happens in the file itself as a comment header or in the file `.reuse/dep5`. This commit also adds a Github workflow to check pull requests and adapts copyright.pl to the changes. Closes #8869
show more ...
|
Revision tags: curl-7_76_1, curl-7_76_0, curl-7_75_0, curl-7_74_0 |
|
#
4d2f8006 |
| 04-Nov-2020 |
Daniel Stenberg |
curl.se: new home Closes #6172
|
Revision tags: curl-7_73_0, tiny-curl-7_72_0, curl-7_72_0, curl-7_71_1, curl-7_71_0, curl-7_70_0 |
|
#
9a8b3b3e |
| 23-Mar-2020 |
Daniel Stenberg |
copyright: fix out-of-date copyright ranges and missing headers Reported by the new script 'scripts/copyright.pl'. The script has a regex whitelist for the files that don't need copyrigh
copyright: fix out-of-date copyright ranges and missing headers Reported by the new script 'scripts/copyright.pl'. The script has a regex whitelist for the files that don't need copyright headers. Removed three (mostly usesless) README files from docs/ Closes #5141
show more ...
|
#
37a05418 |
| 12-Mar-2020 |
Daniel Stenberg |
cmake: add support for building with wolfSSL My working build cmdline: $ cmake -DCMAKE_PREFIX_PATH=$HOME/build-wolfssl -DCMAKE_USE_WOLFSSL=ON . Assisted-by: Brad King C
cmake: add support for building with wolfSSL My working build cmdline: $ cmake -DCMAKE_PREFIX_PATH=$HOME/build-wolfssl -DCMAKE_USE_WOLFSSL=ON . Assisted-by: Brad King Closes #5095
show more ...
|