summaryrefslogtreecommitdiff
path: root/CMake
Commit message (Collapse)AuthorAgeFilesLines
* cmake: speed up and extend picky clang/gcc optionsViktor Szakats2023-04-161-0/+197
| | | | | | | | | | | | | | | | | | | | Extend existing picky compiler options with ones missing compared to autotools builds. Also sync options between clang and gcc. Redesign the way we enable these options to avoid the slow option detection almost completely. This reduces the number of detections from 35 to zero for clang and 3 for gcc, even after adding a bunch of new options. clang 3.0 (2011-11-29) and gcc 2.95 (1999-07-31) now required. Also show enabled picky options. Ref: https://github.com/libssh2/libssh2/pull/952 Reviewed-by: Daniel Stenberg Closes #10973
* wolfssl: add quic/ngtcp2 detection in cmake, and fix buildsViktor Szakats2023-03-141-1/+1
| | | | | | | | | | | | | | | | | - add QUIC/ngtcp2 detection in CMake with wolfSSL. Because wolfSSL uses zlib if available, move compression detection before TLS detection. (OpenSSL might also need this in the future.) - wolfSSL 5.5.0 started using C99 types in its `quic.h` header, but it doesn't #include the necessary C99 header itself, breaking builds (unless another dependency pulled it by chance.) Add local workaround for it. For this to work with all build tools, we had to fix our header detection first. Ref: #10745 Ref: https://github.com/curl/curl-for-win/commit/6ad5f6ecc15620c15625fc443476b3a1ecef4f3f Closes #10739
* build: fix stdint/inttypes detection with non-autotoolsViktor Szakats2023-03-131-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | Fix `stdint.h` and `inttypes.h` detection with non-autotools builds on Windows. (autotools already auto-detected them accurately.) `lib/config-win32.h` builds (e.g. `Makefile.mk`): - set `HAVE_STDINT_H` where supported. - set `HAVE_INTTYPES_H` for MinGW. CMake: - auto-detect them on Windows. (They were both force-disabled.) - delete unused `CURL_PULL_STDINT_H`. - delete unused `CURL_PULL_INTTYPES_H`. - stop detecting `HAVE_STDINT_H` twice. Present since the initial CMake commit: 4c5307b45655ba75ab066564afdc0c111a8b9291 curl doesn't use these C99 headers, we need them now to workaround broken wolfSSL builds. Ref: #10739 Once that clears up, we can delete these detections and macros (unless we want to keep them for future us.) Reviewed-by: Daniel Stenberg Closes #10745
* cmake: fix dev warning due to mismatched argDmitry Atamanov2023-02-121-2/+2
| | | | | | | | | The package name passed to find_package_handle_standard_args (BROTLI) does not match the name of the calling package (Brotli). This can lead to problems in calling code that expects find_package result variables (e.g., _FOUND) to follow a certain pattern. Closes https://github.com/curl/curl/pull/10471
* cmake: use list APPEND syntax for CMAKE_REQUIRED_DEFINITIONSMarc Aldorasi2023-01-241-2/+2
| | | | | | | - Use list() instead of set() for CMAKE_REQUIRED_DEFINITIONS list since the former is clearer. Closes https://github.com/curl/curl/pull/10272
* copyright: update all copyright lines and remove year rangesDaniel Stenberg2023-01-0324-24/+24
| | | | | | | | | | | | - 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
* OtherTests.cmake: check for cross-compile, not for toolchainDaniel Stenberg2022-11-161-43/+43
| | | | | | | | | | | Build systems like vcpkg alway sets `CMAKE_TOOLCHAIN_FILE` so it should not be used as a sign that this is a cross-compile. Also indented the function correctly. Reported-by: Philip Chan Fixes #9921 Closes #9923
* lib: sync guard for Curl_getaddrinfo_ex() definition and useViktor Szakats2022-11-011-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | `Curl_getaddrinfo_ex()` gets _defined_ with `HAVE_GETADDRINFO` set. But, `hostip4.c` _used_ it with `HAVE_GETADDRINFO_THREADSAFE` set alone. It meant a build with the latter, but without the former flag could result in calling this function but not defining it, and failing to link. Patch this by adding an extra check for `HAVE_GETATTRINFO` around the call. Before this patch, build systems prevented this condition. Now they don't need to. While here, simplify the related CMake logic on Windows by setting `HAVE_GETADDRINFO_THREADSAFE` to the detection result of `HAVE_GETADDRINFO`. This expresses the following intent clearer than the previous patch and keeps the logic in a single block of code: When we have `getaddrinfo()` on Windows, it's always threadsafe. Follow-up to 67d88626d44ec04b9e11dca4cfbf62cd29fe9781 Reviewed-by: Jay Satiro Closes #9734
* tidy-up: process.h detection and useViktor Szakats2022-11-011-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch aims to cleanup the use of `process.h` header and the macro `HAVE_PROCESS_H` associated with it. - `process.h` is always available on Windows. In curl, it is required only for `_beginthreadex()` in `lib/curl_threads.c`. - `process.h` is also available in MS-DOS. In curl, its only use was in `lib/smb.c` for `getpid()`. But `getpid()` is in fact declared by `unistd.h`, which is always enabled via `lib/config-dos.h`. So the header is not necessary. - `HAVE_PROCESS_H` was detected by CMake, forced to 1 on Windows and left to real detection for other platforms. It was also set to always-on in `lib/config-win32.h` and `lib/config-dos.h`. In autotools builds, there was no detection and the macro was never set. Based on these observations, in this patch we: - Rework Windows `getpid` logic in `lib/smb.c` to always use the equivalent direct Win32 API function `GetCurrentProcessId()`, as we already did for Windows UWP apps. This makes `process.h` unnecessary here on Windows. - Stop #including `process.h` into files where it was not necessary. This is everywhere, except `lib/curl_threads.c`. > Strangely enough, `lib/curl_threads.c` compiled fine with autotools > because `process.h` is also indirecty included via `unistd.h`. This > might have been broken in autotools MSVC builds, where the latter > header is missing. - Delete all remaining `HAVE_PROCESS_H` feature guards, for they were unnecessary. - Delete `HAVE_PROCESS_H` detection from CMake and predefined values from `lib/config-*.h` headers. Reviewed-by: Jay Satiro Closes #9703
* cmake: set HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID on WindowsViktor Szakats2022-10-141-0/+1
| | | | | | | | | | | | | | | | | | | | | | | `lib/config-win32.h` enables this configuration option unconditionally. Make it apply to CMake builds as well. While here, delete a broken check for `HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID` from `CMakeLists.txt`. This came with the initial commit [1], but did not include the actual verification code inside `CMake/CurlTests.c`, so it always failed. A later commit [2] added a second test, for non-Windows platforms. Enabling this flag causes test 1056 to fail with CMake builds, as they do with autotools builds. Let's apply the same solution and ignore the results here as well. [1] 4c5307b45655ba75ab066564afdc0c111a8b9291 [2] aec7c5a87c8482b6ddffa352d7d220698652262e Reviewed-by: Daniel Stenberg Assisted-by: Marcel Raad Closes #9726
* cmake: set HAVE_GETADDRINFO_THREADSAFE on WindowsViktor Szakats2022-10-141-0/+1
| | | | | | | | | | | | | | | | | | | | | | autotools enables this configuration option unconditionally for Windows [^1]. Do the same in CMake. The above will make this work for all reasonably recent environments. The logic present in `lib/config-win32.h` [^2] has the following exceptions which we did not cover in this CMake update: - Builds targeting Windows 2000 and earlier - MS Visual C++ 5.0 (1997) and earlier Also make sure to disable this feature when `HAVE_GETADDRINFO` isn't set, to avoid a broken build. We might want to handle that in the C sources in a future commit. [^1]: https://github.com/curl/curl/blob/68fa9bf3f5d7b4fcbb57619f70cb4aabb79a51f6/m4/curl-functions.m4#L2067-L2070 [^2]: https://github.com/curl/curl/blob/68fa9bf3f5d7b4fcbb57619f70cb4aabb79a51f6/lib/config-win32.h#L511-L528 Closes #9727
* cmake: sync HAVE_SIGNAL detection with autotoolsViktor Szakats2022-10-141-2/+1
| | | | | | | | | | | | | | | | | | | | | | | `HAVE_SIGNAL` means the availability of the `signal()` function in autotools, while in CMake it meant the availability of that function _and_ the symbol `SIGALRM`. The latter is not available on Windows, but the function is, which means on Windows, autotools did define `HAVE_SIGNAL`, but CMake did not, introducing a slight difference into the binaries. This patch syncs CMake behaviour with autotools to look for the function only. The logic came with the initial commit adding CMake support to curl, so the commit history doesn't reveal the reason behind it. In any case, it's best to check the existence of `SIGALRM` directly in the source before use. For now, curl builds fine with `HAVE_SIGNAL` enabled and `SIGALRM` missing. Follow-up to 68fa9bf3f5d7b4fcbb57619f70cb4aabb79a51f6 Closes #9725
* cmake: delete duplicate HAVE_GETADDRINFO testViktor Szakats2022-10-141-22/+0
| | | | | | | | | | | | | | A custom `HAVE_GETADDRINFO` check came with the initial CMake commit [1]. A later commit [2] added a standard check for it as well. The standard check run before the custom one, so CMake ignored the latter. The custom check was also non-portable, so this patch deletes it in favor of the standard check. [1] 4c5307b45655ba75ab066564afdc0c111a8b9291 [2] aec7c5a87c8482b6ddffa352d7d220698652262e Closes #9731
* cmake: enable more detection on WindowsViktor Szakats2022-10-111-3/+0
| | | | | | | | | | | | | | | | | | | | Enable `HAVE_UNISTD_H`, `HAVE_STRTOK_R` and `HAVE_STRCASECMP` detection on Windows, instead of having predefined values. With these features detected correctly, CMake Windows builds get closer to the autotools and `config-win32.h` ones. This also fixes detecting `HAVE_FTRUNCATE` correctly, which required `unistd.h`. Fixing `ftruncate()` in turn causes a build warning/error with legacy MinGW/MSYS1 due to an offset type size mismatch. This env misses to detect `HAVE_FILE_OFFSET_BITS`, which may be a reason. This patch force-disables `HAVE_FTRUNCATE` for this platform. Reviewed-by: Daniel Stenberg Closes #9687
* tidy-up: delete parallel/unused feature flagsViktor Szakats2022-10-061-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Detecting headers and lib separately makes sense when headers come in variations or with extra ones, but this wasn't the case here. These were duplicate/parallel macros that we had to keep in sync with each other for a working build. This patch leaves a single macro for each of these dependencies: - Rely on `HAVE_LIBZ`, delete parallel `HAVE_ZLIB_H`. Also delete CMake logic making sure these two were in sync, along with a toggle to turn off that logic, called `CURL_SPECIAL_LIBZ`. Also delete stray `HAVE_ZLIB` defines. There is also a `USE_ZLIB` variant in `lib/config-dos.h`. This patch retains it for compatibility and deprecates it. - Rely on `USE_LIBSSH2`, delete parallel `HAVE_LIBSSH2_H`. Also delete `LIBSSH2_WIN32`, `LIBSSH2_LIBRARY` from `winbuild/MakefileBuild.vc`, these have a role when building libssh2 itself. And `CURL_USE_LIBSSH`, which had no use at all. Also delete stray `HAVE_LIBSSH2` defines. - Rely on `USE_LIBSSH`, delete parallel `HAVE_LIBSSH_LIBSSH_H`. Also delete `LIBSSH_WIN32`, `LIBSSH_LIBRARY` and `HAVE_LIBSSH` from `winbuild/MakefileBuild.vc`, these were the result of copy-pasting the libssh2 line, and were not having any use. - Delete unused `HAVE_LIBPSL_H` and `HAVE_LIBPSL`. Reviewed-by: Daniel Stenberg Closes #9652
* functypes: provide the recv and send arg and return typesDaniel Stenberg2022-09-281-152/+0
| | | | | | | | | | | | This header is for providing the argument types for recv() and send() when built to not use a dedicated config-[platfor].h file. Remove the slow brute-force checks from configure and cmake. This change also removes the use of the types for select, as they were not used in code. Closes #9592
* lib: add required Win32 setup definitions in setup-win32.hMarc Hoersken2022-09-061-11/+0
| | | | | | | | Assisted-by: Jay Satiro Reviewed-by: Marcel Raad Follow up to #9312 Closes #9375
* cmake: fix original MinGW buildsViktor Szakats2022-08-311-5/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1. Re-enable `HAVE_GETADDRINFO` detection on Windows Commit d08ee3c83d6bd416aef62ff844c98e47c4682429 (in 2013) added logic that automatically assumed `getaddrinfo()` to be present for builds with IPv6 enabled. As it turns out, certain toolchains (e.g. original MinGW) by default target older Windows versions, and thus do not support `getaddrinfo()` out of the box. The issue was masked for a while by CMake builds forcing a newer Windows version, but that logic got deleted in commit 8ba22ffb2030ed91312fc8634e29516cdf0a9761. Since then, some CI builds started failing due to IPv6 enabled, `HAVE_GETADDRINFO` set, but `getaddrinfo()` in fact missing. It also turns out that IPv6 works without `getaddrinfo()` since commit 67a08dca27a6a07b36c7f97252e284ca957ff1a5 (from 2019, via #4662). So, to resolve all this, we can now revert the initial commit, thus restoring `getaddrinfo()` detection and support IPv6 regardless of its outcome. Reported-by: Daniel Stenberg 2. Omit `bcrypt` with original MinGW Original (aka legacy/old) MinGW versions do not support `bcrypt` (introduced with Vista). We already have logic to handle that in `lib/rand.c` and autotools builds, where we do not call the unsupported API and do not link `bcrypt`, respectively, when using original MinGW. This patch ports that logic to CMake, fixing the link error: `c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: cannot find -lbcrypt` Ref: https://ci.appveyor.com/project/curlorg/curl/builds/44624888/job/40vle84cn4vle7s0#L508 Regression since 76172511e7adcf720f4c77bd91f49278300ec97e Fixes #9214 Fixes #9393 Fixes #9395 Closes #9396
* cmake: add detection of threadsafe featureMarc Hoersken2022-08-261-0/+47
| | | | | | | | | | Avoids failing test 1014 by replicating configure checks for HAVE_ATOMIC and _WIN32_WINNT with custom CMake tests. Reviewed-by: Marcel Raad Follow up to #8680 Closes #9312
* tidy-up: delete unused build configuration macrosViktor Szakats2022-07-191-26/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Most of them feature guards: - `CURL_INCLUDES_SYS_UIO` [1] - `HAVE_ALLOCA_H` [2] - `HAVE_CRYPTO_CLEANUP_ALL_EX_DATA` (unused since de71e68000c8624ea13f90b136f8734dd0fb1bdc) - `HAVE_DLFCN_H` - `HAVE_DLOPEN` - `HAVE_DOPRNT` - `HAVE_FCNTL` - `HAVE_GETHOSTBYNAME` [3] - `HAVE_GETOPT_H` - `HAVE_GETPASS` - `HAVE_GETPROTOBYNAME` - `HAVE_GETSERVBYNAME` - `HAVE_IDN_FREE*` - `HAVE_INET_ADDR` - `HAVE_IOCTL` - `HAVE_KRB4` - `HAVE_KRB_GET_OUR_IP_FOR_REALM` - `HAVE_KRB_H` - `HAVE_LDAPSSL_H` - `HAVE_LDAP_INIT_FD` - `HAVE_LIBDL` - `HAVE_LIBNSL` - `HAVE_LIBRESOLV*` - `HAVE_LIBUCB` - `HAVE_LL` - `HAVE_LOCALTIME_R` - `HAVE_MALLOC_H` - `HAVE_MEMCPY` - `HAVE_MEMORY_H` - `HAVE_NETINET_IF_ETHER_H` - `HAVE_NI_WITHSCOPEID` - `HAVE_OPENSSL_CRYPTO_H` - `HAVE_OPENSSL_ERR_H` - `HAVE_OPENSSL_PEM_H` - `HAVE_OPENSSL_PKCS12_H` - `HAVE_OPENSSL_RAND_H` - `HAVE_OPENSSL_RSA_H` - `HAVE_OPENSSL_SSL_H` - `HAVE_OPENSSL_X509_H` - `HAVE_PEM_H` - `HAVE_POLL` - `HAVE_RAND_SCREEN` - `HAVE_RAND_STATUS` - `HAVE_RECVFROM` - `HAVE_SETSOCKOPT` - `HAVE_SETVBUF` - `HAVE_SIZEOF_LONG_DOUBLE` - `HAVE_SOCKIO_H` - `HAVE_SOCK_OPTS` - `HAVE_STDIO_H` - `HAVE_STRCASESTR` - `HAVE_STRFTIME` - `HAVE_STRLCAT` - `HAVE_STRNCMPI` - `HAVE_STRNICMP` - `HAVE_STRSTR` - `HAVE_STRUCT_IN6_ADDR` - `HAVE_TLD_H` - `HAVE_TLD_STRERROR` - `HAVE_UNAME` - `HAVE_USLEEP` - `HAVE_WINBER_H` - `HAVE_WRITEV` - `HAVE_X509_H` - `LT_OBJDIR` - `NEED_BASENAME_PROTO` - `NOT_NEED_LIBNSL` - `OPENSSL_NO_KRB5` - `RECVFROM_TYPE*` - `SIZEOF_LONG_DOUBLE` - `STRERROR_R_TYPE_ARG3` - `USE_YASSLEMUL` - `_USRDLL` (from CMake) [4] [1] Related parts in `m4/curl-functions.m4` and `configure.ac` might also be deleted. [2] Related comment can possibly be deleted in `packages/vms/generate_config_vms_h_curl.com`. [3] There are more instances of this in autotools, but I did not dare to touch those. Looked like it's used to detect socket support. [4] This is necessary for MFC (Microsoft Foundation Class) DLLs to force linking MFC components statically to the DLL. `libcurl.dll` does not use MFC, so we can delete this define. Ref: https://docs.microsoft.com/cpp/build/regular-dlls-statically-linked-to-mfc Script that can help finding unused settings like above: ```shell autoheader configure.ac # generate lib/curl_config.h.in { grep -o -E 'set\([A-Z][A-Z0-9_]{3,}' CMake/Platforms/WindowsCache.cmake | sed -E 's|set\(||g' grep -o -E -h '#define +[A-Z][A-Z0-9_]{3,}' lib/config-*.h | sed -E 's|#define +||g' grep -o -E '#cmakedefine +[A-Z][A-Z0-9_]{3,}' lib/curl_config.h.cmake | sed -E 's|#cmakedefine +||g' grep -o -E '#undef +[A-Z][A-Z0-9_]{3,}' lib/curl_config.h.in | sed -E 's|#undef +||g' } | sort -u | grep -v -F 'HEADER_CURL_' | while read -r def; do c="$(git grep -w -F "${def}" | grep -v -E -c '(/libcurl\.tmpl|^lib/config-|^lib/curl_config\.h\.cmake|^CMakeLists\.txt|^CMake/Platforms/WindowsCache\.cmake|^packages/vms/config_h\.com|^m4/curl-functions\.m4|^acinclude\.m4|^configure\.ac)')" if [ "${c}" = '0' ]; then echo "${def}" fi done ``` Reviewed-by: Daniel Stenberg Closes #9044
* cmake: support ngtcp2 boringssl backendDon2022-07-051-1/+1
| | | | | | | | | Update the ngtcp2 find module to detect the boringssl backend. Determine if the underlying OpenSSL implementation is BoringSSL and if so use that as the ngtcp2 backend. Reviewed-by: Jakub Zakrzewski Closes #9065
* copyright: make repository REUSE compliantmax.mehl2022-06-1324-19/+67
| | | | | | | | | | | 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
* cmake: add libpsl supportVincent Torri2022-05-191-0/+43
| | | | | Fixes #8865 Closes #8867
* msh3: add support for QUIC and HTTP/3 using msh3Nick Banks2022-04-101-0/+68
| | | | | | Considered experimental, as the other HTTP/3 backends. Closes #8517
* misc: remove BeOS code and referencesDaniel Stenberg2022-01-171-2/+2
| | | | | | | There has not been a mention of this OS in any commit since December 2004 (58f4af7973e3d2). The OS is also long gone. Closes #8288
* cmake: fix iOS CMake project generation errorFilip Lundgren2022-01-081-3/+3
| | | | Closes #8244
* cmake: prevent dev warning due to mismatched argValentin Richter2022-01-021-2/+2
| | | | | | | | | | | | | | | -- curl version=[7.81.0-DEV] CMake Warning (dev) at /usr/share/cmake-3.22.1/Modules/FindPackageHandleStandardArgs.cmake:438 (message): The package name passed to `find_package_handle_standard_args` (MBEDTLS) does not match the name of the calling package (MbedTLS). This can lead to problems in calling code that expects `find_package` result variables (e.g., `_FOUND`) to follow a certain pattern. Call Stack (most recent call first): deps/curl/CMake/FindMbedTLS.cmake:31 (find_package_handle_standard_args) deps/curl/CMakeLists.txt:473 (find_package) This warning is for project developers. Use -Wno-dev to suppress it. Closes #8207
* CMake: remove `HAVE_WINSOCK_H` definitionMarcel Raad2021-09-292-21/+0
| | | | | | It's not used anymore. Closes https://github.com/curl/curl/pull/7795
* Revert "build: remove checks for WinSock 1"Daniel Stenberg2021-09-292-0/+21
| | | | | | | | Due to CI issues This reverts commit c2ea04f92b00b6271627cb218647527b5a50f2fc. Closes #7790
* build: remove checks for WinSock 1Marcel Raad2021-09-282-21/+0
| | | | | | It's not supported anymore. Closes https://github.com/curl/curl/pull/7778
* cmake: avoid poll() on macOSDaniel Stenberg2021-08-241-0/+4
| | | | | | | | | ... like we do in configure builds. Since poll() on macOS is not reliable enough. Reported-by: marc-groundctl Fixes #7595 Closes #7619
* Get rid of the unused HAVE_SIG_ATOMIC_T et. al.Dan Fandrich2021-07-231-22/+0
| | | | It was added in 2006 but I see no evidence it was ever used.
* misc: copyright year range updatesDaniel Stenberg2021-07-191-1/+1
|
* build: fix IoctlSocket FIONBIO checkAndrea Pappacoda2021-07-161-1/+1
| | | | | | | Prior to this change HAVE_IOCTLSOCKET_CAMEL_FIONBIO mistakenly checked for (lowercase) ioctlsocket when it should have checked for IoctlSocket. Closes https://github.com/curl/curl/pull/7375
* configure/cmake: remove checks for unused gethostbyaddr and gethostbyaddr_rGergely Nagy2021-06-182-45/+5
| | | | Closes #7276
* configure/cmake: remove checks for unused inet_ntoa and inet_ntoa_rGergely Nagy2021-06-182-35/+0
| | | | Closes #7276
* configure/cmake: remove unused define HAVE_PERRORGergely Nagy2021-06-181-1/+0
| | | | Closes #7276
* configure/cmake: remove checks for unused sgtty.hGergely Nagy2021-06-181-1/+0
| | | | Closes #7276
* cmake: try well-known send/recv signature for AppleGregor Jasny2021-06-011-64/+78
| | | | | | | | | | | | | | | | | | | | | | | | The CMake `try_compile` command is especially slow for the Xcode generator. With this patch applied it first tests for the currently used (and Open Group specified) send/recv signature. In case this fails testing falls-back to the permutations. speed-up: ``` time cmake .. -GNinja -DCMAKE_USE_SECTRANSP=ON -DHTTP_ONLY=ON -DCMAKE_USE_LIBSSH2=OFF before: 11.64s user 11.09s system 55% cpu 40.754 total after: 7.84s user 6.57s system 51% cpu 28.074 total ``` ``` time cmake .. -GXcode -DCMAKE_USE_SECTRANSP=ON -DHTTP_ONLY=ON -DCMAKE_USE_LIBSSH2=OFF before: 217.07s user 104.15s system 60% cpu 8:51.79 total after: 108.76s user 51.80s system 58% cpu 4:32.58 total ``` Closes #7158
* configure: remove use of RETSIGTYPEMichael Forney2021-04-072-20/+1
| | | | | | | | | | | This was previously defined by the obsolete AC_TYPE_SIGNAL macro, which was removed in 2682e5f5. The deprecation text says > Your code may safely assume C89 semantics that RETSIGTYPE is void. So, remove it and just use void instead. Closes #6861
* build: delete unused feature guardsViktor Szakats2021-02-231-3/+1
| | | | | | | | | | - `HAVE_STRNCASECMP` - `HAVE_TCGETATTR` - `HAVE_TCSETATTR` Reviewed-by: Jay Satiro Reviewed-by: Daniel Stenberg Closes #6645
* cmake: make CURL_ZLIB a tri-state variableCristian Morales Vega2020-11-191-0/+11
| | | | | | | | | By differentiating between ON and AUTO it can make a missing zlib library a hard error when CURL_ZLIB=ON is used. Reviewed-by: Jakub Zakrzewski Closes #6221 Fixes #6173
* cmake: don't pass -fvisibility=hidden to clang-cl on WindowsTobias Hieta2020-11-101-1/+1
| | | | | | | | | | | | | When using clang-cl on windows -fvisibility=hidden is not an known argument. Instead it behaves exactly like MSVC in this case. So let's make sure we take that path. In CMake clang-cl sets both CMAKE_C_COMPILER_ID=clang and MSVC get's defined since clang-cl is basically a MSVC emulator. So guarding like we do in this patch seems logical. Reviewed-by: Jakub Zakrzewski Closes #6194
* copyright: fix year rangesDaniel Stenberg2020-11-051-1/+1
| | | | Follow-up from 4d2f8006777
* curl.se: new homeDaniel Stenberg2020-11-0422-22/+22
| | | | Closes #6172
* content_encoding: add zstd decoding supportGilles Vollant2020-07-121-0/+69
| | | | | | | | | include zstd curl patch for Makefile.m32 from vszakats and include Add CMake support for zstd from Peter Wu Helped-by: Viktor Szakats Helped-by: Peter Wu Closes #5453
* CMake: add HTTP/3 support (ngtcp2+nghttp3, quiche)Peter Wu2020-05-103-0/+257
| | | | | | | | | | | | | | | | | | | | | | 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
* cmake: Avoid MSVC C4273 warnings in send/recv checksBrad King2020-04-141-0/+6
| | | | | | | | | | | | | | | We use `check_c_source_compiles` to check possible send/recv signatures by reproducing the forward declarations from system headers. On Windows the `winsock2.h` header adds dll linkage settings to its forward declaration. If ours does not match the compiler warns: warning C4273: 'recv': inconsistent dll linkage Add `WINSOCK_API_LINKAGE` to our test signatures when it is defined so that our linkage is consistent with that from `winsock2.h`. Fixes #4764 Closes #5232
* copyright: fix out-of-date copyright ranges and missing headersDaniel Stenberg2020-03-2417-0/+357
| | | | | | | | | 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
* cmake: add support for building with wolfSSLbagder/cmake-wolfsslDaniel Stenberg2020-03-161-0/+13
| | | | | | | | | My working build cmdline: $ cmake -DCMAKE_PREFIX_PATH=$HOME/build-wolfssl -DCMAKE_USE_WOLFSSL=ON . Assisted-by: Brad King Closes #5095