#
9126eb5a |
| 21-Oct-2024 |
Viktor Szakats |
cmake: replace `CURL_*_DIR` with `{PROJECT,CMAKE_CURRENT}_*_DIR` It reduces the number of synonym variables in the code. Makes it easier to grok and grep. - replace `CURL_SOURCE
cmake: replace `CURL_*_DIR` with `{PROJECT,CMAKE_CURRENT}_*_DIR` It reduces the number of synonym variables in the code. Makes it easier to grok and grep. - replace `CURL_SOURCE_DIR` with `PROJECT_SOURCE_DIR`. - replace `CURL_BINARY_DIR` with `PROJECT_BINARY_DIR` or `CMAKE_CURRENT_BINARY_DIR`. - replace a single use of `CMAKE_BINARY_DIR` with `PROJECT_BINARY_DIR`. - replace `CMAKE_CURRENT_*_DIR` with `PROJECT_*_DIR` where it makes the code more uniform. - quote an argument (formatting). Closes #15331
show more ...
|
#
71cf0d1f |
| 02-Sep-2024 |
Viktor Szakats |
tests: speed up builds with single-binary test bundles Add support for single-block binaries that contain all libtests and unit tests respectively. Enable with: - autotools:
tests: speed up builds with single-binary test bundles Add support for single-block binaries that contain all libtests and unit tests respectively. Enable with: - autotools: `--enable-test-bundles` - cmake: `-DCURL_TEST_BUNDLES=ON` (They are compatible with `--enable-unity` and `-DCMAKE_UNITY_BUILD=ON` options, for further speed-up.) Makes libtests and unit tests build _fast_, needing little disk space even in static mode. Similar to CMake unity mode, but with a custom script, also supporting autotools builds. The price is having to deal with symbols/macros colliding between `lib*.c` and `unit*.c` sources. Maybe with naming conventions or other solutions this can be improved gradually and reduce the need for manual intervention by `mk-bundle.mk`. I've included a script that does the bulk of detecting name collisions. Also: - CI: enable test bundles. - CI: build tests in more jobs. - lib2305: fix FILE handle leak. - unit1661: fix memleak found by torture test by releasing the `bufref` structure in `unit_stop()` that was allocated in `unit_setup()`. ``` test 1661...[bufref unit tests] Leak detected: memory still allocated: 13 bytes allocated by /home/runner/work/curl/curl/tests/unit/unit1661.c:70 1661: torture FAILED: function number 1 in test. ``` Ref: https://github.com/curl/curl/actions/runs/10967279334/job/30456745290?pr=14772#step:8:41 Similar test suite builds with autotools default and cmake+bundle+unity: - GHA/Linux: 33s vs 7s https://github.com/curl/curl/actions/runs/10705668823/job/29681617374 - GHA/macOS 34s vs 2s https://github.com/curl/curl/actions/runs/10705668813/job/29681632885 - GHA/FreeBSD: 15m25 vs 6m21 (full workflow time, ~qemu) https://github.com/curl/curl/actions/runs/10705668811/job/29681607915 - GHA/Cygwin: 9m52 vs 32s https://github.com/curl/curl/actions/runs/10705668809/job/29681609965 - GHA/MSYS2: 3m52 vs 14s https://github.com/curl/curl/actions/runs/10705668808/job/29681624295 - GHA/mingw-w64: 5m45 vs 30s https://github.com/curl/curl/actions/runs/10705668808/job/29681628787 Autotools test suite builds compared between master -> `--enable-test-bundles`: - GHA/Linux: 33s -> 9s (run tests: 22m23 -> 20m44) https://github.com/curl/curl/actions/runs/10710030193/job/29695932185 https://github.com/curl/curl/actions/runs/10967831456/job/30458220344 - GHA/macOS: 25s -> 4s (run tests: 2m58 -> 2m24) https://github.com/curl/curl/actions/runs/10710030195/job/29695938444 https://github.com/curl/curl/actions/runs/10967831452/job/30458225762 - GHA/non-native (FreeBSD): 4m8 -> 3m12 (full workflow time, ~qemu) https://github.com/curl/curl/actions/runs/10710030198/job/29695928401 https://github.com/curl/curl/actions/runs/10967831458/job/30458212692 - GHA/Cygwin: 9m25 -> 1m9 (run tests: 9m19 -> 3m28) https://github.com/curl/curl/actions/runs/10710030212/job/29695928213 https://github.com/curl/curl/actions/runs/10967831453/job/30458213268 - GHA/MSYS2: 3m54 -> 32s (run tests: 6m3 -> 3m59) https://github.com/curl/curl/actions/runs/10710030190/job/29704850591 https://github.com/curl/curl/actions/runs/10967831449/job/30459280005 - GHA/mingw-w64: 5m42 -> 1m5 (run tests: 7m41 -> 5m36) https://github.com/curl/curl/actions/runs/10710030190/job/29704852058 https://github.com/curl/curl/actions/runs/10967831449/job/30459280862 - Azure MSYS2 mingw64 openssl: 38m55 -> 11m58 https://dev.azure.com/daniel0244/curl/_build/results?buildId=25546&view=logs&j=b58b8c59-0f61-52e9-0f9e-fad562a1e77f&t=0f9230a7-3b10-53ca-9938-700ece377c5e https://dev.azure.com/daniel0244/curl/_build/results?buildId=25547&view=logs&jobId=39473db1-3945-55d5-deb5-c218fad88dce&j=b58b8c59-0f61-52e9-0f9e-fad562a1e77f&t=0f9230a7-3b10-53ca-9938-700ece377c5e - Azure Ubuntu default: 2m15 -> 55s (all build) https://dev.azure.com/daniel0244/curl/_build/results?buildId=25546&view=logs&j=9d58b9ac-e1e6-53b6-f83a-1f9f1d912522&t=a6b38d83-e7cf-5a9b-c762-a178412717b7 https://dev.azure.com/daniel0244/curl/_build/results?buildId=25547&view=logs&jobId=39473db1-3945-55d5-deb5-c218fad88dce&j=9d58b9ac-e1e6-53b6-f83a-1f9f1d912522&t=a6b38d83-e7cf-5a9b-c762-a178412717b7 Cmake test suite builds compared between master -> `-DCURL_TEST_BUNDLES=ON` + unity: - GHA/Linux: 29s -> 7s (run tests: 4m50 -> 4m57, 20m43 -> 20m45) https://github.com/curl/curl/actions/runs/10710030193/job/29695941814 https://github.com/curl/curl/actions/runs/10705668823/job/29681622201 - GHA/Linux old: 44s -> 13s (bundle+no unity) (run tests: 5m5 -> 5m6) https://github.com/curl/curl/actions/runs/10718264094/job/29719794727 https://github.com/curl/curl/actions/runs/10718653175/job/29721009613 - GHA/macOS: 32s -> 2s (run tests: 2m43 -> 2m40) https://github.com/curl/curl/actions/runs/10710030195/job/29695931956 https://github.com/curl/curl/actions/runs/10705668813/job/29681638937 - GHA/non-native (*BSD): inconclusive (full workflow time, ~qemu) https://github.com/curl/curl/actions/runs/10710030198 https://github.com/curl/curl/actions/runs/10705668811 - GHA/Cygwin: 3m9 -> 32s https://github.com/curl/curl/actions/runs/10710030212/job/29695929075 https://github.com/curl/curl/actions/runs/10705668809/job/29681609965 - GHA/MSYS2: 2m24 -> 14s https://github.com/curl/curl/actions/runs/10710030190/job/29704850996 https://github.com/curl/curl/actions/runs/10705668808/job/29681624295 - GHA/mingw-w64: 3m56 -> 30s (run tests: 4m2 -> 3m52) https://github.com/curl/curl/actions/runs/10710030190/job/29704852219 https://github.com/curl/curl/actions/runs/10705668808/job/29681631393 - GHA/mingw-w64-old: 7m19 -> 1m44 (run tests: 3m30 -> 2m53) https://github.com/curl/curl/actions/runs/10710030190/job/29704849763 https://github.com/curl/curl/actions/runs/10705668808/job/29681622329 - GHA/MSVC: 3m22 -> 13s (run tests: 9m43 -> 4m22) https://github.com/curl/curl/actions/runs/10710030190/job/29704850411 https://github.com/curl/curl/actions/runs/10705668808/job/29681623313 - AppVeyor CI MSVC 2008: 4m3 -> 45s (full build) - AppVeyor CI MSVC 2010: 2m56 -> 1m8 (full build) - AppVeyor CI MSVC 2022: 10m19 -> 2m23 (full build) https://ci.appveyor.com/project/curlorg/curl/builds/50538455 https://ci.appveyor.com/project/curlorg/curl/builds/50536558 - AppVeyor CI total build time: 10m30 (master) -> 6m48 (unity) -> 4m5 (bundle) -> 3m24 (bundle+unity) -> 5m7 (bundle+unity+all jobs building tests) Closes #14772
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 ...
|
#
a2ef5d36 |
| 22-Aug-2024 |
Viktor Szakats |
cmake: sync code between test/example targets - reuse local variable names. - sync `PROJECT_LABEL`, add where missing. - namespace all target names. - bind header directories to
cmake: sync code between test/example targets - reuse local variable names. - sync `PROJECT_LABEL`, add where missing. - namespace all target names. - bind header directories to each target. - tests/server: limit `CURL_STATICLIB` to Windows (as in autotools.) - drop functions with a single caller. Closes #14660
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 ...
|
#
c6fb9895 |
| 06-Aug-2024 |
Viktor Szakats |
cmake: cleanup header paths - sync build-dir/source-dir header path order with autotools, by including build-dir first, then source-dir. This prevents out-of-tree builds breaking
cmake: cleanup header paths - sync build-dir/source-dir header path order with autotools, by including build-dir first, then source-dir. This prevents out-of-tree builds breaking due to leftover generated headers in the source tree. - tests/unit: move `src` ahead of `libtest` in header path, syncing with autotools. - stop adding non-existing generated `include` dir to header path. There are no generated `include` headers and this directory is either missing in out-of-tree builds or the same as the one already added globally via the root `CMakeLists.txt`. - lib: stop adding a duplicate source include directory to the header path. It's already added globally via the root `CMakeLists.txt`. - lib: stop adding the project root to the header path. - docs/examples: drop internal header paths. Examples do not and should not use internal headers. - replace `curl_setup_once.h` in comments with `curl_setup.h`, the header actually used, and also referred to in autotools comments. - add comment why we need `src` in include path for `tests/server`. - add quotes around header directories. Closes #14416
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 ...
|
#
1054c1cc |
| 18-May-2024 |
Viktor Szakats |
cmake: always build unit tests with the `testdeps` target Before this patch, the `testdeps` build target required `-DCURLDEBUG` be set either via `ENABLE_DEBUG=ON` or `ENABLE_CURLDEBUG=O
cmake: always build unit tests with the `testdeps` target Before this patch, the `testdeps` build target required `-DCURLDEBUG` be set either via `ENABLE_DEBUG=ON` or `ENABLE_CURLDEBUG=ON` to build the curl unit tests. After fixing build issues in #13694, we can drop this requirement and build unit tests unconditionally. Depends-on: #13694 Depends-on: #13697 (fix unit test issue revealed by Old Linux CI job) Follow-up to 39e7c22bb459c2e818f079984989a26a09741860 #11446 Closes #13698
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
|
#
4eb4d660 |
| 14-May-2024 |
Viktor Szakats |
tidy-up: whitespace [ci skip]
|
#
39e7c22b |
| 16-Jul-2023 |
Alois Klink |
cmake: add `libcurlu`/`libcurltool` for unit tests Add a `libcurlu`/`libcurltool` static library that is compiled only for unit tests. We use `EXCLUDE_FROM_ALL` to make sure that they're
cmake: add `libcurlu`/`libcurltool` for unit tests Add a `libcurlu`/`libcurltool` static library that is compiled only for unit tests. We use `EXCLUDE_FROM_ALL` to make sure that they're not built by default, they're only built if unit tests are built. These libraries allow us to compile every unit test with CMake. Closes #11446
show more ...
|
#
fc2f1e54 |
| 14-Apr-2023 |
Stefan Eissing |
http2: support HTTP/2 to forward proxies, non-tunneling - with `--proxy-http2` allow h2 ALPN negotiation to forward proxies - applies to http: requests against a https: proxy only,
http2: support HTTP/2 to forward proxies, non-tunneling - with `--proxy-http2` allow h2 ALPN negotiation to forward proxies - applies to http: requests against a https: proxy only, as https: requests will auto-tunnel - adding a HTTP/1 request parser in http1.c - removed h2h3.c - using new request parser in nghttp2 and all h3 backends - adding test 2603 for request parser - adding h2 proxy test cases to test_10_* scorecard.py: request scoring accidentally always run curl with '-v'. Removed that, expect double numbers. labeller: added http1.* and h2-proxy sources to detection Closes #10967
show more ...
|
#
61f52a97 |
| 20-Mar-2023 |
Stefan Eissing |
lib: add `bufq` and `dynhds` Adding `bufq`: - at init() time configured to hold up to `n` chunks of `m` bytes each. - various methods for reading from and writing to it. - `peek`
lib: add `bufq` and `dynhds` Adding `bufq`: - at init() time configured to hold up to `n` chunks of `m` bytes each. - various methods for reading from and writing to it. - `peek` support to get access to buffered data without copy - `pass` support to allow buffer flushing on write if it becomes full - use case: IO buffers for dynamic reads and writes that do not blow up - distinct from `dynbuf` in that: - it maintains a read position - writes on a full bufq return CURLE_AGAIN instead of nuking itself - Init options: - SOFT_LIMIT: allow writes into a full bufq - NO_SPARES: free empty chunks right away - a `bufc_pool` that can keep a number of spare chunks to be shared between different `bufq` instances Adding `dynhds`: - a straightforward list of name+value pairs as used for HTTP headers - headers can be appended dynamically - headers can be removed again - headers can be replaced - headers can be looked up - http/1.1 formatting into a `dynbuf` - configured at init() with limits on header counts and total string sizes - use case: pass a HTTP request or response around without being version specific - express a HTTP request without a curl easy handle (used in h2 proxy tunnels) - future extension possibilities: - conversions of `dynhds` to nghttp2/nghttp3 name+value arrays Closes #10720
show more ...
|
#
13b4d050 |
| 09-Mar-2023 |
Dan Fandrich |
tests: hack to build most unit tests under cmake These are only built when a libcurl static library is available, since we're not building a special libcurlu library yet and these tests
tests: hack to build most unit tests under cmake These are only built when a libcurl static library is available, since we're not building a special libcurlu library yet and these tests rely on private symbols that aren't available in the shared library. A few unit tests do require libcurlu, so those are not built. Closes #10722
show more ...
|
#
a7632213 |
| 09-Mar-2023 |
Dan Fandrich |
tests: keep cmake unit tests names in sync Put only the test names into Makefile.inc so they can be used by both cmake and automake. This will prevent the list of tests from becoming
tests: keep cmake unit tests names in sync Put only the test names into Makefile.inc so they can be used by both cmake and automake. This will prevent the list of tests from becoming out of date when they are also built under cmake.
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 ...
|
#
82d33400 |
| 20-May-2021 |
Daniel Stenberg |
copyright: update copyright year ranges to 2021
|
#
3057c6cd |
| 21-Apr-2021 |
Daniel Stenberg |
Revert "cmake: make libcurl library output name configurable" This reverts commit 1cba36d2166c396f987eea587cf92671b27acb92. CMake provides properties that can be set on a target to
Revert "cmake: make libcurl library output name configurable" This reverts commit 1cba36d2166c396f987eea587cf92671b27acb92. CMake provides properties that can be set on a target to rename the output artifact without changing the name of a target. Ref: #6899
show more ...
|
#
1cba36d2 |
| 15-Apr-2021 |
Ralph Langendam |
cmake: make libcurl library output name configurable Closes #6899
|
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 |
|
#
ad641698 |
| 10-May-2020 |
Peter Wu |
CMake: fix runtests.pl with CMake, add new test targets * runtests.pl: - Fix out-of-tree build under CMake when srcdir is not set. Default srcdir to the location of runte
CMake: fix runtests.pl with CMake, add new test targets * runtests.pl: - Fix out-of-tree build under CMake when srcdir is not set. Default srcdir to the location of runtests.pl. - Add a hack to allow CMake to use the TFLAGS option as documented in tests/README and used in scripts/travis/script.sh. * Bump CMake version to 3.2 for USES_TERMINAL, dropping Debian Jessie support (no one should care, it is already EOL.). * Remove CTest since it defines its own 'test' target with no tests since all unittests are already broken and not built by default. * Add new test targets based on the options from Makefile.am. Since new test targets are rarely added, I opted for duplicating the runtests.pl options as opposed to creating a new Makefile.inc file. Use top-level target names (test-x) instead of x-test since that is used by CI and others. Closes #5358
show more ...
|
#
c2ab2494 |
| 10-May-2020 |
Peter Wu |
CMake: do not build test programs by default The default target should only build libcurl and curl. Add a dedicated 'testdeps' target which will be used later when running tests. Note th
CMake: do not build test programs by default The default target should only build libcurl and curl. Add a dedicated 'testdeps' target which will be used later when running tests. Note that unittests are currently broken in CMake and already excluded. Closes #5368
show more ...
|
Revision tags: 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 ...
|
Revision tags: curl-7_69_1, curl-7_69_0, curl-7_68_0, curl-7_67_0 |
|
#
b7666027 |
| 14-Sep-2019 |
Paul Dreik |
doh: fix (harmless) buffer overrun Added unit test case 1655 to verify. Close #4352 the code correctly finds the flaws in the old code, if one temporarily restores doh.c to
doh: fix (harmless) buffer overrun Added unit test case 1655 to verify. Close #4352 the code correctly finds the flaws in the old code, if one temporarily restores doh.c to the old version.
show more ...
|