#
d511ec8b |
| 13-Nov-2024 |
Viktor Szakats |
build: omit certain deps from `libcurl.pc` unless found via `pkg-config` The idea of linking dependencies found to `libcurl.pc` turns out not to work in practice in some cases.
build: omit certain deps from `libcurl.pc` unless found via `pkg-config` The idea of linking dependencies found to `libcurl.pc` turns out not to work in practice in some cases. Specifically: gss, ldap, mbedtls, libmsh3, rustls A `.pc` may not work or be missing for a couple of reasons: - not all build methods generate it: mbedTLS, Rustls - generated file is broken: msh3 Ref: https://github.com/nibanks/msh3/pull/225 - installed package flavour isn't shipping with one: FreeBSD GSS, OmniOS LDAP, macOS LDAP The effect of such issues shall be subtle in theory, because `libcurl.pc` normally lists these dependencies in the `Requires.private` section meant for static linking. But, e.g. `pkg-config --exists` requires these to be present, and builds sometimes use this check regardless of build type. This bug is not present in `pkgconf`; it only checks for them when `--static` is also passed. Fix these by adding affected `.pc` references to `libcurl.pc` only when we detected the dependency via `pkg-config`. There are a few side-effects of this solution: - references are never added for dependencies where curl doesn't implement `pkg-config` detection. These are: - autotools: ldap, mbedtls, msh3 - cmake: ldap (pending #15273) - generated `libcurl.pc` depends on the build-time environment. - generated `libcurl.pc` depends on curl build tool (cmake, autotools). - generated `libcurl.pc` depends on curl build implementation details. Make an exception for GNU GSS, where I blindly guess that `gss.pc` is always available, as no issues were reported. Other, not mentioned, dependencies continue to be added regardless of the detection method. Reported-by: Harmen Stoppels, Thomas, Daniel Engberg, Andy Fiddaman Fixes #15469 Fixes #15507 Fixes #15535 Fixes https://github.com/curl/curl/pull/15163#issuecomment-2473358444 Closes #15573
show more ...
|
#
e0e93d43 |
| 11-Nov-2024 |
Viktor Szakats |
cmake: sync GSS config code with other deps - stop passing explicit libpaths via `CMAKE_SHARED_LINKER_FLAGS` and `CMAKE_EXE_LINKER_FLAGS`. `link_directories()` is doing that already.
cmake: sync GSS config code with other deps - stop passing explicit libpaths via `CMAKE_SHARED_LINKER_FLAGS` and `CMAKE_EXE_LINKER_FLAGS`. `link_directories()` is doing that already. - use `curl_required_libpaths()` to pass libpaths to the feature test. Reported-by: Daniel Engberg Fixes #15536 Also fixes GSS feature detection with non-gcc/clang compilers, such as MSVC. - add libpaths to `CURL_LIBPATHS`. - move `GSS_CFLAGS`, `GSS_LDFLAGS` stringifications to FindGSS. To match the `CFLAGS` format returned by the rest of Find modules. - reorder calls to match other dependencies. - don't extend system `LDFLAGS` when FindGSS did not return any. - ignore `LDFLAGS` when detecting GSS via `pkg-config`. `LDFLAGS` holds a copy of libpaths and libs in this case. Ignore those to avoid these duplicates making into `libcurl.pc` and `curl-config`. Also syncing behavior with other Find modules which also ignore raw `LDFLAGS`. - ignore raw `LDFLAGS` coming from `krb5-config --libs`. FindGSS no longer returns dependency-specific `LDFLAGS` after this. Syncing behavior with other Find modules. - reduce scope of checker state push/pop/set. Closes #15545
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 ...
|
#
91519bfb |
| 04-Oct-2024 |
Viktor Szakats |
cmake: use `cmake_push_check_state()` around feature checks Enclose `CMAKE_EXTRA_INCLUDE_FILES`, `CMAKE_REQUIRED_DEFINITIONS`, `CMAKE_REQUIRED_FLAGS`, `CMAKE_REQUIRED_INCLUDE
cmake: use `cmake_push_check_state()` around feature checks Enclose `CMAKE_EXTRA_INCLUDE_FILES`, `CMAKE_REQUIRED_DEFINITIONS`, `CMAKE_REQUIRED_FLAGS`, `CMAKE_REQUIRED_INCLUDES`, `CMAKE_REQUIRED_LIBRARIES`, `CMAKE_REQUIRED_LINK_OPTIONS`, settings within `cmake_push_check_state()`/`cmake_pop_check_state()` calls. It prevents spilling them into other feature checks. It also replaces manual resets found in some places (which can have the undesired side-effect of destroying values meant for global use.) Cherry-picked from #15157 Closes #15251
show more ...
|
#
9e19a577 |
| 07-Oct-2024 |
Viktor Szakats |
cmake: detect GNU GSS Fix to set `HAVE_GSSGNU` when GNU GSS is detected. Also set the appropriate `pkg-config` dependency and do version detection for the GNU GSS flavour.
cmake: detect GNU GSS Fix to set `HAVE_GSSGNU` when GNU GSS is detected. Also set the appropriate `pkg-config` dependency and do version detection for the GNU GSS flavour. Tested with `pkg-config` and partly tested without. The latter case picks up everything else but, in my env. This is likely not the last word to implement this detection correctly for all build-cases. GNU GSS doesn't seem to have a Homebrew formula and building it locally needs manual tweaks to make finish successfully. Also move a MIT-specific header detection into to MIT-specific `if` branch. Closes #15176
show more ...
|
#
8b091380 |
| 19-Aug-2024 |
Viktor Szakats |
cmake: minor tidy-ups - show `OpenSSL v3+` when detected (as in `./configure`). (this string also makes its way to `curl-config`.) - prefer `unset(VAR)` over `set(VAR)`. Same
cmake: minor tidy-ups - show `OpenSSL v3+` when detected (as in `./configure`). (this string also makes its way to `curl-config`.) - prefer `unset(VAR)` over `set(VAR)`. Same effect, but `unset()` tells the intent unambiguously. https://cmake.org/cmake/help/latest/command/set.html - drop "implementation" from an `option()` description. - FindGSS: replace legacy keyword alias with modern alternative. https://cmake.org/cmake/help/latest/command/get_filename_component.html - move `CURL_STATIC_CRT` logic next to its `option()`. - improve order of `libcurl.pc`/`curl-config` variable init lines. - tests: drop/shorten custom target names. They inflated generated make files by 550KB. Keep target name logic for sync between code snippets. Follow-up to a2ef5d36b3cdec8120a4a9b782d18d58a70d4236 #14660 - clear a variable after use. - restore `STATUS` for `Features:`/`Protocols:` `message()`s: Without it the output goes to stderr, and appears in red in CMake GUI. It doesn't seem possible to show a line on stdout without leading underscores to match `curl -V` and `./configure` output. Partial revert of acbc6b703f6b0ee568d053f6f2565fbc107b5fd3 #14197 - WindowsCache: move `HAVE_LINUX_TCP_H` into the header group. - move strings to the same line as their `STRING` keyword. - formatting in generated code. - delete bogus comment. - unfold lines for readability. - fix a too long line. (for cmakelint) - missing quotes, whitespace, comments. Closes #14610
show more ...
|
#
4f09967a |
| 22-Aug-2024 |
Viktor Szakats |
cmake/FindGSS: bring closer to other Find modules - add pkg-config-specific 'Found' message to the Find module. - update non-pkg-config 'Found' message to show the flavour instead o
cmake/FindGSS: bring closer to other Find modules - add pkg-config-specific 'Found' message to the Find module. - update non-pkg-config 'Found' message to show the flavour instead of the library name. (= the first value listed after `REQUIRED_VARS`) - delete extra 'Found' message from `CMakeLists.txt`. - rename internal result variables to match with default pkg-config names, in preparation of introducing them in other Find modules: - `GSS_LINK_DIRECTORIES` -> `GSS_LIBRARY_DIRS` - `GSS_LINKER_FLAGS` -> `GSS_LDFLAGS` - `GSS_COMPILER_FLAGS` -> `GSS_CFLAGS` Ref: #14652 Closes #14651
show more ...
|
#
dcf5a538 |
| 18-Aug-2024 |
Viktor Szakats |
cmake: fix `cmakelint` warnings - keep line lengths below 132 characters. - fix two "weird indentation" warnings. Reported-by: Dan Fandrich Bug: #14580 Closes #14583
|
#
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 ...
|
#
d8de4806 |
| 15-Aug-2024 |
Viktor Szakats |
cmake: tidy-up continues - move variable dump to a GHA foldable group. - minimize scope for an include(). - rename `HIDES_CURL_PRIVATE_SYMBOLS` to `CURL_HIDES_PRIVATE_SYMBOLS`,
cmake: tidy-up continues - move variable dump to a GHA foldable group. - minimize scope for an include(). - rename `HIDES_CURL_PRIVATE_SYMBOLS` to `CURL_HIDES_PRIVATE_SYMBOLS`, to keep it in the curl namespace. - drop quotes from a version number. - add missing `Makefile.inc` var refs to comment. - FindNGTCP2: rename internal var to underscore/lowercase. - FindBearSSL, FindGSS: whitespace. Closes #14571
show more ...
|
#
db39c668 |
| 14-Aug-2024 |
Viktor Szakats |
cmake: sync up result variable names in Find modules - bearssl, c-ares, gss, libpsl, libssh2, mbedtls: Before this patch these Find modules returned results via `<NAME>_INCLUDE_D
cmake: sync up result variable names in Find modules - bearssl, c-ares, gss, libpsl, libssh2, mbedtls: Before this patch these Find modules returned results via `<NAME>_INCLUDE_DIR` and `<NAME>_LIBRARY`. This patch makes them return `<NAME>_INCLUDE_DIRS` (note the `S`) and `<NAME>_LIBRARIES` like other modules already did. - bearssl, mbedtls: Before this patch these Find modules allowed custom configuration via `<NAME>_INCLUDE_DIRS` (note the `S`). This patch makes them accept `<NAME>_INCLUDE_DIR`, like the rest of the modules did. Deprecate the old variables, but keep accepting them for compatibility. - bearssl: add missing `mark_as_advanced()` call. Closes #14542
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 ...
|
#
a3155db4 |
| 07-Aug-2024 |
Viktor Szakats |
cmake: fix version variable references in FindGSS Assign the value of the variable instead of the name of the variable when detecting GSS version via `pkg-config` on old (?) CMake.
cmake: fix version variable references in FindGSS Assign the value of the variable instead of the name of the variable when detecting GSS version via `pkg-config` on old (?) CMake. (On recent CMake, there is an empty value in these variables.) Closes #14445
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 ...
|
#
14675971 |
| 06-Aug-2024 |
Viktor Szakats |
cmake: fix `pkg-config`-based detection in `FindGSS.cmake` Before this patch `pkg-config`-based detection was ignored, and used solely as a path hint for native detection. - fix
cmake: fix `pkg-config`-based detection in `FindGSS.cmake` Before this patch `pkg-config`-based detection was ignored, and used solely as a path hint for native detection. - fix `pkg_search_module()` result prefix to match what code expects: `_GSS` (was: `_GSS_PKG`). Update variable that were in sync with old prefix. - update the pkg-config codepath to use `_GSS_MODULE_NAME` to detect GSS flavour. This requires CMake 3.16. Otherwise fall back to the old method. (The old method doesn't seem to work anymore (?) as of CMake 3.30.1. Documented `<prefix>_<modulename>_VERSION` variable is defined, but empty.) - update the pkg-config codepath to use `_GSS_VERSION` set by CMake. Resort to the old code when this variable is empty. (The old code doesn't seem to work anymore (?) as of CMake 3.30.1) - fix pkg-config codepath to set the documented result variables. - align native detection variable names with those generated by `pkg_search_module()` in the pkg-config codepath. - GHA/macos: enable GSS Heimdal in a cmake job. Uses the native detection. - GHA/linux: enable GSS Heimdal in cmake and autotools jobs. CMake uses `pkg-config`-based detection. - suppress test 2077 and 2078 results on Linux + Heimdal. ``` FAIL-IGNORED 2077: 'curl --fail --negotiate to unauthenticated service fails' HTTP, HTTP GET, GSS-API FAIL-IGNORED 2078: 'curl --negotiate should not send empty POST request only' HTTP, HTTP GET, GSS-API ``` Failing with valgrind errors in both autotools and cmake builds: https://github.com/curl/curl/actions/runs/10282222581/job/28453472068?pr=14430#step:38:3638 https://github.com/curl/curl/actions/runs/10282222581/job/28453473398?pr=14430#step:38:7831 Closes #14430
show more ...
|
#
82bbb386 |
| 05-Aug-2024 |
Viktor Szakats |
cmake: fix `GSS_VERSION` for Heimdal found via pkg-config Previously used source variable was never defined, possibly due to a copy-paste-edit typo. Closes #14393
|
#
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 ...
|
#
0e176cab |
| 19-May-2024 |
Viktor Szakats |
cmake: whitespace, formatting/tidy-up in comments Also correct casing in a few option descriptions. Closes #13711
|
#
71cc27f0 |
| 09-Jan-2023 |
Marc Aldorasi |
cmake: use list APPEND syntax for CMAKE_REQUIRED_DEFINITIONS - Use list() instead of set() for CMAKE_REQUIRED_DEFINITIONS list since the former is clearer. Closes https://gith
cmake: use list APPEND syntax for CMAKE_REQUIRED_DEFINITIONS - Use list() instead of set() for CMAKE_REQUIRED_DEFINITIONS list since the former is clearer. Closes https://github.com/curl/curl/pull/10272
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
|