#
0e176cab |
| 19-May-2024 |
Viktor Szakats |
cmake: whitespace, formatting/tidy-up in comments Also correct casing in a few option descriptions. Closes #13711
|
#
f03c8563 |
| 04-Mar-2024 |
Daniel Stenberg |
docs: ascii version of manpage without nroff Create ASCII version of manpage without nroff - build src/tool_hugegelp.c from the ascii manpage - move the the manpage and the as
docs: ascii version of manpage without nroff Create ASCII version of manpage without nroff - build src/tool_hugegelp.c from the ascii manpage - move the the manpage and the ascii version build to docs/cmdline-opts - remove all use of nroff from the build process - should make the build entirely reproducible (by avoiding nroff) - partly reverts 2620aa9 to build libcurl option man pages one by one in cmake because the appveyor builds got all crazy until I did The ASCII version of the manpage - is built with gen.pl, just like the manpage is - has a right-justified column making the appearance similar to the previous version - uses a 4-space indent per level (instead of the old version's 7) - does not do hyphenation of words (which nroff does) History We first made the curl build use nroff for building the hugehelp file in December 1998, for curl 5.2. Closes #13047
show more ...
|
#
a808aab0 |
| 24-Jan-2024 |
Viktor Szakats |
cmake: rework options to enable curl and libcurl docs Rework CMake options for building/using curl tool and libcurl manuals. - rename `ENABLE_MANUAL` to `ENABLE_CURL_MANUAL`, meanin
cmake: rework options to enable curl and libcurl docs Rework CMake options for building/using curl tool and libcurl manuals. - rename `ENABLE_MANUAL` to `ENABLE_CURL_MANUAL`, meaning: to build man page and built-in manual for curl tool. - rename `BUILD_DOCS` to `BUILD_LIBCURL_DOCS`, meaning: to build man pages for libcurl. - `BUILD_LIBCURL_DOCS` now works without having to enable `ENABLE_CURL_MANUAL` too. - drop support for existing CMake-level `USE_MANUAL` option to avoid confusion. (It used to work with the effect of current `ENABLE_CURL_MANUAL`, but only by accident.) Assisted-by: Richard Levitte Ref: #12771 Closes #12773
show more ...
|
#
3ef3eaa2 |
| 02-Oct-2023 |
Daniel Stenberg |
base64: also build for curl Since the tool itself now uses the base64 code using the curlx way, it needs to build also when the tool needs it. Starting now, the tool build defines BU
base64: also build for curl Since the tool itself now uses the base64 code using the curlx way, it needs to build also when the tool needs it. Starting now, the tool build defines BULDING_CURL to allow lib-side code to use it. Follow-up to 2e160c9c6525 Closes #12010
show more ...
|
#
f42a279e |
| 03-Oct-2023 |
Viktor Szakats |
cmake: fix unity with Windows Unicode + TrackMemory Found the root cause of the startup crash in unity builds with Unicode and TrackMemory enabled at the same time. We must make
cmake: fix unity with Windows Unicode + TrackMemory Found the root cause of the startup crash in unity builds with Unicode and TrackMemory enabled at the same time. We must make sure that the `memdebug.h` header doesn't apply to `lib/curl_multibyte.c` (as even noted in a comment there.) In unity builds all headers apply to all sources, including `curl_multibyte.c`. This probably resulted in an infinite loop on startup. Exclude this source from unity compilation with TrackMemory enabled, in both libcurl and curl tool. Enable unity mode for a debug Unicode CI job to keep it tested. Also delete the earlier workaround that fully disabled unity for affected builds. Follow-up to d82b080f6374433ce7c98241329189ad2d3976f8 #12005 Follow-up to 3f8fc25720900b14b7432f4bd93407ca15311719 #11095 Closes #11928
show more ...
|
#
e5bb88b8 |
| 28-Sep-2023 |
Viktor Szakats |
tool: use our own stderr variable Earlier this year we changed our own stderr variable to use the standard name `stderr` (to avoid bugs where someone is using `stderr` instead of the
tool: use our own stderr variable Earlier this year we changed our own stderr variable to use the standard name `stderr` (to avoid bugs where someone is using `stderr` instead of the curl-tool specific variable). This solution needed to override the standard `stderr` symbol via the preprocessor. This in turn didn't play well with unity builds and caused curl tool to crash or stay silent due to an uninitialized stderr. This was a hard to find issue, fixed by manually breaking out one file from the unity sources. To avoid two these two tricks, this patch implements a different solution: Restore using our own local variable for our stderr output and leave `stderr` as-is. To avoid using `stderr` by mistake, add a `checksrc` rule (based on logic we already used in lib for `strerror`) that detects any `stderr` use in `src` and points to using our own variable instead: `tool_stderr`. Follow-up to 06133d3e9b8aeb9e9ca0b3370c246bdfbfc8619e Follow-up to 2f17a9b654121dd1ecf4fc043c6d08a9da3522db Closes #11958
show more ...
|
#
06133d3e |
| 25-Sep-2023 |
Viktor Szakats |
cmake: fix stderr initialization in unity builds Before this patch, in certain build configurations the curl tool may not have displayed anything (debug, macOS), or crashed at startup
cmake: fix stderr initialization in unity builds Before this patch, in certain build configurations the curl tool may not have displayed anything (debug, macOS), or crashed at startup (debug, Windows). Follow-up to 3f8fc25720900b14b7432f4bd93407ca15311719 Necessary after 2f17a9b654121dd1ecf4fc043c6d08a9da3522db Closes #11929
show more ...
|
#
f3303b57 |
| 24-Sep-2023 |
Viktor Szakats |
cmake: fix missing `zlib.h` when compiling `libcurltool` Came up while testing debug/testing build for Windows. I'm not sure why it didn't come up in earlier tests with similar config.
cmake: fix missing `zlib.h` when compiling `libcurltool` Came up while testing debug/testing build for Windows. I'm not sure why it didn't come up in earlier tests with similar config. `tool_hugehelp.c` might indeed require `zlib.h` and without linking `CURL_LIBS` to the `curltool` target, CMake doesn't seem to add detected dependency headers to the compiler command. ``` [ 25%] Building C object src/CMakeFiles/curltool.dir/tool_hugehelp.c.obj cd .../curl/bld-cmake-llvm-x64/src && /usr/local/opt/llvm/bin/clang --target=x86_64-w64-mingw32 --sysroot=/usr/local/opt/mingw-w64/toolchain-x86_64 -DCURLDEBUG -DCURL_STATICLIB -DHAVE_CONFIG_H -DUNICODE -DUNITTESTS -D_UNICODE -I.../curl/include -I.../curl/lib -I.../curl/bld-cmake-llvm-x64/lib -I.../curl/bld-cmake-llvm-x64/include -I.../curl/src -Wno-unused-command-line-argument -D_UCRT -DDEBUGBUILD -DHAS_ALPN -DUSE_MANUAL=1 -fuse-ld=lld -Wl,-s -static-libgcc -lucrt [...] -O3 -DNDEBUG -municode -MD -MT src/CMakeFiles/curltool.dir/tool_hugehelp.c.obj -MF CMakeFiles/curltool.dir/tool_hugehelp.c.obj.d -o CMakeFiles/curltool.dir/tool_hugehelp.c.obj -c .../curl/bld-cmake-llvm-x64/src/tool_hugehelp.c .../curl/bld-cmake-llvm-x64/src/tool_hugehelp.c:6:10: fatal error: 'zlib.h' file not found 6 | #include <zlib.h> | ^~~~~~~~ ``` Follow-up to 39e7c22bb459c2e818f079984989a26a09741860 Closes #11927
show more ...
|
#
4db88d90 |
| 24-Sep-2023 |
Viktor Szakats |
cmake: fix duplicate symbols when linking tests The linker resolves this automatically in non-unity builds. In unity builds the linker cannot drop a single object with the duplicates,
cmake: fix duplicate symbols when linking tests The linker resolves this automatically in non-unity builds. In unity builds the linker cannot drop a single object with the duplicates, resulting in these errors. The root issue is that we started including certain objects both via both libcurlu and libcurltool libs. Regression from 39e7c22bb459c2e818f079984989a26a09741860 Windows errors: ``` [ 3%] Linking C executable unit1303.exe [ 3%] Building C object tests/server/CMakeFiles/rtspd.dir/__/__/lib/curl_multibyte.c.obj ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_convert_UTF8_to_wchar': C:/projects/curl/lib/curl_multibyte.c:44: multiple definition of `curlx_convert_UTF8_to_wchar' ../../src/libcurltool-d.a(unity_0.c.obj):C:/projects/curl/lib/curl_multibyte.c:44: first defined here ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_convert_wchar_to_UTF8': C:/projects/curl/lib/curl_multibyte.c:66: multiple definition of `curlx_convert_wchar_to_UTF8' ../../src/libcurltool-d.a(unity_0.c.obj):C:/projects/curl/lib/curl_multibyte.c:66: first defined here ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_win32_open': C:/projects/curl/lib/curl_multibyte.c:92: multiple definition of `curlx_win32_open' ../../src/libcurltool-d.a(unity_0.c.obj):C:/projects/curl/lib/curl_multibyte.c:92: first defined here ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_win32_fopen': C:/projects/curl/lib/curl_multibyte.c:120: multiple definition of `curlx_win32_fopen' ../../src/libcurltool-d.a(unity_0.c.obj):C:/projects/curl/lib/curl_multibyte.c:120: first defined here ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_win32_stat': [...] ``` Ref: https://ci.appveyor.com/project/curlorg/curl/builds/48110107/job/nvlhpt9aa4ehny5q#L247 macOS errors: ``` [ 56%] Linking C executable unit1302 duplicate symbol '_curlx_sotouz' in: ../../lib/libcurlu.a(unity_0_c.c.o) ../../src/libcurltool.a(unity_0_c.c.o) duplicate symbol '_curlx_sitouz' in: ../../lib/libcurlu.a(unity_0_c.c.o) ../../src/libcurltool.a(unity_0_c.c.o) duplicate symbol '_curlx_uztosz' in: ../../lib/libcurlu.a(unity_0_c.c.o) ../../src/libcurltool.a(unity_0_c.c.o) [...] ``` with config: ``` -DCMAKE_UNITY_BUILD=ON \ -DENABLE_DEBUG=ON -DBUILD_TESTING=ON -DCMAKE_C_FLAGS=-DDEBUGBUILD \ -DBUILD_SHARED_LIBS=ON \ -DBUILD_STATIC_LIBS=OFF ``` Closes #11926
show more ...
|
#
2e160c9c |
| 31-Jul-2023 |
Daniel Stenberg |
tool: add "variable" support Add support for command line variables. Set variables with --variable name=content or --variable name@file (where "file" can be stdin if set to a single
tool: add "variable" support Add support for command line variables. Set variables with --variable name=content or --variable name@file (where "file" can be stdin if set to a single dash (-)). Variable content is expanded in option parameters using "{{name}}" (without the quotes) if the option name is prefixed with "--expand-". This gets the contents of the variable "name" inserted, or a blank if the name does not exist as a variable. Insert "{{" verbatim in the string by prefixing it with a backslash, like "\\{{". Import an environment variable with --variable %name. It makes curl exit with an error if the environment variable is not set. It can also rather get a default value if the variable does not exist, using =content or @file like shown above. Example: get the USER environment variable into the URL: --variable %USER --expand-url = "https://example.com/api/{{USER}}/method" When expanding variables, curl supports a set of functions that can make the variable contents more convenient to use. It can trim leading and trailing white space with "trim", output the contents as a JSON quoted string with "json", URL encode it with "url" and base 64 encode it with "b64". To apply functions to a variable expansion, add them colon separated to the right side of the variable. They are then performed in a left to right order. Example: get the contents of a file called $HOME/.secret into a variable called "fix". Make sure that the content is trimmed and percent-encoded sent as POST data: --variable %HOME=/home/default --expand-variable fix@{{HOME}}/.secret --expand-data "{{fix:trim:url}}" https://example.com/ Documented. Many new test cases. Co-brainstormed-by: Emanuele Torre Assisted-by: Jat Satiro Closes #11346
show more ...
|
#
1199308d |
| 22-Jun-2023 |
Viktor Szakats |
cmake: support building static and shared libcurl in one go This patch adds the ability to build a static and shared libcurl library in a single build session. It also adds an option to
cmake: support building static and shared libcurl in one go This patch adds the ability to build a static and shared libcurl library in a single build session. It also adds an option to select which one to use when building the curl executable. New build options: - `BUILD_STATIC_LIBS`. Default: `OFF`. Enabled automatically if `BUILD_SHARED_LIBS` is `OFF`. - `BUILD_STATIC_CURL`. Default: `OFF`. Requires `BUILD_STATIC_LIBS` enabled. Enabled automatically if building static libcurl only. - `STATIC_LIB_SUFFIX`. Default: empty. - `IMPORT_LIB_SUFFIX`. Default: `_imp` if implib filename would collide with static lib name (typically with MSVC) in Windows builds. Otherwise empty. Also: - Stop setting the `CURL_STATICLIB` macro via `curl_config.h`, and pass it directly to the compiler. This also allows to delete a condition from `tests/server/CMakeLists.txt`. - Complete a TODO by following the logic used in autotools (also for `LIBCURL_NO_SHARED`), and set `-DCURL_STATICLIB` in `Cflags:` of `libcurl.pc` for _static-only_ curl builds. - Convert an existing CI test to build both shared and static libcurl. Closes #11505
show more ...
|
#
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 ...
|
#
3f8fc257 |
| 09-May-2023 |
Viktor Szakats |
cmake: add support for "unity" builds Aka "jumbo" or "amalgamation" builds. It means to compile all sources per target as a single C source. This is experimental. You can enable
cmake: add support for "unity" builds Aka "jumbo" or "amalgamation" builds. It means to compile all sources per target as a single C source. This is experimental. You can enable it by passing `-DCMAKE_UNITY_BUILD=ON` to cmake. It requires CMake 3.16 or newer. It makes builds (much) faster, allows for better optimizations and tends to promote less ambiguous code. Also add a new AppVeyor CI job and convert an existing one to use "unity" mode (one MSVC, one MinGW), and enable it for one macOS CI job. Fix related issues: - add missing include guard to `easy_lock.h`. - rename static variables and functions (and a macro) with names reused across sources, or shadowed by local variables. - add an `#undef` after use. - add a missing `#undef` before use. - move internal definitions from `ftp.h` to `ftp.c`. - `curl_memory.h` fixes to make it work when included repeatedly. - stop building/linking curlx bits twice for a static-mode curl tool. These caused doubly defined symbols in unity builds. - silence missing extern declarations compiler warning for ` _CRT_glob`. - fix extern declarations for `tool_freq` and `tool_isVistaOrGreater`. - fix colliding static symbols in debug mode: `debugtime()` and `statename`. - rename `ssl_backend_data` structure to unique names for each TLS-backend, along with the `ssl_connect_data` struct member referencing them. This required adding casts for each access. - add workaround for missing `[P]UNICODE_STRING` types in certain Windows builds when compiling `lib/ldap.c`. To support "unity" builds, we had to enable `SCHANNEL_USE_BLACKLISTS` for Schannel (a Windows `schannel.h` option) _globally_. This caused an indirect inclusion of Windows `schannel.h` from `ldap.c` via `winldap.h` to have it enabled as well. This requires `[P]UNICODE_STRING` types, which is apperantly not defined automatically (as seen with both MSVS and mingw-w64). This patch includes `<subauth.h>` to fix it. Ref: https://github.com/curl/curl/runs/13987772013 Ref: https://dev.azure.com/daniel0244/curl/_build/results?buildId=15827&view=logs&jobId=2c9f582d-e278-56b6-4354-f38a4d851906&j=2c9f582d-e278-56b6-4354-f38a4d851906&t=90509b00-34fa-5a81-35d7-5ed9569d331c - tweak unity builds to compile `lib/memdebug.c` separately in memory trace builds to avoid PP confusion. - force-disable unity for test programs. - do not compile and link libcurl sources to libtests _twice_ when libcurl is built in static mode. KNOWN ISSUES: - running tests with unity builds may fail in cases. - some build configurations/env may not compile in unity mode. E.g.: https://ci.appveyor.com/project/curlorg/curl/builds/47230972/job/51wfesgnfuauwl8q#L250 Ref: https://github.com/libssh2/libssh2/issues/1034 Ref: https://cmake.org/cmake/help/latest/prop_tgt/UNITY_BUILD.html Ref: https://en.wikipedia.org/wiki/Unity_build Closes #11095
show more ...
|
#
079079b2 |
| 11-Mar-2023 |
Viktor Szakats |
src: silence wmain() warning for all build methods llvm/clang and gcc doesn't recognize the wmain() function in Unicode Windows builds: llvm/clang: ``` ../../src/tool_ma
src: silence wmain() warning for all build methods llvm/clang and gcc doesn't recognize the wmain() function in Unicode Windows builds: llvm/clang: ``` ../../src/tool_main.c:239:5: warning: no previous prototype for function 'wmain' [-Wmissing-prototypes] int wmain(int argc, wchar_t *argv[]) ^ 1 warning generated. ``` gcc: ``` ../../src/tool_main.c:239:5: warning: no previous prototype for 'wmain' [-Wmissing-prototypes] 239 | int wmain(int argc, wchar_t *argv[]) | ^~~~~ ``` Before this patch, we already silenced it with CMake. This patch moves the silencing to the source, so that it applies to all build tools. Bug: https://github.com/curl/curl/issues/7229#issuecomment-1464806651 Reviewed-by: Marcel Raad Closes #10744
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 ...
|
#
b54920f7 |
| 13-Sep-2022 |
Daniel Stenberg |
tool_hugehelp: make hugehelp a blank macro when disabled Closes #9485
|
#
7ac36075 |
| 08-Jul-2022 |
Even Rouault |
CMake: remove APPEND in export(TARGETS) When running cmake several times, new content was appended to already existing generated files, which is not appropriate Reviewed-by: Jak
CMake: remove APPEND in export(TARGETS) When running cmake several times, new content was appended to already existing generated files, which is not appropriate Reviewed-by: Jakub Zakrzewski Closes #9124
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 ...
|
#
2e769766 |
| 26-May-2022 |
Viktor Szakats |
cmake: enable curl.rc for all Windows targets Before this patch, it was only enabled for MSVC. This syncs this configuration with libcurl.rc, which was already included with every Wi
cmake: enable curl.rc for all Windows targets Before this patch, it was only enabled for MSVC. This syncs this configuration with libcurl.rc, which was already included with every Windows compiler. Closes #8918
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 |
|
#
95aea798 |
| 22-Aug-2020 |
Marcel Raad |
CMake: add option to enable Unicode on Windows As already existing for winbuild. Closes https://github.com/curl/curl/pull/5843
|
Revision tags: curl-7_72_0, curl-7_71_1, curl-7_71_0, curl-7_70_0 |
|
#
7fa15784 |
| 09-Apr-2020 |
Nathaniel R. Lewis |
cmake: add aliases so exported target names are available in tree Reviewed-by: Brad King Closes #5206
|