aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
AgeCommit message (Collapse)Author
2020-05-12libcurl.pc: Merge Libs.private into Libs for static-only buildsJames Le Cuirot
A project being built entirely statically will call pkg-config with --static, which utilises the Libs.private field. Conversely it will not use --static when not being built entirely statically, even if there is only a static build of libcurl available. This will most likely cause the build to fail due to underlinking unless we merge the Libs fields. Consider that this is what the Meson build system does when it generates pkg-config files. I have also reflected this in the --libs argument of curl-config even though REQUIRE_LIB_DEPS always seems to be "yes" anyway. Closes #5373
2020-05-12CMake: fix runtests.pl with CMake, add new test targetsPeter Wu
* 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
2020-05-10CMake: add ENABLE_ALT_SVC optionPeter Wu
Tested alt-svc with quiche. While at it, add missing MultiSSL reporting (not tested).
2020-05-10CMake: add HTTP/3 support (ngtcp2+nghttp3, quiche)Peter Wu
Add three new CMake Find modules (using the curl license, but I grant others the right to apply the CMake BSD license instead). This CMake config is simpler than the autotools one because it assumes ngtcp2 and nghttp3 to be used together. Another difference is that this CMake config checks whether QUIC is actually supported by the TLS library (patched OpenSSL or boringssl) since this can be a common configuration mistake that could result in build errors later. Unlike autotools, CMake does not warn you that the features are experimental. The user is supposed to already know that and read the documentation. It requires a very special build environment anyway. Tested with ngtcp2+OpenSSL+nghttp3 and quiche+boringssl, both built from current git master. Use `LD_DEBUG=files src/curl |& grep need` to figure out which features (libldap-2.4, libssh2) to disable due to conflicts with boringssl. Closes #5359
2020-04-14mqtt: add new experimental protocolBjorn Stenberg
Closes #5173
2020-03-30cmake: add CMAKE_MSVC_RUNTIME_LIBRARYRoger Orr
Fixes #5165 Closes #5167
2020-03-24config: remove all defines of HAVE_DES_HDaniel Stenberg
As there's no code using it. Closes #5144
2020-03-16cmake: add support for building with wolfSSLDaniel Stenberg
My working build cmdline: $ cmake -DCMAKE_PREFIX_PATH=$HOME/build-wolfssl -DCMAKE_USE_WOLFSSL=ON . Assisted-by: Brad King Closes #5095
2020-03-03cmake: Show HTTPS-proxy in the features outputJay Satiro
- Show HTTPS-proxy in the features output for those backends that support it: OpenSSL, GnuTLS and NSS. Prior to this change HTTPS-proxy was missing from the cmake features output even if curl was built with it. Only cmake output was affected. Both the library and tool correctly reported the feature. Bug: https://curl.haxx.se/mail/lib-2020-03/0008.html Reported-by: David Lopes Closes https://github.com/curl/curl/pull/5025
2020-02-29CMake: clean up and improve build proceduresRolf Eike Beer
- remove check for unsupported old CMake versions - do not link to c-ares library twice - modernize custom Find modules - FindLibSSH2: - pass version to FPHSA to show it in the output - use LIBSSH2_VERSION define to extract the version number in one shot. This variable exists in the header for 10 years. - remove unneeded code - FindNGHTTP2.cmake: - drop needless FPHSA argument - mark found variables as advanced - FindNSS.cmake: - show version number - FindCARES.cmake: - drop default paths - use FPHSA instead of checking things by hand - remove needless explict variable dereference - simplify count_true() - allow all policies up to version 3.16 to be set to NEW - do not rerun check for -Wstrict-aliasing=3 every time In contrast to every other compiler flag this has a = in it, which CMake can't have in a variable name. - only read the interesting strings from curlver.h Reviewed-by: Peter Wu Closes https://github.com/curl/curl/pull/4975
2020-03-01polarssl: Additional removalSteve Holme
Follow up to 6357a19f. Reviewed-by: Daniel Stenberg Closes #5004
2020-01-20CMake: support specifying the target Windows versionMarcel Raad
Previously, it was only possible to set it to Windows Vista or XP by setting the option `ENABLE_INET_PTON` to `ON` resp. `OFF`. Use a new cache variable `CURL_TARGET_WINDOWS_VERSION` to be able to explicitly set the target Windows version. `ENABLE_INET_PTON` is ignored in this case. Ref: https://github.com/curl/curl/pull/1639#issuecomment-313039352 Ref: https://github.com/curl/curl/pull/4607#issuecomment-557541456 Closes https://github.com/curl/curl/pull/4815
2020-01-14CMake: use check_symbol_exists also for inet_ptonMarcel Raad
It doesn't make much sense to only check if the function can be linked when it's not declared in any header and that is treated as an error. With the correct target Windows version set, the function is declared in ws2tcpip.h and the comment above the modified block is invalid. Also, move the definition of `_WIN32_WINNT` up to before all symbol availability checks so that we don't have to care which ones must be done after it. Tested with Visual Studio 2019 and current MinGW-w64. Closes https://github.com/curl/curl/pull/4808
2020-01-13CMake: Add support for CMAKE_LTO option.Tobias Hieta
This enables Link Time Optimization. LTO is a proven technique for optimizing across compilation units. Closes #4799
2020-01-11cmake: Enable SMB for Windows buildsMarc Aldorasi
- Define USE_WIN32_CRYPTO by default. This enables SMB. - Show whether SMB is enabled in the "Enabled features" output. - Fix mingw compiler warning for call to CryptHashData by casting away const param. mingw CryptHashData prototype is wrong. Closes https://github.com/curl/curl/pull/4717
2019-12-04CMake: add support for building with the NSS vtls backendPeter Wu
Options are cross-checked with configure.ac and acinclude.m4. Tested on Arch Linux, untested on other platforms like Windows or macOS. Closes #4663 Reviewed-by: Kamil Dudka
2019-11-26TLS: add BearSSL vtls implementationMichael Forney
Closes #4597
2019-10-05build: Remove unused HAVE_LIBSSL and HAVE_LIBCRYPTO definesPaul B. Omta
Closes https://github.com/curl/curl/pull/4460
2019-08-31CMake: use platform dependent name for dlopen() libraryRolf Eike Beer
Closes #4279
2019-07-20curl: support parallel transfersDaniel Stenberg
This is done by making sure each individual transfer is first added to a linked list as then they can be performed serially, or at will, in parallel. Closes #3804
2019-07-17cmake: Fix finding Brotli on case-sensitive file systemsaasivov
- Find package "Brotli" instead of "BROTLI" since the former is the casing used for CMake/FindBrotli.cmake, and otherwise find_package may fail on a case-sensitive file system. Fixes https://github.com/curl/curl/issues/4117
2019-06-11Revert "cmake: add SMB to list of disabled protocols if HTTP_ONLY is specified"Daniel Stenberg
This reverts commit 36738caeb78603ce24e3ea089a167b8c216fb938. Apparently several of the appveyor windows builds broke.
2019-06-11cmake: add SMB to list of disabled protocols if HTTP_ONLY is specifiedsergey-raevskiy
Reviewed-by: Jakub Zakrzewski Closes #3770
2019-05-22configure/cmake: check for if_nametoindex()Daniel Stenberg
- adds the check to cmake - fixes the configure check to work for cross-compiled windows builds Closes #3917
2019-05-17libcurl: #ifdef away more code for disabled features/protocolsDaniel Stenberg
2019-04-27cmake: rename CMAKE_USE_DARWINSSL to CMAKE_USE_SECTRANSPSimon Warta
Closes https://github.com/curl/curl/pull/3769
2019-04-10cmake: clear CMAKE_REQUIRED_LIBRARIES after each useJakub Zakrzewski
This fixes GSSAPI builds with the libraries in a non-standard location. The testing for recv() were failing because it failed to link the Kerberos libraries, which are not needed for this or subsequent tests. fixes #3743 closes #3744
2019-04-10cmake: minor cleanupJakub Zakrzewski
- Remove nneeded include_regular_expression. It was setting what is already a default. - Remove duplicated include. - Don't check for pre-3.0.0 CMake version. We already require at least 3.0.0, so it's just clutter. Ref: #3744
2019-04-06cmake: set SSL_BACKENDSSimon Warta
This groups all SSL backends into the feature "SSL" and sets the SSL_BACKENDS analogue to configure.ac Closes https://github.com/curl/curl/pull/3736
2019-04-06cmake: don't run SORT on empty listSimon Warta
In case of an empty list, SORTing leads to the cmake error "list sub-command SORT requires list to be present." Closes https://github.com/curl/curl/pull/3736
2019-01-16cmake: updated check for HAVE_POLL_FINE to match autotoolsSergei Nikulov
2019-01-11cmake: added checks for HAVE_VARIADIC_MACROS_C99 and HAVE_VARIADIC_MACROS_GCCSergei Nikulov
2018-12-24cmake: use lowercase for function name like the rest of the codeRuslan Baratov
Reviewed-by: Sergei Nikulov closes #3196
2018-11-29CMake: fix MIT/Heimdal Kerberos detectionKonstantin Kushnir
- fix syntax error in FindGSS.cmake - correct krb5 include directory. FindGSS exports "GSS_INCLUDE_DIR" variable. Closes https://github.com/curl/curl/pull/3316
2018-11-01axtls: removedDaniel Stenberg
As has been outlined in the DEPRECATE.md document, the axTLS code has been disabled for 6 months and is hereby removed. Use a better supported TLS library! Assisted-by: Daniel Gustafsson Closes #3194
2018-10-30cmake: Remove unused CURL_CONFIG_HAS_BEEN_RUN_BEFORE variableRuslan Baratov
Closes #3191
2018-10-29cmake: uniform ZLIB to use USE_ variable and clean curl-config.cmake.inTuomo Rinne
Closes #3123
2018-10-29cmake: add support for transitive ZLIB targetTuomo Rinne
2018-10-25cmake: remove unused variablesRuslan Baratov
Remove variables: * HAVE_SOCKLEN_T * CURL_SIZEOF_CURL_SOCKLEN_T * CURL_TYPEOF_CURL_SOCKLEN_T Closes #3166
2018-10-11CMake: remove BOMMarcel Raad
Accidentally aded in commit 1bb86057ff07083deeb0b00f8ad35879ec4d03ea. Reported-by: Viktor Szakats Ref: https://github.com/curl/curl/pull/3120#issuecomment-428673136
2018-10-10CMake: disable -Wpedantic-ms-formatMarcel Raad
As done in the autotools build. This is required for MinGW, which supports only %I64 for printing 64-bit values, but warns about it. Closes https://github.com/curl/curl/pull/3120
2018-10-05cmake: test and set missed defines during configurationdmitrykos
Added configuration checks for HAVE_BUILTIN_AVAILABLE and HAVE_CLOCK_GETTIME_MONOTONIC. Closes #3097
2018-10-01CMake: Improve config installationRuslan Baratov
Use 'GNUInstallDirs' standard module to set destinations of installed files. Use uppercase "CURL" names instead of lowercase "curl" to match standard 'FindCURL.cmake' CMake module: * https://cmake.org/cmake/help/latest/module/FindCURL.html Meaning: * Install 'CURLConfig.cmake' instead of 'curl-config.cmake' * User should call 'find_package(CURL)' instead of 'find_package(curl)' Use 'configure_package_config_file' function to generate 'CURLConfig.cmake' file. This will make 'curl-config.cmake.in' template file smaller and handle components better. E.g. current configuration report no error if user specified unknown components (note: new configuration expects no components, report error if user will try to specify any). Closes https://github.com/curl/curl/pull/2849
2018-09-28cmake: Backport to work with CMake 3.0 againBrad King
Changes in commit 7867aaa9a0 (cmake: link curl to the OpenSSL targets instead of lib absolute paths, 2018-07-17) and commit f826b4ce98 (cmake: bumped minimum version to 3.4, 2018-07-19) required CMake 3.4 to fix issue #2746. This broke support for users on older versions of CMake even if they just want to build curl and do not care whether transitive dependencies work. Backport the logic to work with CMake 3.0 again by implementing the fix only when the version of CMake is at least 3.4.
2018-08-08CMake: Respect BUILD_SHARED_LIBSRuslan Baratov
Use standard CMake variable BUILD_SHARED_LIBS instead of introducing custom option CURL_STATICLIB. Use '-DBUILD_SHARED_LIBS=%SHARED%' in appveyor.yml. Reviewed-by: Sergei Nikulov Closes #2755
2018-08-08cmake: bumped minimum version to 3.4John Butterfield
Closes #2753
2018-08-08cmake: link curl to the OpenSSL targets instead of lib absolute pathsJohn Butterfield
Reviewed-by: Jakub Zakrzewski Reviewed-by: Sergei Nikulov Closes #2753
2018-07-17CMake: Update scripts to use consistent styleRuslan Baratov
Closes #2727 Reviewed-by: Sergei Nikulov
2018-07-09CMake: remove redundant and old end-of-block syntaxRuslan Baratov
Reviewed-by: Jakub Zakrzewski Closes #2715
2018-07-06CMake: Remove unused 'output_var' from 'collect_true'Ruslan Baratov
Variable 'output_var' is not used and can be removed. Function 'collect_true' renamed to 'count_true'.