#
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 ...
|
#
7c0b6eb3 |
| 22-Aug-2024 |
Viktor Szakats |
cmake: respect cflags/libdirs of native pkg-config detections In Find modules with native pkg-config detection (libgsasl, libidn2, libssh, libuv, nettle) use the C compiler flags returne
cmake: respect cflags/libdirs of native pkg-config detections In Find modules with native pkg-config detection (libgsasl, libidn2, libssh, libuv, nettle) use the C compiler flags returned by pkg-config. Also use the library paths, and return the pathless library names. Also: - add these library paths to `libcurl.pc`/`curl-config`. - fix libgsasl detection to use the detected header directory. FindGSS already did this before this patch. Fixes #14641 Closes #14652
show more ...
|
#
0c378946 |
| 22-Aug-2024 |
Viktor Szakats |
cmake: pkg-config 'found' message sync with native CMake Cherry-picked from #14610
|
#
3a2e47af |
| 19-Aug-2024 |
Viktor Szakats |
cmake: fix Find module and package names - fix BearSSL warning about name mismatch. - fix Nettle Find module not found on Linux. - tidy-up: drop quotes from a package name.
cmake: fix Find module and package names - fix BearSSL warning about name mismatch. - fix Nettle Find module not found on Linux. - tidy-up: drop quotes from a package name. Package names must match case-sensitively to work on all platforms: - `find_package(<NAME> ...)` in `CMakeLists.txt`. - `CMake/Find<NAME>.cmake` filenames. - `find_package_handle_standard_args(<NAME> ...` in Find modules. - `message(STATUS "Found <NAME> ...` in Find modules. (to match the message shown by `find_package_handle_standard_args()`) Closes #14599
show more ...
|
#
c2e814f8 |
| 14-Aug-2024 |
Viktor Szakats |
cmake/FindNettle: log message when found via `pkg-config` The message mimics the CMake-native message (by `find_package_handle_standard_args()`), with the header path and version number.
cmake/FindNettle: log message when found via `pkg-config` The message mimics the CMake-native message (by `find_package_handle_standard_args()`), with the header path and version number. Closes #14596
show more ...
|
#
47849be5 |
| 17-Aug-2024 |
Viktor Szakats |
cmake/FindNettle: skip `pkg-config` for custom configs If either `NETTLE_INCLUDE_DIR` or `NETTLE_LIBRARY` is set to customize the `nettle` dependency, skip `pkg-config` and use the CMake
cmake/FindNettle: skip `pkg-config` for custom configs If either `NETTLE_INCLUDE_DIR` or `NETTLE_LIBRARY` is set to customize the `nettle` dependency, skip `pkg-config` and use the CMake-native detection to honor these custom settings. Closes #14584
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 ...
|
#
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 ...
|
#
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 ...
|
#
acbc6b70 |
| 12-Jul-2024 |
Viktor Szakats |
cmake: tidy-ups - tidy-up comments. - use lowercase, underscore prefixed names for internal variables. - use `IN LISTS` and `IN ITEMS` in `foreach()` loops. - rename variable nam
cmake: tidy-ups - tidy-up comments. - use lowercase, underscore prefixed names for internal variables. - use `IN LISTS` and `IN ITEMS` in `foreach()` loops. - rename variable name `OUTPUT` to a more distinctive one. - tidy-up `STREQUAL` syntax. - delete commented code. - indent/whitespace. Closes #14197
show more ...
|
#
b92ead34 |
| 30-Jul-2024 |
Viktor Szakats |
cmake: drop `if(PKG_CONFIG_FOUND)` guard for `pkg_check_modules()` The oldest cmake supported by curl is v3.7.0, which already has such guard (using `PKG_CONFIG_EXECUTABLE`) inside `pkg_
cmake: drop `if(PKG_CONFIG_FOUND)` guard for `pkg_check_modules()` The oldest cmake supported by curl is v3.7.0, which already has such guard (using `PKG_CONFIG_EXECUTABLE`) inside `pkg_check_modules()`. The advantage of leaving that guard to CMake is that it will define/reset all output variables, while the manual guard doesn't do this and also leaves for example `NETTLE_FOUND` undefined. Delete the single use of this guard from the recently added `nettle` detection, where I included it by accident. Then possibly re-introduce it universally if we find it useful after more evaluation. Follow-up to 669ce42275635dc1f881dab3dfc9a55c9ab49b21 #14285 Closes #14309
show more ...
|
#
669ce422 |
| 27-Jul-2024 |
Viktor Szakats |
cmake: detect `nettle` when building with GnuTLS `nettle` is a direct dependency of curl, when building with GnuTLS. Add a new `Find` module to detect it. Also: - GHA/macos:
cmake: detect `nettle` when building with GnuTLS `nettle` is a direct dependency of curl, when building with GnuTLS. Add a new `Find` module to detect it. Also: - GHA/macos: drop `nettle` hack no longer necessary. - add `nettle` to `libcurl.pc`. - also add `nettle` to `libcurl.pc` in autotools builds. Follow-up to 781242ffa44a9f9b95b6da5ac5a1bf6372ec6257 #11967 Closes #14285
show more ...
|