diff --git a/README.md b/README.md
index e566de56..cdd9574d 100644
--- a/README.md
+++ b/README.md
@@ -64,7 +64,7 @@ How to build it?
* Step 1: You have to build cURL before building WinGup:
- 1. Open VS2017 Native Tool Command for 32/64 bits. If you want to build for ARM, oprn a cmd, and run the following command:
+ 1. Open VS2017 Native Tool Command for 32/64 bits. If you want to build for ARM, open a cmd, and run the following command:
`C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsamd64_arm64.bat`
2. go to curl winbuild directory:
`cd \curl\winbuild`
diff --git a/curl/.azure-pipelines.yml b/curl/.azure-pipelines.yml
new file mode 100644
index 00000000..63970558
--- /dev/null
+++ b/curl/.azure-pipelines.yml
@@ -0,0 +1,206 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2021, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+# Starter pipeline
+# Start with a minimal pipeline that you can customize to build and deploy your code.
+# Add steps that build, run tests, deploy, and more:
+# https://aka.ms/yaml
+
+trigger:
+ branches:
+ include:
+ - 'master'
+ - '*/ci'
+
+pr:
+ branches:
+ include:
+ - 'master'
+
+stages:
+
+##########################################
+### Linux jobs first
+##########################################
+
+- stage: linux
+ dependsOn: []
+ jobs:
+ - job: ubuntu
+ # define defaults to make sure variables are always expanded/replaced
+ variables:
+ install: ''
+ configure: ''
+ tests: '!433'
+ timeoutInMinutes: 60
+ pool:
+ vmImage: 'ubuntu-latest'
+ strategy:
+ matrix:
+ default:
+ name: default
+ install: jsonlint
+ configure: --enable-debug --with-openssl
+ disable_ipv6:
+ name: w/o IPv6
+ configure: --disable-ipv6 --with-openssl
+ disable_http_smtp_imap:
+ name: w/o HTTP/SMTP/IMAP
+ configure: --disable-http --disable-smtp --disable-imap --without-openssl
+ disable_thredres:
+ name: sync resolver
+ configure: --disable-threaded-resolver --with-openssl
+ https_only:
+ name: HTTPS only
+ configure: --disable-dict --disable-file --disable-ftp --disable-gopher --disable-imap --disable-ldap --disable-pop3 --disable-rtmp --disable-rtsp --disable-scp --disable-sftp --disable-smb --disable-smtp --disable-telnet --disable-tftp --with-openssl
+ torture:
+ name: torture
+ install: libnghttp2-dev
+ configure: --enable-debug --disable-shared --disable-threaded-resolver --with-openssl
+ tests: -n -t --shallow=40 !FTP
+ steps:
+ - script: sudo apt-get update && sudo apt-get install -y stunnel4 python3-impacket libzstd-dev libbrotli-dev $(install)
+ displayName: 'apt install'
+
+ - script: ./buildconf && ./configure --enable-warnings --enable-werror $(configure)
+ displayName: 'configure $(name)'
+
+ - script: make V=1 && cd tests && make V=1
+ displayName: 'compile'
+ env:
+ MAKEFLAGS: "-j 2"
+
+ - script: make test-nonflaky
+ displayName: 'test'
+ env:
+ AZURE_ACCESS_TOKEN: "$(System.AccessToken)"
+ TFLAGS: "-r $(tests)"
+
+##########################################
+### Windows jobs below
+##########################################
+
+- stage: windows
+ dependsOn: []
+ variables:
+ agent.preferPowerShellOnContainers: true
+ jobs:
+ - job: windows
+ # define defaults to make sure variables are always expanded/replaced
+ variables:
+ container_img: ''
+ container_cmd: ''
+ configure: ''
+ tests: ''
+ timeoutInMinutes: 120
+ pool:
+ vmImage: 'windows-2019'
+ strategy:
+ matrix:
+ msys2_mingw32_debug_openssl:
+ name: 32-bit OpenSSL/libssh2
+ container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw32:ltsc2019
+ container_cmd: C:\msys64\usr\bin\sh
+ prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-i686-libssh2
+ configure: --host=i686-w64-mingw32 --build=i686-w64-mingw32 --prefix=/mingw32 --enable-debug --enable-werror --with-libssh2 --with-openssl
+ tests: ~571 ~612 ~1056 ~1299 !SCP
+ msys2_mingw64_debug_openssl:
+ name: 64-bit OpenSSL/libssh2
+ container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw64:ltsc2019
+ container_cmd: C:\msys64\usr\bin\sh
+ prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-x86_64-libssh2
+ configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --with-libssh2 --with-openssl
+ tests: ~571 ~612 ~1056 ~1299 !SCP
+ msys1_mingw_debug:
+ name: 32-bit (legacy)
+ container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys1-mingw:ltsc2019
+ container_cmd: C:\MinGW\msys\1.0\bin\sh
+ configure: --host=i686-pc-mingw32 --build=i686-pc-mingw32 --prefix=/mingw --enable-debug --without-ssl
+ tests: ~203 ~1056 ~1143
+ msys1_mingw32_debug:
+ name: 32-bit w/o zlib
+ container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys1-mingw32:ltsc2019
+ container_cmd: C:\MinGW\msys\1.0\bin\sh
+ configure: --host=i686-w64-mingw32 --build=i686-w64-mingw32 --prefix=/mingw32 --enable-debug --enable-werror --without-zlib --without-ssl
+ tests: ~203 ~1056 ~1143 ~1299
+ msys1_mingw64_debug:
+ name: 64-bit w/o zlib
+ container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys1-mingw64:ltsc2019
+ container_cmd: C:\MinGW\msys\1.0\bin\sh
+ configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --without-zlib --without-ssl
+ tests: ~203 ~1056 ~1143 ~1299
+ msys2_mingw32_debug_schannel:
+ name: 32-bit Schannel/SSPI/WinIDN/libssh2
+ container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw32:ltsc2019
+ container_cmd: C:\msys64\usr\bin\sh
+ prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-i686-libssh2
+ configure: --host=i686-w64-mingw32 --build=i686-w64-mingw32 --prefix=/mingw32 --enable-debug --enable-werror --enable-sspi --with-schannel --with-winidn --with-libssh2
+ tests: ~165 ~310 ~571 ~612 ~1056 ~1299 ~1448 ~2034 ~2037 ~2041 ~2046 ~2047 ~3000 ~3001 !SCP
+ msys2_mingw64_debug_schannel:
+ name: 64-bit Schannel/SSPI/WinIDN/libssh2
+ container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw64:ltsc2019
+ container_cmd: C:\msys64\usr\bin\sh
+ prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-x86_64-libssh2
+ configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --enable-sspi --with-schannel --with-winidn --with-libssh2
+ tests: ~165 ~310 ~571 ~612 ~1056 ~1299 ~1448 ~2034 ~2037 ~2041 ~2046 ~2047 ~3000 ~3001 !SCP
+ msys1_mingw_debug_schannel:
+ name: 32-bit Schannel/SSPI/WinIDN (legacy)
+ container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys1-mingw:ltsc2019
+ container_cmd: C:\MinGW\msys\1.0\bin\sh
+ configure: --host=i686-pc-mingw32 --build=i686-pc-mingw32 --prefix=/mingw --enable-debug --enable-sspi --with-schannel --with-winidn
+ tests: ~203 ~305 ~310 ~311 ~312 ~313 ~404 ~1056 ~1143 ~2034 ~2035 ~2037 ~2038 ~2041 ~2042 ~2048 ~3000 ~3001
+ msys1_mingw32_debug_schannel:
+ name: 32-bit Schannel/SSPI/WinIDN w/o zlib
+ container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys1-mingw32:ltsc2019
+ container_cmd: C:\MinGW\msys\1.0\bin\sh
+ configure: --host=i686-w64-mingw32 --build=i686-w64-mingw32 --prefix=/mingw32 --enable-debug --enable-werror --enable-sspi --with-schannel --with-winidn --without-zlib
+ tests: ~203 ~310 ~1056 ~1143 ~1299 ~2034 ~2037 ~2041 ~3000 ~3001
+ msys1_mingw64_debug_schannel:
+ name: 64-bit Schannel/SSPI/WinIDN w/o zlib
+ container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys1-mingw64:ltsc2019
+ container_cmd: C:\MinGW\msys\1.0\bin\sh
+ configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --enable-sspi --with-schannel --with-winidn --without-zlib
+ tests: ~203 ~310 ~1056 ~1143 ~1299 ~2034 ~2037 ~2041 ~3000 ~3001
+ container:
+ image: $(container_img)
+ env:
+ MSYS2_PATH_TYPE: inherit
+ steps:
+ - script: $(container_cmd) -l -c "cd $(echo '%cd%') && $(prepare)"
+ displayName: 'prepare'
+ condition: variables.prepare
+
+ - script: $(container_cmd) -l -c "cd $(echo '%cd%') && ./buildconf && ./configure $(configure)"
+ displayName: 'configure $(name)'
+
+ - script: $(container_cmd) -l -c "cd $(echo '%cd%') && make V=1 && cd tests && make V=1"
+ displayName: 'compile'
+ env:
+ MAKEFLAGS: "-j 2"
+
+ - script: $(container_cmd) -l -c "cd $(echo '%cd%') && make V=1 install && PATH=/usr/bin:/bin find . -type f -path '*/.libs/*.exe' -print -execdir mv -t .. {} \;"
+ displayName: 'install'
+
+ - script: $(container_cmd) -l -c "cd $(echo '%cd%') && make V=1 test-nonflaky"
+ displayName: 'test'
+ env:
+ AZURE_ACCESS_TOKEN: "$(System.AccessToken)"
+ TFLAGS: "-u -vc /usr/bin/curl.exe -r -rm $(tests)"
diff --git a/curl/.circleci/config.yml b/curl/.circleci/config.yml
new file mode 100644
index 00000000..67372b65
--- /dev/null
+++ b/curl/.circleci/config.yml
@@ -0,0 +1,73 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 2021, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+
+# Use the latest 2.1 version of CircleCI pipeline process engine. See: https://circleci.com/docs/2.0/configuration-reference
+version: 2.1
+
+commands:
+ configure:
+ steps:
+ - run:
+ command: |
+ ./buildconf
+ ./configure --enable-warnings --enable-werror --with-openssl
+
+ build:
+ steps:
+ - run: make
+
+ test:
+ steps:
+ - run: make test-nonflaky
+
+executors:
+ ubuntu:
+ machine:
+ image: ubuntu-2004:202010-01
+
+jobs:
+ basic:
+ executor: ubuntu
+ steps:
+ - checkout
+ - configure
+ - build
+ - test
+
+ arm:
+ machine:
+ image: ubuntu-2004:202101-01
+ resource_class: arm.medium
+ steps:
+ - checkout
+ - configure
+ - build
+ - test
+
+workflows:
+ x86-openssl:
+ jobs:
+ - basic
+
+ arm-openssl:
+ jobs:
+ - arm
diff --git a/curl/.cirrus.yml b/curl/.cirrus.yml
new file mode 100644
index 00000000..1246c2ed
--- /dev/null
+++ b/curl/.cirrus.yml
@@ -0,0 +1,132 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2021, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+# Cirrus CI configuration
+# https://cirrus-ci.com/github/curl/curl
+
+freebsd_task:
+ name: FreeBSD
+
+ matrix:
+ - name: FreeBSD 13.0
+ freebsd_instance:
+ image_family: freebsd-13-0
+ - name: FreeBSD 12.2
+ freebsd_instance:
+ image_family: freebsd-12-2
+ - name: FreeBSD 11.4
+ freebsd_instance:
+ image_family: freebsd-11-4
+
+ env:
+ CIRRUS_CLONE_DEPTH: 10
+ CRYPTOGRAPHY_DONT_BUILD_RUST: 1
+ MAKE_FLAGS: -j 2
+
+ pkginstall_script:
+ - pkg update -f
+ - pkg install -y autoconf automake libtool pkgconf brotli openldap-client heimdal libpsl libssh2 openssh-portable libidn2 librtmp libnghttp2 nghttp2 stunnel
+ - pkg delete -y curl
+ - easy_install "cryptography<3.2"
+ - easy_install "pyOpenSSL<20.0"
+ - easy_install "impacket"
+ configure_script:
+ - ./buildconf
+ # Building with the address sanitizer is causing unexplainable test issues due to timeouts
+ #- case `uname -r` in
+ # 12.2*)
+ # export CC=clang;
+ # export CFLAGS="-fsanitize=address,undefined,signed-integer-overflow -fno-sanitize-recover=undefined,integer -Wformat -Werror=format-security -Werror=array-bounds -g";
+ # export CXXFLAGS="-fsanitize=address,undefined -fno-sanitize-recover=undefined,integer -Wformat -Werror=format-security -Werror=array-bounds -g";
+ # export LDFLAGS="-fsanitize=address,undefined -fno-sanitize-recover=undefined,integer" ;;
+ # esac
+ - ./configure --prefix="${HOME}"/install --enable-debug --with-openssl --with-libssh2 --with-brotli --with-gssapi --with-libidn2 --enable-manual --enable-ldap --enable-ldaps --with-librtmp --with-libpsl --with-nghttp2 || { tail -300 config.log; false; }
+ compile_script:
+ - make V=1 && cd tests && make V=1
+ test_script:
+ # blackhole?
+ - sysctl net.inet.tcp.blackhole
+ # make sure we don't run blackhole != 0
+ - sudo sysctl net.inet.tcp.blackhole=0
+ # Some tests won't run if run as root so run them as another user.
+ # Make directories world writable so the test step can write wherever it needs.
+ - find . -type d -exec chmod 777 {} \;
+ # The OpenSSH server instance for the testsuite cannot be started on FreeBSD,
+ # therefore the SFTP and SCP tests are disabled right away from the beginning.
+ - sudo -u nobody make V=1 TFLAGS="-n -a -p -u !flaky !SFTP !SCP" test-nonflaky
+ install_script:
+ - make V=1 install
+
+windows_task:
+ name: Windows
+ timeout_in: 90m
+ windows_container:
+ image: ${container_img}
+
+ matrix:
+ - name: Windows 32-bit shared/release Schannel/SSPI/WinIDN/libssh2
+ env:
+ container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw32:ltsc2019
+ container_cmd: C:\msys64\usr\bin\sh
+ prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-i686-libssh2
+ configure: --host=i686-w64-mingw32 --build=i686-w64-mingw32 --prefix=/mingw32 --enable-werror --enable-sspi --with-schannel --with-winidn --with-libssh2
+ tests: ~165 ~310 ~571 ~612 ~1056 ~1299 ~1448 ~2034 ~2037 ~2041 ~2046 ~2047 ~3000 ~3001 !SCP
+ - name: Windows 32-bit static/release Schannel/SSPI/WinIDN/libssh2
+ env:
+ container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw32:ltsc2019
+ container_cmd: C:\msys64\usr\bin\sh
+ prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-i686-libssh2
+ configure: --host=i686-w64-mingw32 --build=i686-w64-mingw32 --prefix=/mingw32 --enable-werror --enable-sspi --with-schannel --with-winidn --with-libssh2 --disable-shared --enable-static
+ tests: ~165 ~310 ~571 ~612 ~1056 ~1299 ~1448 ~2034 ~2037 ~2041 ~2046 ~2047 ~3000 ~3001 !SCP
+ curl_LDFLAGS: -all-static
+ PKG_CONFIG: pkg-config --static
+ - name: Windows 64-bit shared/release Schannel/SSPI/WinIDN/libssh2
+ env:
+ container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw64:ltsc2019
+ container_cmd: C:\msys64\usr\bin\sh
+ prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-x86_64-libssh2
+ configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-werror --enable-sspi --with-schannel --with-winidn --with-libssh2
+ tests: ~165 ~310 ~571 ~612 ~1056 ~1299 ~1448 ~2034 ~2037 ~2041 ~2046 ~2047 ~3000 ~3001 !SCP
+ - name: Windows 64-bit static/release Schannel/SSPI/WinIDN/libssh2
+ env:
+ container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw64:ltsc2019
+ container_cmd: C:\msys64\usr\bin\sh
+ prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-x86_64-libssh2
+ configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-werror --enable-sspi --with-schannel --with-winidn --with-libssh2 --disable-shared --enable-static
+ tests: ~165 ~310 ~571 ~612 ~1056 ~1299 ~1448 ~2034 ~2037 ~2041 ~2046 ~2047 ~3000 ~3001 !SCP
+ curl_LDFLAGS: -all-static
+ PKG_CONFIG: pkg-config --static
+
+ env:
+ CIRRUS_CLONE_DEPTH: 10
+ MSYS2_PATH_TYPE: inherit
+ MAKEFLAGS: -j 2
+
+ prepare_script: |
+ %container_cmd% -l -c "cd $(echo '%cd%') && %prepare%"
+ configure_script: |
+ %container_cmd% -l -c "cd $(echo '%cd%') && ./buildconf && ./configure %configure%"
+ compile_script: |
+ %container_cmd% -l -c "cd $(echo '%cd%') && make V=1 && cd tests && make V=1"
+ install_script: |
+ %container_cmd% -l -c "cd $(echo '%cd%') && make V=1 install && PATH=/usr/bin:/bin find . -type f -path '*/.libs/*.exe' -print -execdir mv -t .. {} \;"
+ test_script: |
+ %container_cmd% -l -c "cd $(echo '%cd%') && make V=1 TFLAGS='-u -r -rm %tests%' test-nonflaky"
diff --git a/curl/.dcignore b/curl/.dcignore
new file mode 100644
index 00000000..73b1e716
--- /dev/null
+++ b/curl/.dcignore
@@ -0,0 +1,3 @@
+tests/**
+docs/**
+docs/examples/**
diff --git a/curl/.dir-locals.el b/curl/.dir-locals.el
new file mode 100644
index 00000000..06dc613f
--- /dev/null
+++ b/curl/.dir-locals.el
@@ -0,0 +1,31 @@
+;;;***************************************************************************
+;;; _ _ ____ _
+;;; Project ___| | | | _ \| |
+;;; / __| | | | |_) | |
+;;; | (__| |_| | _ <| |___
+;;; \___|\___/|_| \_\_____|
+;;;
+;;; Copyright (C) 1998 - 2020, Daniel Stenberg, , et al.
+;;;
+;;; This software is licensed as described in the file COPYING, which
+;;; you should have received as part of this distribution. The terms
+;;; are also available at https://curl.se/docs/copyright.html.
+;;;
+;;; You may opt to use, copy, modify, merge, publish, distribute and/or sell
+;;; copies of the Software, and permit persons to whom the Software is
+;;; furnished to do so, under the terms of the COPYING file.
+;;;
+;;; This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+;;; KIND, either express or implied.
+;;;
+;;;***************************************************************************
+;;; Directory Local Variables
+;;; See Info node `(emacs) Directory Variables' for more information.
+
+((nil . ((indent-tabs-mode . nil)
+ (show-trailing-whitespace . t)))
+ (c-mode . ((c-basic-offset . 2)
+ ))
+ (c++-mode . ((c-basic-offset . 2)
+ ))
+ )
diff --git a/curl/.gitattributes b/curl/.gitattributes
new file mode 100644
index 00000000..691da622
--- /dev/null
+++ b/curl/.gitattributes
@@ -0,0 +1,14 @@
+*.dsw -crlf
+buildconf eol=lf
+configure.ac eol=lf
+*.m4 eol=lf
+*.in eol=lf
+*.am eol=lf
+*.sh eol=lf
+*.[ch] whitespace=tab-in-indent
+
+# Batch files (bat,btm,cmd) must be run with CRLF line endings.
+# Refer to https://github.com/curl/curl/pull/6442
+*.bat text eol=crlf
+*.btm text eol=crlf
+*.cmd text eol=crlf
diff --git a/curl/.github/CONTRIBUTING.md b/curl/.github/CONTRIBUTING.md
new file mode 100644
index 00000000..48c2ba0a
--- /dev/null
+++ b/curl/.github/CONTRIBUTING.md
@@ -0,0 +1,23 @@
+How to contribute to curl
+=========================
+
+Join the community
+------------------
+
+ 1. Click 'watch' on the GitHub repo
+
+ 2. Subscribe to the suitable [mailing lists](https://curl.se/mail/)
+
+Read [CONTRIBUTE](../docs/CONTRIBUTE.md)
+---------------------------------------
+
+Send your suggestions using one of these methods:
+-------------------------------------------------
+
+ 1. in a mail to the mailing list
+
+ 2. as a [pull request](https://github.com/curl/curl/pulls)
+
+ 3. as an [issue](https://github.com/curl/curl/issues)
+
+/ The curl team!
diff --git a/curl/.github/FUNDING.yml b/curl/.github/FUNDING.yml
new file mode 100644
index 00000000..cbcc2747
--- /dev/null
+++ b/curl/.github/FUNDING.yml
@@ -0,0 +1,2 @@
+github: curl
+open_collective: curl
diff --git a/curl/.github/ISSUE_TEMPLATE/bug_report.md b/curl/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 00000000..2c1baec8
--- /dev/null
+++ b/curl/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,28 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+
+
+### I did this
+
+### I expected the following
+
+### curl/libcurl version
+
+[curl -V output]
+
+### operating system
+
+
diff --git a/curl/.github/ISSUE_TEMPLATE/config.yml b/curl/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 00000000..b16554c6
--- /dev/null
+++ b/curl/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,11 @@
+blank_issues_enabled: false
+contact_links:
+ - name: Feature request
+ url: https://curl.se/mail/
+ about: To propose new features or enhancements, please bring that discussion to a suitable curl mailing list.
+ - name: Question
+ url: https://curl.se/mail/
+ about: Questions should go to the mailing list
+ - name: Commercial support
+ url: https://curl.se/support.html
+ about: Several companies are offering paid support for curl/libcurl
diff --git a/curl/.github/lock.yml b/curl/.github/lock.yml
new file mode 100644
index 00000000..66e79128
--- /dev/null
+++ b/curl/.github/lock.yml
@@ -0,0 +1,8 @@
+# Configuration for lock-threads - https://github.com/dessant/lock-threads
+
+# Number of days of inactivity before a closed issue or pull request is locked
+daysUntilLock: 90
+# Comment to post before locking. Set to `false` to disable
+lockComment: false
+# Limit to only `issues` or `pulls`
+# only: issues
diff --git a/curl/.github/stale.yml b/curl/.github/stale.yml
new file mode 100644
index 00000000..9bcd4eb1
--- /dev/null
+++ b/curl/.github/stale.yml
@@ -0,0 +1,17 @@
+# Number of days of inactivity before an issue becomes stale
+daysUntilStale: 180
+# Number of days of inactivity before a stale issue is closed
+daysUntilClose: 14
+# Issues with these labels will never be considered stale
+exemptLabels:
+ - pinned
+ - security
+# Label to use when marking an issue as stale
+staleLabel: stale
+# Comment to post when marking an issue as stale. Set to `false` to disable
+markComment: >
+ This issue has been automatically marked as stale because it has not had
+ recent activity. It will be closed if no further activity occurs. Thank you
+ for your contributions.
+# Comment to post when closing a stale issue. Set to `false` to disable
+closeComment: false
diff --git a/curl/.github/workflows/codeql-analysis.yml b/curl/.github/workflows/codeql-analysis.yml
new file mode 100644
index 00000000..5f8b86f2
--- /dev/null
+++ b/curl/.github/workflows/codeql-analysis.yml
@@ -0,0 +1,50 @@
+name: codeql
+
+on:
+ # Trigger the workflow on push or pull requests, but only for the
+ # master branch
+ push:
+ branches:
+ - master
+ - '*/ci'
+ pull_request:
+ branches:
+ - master
+ schedule:
+ - cron: '0 0 * * 4'
+
+permissions:
+ security-events: write
+
+jobs:
+ codeql:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v2
+
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v1
+ with:
+ languages: cpp
+ queries: security-extended
+
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
+ # If this step fails, then you should remove it and run the build manually (see below)
+ - name: Autobuild
+ uses: github/codeql-action/autobuild@v1
+
+ # ℹ️ Command-line programs to run using the OS shell.
+ # 📚 https://git.io/JvXDl
+
+ # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
+ # and modify them (or add more) to build your code if your project
+ # uses a compiled language
+
+ #- run: |
+ # make bootstrap
+ # make release
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v1
diff --git a/curl/.github/workflows/fuzz.yml b/curl/.github/workflows/fuzz.yml
new file mode 100644
index 00000000..fe5dd075
--- /dev/null
+++ b/curl/.github/workflows/fuzz.yml
@@ -0,0 +1,36 @@
+name: Fuzzer
+
+on:
+ # Trigger the workflow on push or pull requests, but only for the
+ # master branch
+ push:
+ branches:
+ - master
+ - '*/ci'
+ pull_request:
+ branches:
+ - master
+
+jobs:
+ fuzzing:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Build Fuzzers
+ uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
+ with:
+ oss-fuzz-project-name: 'curl'
+ dry-run: false
+
+ - name: Run Fuzzers
+ uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
+ with:
+ oss-fuzz-project-name: 'curl'
+ fuzz-seconds: 2400
+ dry-run: false
+
+ - name: Upload Crash
+ uses: actions/upload-artifact@v1
+ if: failure()
+ with:
+ name: artifacts
+ path: ./out/artifacts
diff --git a/curl/.github/workflows/linux-hyper.yml b/curl/.github/workflows/linux-hyper.yml
new file mode 100644
index 00000000..cfff476e
--- /dev/null
+++ b/curl/.github/workflows/linux-hyper.yml
@@ -0,0 +1,48 @@
+name: Linux
+
+on:
+ # Trigger the workflow on push or pull requests, but only for the
+ # master branch
+ push:
+ branches:
+ - master
+ - '*/ci'
+ pull_request:
+ branches:
+ - master
+
+jobs:
+ autotools:
+ name: ${{ matrix.build.name }}
+ runs-on: 'ubuntu-latest'
+ timeout-minutes: 90
+ strategy:
+ fail-fast: false
+ matrix:
+ build:
+ - name: hyper
+ install:
+ configure: --with-openssl --with-hyper=$HOME/hyper
+
+ steps:
+ - run: sudo apt-get install libtool autoconf automake pkg-config
+ name: install prereqs
+
+ - run: (cd $HOME;
+ git clone --depth=1 https://github.com/hyperium/hyper.git;
+ curl https://sh.rustup.rs -sSf | sh -s -- -y;
+ source $HOME/.cargo/env;
+ cd $HOME/hyper;
+ RUSTFLAGS="--cfg hyper_unstable_ffi" cargo build --features client,http1,http2,ffi)
+ name: 'install hyper'
+
+ - uses: actions/checkout@v2
+
+ - run: ./buildconf && LDFLAGS="-Wl,-rpath,$HOME/hyper/target/debug" ./configure --enable-warnings --enable-werror ${{ matrix.build.configure }} && make
+ name: 'configure and build'
+
+ - run: make test-nonflaky
+ name: 'test'
+ env:
+ LD_LIBRARY_PATH: $HOME/hyper/target/debug:/usr/local/lib
+ TFLAGS: "${{ matrix.build.tflags }}"
diff --git a/curl/.github/workflows/macos.yml b/curl/.github/workflows/macos.yml
new file mode 100644
index 00000000..af80da62
--- /dev/null
+++ b/curl/.github/workflows/macos.yml
@@ -0,0 +1,129 @@
+name: macOS
+
+on:
+ # Trigger the workflow on push or pull requests, but only for the
+ # master branch
+ push:
+ branches:
+ - master
+ - '*/ci'
+ pull_request:
+ branches:
+ - master
+
+jobs:
+ autotools:
+ name: ${{ matrix.build.name }}
+ runs-on: 'macos-latest'
+ timeout-minutes: 90
+ strategy:
+ fail-fast: false
+ matrix:
+ build:
+ - name: normal
+ install: nghttp2
+ configure: --without-ssl
+ macosx-version-min: 10.9
+ - name: debug
+ install: nghttp2
+ configure: --enable-debug --without-ssl
+ macosx-version-min: 10.9
+ - name: libssh2
+ install: nghttp2 libssh2
+ configure: --enable-debug --with-libssh2 --without-ssl
+ macosx-version-min: 10.9
+ - name: c-ares
+ install: nghttp2
+ configure: --enable-debug --enable-ares --without-ssl
+ macosx-version-min: 10.9
+ - name: HTTP only
+ install: nghttp2
+ configure: --enable-debug --enable-maintainer-mode --disable-dict --disable-file --disable-ftp --disable-gopher --disable-imap --disable-ldap --disable-pop3 --disable-rtmp --disable-rtsp --disable-scp --disable-sftp --disable-smb --disable-smtp --disable-telnet --disable-tftp --disable-unix-sockets --disable-shared --without-brotli --without-gssapi --without-libidn2 --without-libpsl --without-librtmp --without-libssh2 --without-nghttp2 --without-ntlm-auth --without-ssl --without-zlib
+ macosx-version-min: 10.15
+ - name: SecureTransport http2
+ install: nghttp2
+ configure: --enable-debug --with-secure-transport
+ macosx-version-min: 10.8
+ - name: OpenSSL http2
+ install: nghttp2 openssl
+ configure: --enable-debug --with-openssl=/usr/local/opt/openssl
+ macosx-version-min: 10.9
+ - name: LibreSSL http2
+ install: nghttp2 libressl
+ configure: --enable-debug --with-openssl=/usr/local/opt/libressl
+ macosx-version-min: 10.9
+ - name: torture
+ install: nghttp2 openssl
+ configure: --enable-debug --disable-shared --disable-threaded-resolver --with-openssl=/usr/local/opt/openssl
+ tflags: -n -t --shallow=25 !FTP
+ macosx-version-min: 10.9
+ - name: torture-ftp
+ install: nghttp2 openssl
+ configure: --enable-debug --disable-shared --disable-threaded-resolver --with-openssl=/usr/local/opt/openssl
+ tflags: -n -t --shallow=20 FTP
+ macosx-version-min: 10.9
+ - name: macOS 10.15
+ install: nghttp2 libssh2 openssl
+ configure: --enable-debug --disable-ldap --with-openssl=/usr/local/opt/openssl
+ macosx-version-min: 10.15
+ steps:
+ - run: echo libtool autoconf automake pkg-config ${{ matrix.build.install }} | xargs -Ix -n1 echo brew '"x"' > /tmp/Brewfile
+ name: 'brew bundle'
+
+ - run: brew update && brew bundle install --no-lock --file /tmp/Brewfile
+ name: 'brew install'
+
+ - uses: actions/checkout@v2
+
+ - run: ./buildconf && ./configure --enable-warnings --enable-werror ${{ matrix.build.configure }}
+ name: 'configure'
+ env:
+ # -Wvla is caused by brotli
+ CFLAGS: "-Wno-vla -mmacosx-version-min=${{ matrix.build.macosx-version-min }}"
+
+ - run: make
+ name: 'make'
+
+ - run: make test-nonflaky
+ name: 'test'
+ env:
+ TFLAGS: "${{ matrix.build.tflags }} ~1452"
+
+ cmake:
+ name: cmake ${{ matrix.compiler.CC }} ${{ matrix.build.name }}
+ runs-on: 'macos-latest'
+ env: ${{ matrix.compiler }}
+ strategy:
+ fail-fast: false
+ matrix:
+ compiler:
+ - CC: clang
+ CXX: clang++
+ CFLAGS: "-mmacosx-version-min=10.15 -Wno-deprecated-declarations"
+ - CC: gcc-9
+ CXX: g++-9
+ CFLAGS: "-mmacosx-version-min=10.15 -Wno-error=undef -Wno-error=conversion"
+ build:
+ - name: OpenSSL
+ install: nghttp2 openssl
+ generate: -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON
+ - name: LibreSSL
+ install: nghttp2 libressl
+ generate: -DOPENSSL_ROOT_DIR=/usr/local/opt/libressl -DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON
+ - name: libssh2
+ install: nghttp2 openssl libssh2
+ generate: -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DCMAKE_USE_LIBSSH2=ON
+ steps:
+ - run: echo libtool autoconf automake pkg-config ${{ matrix.build.install }} | xargs -Ix -n1 echo brew '"x"' > /tmp/Brewfile
+ name: 'brew bundle'
+
+ - run: brew update && brew bundle install --no-lock --file /tmp/Brewfile
+ name: 'brew install'
+
+ - uses: actions/checkout@v2
+
+ - run: cmake -H. -Bbuild -DCURL_WERROR=ON -DPICKY_COMPILER=ON ${{ matrix.build.generate }}
+ name: 'cmake generate'
+
+ - run: cmake --build build
+ name: 'cmake build'
diff --git a/curl/.gitignore b/curl/.gitignore
new file mode 100644
index 00000000..e3574714
--- /dev/null
+++ b/curl/.gitignore
@@ -0,0 +1,60 @@
+*.asc
+*.dll
+*.exe
+*.exp
+*.la
+*.lib
+*.lo
+*.o
+*.obj
+*.pdb
+*.pyc
+*~
+.*.sw?
+.cproject
+.deps
+.dirstamp
+.libs
+.project
+.settings
+/.vs
+/build/
+/builds/
+/stats/
+__pycache__
+CHANGES.dist
+Debug
+INSTALL
+Makefile
+Makefile.in
+Release
+TAGS
+aclocal.m4
+aclocal.m4.bak
+autom4te.cache
+compile
+config.cache
+config.guess
+config.log
+config.status
+config.sub
+configure
+curl-*.tar.bz2
+curl-*.tar.gz
+curl-*.tar.xz
+curl-*.zip
+curl-config
+depcomp
+install-sh
+libcurl.pc
+libtool
+ltmain.sh
+missing
+mkinstalldirs
+tags
+test-driver
+scripts/_curl
+scripts/curl.fish
+curl_fuzzer
+curl_fuzzer_seed_corpus.zip
+libstandaloneengine.a
diff --git a/curl/.lgtm.yml b/curl/.lgtm.yml
new file mode 100644
index 00000000..932e9c0b
--- /dev/null
+++ b/curl/.lgtm.yml
@@ -0,0 +1,31 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2021, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+extraction:
+ cpp:
+ prepare:
+ packages: # to avoid confusion with libopenafs-dev which also provides a des.h
+ - libssl-dev
+ after_prepare: # make sure lgtm.com doesn't use CMake (which generates and runs tests)
+ - rm -f CMakeLists.txt
+ - ./buildconf
+ configure: # enable as many optional features as possible
+ command: ./configure --enable-ares --with-libssh2 --with-gssapi --with-librtmp --with-openssl
diff --git a/curl/.mailmap b/curl/.mailmap
new file mode 100644
index 00000000..f9cdeb47
--- /dev/null
+++ b/curl/.mailmap
@@ -0,0 +1,80 @@
+Guenter Knauf
+Gisle Vanem
+Gisle Vanem
+Alessandro Ghedini
+Alessandro Ghedini
+Björn Stenberg
+Björn Stenberg
+Viktor Szakats
+Viktor Szakats
+Daniel Gustafsson
+Daniel Gustafsson
+Linus Nielsen
+Yamada Yasuharu
+Ulion
+Tim Rühsen
+Steve Holme
+Claes Jakobsson
+Sergei Nikulov
+Patrick Monnerat
+Patrick Monnerat
+Patrick Monnerat
+Patrick Monnerat
+Nick Zitzmann
+Peter Wu
+David Woodhouse
+Marcel Raad
+Marcel Raad
+Marcel Raad
+Anthony Bryan
+Travis Burtrum
+Dmitry Kostjuchenko
+Richard Alcock
+Richard Alcock
+Jan Ehrhardt
+Florin Petriuc
+Pavel Pavlov
+Jason Juang
+Carlo Teubner
+Joel Depooter
+Sebastian Mundry
+Rainer Canavan
+Dan Fandrich
+Henrik S. Gaßmann
+Jiří Malák
+Nick Zitzmann
+Kees Dekker
+Max Savenkov
+Daniel Jelinski <30433125+djelinski@users.noreply.github.com>
+Amit Katyal
+Giorgos Oikonomou
+Evgeny Grin
+Peter Pih
+Anton Malov
+Marquis de Muesli
+Kyohei Kadota
+Lucas Pardue
+Massimiliano Fantuzzi
+Niall O'Reilly
+Mohammad Hasbini
+Andrew Ishchuk
+Nicolas Guillier <59726521+nicoguillier@users.noreply.github.com>
+Julian Z
+Jessa Chandler
+Gökhan Şengün
+Svyatoslav Mishyn
+Douglas Steinwand
+James Fuller
+Don J Olmstead
+Nicolas Sterchele
+Sergey Raevskiy
+SecuritySense on github
+Mipsters on github
+Pavel Novikov
+apique13 on github
+Daniel Hwang
+Jon Rumsey
+Tobias Nyholm
+Timur Artikov
+Michał Antoniak <47522782+MAntoniak@users.noreply.github.com>
+Gleb Ivanovsky
diff --git a/curl/.muse/config.toml b/curl/.muse/config.toml
new file mode 100644
index 00000000..4e5b5cc6
--- /dev/null
+++ b/curl/.muse/config.toml
@@ -0,0 +1,3 @@
+ignore = [ "DEAD_STORE" ]
+build = "make"
+setup = ".muse/setup.sh"
diff --git a/curl/.muse/setup.sh b/curl/.muse/setup.sh
new file mode 100644
index 00000000..55872d59
--- /dev/null
+++ b/curl/.muse/setup.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+./buildconf
+./configure
+echo "Ran the setup script for muse including autoconf and executing ./configure"
diff --git a/curl/CHANGES b/curl/CHANGES
index 5043a1f5..3e2cd994 100644
--- a/curl/CHANGES
+++ b/curl/CHANGES
@@ -1,6806 +1,7 @@
- _ _ ____ _
- ___| | | | _ \| |
- / __| | | | |_) | |
- | (__| |_| | _ <| |___
- \___|\___/|_| \_\_____|
+See https://curl.se/changes.html for the edited and human readable online
+version of what has changed over the years in different curl releases.
- Changelog
+Generate a CHANGES file like the one present in every release like this:
-Version 7.56.1 (23 Oct 2017)
-
-Daniel Stenberg (23 Oct 2017)
-- RELEASE-NOTES: 7.56.1
-
-- THANKS: update at 7.56.1 release time
-
-- [Jon DeVree brought this change]
-
- mk-ca-bundle: Remove URL for aurora
-
- Aurora is no longer used by Mozilla
- https://hacks.mozilla.org/2017/04/simplifying-firefox-release-channels/
-
-- [Jon DeVree brought this change]
-
- mk-ca-bundle: Fix URL for NSS
-
- The 'tip' is the most recent branch committed to, this should be
- 'default' like the URLs for the browser are.
-
- Closes #1998
-
-- imap: if a FETCH response has no size, don't call write callback
-
- CVE-2017-1000257
-
- Reported-by: Brian Carpenter and 0xd34db347
- Also detected by OSS-Fuzz: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3586
-
-- ftp: reject illegal IP/port in PASV 227 response
-
- ... by using range checks. Among other things, this avoids an undefined
- behavior for a left shift that could happen on negative or very large
- values.
-
- Closes #1997
-
- Detected by OSS-fuzz: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3694
-
-Patrick Monnerat (20 Oct 2017)
-- test653: check reuse of easy handle after mime data change
-
- See issue #1999
-
-- mime: do not reuse previously computed multipart size
-
- The contents might have changed: size must be recomputed.
-
- Reported-by: moteus on github
- Fixes #1999
-
-- test308: disable if MultiSSL feature enabled
-
- Even if OpenSSL is enabled, it might not be the default backend when
- multi-ssl is enabled, causing the test to fail.
-
-- runtests: support MultiSSL client feature
-
-- vtls: change struct Curl_ssl `close' field name to `close_one'.
-
- On OS/400, `close' is an ASCII system macro that corrupts the code if
- not used in a context not targetting the close() system API.
-
-- os400: add missing symbols in config file.
-
- Also adjust makefile to renamed files and warn about installation dirs mix-up.
-
-- test652: curl_mime_data + base64 encoder with large contents
-
-- mime: limit bas64-encoded lines length to 76 characters
-
-Daniel Stenberg (16 Oct 2017)
-- RELEASE-NOTES: synced with f121575c0
-
-- setopt: range check most long options
-
- ... filter early instead of risking "funny values" having to be dealt
- with elsewhere.
-
-- setopt: avoid integer overflows when setting millsecond values
-
- ... that are multiplied by 1000 when stored.
-
- For 32 bit long systems, the max value accepted (2147483 seconds) is >
- 596 hours which is unlikely to ever be set by a legitimate application -
- and previously it didn't work either, it just caused undefined behavior.
-
- Also updated the man pages for these timeout options to mention the
- return code.
-
- Closes #1938
-
-Viktor Szakats (15 Oct 2017)
-- makefile.m32: allow to override gcc, ar and ranlib
-
- Allow to ovverride certain build tools, making it possible to
- use LLVM/Clang to build curl. The default behavior is unchanged.
- To build with clang (as offered by MSYS2), these settings can
- be used:
-
- CURL_CC=clang
- CURL_AR=llvm-ar
- CURL_RANLIB=llvm-ranlib
-
- Closes https://github.com/curl/curl/pull/1993
-
-- ldap: silence clang warning
-
- Use memset() to initialize a structure to avoid LLVM/Clang warning:
- ldap.c:193:39: warning: missing field 'UserLength' initializer [-Wmissing-field-initializers]
-
- Closes https://github.com/curl/curl/pull/1992
-
-Daniel Stenberg (14 Oct 2017)
-- runtests: use valgrind for torture as well
-
- NOTE: it makes them terribly slow. I recommend only using valgrind for
- specific torture tests or using lots of patience.
-
-- memdebug: trace send, recv and socket
-
- ... to allow them to be included in torture tests too.
-
- closes #1980
-
-- configure: remove the C++ compiler check
-
- ... we used it only for the fuzzer, which we now have in a separate git
- repo.
-
- Closes #1990
-
-Patrick Monnerat (13 Oct 2017)
-- mime: do not call failf() if easy handle is NULL.
-
-Daniel Stenberg (13 Oct 2017)
-- test651: curl_formadd with huge COPYCONTENTS
-
-- mime: fix the content reader to handle >16K data properly
-
- Reported-by: Jeroen Ooms
- Closes #1988
-
-Patrick Monnerat (12 Oct 2017)
-- mime: keep "text/plain" content type if user-specified.
-
- Include test cases in 554, 587, 650.
-
- Fixes https://github.com/curl/curl/issues/1986
-
-- cli tool: use file2memory() to buffer stdin in -F option.
-
- Closes PR https://github.com/curl/curl/pull/1985
-
-- cli tool: reimplement stdin buffering in -F option.
-
- If stdin is not a regular file, its content is memory-buffered to enable
- a possible data "rewind".
- In all cases, stdin data size is determined before real use to avoid
- having an unknown part's size.
-
- --libcurl generated code is left as an unbuffered stdin fread/fseek callback
- part with unknown data size.
-
- Buffering is not supported in deprecated curl_formadd() API.
-
-Daniel Stenberg (12 Oct 2017)
-- winbuild/BUILD.WINDOWS.txt: mention WITH_NGHTTP2
-
-- HELP-US: the label "PR-welcome" is now renamed to "help wanted"
-
- following the new github "standard"
-
-- RELEASE-NOTES: synced with 5505df7d2
-
-Jay Satiro (11 Oct 2017)
-- [Artak Galoyan brought this change]
-
- url: Update current connection SSL verify params in setopt
-
- Now VERIFYHOST, VERIFYPEER and VERIFYSTATUS options change during active
- connection updates the current connection's (i.e.'connectdata'
- structure) appropriate ssl_config (and ssl_proxy_config) structures
- variables, making these options effective for ongoing connection.
-
- This functionality was available before and was broken by the
- following change:
- "proxy: Support HTTPS proxy and SOCKS+HTTP(s)"
- CommitId: cb4e2be7c6d42ca0780f8e0a747cecf9ba45f151.
-
- Bug: https://github.com/curl/curl/issues/1941
-
- Closes https://github.com/curl/curl/pull/1951
-
-Daniel Stenberg (11 Oct 2017)
-- [David Benjamin brought this change]
-
- openssl: don't use old BORINGSSL_YYYYMM macros
-
- Those were temporary things we'd add and remove for our own convenience
- long ago. The last few stayed around for too long as an oversight but
- have since been removed. These days we have a running
- BORINGSSL_API_VERSION counter which is bumped when we find it
- convenient, but 2015-11-19 was quite some time ago, so just check
- OPENSSL_IS_BORINGSSL.
-
- Closes #1979
-
-- test950; verify SMTP with custom request
-
-- ftpserver: support case insensitive commands
-
-- smtp_done: free data before returning (on send failure)
-
- ... as otherwise it could leak that memory.
-
- Detected by OSS-fuzz:
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3600
-
- Assisted-by: Max Dymond
- Closes #1977
-
-- FTP: URL decode path for dir listing in nocwd mode
-
- Reported-by: Zenju on github
-
- Test 244 added to verify
- Fixes #1974
- Closes #1976
-
-- test298: verify --ftp-method nowcwd with URL encoded path
-
- Ref: #1974
-
-- CURLOPT_XFERINFODATA.3: fix duplicate see also
-
-- CURLOPT_NOPROGRESS.3: also refer to xferinfofunction
-
-- FAQ: s/CURLOPT_PROGRESSFUNCTION/CURLOPT_XFERINFOFUNCTION
-
-- openssl: enable PKCS12 support for !BoringSSL
-
- Enable PKCS12 for all non-boringssl builds without relying on configure
- or cmake checks.
-
- Bug: https://curl.haxx.se/mail/lib-2017-10/0007.html
- Reported-by: Christian Schmitz
- Closes #1948
-
-- [Kristiyan Tsaklev brought this change]
-
- curl: don't pass semicolons when parsing Content-Disposition
-
- Test 1422 updated to verify.
-
- Closes #1964
-
-Patrick Monnerat (9 Oct 2017)
-- mime: properly unbind mime structure in curl_mime_free().
-
- This allows freeing a mime structure bound to the easy handle before
- curl_easy_cleanup().
-
- Fixes #1970.
-
-Daniel Stenberg (9 Oct 2017)
-- RTSP: avoid integer overflow on funny RTSP response
-
- ... like a very large non-existing RTSP version number.
-
- Added test 577 to verify.
-
- Detected by OSS-fuzz.
- Closes #1969
-
-Patrick Monnerat (8 Oct 2017)
-- ftpserver: properly reset $ftptargetdir.
-
-- test643: verify curl_mime_subparts() rejects cyclic additions.
-
-- mime: refuse to add subparts to one of their own descendants.
-
- Reported-by: Alexey Melnichuk
- Fixes #1962
-
-- mime: avoid resetting a part's encoder when part's contents change.
-
-- mime: improve unbinding top multipart from easy handle.
-
- Also avoid dangling pointers in referencing parts.
-
-Daniel Stenberg (8 Oct 2017)
-- RELEASE-NOTES: synced with a4c1c75da30af1
-
-- curlver.h: next expected release is 7.57.0
-
-Patrick Monnerat (8 Oct 2017)
-- mime: be tolerant about setting twice the same header list in a part.
-
-- docs: clarify form/mime usage of non-regular data files.
-
-Daniel Stenberg (8 Oct 2017)
-- Revert "multi_done: wait for name resolve to finish if still ongoing"
-
- This reverts commit f3e03f6c0ac52a1bf396e03f7d7e9b5b3b7165fe.
-
- Caused memory leaks in the fuzzer, needs to be done differently.
-
- Disable test 1553 for now too, as it causes memory leaks without this
- commit!
-
-- remove_handle: call multi_done() first, then clear dns cache pointer
-
- Closes #1960
-
-- multi_done: wait for name resolve to finish if still ongoing
-
- ... as we must clean up memory.
-
-- pingpong: return error when trying to send without connection
-
- When imap_done() got called before a connection is setup, it would try
- to "finish up" and dereffed a NULL pointer.
-
- Test case 1553 managed to reproduce. I had to actually use a host name
- to try to resolve to slow it down, as using the normal local server IP
- will make libcurl get a connection in the first curl_multi_perform()
- loop and then the bug doesn't trigger.
-
- Fixes #1953
- Assisted-by: Max Dymond
-
-Dan Fandrich (6 Oct 2017)
-- tests: added flaky keyword to tests 587 and 644
-
- These are around 5% flaky in my Linux x86 autobuilds.
-
-Marcel Raad (6 Oct 2017)
-- vtls: fix warnings with --disable-crypto-auth
-
- When CURL_DISABLE_CRYPTO_AUTH is defined, Curl_none_md5sum's parameters
- are not used.
-
-Daniel Stenberg (6 Oct 2017)
-- multi_cleanup: call DONE on handles that never got that
-
- ... fixes a memory leak with at least IMAP when remove_handle is never
- called and the transfer is abruptly just abandoned early.
-
- Test 1552 added to verify
-
- Detected by OSS-fuzz
- Assisted-by: Max Dymond
- Closes #1954
-
-- [Benbuck Nason brought this change]
-
- strtoofft: Remove extraneous null check
-
- Fixes #1950: curlx_strtoofft() doesn't fully protect against null 'str'
- argument.
-
- Closes #1952
-
-- openssl: fix build without HAVE_OPAQUE_EVP_PKEY
-
- Reported-by: Javier Sixto
- Fixes #1955
- Closes #1956
-
-Viktor Szakats (6 Oct 2017)
-- lib/config-win32.h: let SMB/SMBS be enabled with OpenSSL/NSS
-
- The source code is now prepared to handle the case when both
- Win32 Crypto and OpenSSL/NSS crypto backends are enabled
- at the same time, making it now possible to enable `USE_WIN32_CRYPTO`
- whenever the targeted Windows version supports it. Since this
- matches the minimum Windows version supported by curl
- (Windows 2000), enable it unconditionally for the Win32 platform.
-
- This in turn enables SMB (and SMBS) protocol support whenever
- Win32 Crypto is available, regardless of what other crypto backends
- are enabled.
-
- Ref: https://github.com/curl/curl/pull/1840#issuecomment-325682052
-
- Closes https://github.com/curl/curl/pull/1943
-
-Daniel Stenberg (5 Oct 2017)
-- build: fix --disable-crypto-auth
-
- Reported-by: Wyatt O'Day
- Fixes #1945
- Closes #1947
-
-Jay Satiro (5 Oct 2017)
-- [Nick Zitzmann brought this change]
-
- darwinssl: add support for TLSv1.3
-
- Closes https://github.com/curl/curl/pull/1794
-
-Daniel Stenberg (4 Oct 2017)
-- [Felix Kaiser brought this change]
-
- docs: fix typo in curl_mime_data_cb man page
-
- Closes #1946
-
-Viktor Szakats (4 Oct 2017)
-- lib/Makefile.m32: allow customizing dll suffixes
-
- - New `CURL_DLL_SUFFIX` envvar will add a suffix to the generated
- libcurl dll name. Useful to add `-x64` to 64-bit builds so that
- it can live in the same directory as the 32-bit one. By default
- this is empty.
-
- - New `CURL_DLL_A_SUFFIX` envvar to customize the suffix of the
- generated import library (implib) for libcurl .dll. It defaults
- to `dll`, and it's useful to modify that to `.dll` to have the
- standard naming scheme for mingw-built .dlls, i.e. `libcurl.dll.a`.
-
- Closes https://github.com/curl/curl/pull/1942
-
-Daniel Stenberg (4 Oct 2017)
-- [Max Dymond brought this change]
-
- fuzzer: move to using external curl-fuzzer
-
- Use the external curl-fuzzer repository for fuzzing.
-
- Closes #1923
-
-- failf: skip the sprintf() if there are no consumers
-
- Closes #1936
-
-- ftp: UBsan fixup 'pointer index expression overflowed'
-
- Closes #1939
-
-- RELEASE-PROCEDURE: update the release schedule
-
-Version 7.56.0 (4 Oct 2017)
-
-Daniel Stenberg (4 Oct 2017)
-- RELEASE-NOTES: curl 7.56.0
-
-- THANKS: added new 7.56.0 contributors
-
-Jay Satiro (4 Oct 2017)
-- build-openssl.bat: Warn OpenSSL 1.1.0 not yet supported
-
- Ref: https://github.com/curl/curl/issues/1002
-
-Michael Kaufmann (3 Oct 2017)
-- idn: fix source code comment
-
-- vtls: compare and clone ssl configs properly
-
- Compare these settings in Curl_ssl_config_matches():
- - verifystatus (CURLOPT_SSL_VERIFYSTATUS)
- - random_file (CURLOPT_RANDOM_FILE)
- - egdsocket (CURLOPT_EGDSOCKET)
-
- Also copy the setting "verifystatus" in Curl_clone_primary_ssl_config(),
- and copy the setting "sessionid" unconditionally.
-
- This means that reusing connections that are secured with a client
- certificate is now possible, and the statement "TLS session resumption
- is disabled when a client certificate is used" in the old advisory at
- https://curl.haxx.se/docs/adv_20170419.html is obsolete.
-
- Reviewed-by: Daniel Stenberg
-
- Closes #1917
-
-- proxy: read the "no_proxy" variable only if necessary
-
- Reviewed-by: Daniel Stenberg
-
- Closes #1919
-
-Patrick Monnerat (3 Oct 2017)
-- libcurl-tutorial: add casts in example to avoid compilation warnings.
-
-Daniel Stenberg (3 Oct 2017)
-- examples: bring back curl_formadd-using examples
-
- ... now with a -formadd suffix. While the new mime API is introduced in
- 7.56.0 we must acknowledge that lots of users can't upgrade their curl
- versions immediately.
-
-- test1153: verify quoted double-qoutes in PWD response
-
-- FTP: zero terminate the entry path even on bad input
-
- ... a single double quote could leave the entry path buffer without a zero
- terminating byte. CVE-2017-1000254
-
- Test 1152 added to verify.
-
- Reported-by: Max Dymond
- Bug: https://curl.haxx.se/docs/adv_20171004.html
-
-Jay Satiro (2 Oct 2017)
-- [Sergei Nikulov brought this change]
-
- cmake: disable tests and man generation if perl/nroff not found
-
- Fixes https://github.com/curl/curl/issues/1500
- Reported-by: Jay Satiro
-
- Fixes https://github.com/curl/curl/pull/1662
- Assisted-by: Tom Seddon
- Assisted-by: dpull@users.noreply.github.com
- Assisted-by: elelel@users.noreply.github.com
-
- Closes https://github.com/curl/curl/pull/1924
-
-Patrick Monnerat (2 Oct 2017)
-- libcurl-tutorial: fix two typos.
-
-- TODO: remove deprecated form API items.
-
-- libcurl-tutorial: describe MIME API and deprecate form API.
-
- Include a guide to form/mime API conversion.
-
-Daniel Stenberg (30 Sep 2017)
-- cookie: fix memory leak if path was set twice in header
-
- ... this will let the second occurance override the first.
-
- Added test 1161 to verify.
-
- Reported-by: Max Dymond
- Fixes #1932
- Closes #1933
-
-Dan Fandrich (30 Sep 2017)
-- test650: Use variable replacement to set the host address and port
-
- Otherwise, the test fails when the -b test option is used to set a
- different test port range.
-
-- Set and use more necessary options when some protocols are disabled
-
- When curl and libcurl are built with some protocols disabled, they stop
- setting and receiving some options that don't make sense with those
- protocols. In particular, when HTTP is disabled many options aren't set
- that are used only by HTTP. However, some options that appear to be
- HTTP-only are actually used by other protocols as well (some despite
- having HTTP in the name) and should be set, but weren't. This change now
- causes some of these options to be set and used for more (or for all)
- protocols. In particular, this fixes tests 646 through 649 in an
- HTTP-disabled build, which use the MIME API in the mail protocols.
-
-Daniel Stenberg (29 Sep 2017)
-- test1160: verifies cookie leak for large cookies
-
- The fix done in 20ea22ff735
-
-- cookie: fix memory leak on oversized rejection
-
- Regression brought by 2bc230de63b
-
- Detected by OSS-fuzz: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3513
- Assisted-by: Max Dymond
-
- Closes #1930
-
-- [Anders Bakken brought this change]
-
- connect: fix race condition with happy eyeballs timeout
-
- The timer should be started after conn->connecttime is set. Otherwise
- the timer could expire without this condition being true:
-
- /* should we try another protocol family? */
- if(i == 0 && conn->tempaddr[1] == NULL &&
- curlx_tvdiff(now, conn->connecttime) >= HAPPY_EYEBALLS_TIMEOUT) {
-
- Ref: #1928
-
-Michael Kaufmann (28 Sep 2017)
-- docs: link CURLOPT_CONNECTTIMEOUT and CURLOPT_CONNECTTIMEOUT_MS
-
- Closes #1922
-
-- docs: clarify the use of environment variables for proxy
-
- Closes #1921
-
-- http: add custom empty headers to repeated requests
-
- Closes #1920
-
-- reuse_conn: don't copy flags that are known to be equal
-
- A connection can only be reused if the flags "conn_to_host" and
- "conn_to_port" match. Therefore it is not necessary to copy these flags
- in reuse_conn().
-
- Closes #1918
-
-Daniel Stenberg (27 Sep 2017)
-- curl.h: include on cygwin too
-
- When building with -std=c++14 on cygwin, this header won't be
- automatically included as it otherwise is.
-
- The include decision should ideally be reversed and be
- avoided where that header file doesn't exist.
-
- Reported-by: Ian Fette
- Fixes #1925
-
-- RELEASE-NOTES: synced with d8ab5dc50
-
-Michael Kaufmann (24 Sep 2017)
-- tests: adjust .gitignore for new tests
-
-Jay Satiro (23 Sep 2017)
-- ntlm: move NTLM_NEEDS_NSS_INIT define into core NTLM header
-
- .. and include the core NTLM header in all NTLM-related source files.
-
- Follow up to 6f86022. Since then http_ntlm checks NTLM_NEEDS_NSS_INIT
- but did not include vtls.h where it was defined.
-
- Closes https://github.com/curl/curl/pull/1911
-
-Daniel Stenberg (23 Sep 2017)
-- file_range: avoid integer overflow when figuring out byte range
-
- When trying to bump the value with one and the value is already at max,
- it causes an integer overflow.
-
- Closes #1908
- Detected by oss-fuzz:
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3465
-
- Assisted-by: Max Dymond
-
-Michael Kaufmann (23 Sep 2017)
-- tests: fix a compiler warning in test 643
-
-Jay Satiro (23 Sep 2017)
-- symbols-in-versions: fix CURLSSLSET_NO_BACKENDS entry
-
- - Use spaces instead of tabs as the delimiter.
-
- Follow up to 7c52b12 which added the entry. The entry had used tabs but
- the symbol-scan parser doesn't recognize tabs and would fail the symbol.
-
-Viktor Szakats (22 Sep 2017)
-- metalink: fix NSS issue in MultiSSL builds
-
- In MultiSSL mode (i.e. when more than one SSL backend is compiled
- in), we cannot use the compile time flag `USE_NSS` as indicator that
- the NSS backend is in use. As far as Metalink is concerned, the SSL
- backend is only used for MD5, SHA-1 and SHA-256 calculations,
- therefore one of the available SSL backends is selected at compile
- time, in a strict order of preference.
-
- Let's introduce a new `HAVE_NSS_CONTEXT` constant that can be used
- to determine whether the SSL backend used for Metalink is the NSS
- backend, and use that to guard the code that wants to de-initialize
- the NSS-specific data structure.
-
- Ref: https://github.com/curl/curl/pull/1848
-
-- ntlm: use strict order for SSL backend #if branches
-
- With the recently introduced MultiSSL support multiple SSL backends
- can be compiled into cURL That means that now the order of the SSL
-
- One option would be to use the same SSL backend as was configured
- via `curl_global_sslset()`, however, NTLMv2 support would appear
- to be available only with some SSL backends. For example, when
- eb88d778e (ntlm: Use Windows Crypt API, 2014-12-02) introduced
- support for NTLMv1 using Windows' Crypt API, it specifically did
- *not* introduce NTLMv2 support using Crypt API at the same time.
-
- So let's select one specific SSL backend for NTLM support when
- compiled with multiple SSL backends, using a priority order such
- that we support NTLMv2 even if only one compiled-in SSL backend can
- be used for that.
-
- Ref: https://github.com/curl/curl/pull/1848
-
-Daniel Stenberg (22 Sep 2017)
-- symbols-in-versions: add CURLSSLSET_NO_BACKENDS
-
- ...fixup from b8e0fe19ec
-
-- imap: quote atoms properly when escaping characters
-
- Updates test 800 to verify
-
- Fixes #1902
- Closes #1903
-
-- tests: make the imap server not verify user+password
-
- ... as the test cases themselves do that and it makes it easier to add
- crazy test cases.
-
- Test 800 updated to use user name + password that need quoting.
-
- Test 856 updated to trigger an auth fail differently.
-
- Ref: #1902
-
-- vtls: provide curl_global_sslset() even in non-SSL builds
-
- ... it just returns error:
-
- Bug: https://github.com/curl/curl/commit/1328f69d53f2f2e937696ea954c480412b018451#commitcomment-24470367
- Reported-by: Marcel Raad
-
- Closes #1906
-
-Patrick Monnerat (22 Sep 2017)
-- form/mime: field names are not allowed to contain zero-valued bytes.
-
- Also suppress length argument of curl_mime_name() (names are always
- zero-terminated).
-
-Daniel Stenberg (21 Sep 2017)
-- [Dirk Feytons brought this change]
-
- openssl: only verify RSA private key if supported
-
- In some cases the RSA key does not support verifying it because it's
- located on a smart card, an engine wants to hide it, ...
- Check the flags on the key before trying to verify it.
- OpenSSL does the same thing internally; see ssl/ssl_rsa.c
-
- Closes #1904
-
-Marcel Raad (21 Sep 2017)
-- examples/post-callback: use long for CURLOPT_POSTFIELDSIZE
-
- Otherwise, typecheck-gcc.h warns on MinGW-w64.
-
-Patrick Monnerat (20 Sep 2017)
-- mime: rephrase the multipart output state machine (#1898) ...
-
- ... in hope coverity will like it much.
-
-- mime: fix an explicit null dereference (#1899)
-
-Daniel Stenberg (20 Sep 2017)
-- curl: check fseek() return code and bail on error
-
- Detected by coverity. CID 1418137.
-
-- smtp: fix memory leak in OOM
-
- Regression since ce0881edee
-
- Coverity CID 1418139 and CID 1418136 found it, but it was also seen in
- torture testing.
-
-- RELEASE-NOTES: synced with 5fe85587c
-
-- [Pavel P brought this change]
-
- cookies: use lock when using CURLINFO_COOKIELIST
-
- Closes #1896
-
-- [Max Dymond brought this change]
-
- ossfuzz: changes before merging the generated corpora
-
- Before merging in the oss-fuzz corpora from Google, there are some changes
- to the fuzzer.
- - Add a read corpus script, to display corpus files nicely.
- - Change the behaviour of the fuzzer so that TLV parse failures all now
- go down the same execution paths, which should reduce the size of the
- corpora.
- - Make unknown TLVs a failure to parse, which should decrease the size
- of the corpora as well.
-
- Closes #1881
-
-- mime:escape_string minor clarification change
-
- ... as it also removes a warning with old gcc versions.
-
- Bug: https://curl.haxx.se/mail/lib-2017-09/0049.html
- Reported-by: Ben Greear
-
-- [Max Dymond brought this change]
-
- ossfuzz: don't write out to stdout
-
- Don't make the fuzzer write out to stdout - instead write some of the
- contents to a memory block so we exercise the data output code but
- quietly.
-
- Closes #1885
-
-- cookies: reject oversized cookies
-
- ... instead of truncating them.
-
- There's no fixed limit for acceptable cookie names in RFC 6265, but the
- entire cookie is said to be less than 4096 bytes (section 6.1). This is
- also what browsers seem to implement.
-
- We now allow max 5000 bytes cookie header. Max 4095 bytes length per
- cookie name and value. Name + value together may not exceed 4096 bytes.
-
- Added test 1151 to verify
-
- Bug: https://curl.haxx.se/mail/lib-2017-09/0062.html
- Reported-by: Kevin Smith
-
- Closes #1894
-
-- travis: on mac, don't install openssl or libidn
-
- - openssl is already installed and causes warnings when trying to
- install again
-
- - libidn isn't used these days, and homebrew doesn't seem to have a
- libidn2 package to replace with easily
-
- Closes #1895
-
-- curl: make str2udouble not return values on error
-
- ... previously it would store a return value even when it returned
- error, which could make the value get used anyway!
-
- Reported-by: Brian Carpenter
- Closes #1893
-
-Jay Satiro (18 Sep 2017)
-- socks: fix incorrect port number in SOCKS4 error message
-
- Prior to this change it appears the SOCKS5 port parsing was erroneously
- used for the SOCKS4 error message, and as a result an incorrect port
- would be shown in the error message.
-
- Bug: https://github.com/curl/curl/issues/1892
- Reported-by: Jackarain@users.noreply.github.com
-
-- [Marc Aldorasi brought this change]
-
- schannel: Support partial send for when data is too large
-
- Schannel can only encrypt a certain amount of data at once. Instead of
- failing when too much data is to be sent at once, send as much data as
- we can and let the caller send the remaining data by calling send again.
-
- Bug: https://curl.haxx.se/mail/lib-2014-07/0033.html
-
- Closes https://github.com/curl/curl/pull/1890
-
-- [David Benjamin brought this change]
-
- openssl: add missing includes
-
- lib/vtls/openssl.c uses OpenSSL APIs from BUF_MEM and BIO APIs. Include
- their headers directly rather than relying on other OpenSSL headers
- including things.
-
- Closes https://github.com/curl/curl/pull/1891
-
-Daniel Stenberg (15 Sep 2017)
-- conversions: fix several compiler warnings
-
-- server/getpart: provide dummy function to build conversion enabled
-
-- non-ascii: use iconv() with 'char **' argument
-
- Bug: https://curl.haxx.se/mail/lib-2017-09/0031.html
-
-- escape.c: error: pointer targets differ in signedness
-
-- docs: clarify the CURLOPT_INTERLEAVE* options behavior
-
-- [Max Dymond brought this change]
-
- rtsp: Segfault in rtsp.c when using WRITEDATA
-
- If the INTERLEAVEFUNCTION is defined, then use that plus the
- INTERLEAVEDATA information when writing RTP. Otherwise, use
- WRITEFUNCTION and WRITEDATA.
-
- Fixes #1880
- Closes #1884
-
-Marcel Raad (15 Sep 2017)
-- [Isaac Boukris brought this change]
-
- tests: enable gssapi in travis-ci linux build
-
- Closes https://github.com/curl/curl/pull/1687
-
-- [Isaac Boukris brought this change]
-
- tests: add initial gssapi test using stub implementation
-
- The stub implementation is pre-loaded using LD_PRELOAD
- and emulates common gssapi uses (only builds if curl is
- initially built with gssapi support).
-
- The initial tests are currently disabled for debug builds
- as LD_PRELOAD is not used then.
-
- Ref: https://github.com/curl/curl/pull/1687
-
-Daniel Stenberg (15 Sep 2017)
-- test1150: verify same host fetch using different ports over proxy
-
- Closes #1889
-
-- URL: on connection re-use, still pick the new remote port
-
- ... as when a proxy connection is being re-used, it can still get a
- different remote port.
-
- Fixes #1887
- Reported-by: Oli Kingshott
-
-- RELEASE-NOTES: synced with 87501e57f
-
-- code style: remove wrong uses of multiple spaces
-
- Closes #1878
-
-- checksrc: detect and warn for multiple spaces
-
-- code style: use space after semicolon
-
-- checksrc: verify space after semicolons
-
-- code style: use spaces around pluses
-
-- checksrc: detect and warn for lack of spaces next to plus signs
-
-- code style: use spaces around equals signs
-
-- checksrc: verify spaces around equals signs
-
- ... as the code style mandates.
-
-- Curl_checkheaders: make it available for IMAP and SMTP too
-
- ... not only HTTP uses this now.
-
- Closes #1875
-
-- travis: add build without HTTP/SMTP/IMAP
-
-Jay Satiro (10 Sep 2017)
-- mbedtls: enable CA path processing
-
- CA path processing was implemented when mbedtls.c was added to libcurl
- in fe7590f, but it was never enabled.
-
- Bug: https://github.com/curl/curl/issues/1877
- Reported-by: SBKarr@users.noreply.github.com
-
-Daniel Stenberg (8 Sep 2017)
-- rtsp: do not call fwrite() with NULL pointer FILE *
-
- If the default write callback is used and no destination has been set, a
- NULL pointer would be passed to fwrite()'s 4th argument.
-
- OSS-fuzz bug https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3327
- (not publicly open yet)
-
- Detected by OSS-fuzz
- Closes #1874
-
-- configure: use -Wno-varargs on clang 3.9[.X] debug builds
-
- ... to avoid a clang bug
-
-- [Max Dymond brought this change]
-
- ossfuzz: add some more handled CURL options
-
- Add support for HEADER, COOKIE, RANGE, CUSTOMREQUEST, MAIL_RECIPIENT,
- MAIL_FROM and uploading data.
-
-- configure: check for C++ compiler after C, to make it non-fatal
-
- The tests for object file/executable file extensions are presumably only
- done for the first of these macros in the configure file.
-
- Bug: https://github.com/curl/curl/pull/1851#issuecomment-327597515
- Reported-by: Marcel Raad
- Closes #1873
-
-Patrick Monnerat (7 Sep 2017)
-- form API: add new test 650.
-
- Now that the form API is deprecated and not used anymore in curl tool,
- a lot of its features left untested. Test 650 attempts to check all these
- features not tested elsewhere.
-
-Jay Satiro (7 Sep 2017)
-- configure: fix curl_off_t check's include order
-
- - Prepend srcdir include path instead of append.
-
- Prior to this change it was possible that during the check for the size
- of curl_off_t the include path of a user's already installed curl could
- come before the include path of the to-be-built curl, resulting in the
- system.h of the former being incorrectly included for that check.
-
- Closes https://github.com/curl/curl/pull/1870
-
-Daniel Stenberg (7 Sep 2017)
-- [Jakub Zakrzewski brought this change]
-
- KNOWN_BUGS: Remove CMake symbol hiding issue
-
- It has already been fixed in 6140dfc
-
-- http-proxy: when not doing CONNECT, that phase is done immediately
-
- `conn->connect_state` is NULL when doing a regular non-CONNECT request
- over the proxy and should therefor be considered complete at once.
-
- Fixes #1853
- Closes #1862
- Reported-by: Lawrence Wagerfield
-
-- [Johannes Schindelin brought this change]
-
- OpenSSL: fix yet another mistake while encapsulating SSL backend data
-
- Another mistake in my manual fixups of the largely mechanical
- search-and-replace ("connssl->" -> "BACKEND->"), just like the previous
- commit concerning HTTPS proxies (and hence not caught during my
- earlier testing).
-
- Fixes #1855
- Closes #1871
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- OpenSSL: fix erroneous SSL backend encapsulation
-
- In d65e6cc4f (vtls: prepare the SSL backends for encapsulated private
- data, 2017-06-21), this developer prepared for a separation of the
- private data of the SSL backends from the general connection data.
-
- This conversion was partially automated (search-and-replace) and
- partially manual (e.g. proxy_ssl's backend data).
-
- Sadly, there was a crucial error in the manual part, where the wrong
- handle was used: rather than connecting ssl[sockindex]' BIO to the
- proxy_ssl[sockindex]', we reconnected proxy_ssl[sockindex]. The reason
- was an incorrect location to paste "BACKEND->"... d'oh.
-
- Reported by Jay Satiro in https://github.com/curl/curl/issues/1855.
-
- Signed-off-by: Johannes Schindelin
-
-- [Jay Satiro brought this change]
-
- vtls: fix memory corruption
-
- Ever since 70f1db321 (vtls: encapsulate SSL backend-specific data,
- 2017-07-28), the code handling HTTPS proxies was broken because the
- pointer to the SSL backend data was not swapped between
- conn->ssl[sockindex] and conn->proxy_ssl[sockindex] as intended, but
- instead set to NULL (causing segmentation faults).
-
- [jes: provided the commit message, tested and verified the patch]
-
- Signed-off-by: Johannes Schindelin
-
-- vtls: switch to CURL_SHA256_DIGEST_LENGTH define
-
- ... instead of the prefix-less version since WolfSSL 3.12 now uses an
- enum with that name that causes build failures for us.
-
- Fixes #1865
- Closes #1867
- Reported-by: Gisle Vanem
-
-- travis: add c-ares enabled builds linux + osx
-
- Closes #1868
-
-- HISTORY: added some recent items
-
-Jay Satiro (6 Sep 2017)
-- SSL: fix unused parameter warnings
-
-Patrick Monnerat (6 Sep 2017)
-- mime: drop internal FILE * support.
-
- - The part kind MIMEKIND_FILE and associated code are suppressed.
- - Seek data origin offset not used anymore: suppressed.
- - MIMEKIND_NAMEDFILE renamed MIMEKIND_FILE; associated fields/functions
- renamed accordingly.
- - Curl_getformdata() processes stdin via a callback.
-
-Daniel Stenberg (6 Sep 2017)
-- configure: remove --enable-soname-bump and SONAME_BUMP
-
- Back in 2008, (and commit 3f3d6ebe665f3) we changed the logic in how we
- determine the native type for `curl_off_t`. To really make sure we
- didn't break ABI without bumping SONAME, we introduced logic that
- attempted to detect that it would use a different size and thus not be
- compatible. We also provided a manual switch that allowed users to tell
- configure to bump SONAME by force.
-
- Today, we know of no one who ever got a SONAME bump auto-detected and we
- don't know of anyone who's using the manual bump feature. The auto-
- detection is also no longer working since we introduced defining
- curl_off_t in system.h (7.55.0).
-
- Finally, this bumping logic is not present in the cmake build.
-
- Closes #1861
-
-Jay Satiro (6 Sep 2017)
-- [Gisle Vanem brought this change]
-
- vtls: select ssl backend case-insensitive (follow-up)
-
- - Do a case-insensitive comparison of CURL_SSL_BACKEND env as well.
-
- - Change Curl_strcasecompare calls to strcasecompare
- (maps to the former but shorter).
-
- Follow-up to c290b8f.
-
- Bug: https://github.com/curl/curl/commit/c290b8f#commitcomment-24094313
-
- Co-authored-by: Jay Satiro
-
-- openssl: Integrate Peter Wu's SSLKEYLOGFILE implementation
-
- This is an adaptation of 2 of Peter Wu's SSLKEYLOGFILE implementations.
-
- The first one, written for old OpenSSL versions:
- https://git.lekensteyn.nl/peter/wireshark-notes/tree/src/sslkeylog.c
-
- The second one, written for BoringSSL and new OpenSSL versions:
- https://github.com/curl/curl/pull/1346
-
- Note the first one is GPL licensed but the author gave permission to
- waive that license for libcurl.
-
- As of right now this feature is disabled by default, and does not have
- a configure option to enable it. To enable this feature define
- ENABLE_SSLKEYLOGFILE when building libcurl and set environment
- variable SSLKEYLOGFILE to a pathname that will receive the keys.
-
- And in Wireshark change your preferences to point to that key file:
- Edit > Preferences > Protocols > SSL > Master-Secret
-
- Co-authored-by: Peter Wu
-
- Ref: https://github.com/curl/curl/pull/1030
- Ref: https://github.com/curl/curl/pull/1346
-
- Closes https://github.com/curl/curl/pull/1866
-
-Patrick Monnerat (5 Sep 2017)
-- mime: fix a trivial warning.
-
-- mime: replace 'struct Curl_mimepart' by 'curl_mimepart' in encoder code.
-
- mime_state is now a typedef.
-
-- mime: implement encoders.
-
- curl_mime_encoder() is operational and documented.
- curl tool -F option is extended with ";encoder=".
- curl tool --libcurl option generates calls to curl_mime_encoder().
- New encoder tests 648 & 649.
- Test 1404 extended with an encoder specification.
-
-- runtests.pl: support attribute "nonewline" in part verify/upload.
-
-- [Daniel Stenberg brought this change]
-
- fixup data/test1135
-
-- [Daniel Stenberg brought this change]
-
- mime: unified to use the typedef'd mime structs everywhere
-
- ... and slightly edited to follow our code style better.
-
-- [Daniel Stenberg brought this change]
-
- curl.h: use lower case curl_mime* as for all public symbols
-
-- [Daniel Stenberg brought this change]
-
- docs/curl_mime_*.3: use correct variable types in examples
-
-Kamil Dudka (5 Sep 2017)
-- openssl: use OpenSSL's default ciphers by default
-
- Up2date versions of OpenSSL maintain the default reasonably secure
- without breaking compatibility, so it is better not to override the
- default by curl. Suggested at https://bugzilla.redhat.com/1483972
-
- Closes #1846
-
-Viktor Szakats (5 Sep 2017)
-- examples/mime: minor example code fixes
-
-Daniel Stenberg (5 Sep 2017)
-- docs/curl_mime_*.3: added examples
-
-- configure: add MultiSSL to FEATURES when enabled
-
- ...for curl-config and its corresponding test 1014
-
-- http-proxy: treat all 2xx as CONNECT success
-
- Added test 1904 to verify.
-
- Reported-by: Lawrence Wagerfield
- Fixes #1859
- Closes #1860
-
-- MAIL-ETIQUETTE: added "1.9 Your emails are public"
-
-- curl.h: fix "unused checksrc ignore", remove dangling reference
-
- ... to a README file that doesn't exist anymore
-
-Viktor Szakats (4 Sep 2017)
-- docs: Update to secure URL versions
-
-- mime: use CURL_ZERO_TERMINATED in examples
-
- and some minor whitespace fixes
-
-Daniel Stenberg (4 Sep 2017)
-- schannel: return CURLE_SSL_CACERT on failed verification
-
- ... not *CACERT_BADFILE as it isn't really because of a bad file.
-
- Bug: https://curl.haxx.se/mail/lib-2017-09/0002.html
- Closes #1858
-
-- test1135: fixed after bd8070085f9
-
-- examples/post-callback: stop returning one byte at a time
-
- ... since people copy and paste code from this example and thus they get
- an inefficient POST operation without a good reason and sometimes
- without understanding why.
-
- Instead this now returns as much data as possible.
-
-- RELEASE-NOTES: fixed the function counter script
-
-- curl.h: make the curl_strequal() protos use the same style
-
- ... as the other functions. Makes it easier to machine-parse!
-
-- docs: curl_mime_*.3 man page formatting edits
-
-- RELEASE-NOTES: synced with 1ab9e9b50
-
-Patrick Monnerat (4 Sep 2017)
-- lib: bump version info (soname). Adapt and reenable test 1135.
-
-Daniel Stenberg (3 Sep 2017)
-- headers: move the global_sslset() proto from multi.h to curl.h
-
- As it was added to multi.h simply to not break test 1135, which now has
- been disabled due to the mime API addition anyway and su we can now move
- the sslset stuff to where the other curl_global_* prototypes are.
-
-Patrick Monnerat (3 Sep 2017)
-- mime: fix signed/unsigned conversions.
-
- Use and generate CURL_ZERO_TERMINATED in curl tool and tests.
-
-Jay Satiro (3 Sep 2017)
-- tool_formparse: fix some trivial warnings
-
-Patrick Monnerat (3 Sep 2017)
-- mime: use size_t instead of ssize_t in public API interface.
-
- To support telling a string is nul-terminated, symbol CURL_ZERO_TERMINATED
- has been introduced.
-
- Documentation updated accordingly.
-
- symbols in versions updated. Added form API symbols deprecation info.
-
-- mime: remove support "-" stdin pseudo-file name in curl_mime_filedata().
-
- This feature is badly supported in Windows: as a replacement, a caller has
- to use curl_mime_data_cb() with fread, fseek and possibly fclose
- callbacks to process opened files.
-
- The cli tool and documentation are updated accordingly.
-
- The feature is however kept internally for form API compatibility, with
- the known caveats it always had.
-
- As a side effect, stdin size is not determined by the cli tool even if
- possible and this results in a chunked transfer encoding. Test 173 is
- updated accordingly.
-
-- mime: fix some implicit curl_off_t --> size_t conversion warnings.
-
-- mime: tests and examples.
-
- Additional mime-specific tests.
- Existing tests updated to reflect small differences (Expect: 100-continue,
- data size change due to empty lines, etc).
- Option -F headers= keyword added to tests.
- test1135 disabled until the entry point order change is resolved.
- New example smtp-mime.
- Examples postit2 and multi-post converted from form API to mime API.
-
-- mime: use in curl cli tool instead of form API.
-
- Extended -F option syntax to support multipart mail messages.
- -F keyword headers= added to include custom headers in parts.
- Documentation upgraded.
-
-- mime: new MIME API.
-
- Available in HTTP, SMTP and IMAP.
- Deprecates the FORM API.
- See CURLOPT_MIMEPOST.
- Lib code and associated documentation.
-
-- test564: Add a warning comment about shell profile output.
-
- Shell profile output makes the SSH server failing and this problem reason
- is not easy to find when no hint is given.
-
-- checksrc: disable SPACEBEFOREPAREN for case statement.
-
- The case keyword may be followed by a constant expression and thus should
- allow it to start with an open parenthesis.
-
-- runtests.pl: allow tags in client section.
-
- This enables tests to create more than one file on the client side.
-
-- runtests.pl: Apply strippart to upload too.
-
- This will allow substitution of boundaries in mail messages.
-
-- Curl_base64_encode: always call with a real data handle.
-
- Some calls in different modules were setting the data handle to NULL, causing
- segmentation faults when using builds that enable character code conversions.
-
-- non-ascii: allow conversion functions to be called with a NULL data handle.
-
-- http: fix a memory leakage in checkrtspprefix().
-
-Daniel Stenberg (2 Sep 2017)
-- [Max Dymond brought this change]
-
- ossfuzz: Move to C++ for curl_fuzzer.
-
- Automake gets confused if you want to use C++ static libraries with C
- code - basically we need to involve the clang++ linker. The easiest way
- of achieving this is to rename the C code as C++ code. This gets us a
- bit further along the path and ought to be compatible with Google's
- version of clang.
-
-- curl_global_sslset: select backend by name case insensitively
-
- Closes #1849
-
-- [Max Dymond brought this change]
-
- ossfuzz: additional seed corpora
-
- Create simple seed corpora for:
- - FTP
- - telnet
- - dict
- - tftp
- - imap
- - pop3
-
- based off the tests of the same number.
-
- Closes #1842
-
-- [Max Dymond brought this change]
-
- ossfuzz: moving towards the ideal integration
-
- - Start with the basic code from the ossfuzz project.
- - Rewrite fuzz corpora to be binary files full of Type-Length-Value
- data, and write a glue layer in the fuzzing function to convert
- corpora into CURL options.
- - Have supporting functions to generate corpora from existing tests
- - Integrate with Makefile.am
-
-- strcase: corrected comment header for Curl_strcasecompare()
-
-- unit1301: fix error message on first test
-
-- curl_global_sslset.3: show the struct and enum too
-
- ... so that users can actually write code based on the man page alone,
- not having to read the header file.
-
-Jay Satiro (31 Aug 2017)
-- darwinssl: handle long strings in TLS certs (follow-up)
-
- - Fix handling certificate subjects that are already UTF-8 encoded.
-
- Follow-up to b3b75d1 from two days ago. Since then a copy would be
- skipped if the subject was already UTF-8, possibly resulting in a NULL
- deref later on.
-
- Ref: https://github.com/curl/curl/issues/1823
- Ref: https://github.com/curl/curl/pull/1831
-
- Closes https://github.com/curl/curl/pull/1836
-
-Daniel Stenberg (31 Aug 2017)
-- cyassl: call it the "WolfSSL" backend
-
- ... instead of cyassl, as this is the current name for it.
-
- Closes #1844
-
-- polarssl: fix multissl breakage
-
- Reported-by: Dan Fandrich
- Bug: https://curl.haxx.se/mail/lib-2017-08/0121.html
- Closes #1843
-
-- configure: remove the leading comma from the backends list
-
- ... when darwinssl is used.
-
- Reported-by: Viktor Szakats
- Bug: https://github.com/curl/curl/commit/b0989cd3abaff4f9a0717b4875022fa79e33b481#commitcomment-23943493
-
- Closes #1845
-
-Kamil Dudka (30 Aug 2017)
-- examples/sslbackend.c: fix failure of 'make checksrc'
-
- ./sslbackend.c:58:3: warning: else after closing brace on same line (BRACEELSE)
- } else if(isdigit(*name)) {
- ^
- ./sslbackend.c:62:3: warning: else after closing brace on same line (BRACEELSE)
- } else
- ^
-
-Viktor Szakats (30 Aug 2017)
-- makefile.m32: add multissl support
-
- Closes https://github.com/curl/curl/pull/1840
-
-Daniel Stenberg (30 Aug 2017)
-- curl.h: CURLSSLBACKEND_WOLFSSL used wrong value
-
- The CURLSSLBACKEND_WOLFSSL is supposed to be an alias for
- CURLSSLBACKEND_CYASSL, but used an erronous value. To reduce the risk
- for a similar mistake, define the backend aliases to use the enum values
- instead.
-
- Reported-by: Gisle Vanem
- Bug: https://curl.haxx.se/mail/lib-2017-08/0120.html
-
-- curl_global_sslset.3: clarify
-
- it is a one time *set*, not necessarily a one time use... it can be
- called again if the first call failed or just listed the alternatives.
-
- clarify that the available backends are the ones this build supports
-
- plus add some formatting
-
- Reported-by: Rich Gray
- Bug: https://curl.haxx.se/mail/lib-2017-08/0119.html
-
-- curl/multi.h: remove duplicated closing c++ brace
-
- Regression since 1328f69d53f2f2e93
-
- Fixes #1841
- Reported-by: Andrei Karas
-
-- RELEASE-NOTES: synced with 8c33c963a
-
-- HELP-US.md: spelling
-
-- HELP-US.md: "How to get started helping out in the curl project"
-
- Closes #1837
-
-Dan Fandrich (29 Aug 2017)
-- asyn-thread: Fixed cleanup after OOM
-
- destroy_async_data() assumes that if the flag "done" is not set yet, the
- thread itself will clean up once the request is complete. But if an
- error (generally OOM) occurs before the thread even has a chance to
- start, it will never get a chance to clean up and memory will be leaked.
- By clearing "done" only just before starting the thread, the correct
- cleanup sequence will happen in all cases.
-
-Daniel Stenberg (28 Aug 2017)
-- curl_global_init.3: mention curl_global_sslset(3)
-
-Dan Fandrich (28 Aug 2017)
-- unit1606: Fixed shadowed variable warning
-
-- asyn-thread: Improved cleanup after OOM situations
-
-- asyn-thread: Set errno to the proper value ENOMEM in OOM situation
-
- This used to be set in some configurations to EAI_MEMORY which is not a
- valid value for errno and caused Curl_strerror to fail an assertion.
-
-Daniel Stenberg (28 Aug 2017)
-- [Johannes Schindelin brought this change]
-
- configure: Handle "MultiSSL" specially When versioning symbols
-
- There is a mode in which libcurl is compiled with versioned symbols,
- depending on the active SSL backend.
-
- When multiple SSL backends are active, it does not make sense to favor
- one over the others, so let's not: introduce a new prefix for the case
- where multiple SSL backends are compiled into cURL.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- configure: allow setting the default SSL backend
-
- Previously, we used as default SSL backend whatever was first in the
- `available_backends` array.
-
- However, some users may want to override that default without patching
- the source code.
-
- Now they can: with the --with-default-ssl-backend= option of
- the ./configure script.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- vtls: use Curl_ssl_multi pseudo backend only when needed
-
- When only one SSL backend is configured, it is totally unnecessary to
- let multissl_init() configure the backend at runtime, we can select the
- correct backend at build time already.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- version: if built with more than one SSL backend, report all of them
-
- To discern the active one from the inactive ones, put the latter into
- parentheses.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- version: add the CURL_VERSION_MULTI_SSL feature flag
-
- This new feature flag reports When cURL was built with multiple SSL
- backends.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- metalink: allow compiling with multiple SSL backends
-
- Previously, the code assumed that at most one of the SSL backends would
- be compiled in, emulating OpenSSL's functions if the configured backend
- was not OpenSSL itself.
-
- However, now we allow building with multiple SSL backends and choosing
- one at runtime. Therefore, metalink needs to be adjusted to handle this
- scenario, too.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- docs/examples: demonstrate how to select SSL backends
-
- The newly-introduced curl_global_sslset() function deserves to be
- show-cased.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- Add a man page for curl_global_sslset()
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- vtls: introduce curl_global_sslset()
-
- Let's add a compile time safe API to select an SSL backend. This
- function needs to be called *before* curl_global_init(), and can be
- called only once.
-
- Side note: we do not explicitly test that it is called before
- curl_global_init(), but we do verify that it is not called multiple times
- (even implicitly).
-
- If SSL is used before the function was called, it will use whatever the
- CURL_SSL_BACKEND environment variable says (or default to the first
- available SSL backend), and if a subsequent call to
- curl_global_sslset() disagrees with the previous choice, it will fail
- with CURLSSLSET_TOO_LATE.
-
- The function also accepts an "avail" parameter to point to a (read-only)
- NULL-terminated list of available backends. This comes in real handy if
- an application wants to let the user choose between whatever SSL backends
- the currently available libcurl has to offer: simply call
-
- curl_global_sslset(-1, NULL, &avail);
-
- which will return CURLSSLSET_UNKNOWN_BACKEND and populate the avail
- variable to point to the relevant information to present to the user.
-
- Just like with the HTTP/2 push functions, we have to add the function
- declaration of curl_global_sslset() function to the header file
- *multi.h* because VMS and OS/400 require a stable order of functions
- declared in include/curl/*.h (where the header files are sorted
- alphabetically). This looks a bit funny, but it cannot be helped.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- vtls: refactor out essential information about the SSL backends
-
- There is information about the compiled-in SSL backends that is really
- no concern of any code other than the SSL backend itself, such as which
- function (if any) implements SHA-256 summing.
-
- And there is information that is really interesting to the user, such as
- the name, or the curl_sslbackend value.
-
- Let's factor out the latter into a publicly visible struct. This
- information will be used in the upcoming API to set the SSL backend
- globally.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- vtls: allow selecting which SSL backend to use at runtime
-
- When building software for the masses, it is sometimes not possible to
- decide for all users which SSL backend is appropriate.
-
- Git for Windows, for example, uses cURL to perform clones, fetches and
- pushes via HTTPS, and some users strongly prefer OpenSSL, while other
- users really need to use Secure Channel because it offers
- enterprise-ready tools to manage credentials via Windows' Credential
- Store.
-
- The current Git for Windows versions use the ugly work-around of
- building libcurl once with OpenSSL support and once with Secure Channel
- support, and switching out the binaries in the installer depending on
- the user's choice.
-
- Needless to say, this is a super ugly workaround that actually only
- works in some cases: Git for Windows also comes in a portable form, and
- in a form intended for third-party applications requiring Git
- functionality, in which cases this "swap out libcurl-4.dll" simply is
- not an option.
-
- Therefore, the Git for Windows project has a vested interest in teaching
- cURL to make the SSL backend a *runtime* option.
-
- This patch makes that possible.
-
- By running ./configure with multiple --with- options, cURL will
- be built with multiple backends.
-
- For the moment, the backend can be configured using the environment
- variable CURL_SSL_BACKEND (valid values are e.g. "openssl" and
- "schannel").
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- vtls: fold the backend ID into the Curl_ssl structure
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- curl_ntlm_core: don't complain but #include OpenSSL header if needed
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- vtls: encapsulate SSL backend-specific data
-
- So far, all of the SSL backends' private data has been declared as
- part of the ssl_connect_data struct, in one big #if .. #elif .. #endif
- block.
-
- This can only work as long as the SSL backend is a compile-time option,
- something we want to change in the next commits.
-
- Therefore, let's encapsulate the exact data needed by each SSL backend
- into a private struct, and let's avoid bleeding any SSL backend-specific
- information into urldata.h. This is also necessary to allow multiple SSL
- backends to be compiled in at the same time, as e.g. OpenSSL's and
- CyaSSL's headers cannot be included in the same .c file.
-
- To avoid too many malloc() calls, we simply append the private structs
- to the connectdata struct in allocate_conn().
-
- This requires us to take extra care of alignment issues: struct fields
- often need to be aligned on certain boundaries e.g. 32-bit values need to
- be stored at addresses that divide evenly by 4 (= 32 bit / 8
- bit-per-byte).
-
- We do that by assuming that no SSL backend's private data contains any
- fields that need to be aligned on boundaries larger than `long long`
- (typically 64-bit) would need. Under this assumption, we simply add a
- dummy field of type `long long` to the `struct connectdata` struct. This
- field will never be accessed but acts as a placeholder for the four
- instances of ssl_backend_data instead. the size of each ssl_backend_data
- struct is stored in the SSL backend-specific metadata, to allow
- allocate_conn() to know how much extra space to allocate, and how to
- initialize the ssl[sockindex]->backend and proxy_ssl[sockindex]->backend
- pointers.
-
- This would appear to be a little complicated at first, but is really
- necessary to encapsulate the private data of each SSL backend correctly.
- And we need to encapsulate thusly if we ever want to allow selecting
- CyaSSL and OpenSSL at runtime, as their headers cannot be included within
- the same .c file (there are just too many conflicting definitions and
- declarations for that).
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- vtls: prepare the SSL backends for encapsulated private data
-
- At the moment, cURL's SSL backend needs to be configured at build time.
- As such, it is totally okay for them to hard-code their backend-specific
- data in the ssl_connect_data struct.
-
- In preparation for making the SSL backend a runtime option, let's make
- the access of said private data a bit more abstract so that it can be
- adjusted later in an easy manner.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- urldata.h: move SSPI-specific #include to correct location
-
- In 86b889485 (sasl_gssapi: Added GSS-API based Kerberos V5 variables,
- 2014-12-03), an SSPI-specific field was added to the kerberos5data
- struct without moving the #include "curl_sspi.h" later in the same file.
-
- This broke the build when SSPI was enabled, unless Secure Channel was
- used as SSL backend, because it just so happens that Secure Channel also
- requires "curl_sspi.h" to be #included.
-
- In f4739f639 (urldata: include curl_sspi.h when Windows SSPI is enabled,
- 2017-02-21), this bug was fixed incorrectly: Instead of moving the
- appropriate conditional #include, the Secure Channel-conditional part
- was now also SSPI-conditional.
-
- Fix this problem by moving the correct #include instead.
-
- This is also required for an upcoming patch that moves all the Secure
- Channel-specific stuff out of urldata.h and encapsulates it properly in
- vtls/schannel.c instead.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- urldata.h: remove support for obsolete PolarSSL version
-
- Since 5017d5ada (polarssl: now require 1.3.0+, 2014-03-17), we require
- a newer PolarSSL version. No need to keep code trying to support any
- older version.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- getinfo: access SSL internals via Curl_ssl
-
- In the ongoing endeavor to abstract out all SSL backend-specific
- functionality, this is the next step: Instead of hard-coding how the
- different SSL backends access their internal data in getinfo.c, let's
- implement backend-specific functions to do that task.
-
- This will also allow for switching SSL backends as a runtime option.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- vtls: move SSL backends' private constants out of their header files
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- axtls: use Curl_none_* versions of init() and cleanup()
-
- There are convenient no-op versions of the init/cleanup functions now,
- no need to define private ones for axTLS.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- vtls: remove obsolete declarations of SSL backend functionality
-
- These functions are all available via the Curl_ssl struct now, no need
- to declare them separately anymore.
-
- As the global declarations are removed, the corresponding function
- definitions are marked as file-local. The only two exceptions here are
- Curl_mbedtls_shutdown() and Curl_polarssl_shutdown(): only the
- declarations were removed, there are no function definitions to mark
- file-local.
-
- Please note that Curl_nss_force_init() is *still* declared globally, as
- the only SSL backend-specific function, because it was introduced
- specifically for the use case where cURL was compiled with
- `--without-ssl --with-nss`. For details, see f3b77e561 (http_ntlm: add
- support for NSS, 2010-06-27).
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- schannel: reorder functions topologically
-
- The _shutdown() function calls the _session_free() function; While this
- is not a problem now (because schannel.h declares both functions), a
- patch looming in the immediate future with make all of these functions
- file-local.
-
- So let's just move the _session_free() function's definition before it
- is called.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- axtls: reorder functions topologically
-
- The connect_finish() function (like many other functions after it) calls
- the Curl_axtls_close() function; While this is not a problem now
- (because axtls.h declares the latter function), a patch looming in the
- immediate future with make all of these functions file-local.
-
- So let's just move the Curl_axtls_close() function's definition before
- it is called.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- vtls: move the SUPPORT_HTTPS_PROXY flag into the Curl_ssl struct
-
- That will allow us to choose the SSL backend at runtime.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- vtls: convert the have_curlssl_* constants to runtime flags
-
- The entire idea of introducing the Curl_ssl struct to describe SSL
- backends is to prepare for choosing the SSL backend at runtime.
-
- To that end, convert all the #ifdef have_curlssl_* style conditionals
- to use bit flags instead.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- vtls: move sha256sum into the Curl_ssl struct
-
- The SHA-256 checksumming is also an SSL backend-specific function.
- Let's include it in the struct declaring the functionality of SSL
- backends.
-
- In contrast to MD5, there is no fall-back code. To indicate this, the
- respective entries are NULL for those backends that offer no support for
- SHA-256 checksumming.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- vtls: move md5sum into the Curl_ssl struct
-
- The MD5 summing is also an SSL backend-specific function. So let's
- include it, offering the previous fall-back code as a separate function
- now: Curl_none_md5sum(). To allow for that, the signature had to be
- changed so that an error could be returned from the implementation
- (Curl_none_md5sum() can run out of memory).
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- vtls: use the Curl_ssl struct to access all SSL backends' functionality
-
- This is the first step to unify the SSL backend handling. Now all the
- SSL backend-specific functionality is accessed via a global instance of
- the Curl_ssl struct.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- vtls: declare Curl_ssl structs for every SSL backend
-
- The idea of introducing the Curl_ssl struct was to unify how the SSL
- backends are declared and called. To this end, we now provide an
- instance of the Curl_ssl struct for each and every SSL backend.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- vtls: introduce a new struct for SSL backends
-
- This new struct is similar in nature to Curl_handler: it will define the
- functions and capabilities of all the SSL backends (where Curl_handler
- defines the functions and capabilities of protocol handlers).
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- vtls: make sure every _sha256sum()'s first arg is const
-
- This patch makes the signature of the _sha256sum() functions consistent
- among the SSL backends, in preparation for unifying the way all SSL
- backends are accessed.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- vtls: make sure all _data_pending() functions return bool
-
- This patch makes the signature of the _data_pending() functions
- consistent among the SSL backends, in preparation for unifying the way
- all SSL backends are accessed.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- vtls: make sure all _cleanup() functions return void
-
- This patch makes the signature of the _cleanup() functions consistent
- among the SSL backends, in preparation for unifying the way all SSL
- backends are accessed.
-
- Signed-off-by: Johannes Schindelin
-
-- [Johannes Schindelin brought this change]
-
- vtls: use consistent signature for _random() implementations
-
- This will make the upcoming multissl backend much easier to implement.
-
- Signed-off-by: Johannes Schindelin
-
-- strtooff: fix build for systems with long long but no strtoll option
-
- Closes #1829
-
- Reported-by: Dan Fandrich
- Bug: https://github.com/curl/curl/pull/1758#issuecomment-324861615
-
-- darwinssl: handle long strings in TLS certs
-
- ... as the previous fixed length 128 bytes buffer was sometimes too
- small.
-
- Fixes #1823
- Closes #1831
-
- Reported-by: Benjamin Sergeant
- Assisted-by: Bill Pyne, Ray Satiro, Nick Zitzmann
-
-- system.h: include sys/poll.h for AIX
-
- ... to get the event/revent defines that might be used for the poll
- struct.
-
- Reported-by: Michael Smith
- Fixes #1828
- Closes #1833
-
-Dan Fandrich (26 Aug 2017)
-- tests: Make sure libtests & unittests call curl_global_cleanup()
-
- These were missed in commit c468c27b.
-
-Jay Satiro (26 Aug 2017)
-- [theantigod brought this change]
-
- winbuild: fix embedded manifest option
-
- Embedded manifest option didn't work due to incorrect path.
-
- Fixes https://github.com/curl/curl/issues/1832
-
-Daniel Stenberg (25 Aug 2017)
-- fuzz/Makefile.am: remove curlbuild.h leftovers
-
-- examples/threaded-ssl: mention that this is for openssl before 1.1
-
-- imap: use defined names for response codes
-
- When working on this code I found the previous setup a bit weird while
- using proper defines increases readability.
-
- Closes #1824
-
-- CURLOPT_USERPWD.3: see also CURLOPT_PROXYUSERPWD
-
-- imap: support PREAUTH
-
- It is a defined possible greeting at server startup that means the
- connection is already authenticated. See
- https://tools.ietf.org/html/rfc3501#section-7.1.4
-
- Test 846 added to verify.
-
- Fixes #1818
- Closes #1820
-
-Jay Satiro (23 Aug 2017)
-- config-tpf: define SIZEOF_LONG
-
- Recent changes that replaced CURL_SIZEOF_LONG in the source with
- SIZEOF_LONG broke builds that use the premade configuration files and
- don't have SIZEOF_LONG defined.
-
- Bug: https://github.com/curl/curl/issues/1816
-
-Dan Fandrich (23 Aug 2017)
-- test1453: Fixed
-
-Daniel Stenberg (22 Aug 2017)
-- [Gisle Vanem brought this change]
-
- config-dos: add missing defines, SIZEOF_* and two others
-
- Bug: #1816
-
-- curl: shorten and clean up CA cert verification error message
-
- The previous message was just too long for ordinary people and it was
- encouraging users to use `--insecure` a little too easy.
-
- Based-on-work-by: Frank Denis
-
- Closes #1810
- Closes #1817
-
-- request-target.d: mention added in 7.55.0
-
-Marcel Raad (22 Aug 2017)
-- tool_main: turn off MinGW CRT's globbing
-
- By default, the MinGW CRT globs command-line arguments. This prevents
- getting a single asterisk into an argument as test 1299 does. Turn off
- globbing by setting the global variable _CRT_glob to 0 for MinGW.
-
- Fixes https://github.com/curl/curl/issues/1751
- Closes https://github.com/curl/curl/pull/1813
-
-Viktor Szakats (22 Aug 2017)
-- makefile.m32: add support for libidn2
-
- libidn was replaced with libidn2 last year in configure.
- Caveat: libidn2 may depend on a list of further libs.
- These can be manually specified via CURL_LDFLAG_EXTRAS.
-
- Closes https://github.com/curl/curl/pull/1815
-
-Jay Satiro (22 Aug 2017)
-- [Viktor Szakats brought this change]
-
- config-win32: define SIZEOF_LONG
-
- Recent changes that replaced CURL_SIZEOF_LONG in the source with
- SIZEOF_LONG broke builds that use the premade configuration files and
- don't have SIZEOF_LONG defined.
-
- Closes https://github.com/curl/curl/pull/1814
-
-Daniel Stenberg (20 Aug 2017)
-- cmake: enable picky compiler options with clang and gcc
-
- closes #1799
-
-- curl/system.h: fix build for hppa
-
- Reported-by: John David Anglin
- Bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=872502#10
-
-- [Even Rouault brought this change]
-
- tftp: fix memory leak on too long filename
-
- Fixes
-
- $ valgrind --leak-check=full ~/install-curl-git/bin/curl tftp://localhost/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz
-
- ==9752== Memcheck, a memory error detector
- ==9752== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
- ==9752== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
- ==9752== Command: /home/even/install-curl-git/bin/curl tftp://localhost/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz
- ==9752==
- curl: (71) TFTP file name too long
-
- ==9752==
- ==9752== HEAP SUMMARY:
- ==9752== 505 bytes in 1 blocks are definitely lost in loss record 11 of 11
- ==9752== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
- ==9752== by 0x4E61CED: Curl_urldecode (in /home/even/install-curl-git/lib/libcurl.so.4.4.0)
- ==9752== by 0x4E75868: tftp_state_machine (in /home/even/install-curl-git/lib/libcurl.so.4.4.0)
- ==9752== by 0x4E761B6: tftp_do (in /home/even/install-curl-git/lib/libcurl.so.4.4.0)
- ==9752== by 0x4E711B6: multi_runsingle (in /home/even/install-curl-git/lib/libcurl.so.4.4.0)
- ==9752== by 0x4E71D00: curl_multi_perform (in /home/even/install-curl-git/lib/libcurl.so.4.4.0)
- ==9752== by 0x4E6950D: curl_easy_perform (in /home/even/install-curl-git/lib/libcurl.so.4.4.0)
- ==9752== by 0x40E0B7: operate_do (in /home/even/install-curl-git/bin/curl)
- ==9752== by 0x40E849: operate (in /home/even/install-curl-git/bin/curl)
- ==9752== by 0x402693: main (in /home/even/install-curl-git/bin/curl)
-
- Fixes https://oss-fuzz.com/v2/testcase-detail/5232311106797568
- Credit to OSS Fuzz
-
- Closes #1808
-
-Dan Fandrich (19 Aug 2017)
-- runtests: fixed case insensitive matching of keywords
-
- Commit 5c2aac71 didn't work in the case of mixed-case keywords given on
- the command-line.
-
-- tests: Make sure libtests call curl_global_cleanup()
-
- This ensures that global data allocations are freed so Valgrind stays
- happy. This was a problem with at least PolarSSL and mbedTLS.
-
-Daniel Stenberg (18 Aug 2017)
-- RELEASE-NOTES: synced with 8baead425
-
-- scripts/contri*sh: use "git log --use-mailmap"
-
-- mailmap: de-duplify some git authors
-
-- http2_recv: return error better on fatal h2 errors
-
- Ref #1012
- Figured-out-by: Tatsuhiro Tsujikawa
-
-- KNOWN_BUGS: HTTP test server 'connection-monitor' problems
-
- Closes #868
-
-- curl/system.h: check for __ppc__ as well
-
- ... regression since issue #1774 (commit 10b3df10596a) since obviously
- some older gcc doesn't know __powerpc__ while some newer doesn't know
- __ppc__ ...
-
- Fixes #1797
- Closes #1798
- Reported-by: Ryan Schmidt
-
-- [Jan Alexander Steffens (heftig) brought this change]
-
- http: Don't wait on CONNECT when there is no proxy
-
- Since curl 7.55.0, NetworkManager almost always failed its connectivity
- check by timeout. I bisected this to 5113ad04 (http-proxy: do the HTTP
- CONNECT process entirely non-blocking).
-
- This patch replaces !Curl_connect_complete with Curl_connect_ongoing,
- which returns false if the CONNECT state was left uninitialized and lets
- the connection continue.
-
- Closes #1803
- Fixes #1804
-
- Also-fixed-by: Gergely Nagy
-
-- [Johannes Schindelin brought this change]
-
- metalink: adjust source code style
-
- Signed-off-by: Johannes Schindelin
-
-- CURL_SIZEOF_LONG: removed, use only SIZEOF_LONG
-
-- lib557: no longer use CURL_SIZEOF_* defines
-
-- config-win32: define SIZEOF_CURL_OFF_T
-
-- cmake: sizeof curl_off_t, remove unused detections
-
-- system.h: remove all CURL_SIZEOF_* defines
-
- ... as they're not used externally and internally we check for the sizes
- already in configure etc.
-
- Closes #1767
-
-- ftp: fix CWD when doing multicwd then nocwd on same connection
-
- Fixes #1782
- Closes #1787
- Reported-by: Peter Lamare
-
-- CURLOPT_SSH_COMPRESSION.3: enable with 1L
-
- (leaves other values reserved for the future)
-
-- compressed-ssh.d: "Added: 7.56.0"
-
-- curl/system.h: checksrc compliance
-
-Jay Satiro (17 Aug 2017)
-- [Viktor Szakats brought this change]
-
- ssh: add the ability to enable compression (for SCP/SFTP)
-
- The required low-level logic was already available as part of
- `libssh2` (via `LIBSSH2_FLAG_COMPRESS` `libssh2_session_flag()`[1]
- option.)
-
- This patch adds the new `libcurl` option `CURLOPT_SSH_COMPRESSION`
- (boolean) and the new `curl` command-line option `--compressed-ssh`
- to request this `libssh2` feature. To have compression enabled, it
- is required that the SSH server supports a (zlib) compatible
- compression method and that `libssh2` was built with `zlib` support
- enabled.
-
- [1] https://www.libssh2.org/libssh2_session_flag.html
-
- Ref: https://github.com/curl/curl/issues/1732
- Closes https://github.com/curl/curl/pull/1735
-
-- examples/ftpuploadresume: checksrc compliance
-
-- [Maksim Stsepanenka brought this change]
-
- http_proxy: fix build error for CURL_DOES_CONVERSIONS
-
- Closes https://github.com/curl/curl/pull/1793
-
-GitHub (16 Aug 2017)
-- [Nick Zitzmann brought this change]
-
- configure: check for __builtin_available() availability (#1788)
-
- This change does two things:
- 1. It un-breaks the build in Xcode 9.0. (Xcode 9.0 is currently
- failing trying to compile connectx() in lib/connect.c.)
- 2. It finally weak-links the connectx() function, and falls back on
- connect() when run on older operating systems.
-
-Daniel Stenberg (16 Aug 2017)
-- travis: add metalink to some osx builds
-
- Closes #1790
-
-- [Max Dymond brought this change]
-
- coverage: Use two coveralls commands to get lib/vtls results
-
- closes #1747
-
-- darwinssi: fix error: variable length array used
-
-- m4/curl-compilers.m4: use proper quotes around string, not backticks
-
- ... when setting clang version to assume 3.7
-
- Caused a lot of "integer expression expected" warnings by configure.
-
-- [Benbuck Nason brought this change]
-
- cmake: remove dead code for DISABLED_THREADSAFE
-
- Closes #1786
-
-Jay Satiro (15 Aug 2017)
-- [Jakub Zakrzewski brought this change]
-
- curl-confopts.m4: fix --disable-threaded-resolver
-
- Closes https://github.com/curl/curl/issues/1784
-
-Daniel Stenberg (15 Aug 2017)
-- [Ryan Winograd brought this change]
-
- progress: Track total times following redirects
-
- Update the progress timers `t_nslookup`, `t_connect`, `t_appconnect`,
- `t_pretransfer`, and `t_starttransfer` to track the total times for
- these activities when a redirect is followed. Previously, only the times
- for the most recent request would be tracked.
-
- Related changes:
-
- - Rename `Curl_pgrsResetTimesSizes` to `Curl_pgrsResetTransferSizes`
- now that the function only resets transfer sizes and no longer
- modifies any of the progress timers.
-
- - Add a bool to the `Progress` struct that is used to prevent
- double-counting `t_starttransfer` times.
-
- Added test case 1399.
-
- Fixes #522 and Known Bug 1.8
- Closes #1602
- Reported-by: joshhe on github
-
-- [Benbuck Nason brought this change]
-
- cmake: remove dead code for CURL_DISABLE_RTMP
-
- Closes #1785
-
-Kamil Dudka (15 Aug 2017)
-- zsh.pl: produce a working completion script again
-
- Commit curl-7_54_0-118-g8b2f22e changed the output format of curl --help
- to use and instead of FILE and DIR, which caused zsh.pl to
- produce a broken completion script:
-
- % curl --
- _curl:10: no such file or directory: seconds
-
- Closes #1779
-
-Daniel Stenberg (15 Aug 2017)
-- curlver: toward 7.56.0?
-
-- RELEASE-NOTES: synced with 91c46dc44
-
-- test1449: FTP download range with an too large size
-
-- strtoofft: reduce integer overflow risks globally
-
- ... make sure we bail out on overflows.
-
- Reported-by: Brian Carpenter
- Closes #1758
-
-- travis: build the examples too
-
- to make sure they keep building warning-free
-
- Closes #1777
-
-- runtests: match keywords case insensitively
-
-- examples/ftpuploadresume.c: use portable code
-
- ... converted from the MS specific _snscanf()
-
-Version 7.55.1 (13 Aug 2017)
-
-Daniel Stenberg (13 Aug 2017)
-- RELEASE-NOTES/THANKS: curl 7.55.1 release time
-
-- gitignore: ignore .xz now instead of .lzma
-
-- [Sergei Nikulov brought this change]
-
- cmake: Threads detection update. ref: #1702
-
- Closes #1719
-
-- ipv6_scope: support unique local addresses
-
- Fixes #1764
- Closes #1773
- Reported-by: James Slaughter
-
-- [Alex Potapenko brought this change]
-
- curl/system.h: GCC doesn't define __ppc__ on PowerPC, uses __powerpc__
-
- Closes #1774
-
-- test1448: verify redirect to IDN using URL
-
- Closes #1772
-
-- [Salah-Eddin Shaban brought this change]
-
- redirect: skip URL encoding for host names
-
- This fixes redirects to IDN URLs
-
- Fixes #1441
- Closes #1762
- Reported by: David Lord
-
-- test2032: mark as flaky (again)
-
-- travis: test cmake build on tarball too
-
- Could've prevented #1755
-
-- [Simon Warta brought this change]
-
- cmake: allow user to override CMAKE_DEBUG_POSTFIX
-
- Closes #1763
-
-- connect-to.d: better language
-
-- connect-to.d: clarified
-
-- bagder/Curl_tvdiff_us: fix the math
-
- Regression since adef394ac5 (released in 7.55.0)
-
- Reported-by: Han Qiao
- Fixes #1769
- Closes #1771
-
-- curl/system.h: add Oracle Solaris Studio
-
- Fixes #1752
-
-- [Alessandro Ghedini brought this change]
-
- docs: fix typo funtion -> function
-
- Closes #1770
-
-Alessandro Ghedini (12 Aug 2017)
-- docs: fix grammar in CURL_SSLVERSION_MAX_DEFAULT description
-
-- docs: fix typo stuct -> struct
-
-Dan Fandrich (12 Aug 2017)
-- test1447: require a curl with http support
-
-Daniel Stenberg (11 Aug 2017)
-- [Thomas Petazzoni brought this change]
-
- curl/system.h: support more architectures
-
- The long list of architectures in include/curl/system.h is annoying to
- maintain, and needs to be extended for each and every architecture to
- support.
-
- Instead, let's rely on the __SIZEOF_LONG__ define of the gcc compiler
- (we are in the GNUC condition anyway), which tells us if long is 4
- bytes or 8 bytes.
-
- This fixes the build of libcurl 7.55.0 on architectures such as
- OpenRISC or ARC.
-
- Closes #1766
-
- Signed-off-by: Thomas Petazzoni
-
-- test2033: this went flaky again
-
- Suspicion: when we enabled the threaded resolver by default.
-
-- test1447: verifies the parse proxy fix in 6e0e152ce5c
-
-- [Even Rouault brought this change]
-
- parse_proxy(): fix memory leak in case of invalid proxy server name
-
- Fixes the below leak:
-
- $ valgrind --leak-check=full ~/install-curl-git/bin/curl --proxy "http://a:b@/x" http://127.0.0.1
- curl: (5) Couldn't resolve proxy name
- ==5048==
- ==5048== HEAP SUMMARY:
- ==5048== in use at exit: 532 bytes in 12 blocks
- ==5048== total heap usage: 5,288 allocs, 5,276 frees, 445,271 bytes allocated
- ==5048==
- ==5048== 2 bytes in 1 blocks are definitely lost in loss record 1 of 12
- ==5048== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
- ==5048== by 0x4E6CB79: parse_login_details (url.c:5614)
- ==5048== by 0x4E6BA82: parse_proxy (url.c:5091)
- ==5048== by 0x4E6C46D: create_conn_helper_init_proxy (url.c:5346)
- ==5048== by 0x4E6EA18: create_conn (url.c:6498)
- ==5048== by 0x4E6F9B4: Curl_connect (url.c:6967)
- ==5048== by 0x4E86D05: multi_runsingle (multi.c:1436)
- ==5048== by 0x4E88432: curl_multi_perform (multi.c:2160)
- ==5048== by 0x4E7C515: easy_transfer (easy.c:708)
- ==5048== by 0x4E7C74A: easy_perform (easy.c:794)
- ==5048== by 0x4E7C7B1: curl_easy_perform (easy.c:813)
- ==5048== by 0x414025: operate_do (tool_operate.c:1563)
- ==5048==
- ==5048== 2 bytes in 1 blocks are definitely lost in loss record 2 of 12
- ==5048== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
- ==5048== by 0x4E6CBB6: parse_login_details (url.c:5621)
- ==5048== by 0x4E6BA82: parse_proxy (url.c:5091)
- ==5048== by 0x4E6C46D: create_conn_helper_init_proxy (url.c:5346)
- ==5048== by 0x4E6EA18: create_conn (url.c:6498)
- ==5048== by 0x4E6F9B4: Curl_connect (url.c:6967)
- ==5048== by 0x4E86D05: multi_runsingle (multi.c:1436)
- ==5048== by 0x4E88432: curl_multi_perform (multi.c:2160)
- ==5048== by 0x4E7C515: easy_transfer (easy.c:708)
- ==5048== by 0x4E7C74A: easy_perform (easy.c:794)
- ==5048== by 0x4E7C7B1: curl_easy_perform (easy.c:813)
- ==5048== by 0x414025: operate_do (tool_operate.c:1563)
-
- Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2984
- Credit to OSS Fuzz for discovery
-
- Closes #1761
-
-- RELEASE-NOTES: synced with 37f2195a9
-
-- curlver: bump to 7.55.1
-
-- openssl: fix "error: this statement may fall through"
-
- A gcc7 warning.
-
-- [David Benjamin brought this change]
-
- openssl: remove CONST_ASN1_BIT_STRING.
-
- Just making the pointer as const works for the pre-1.1.0 path too.
-
- Closes #1759
-
-- maketgz: remove old *.dist files before making the tarball
-
- To avoid "old crap" unintentionally getting shipped.
-
- Bug: https://curl.haxx.se/mail/lib-2017-08/0050.html
- Reported-by: Christian Weisgerber
-
-Jay Satiro (10 Aug 2017)
-- mkhelp.pl: allow executing this script directly
-
- - Enable execute permission (chmod +x)
-
- - Change interpreter to /usr/bin/env perl
-
- Ref: https://github.com/curl/curl/issues/1743
-
-Daniel Stenberg (10 Aug 2017)
-- configure: use the threaded resolver backend by default if possible
-
- Closes #1647
-
-- cmake: move cmake_uninstall.cmake to CMake/
-
- Closes #1756
-
-- metalink: fix error: ‘*’ in boolean context, suggest ‘&&’ instead
-
-- dist: fix the cmake build by shipping cmake_uninstall.cmake.in too
-
- Fixes #1755
-
-- travis: verify "make install"
-
- Help-by: Jay Satiro
- Closes #1753
-
-Marcel Raad (10 Aug 2017)
-- build: check out *.sln files with Windows line endings
-
- Visual Studio doesn't like LF line endings in solution files and always
- converts them to CRLF when doing changes to the solution. Notably, this
- affects the solutions in the release archive.
-
- Closes https://github.com/curl/curl/pull/1746
-
-- gitignore: ignore top-level .vs folder
-
- This folder is generated when using the CMake build system from within
- Visual Studio.
-
- Closes https://github.com/curl/curl/pull/1746
-
-Jay Satiro (10 Aug 2017)
-- digest_sspi: Don't reuse context if the user/passwd has changed
-
- Bug: https://github.com/curl/curl/issues/1685
- Reported-by: paulharris@users.noreply.github.com
-
- Assisted-by: Isaac Boukris
-
- Closes https://github.com/curl/curl/pull/1742
-
-Daniel Stenberg (9 Aug 2017)
-- [Adam Sampson brought this change]
-
- dist: Add dictserver.py/negtelnetserver.py to EXTRA_DIST
-
- These weren't included in the 7.55.0 release, but are required in order
- to run the full test suite.
-
- Closes #1744
-
-- [Adam Sampson brought this change]
-
- curl: do bounds check using a double comparison
-
- The fix for this in 8661a0aacc01492e0436275ff36a21734f2541bb wasn't
- complete: if the parsed number in num is larger than will fit in a long,
- the conversion is undefined behaviour (causing test1427 to fail for me
- on IA32 with GCC 7.1, although it passes on AMD64 and ARMv7). Getting
- rid of the cast means the comparison will be done using doubles.
-
- It might make more sense for the max argument to also be a double...
-
- Fixes #1750
- Closes #1749
-
-- make install: add 8 missing man pages to the installation
-
-- build: fix 'make install' with configure, install docs/libcurl/* too
-
- Broken since d24838d4da9faa
-
- Reported-by: Bernard Spil
-
-Version 7.55.0 (9 Aug 2017)
-
-Daniel Stenberg (9 Aug 2017)
-- RELEASE-NOTES: curl 7.55.0
-
-- THANKS: 20 new contributors in 7.55.0
-
-- [Viktor Szakats brought this change]
-
- docs/comments: Update to secure URL versions
-
- Closes #1741
-
-- configure: fix recv/send/select detection on Android
-
- ... since they now provide several functions as
- __attribute__((overloadable)), the argument detection logic need
- updates.
-
- Patched-by: destman at github
-
- Fixes #1738
- Closes #1739
-
-Marcel Raad (8 Aug 2017)
-- ax_code_coverage.m4: update to latest version
-
- This updates the script to aad5ad5fedb306b39f901a899b7bd305b66c418d
- from August 01, 2017. Notably, this removes the lconv version whitelist.
-
- Closes https://github.com/curl/curl/pull/1716
-
-Daniel Stenberg (7 Aug 2017)
-- test1427: verify command line parser integer overflow detection
-
-- curl: detect and bail out early on parameter integer overflows
-
- Make the number parser aware of the maximum limit curl accepts for a
- value and return an error immediately if larger, instead of running an
- integer overflow later.
-
- Fixes #1730
- Closes #1736
-
-- glob: do not continue parsing after a strtoul() overflow range
-
- Added test 1289 to verify.
-
- CVE-2017-1000101
-
- Bug: https://curl.haxx.se/docs/adv_20170809A.html
- Reported-by: Brian Carpenter
-
-- tftp: reject file name lengths that don't fit
-
- ... and thereby avoid telling send() to send off more bytes than the
- size of the buffer!
-
- CVE-2017-1000100
-
- Bug: https://curl.haxx.se/docs/adv_20170809B.html
- Reported-by: Even Rouault
-
- Credit to OSS-Fuzz for the discovery
-
-- [Even Rouault brought this change]
-
- file: output the correct buffer to the user
-
- Regression brought by 7c312f84ea930d8 (April 2017)
-
- CVE-2017-1000099
-
- Bug: https://curl.haxx.se/docs/adv_20170809C.html
-
- Credit to OSS-Fuzz for the discovery
-
-- easy_events: make event data static
-
- First: this function is only used in debug-builds and not in
- release/real builds. It is used to drive tests using the event-based
- API.
-
- A pointer to the local struct is passed to CURLMOPT_TIMERDATA, but the
- CURLMOPT_TIMERFUNCTION calback can in fact be called even after this
- funtion returns, namely when curl_multi_remove_handle() is called.
-
- Reported-by: Brian Carpenter
-
-- getparameter: avoid returning uninitialized 'usedarg'
-
- Fixes #1728
-
-Marcel Raad (5 Aug 2017)
-- [Isaac Boukris brought this change]
-
- gssapi: fix memory leak of output token in multi round context
-
- When multiple rounds are needed to establish a security context
- (usually ntlm), we overwrite old token with a new one without free.
- Found by proposed gss tests using stub a gss implementation (by
- valgrind error), though I have confirmed the leak with a real
- gssapi implementation as well.
-
- Closes https://github.com/curl/curl/pull/1733
-
-- darwinssl: fix compiler warning
-
- clang complains:
- vtls/darwinssl.c:40:8: error: extra tokens at end of #endif directive
- [-Werror,-Wextra-tokens]
-
- This breaks the darwinssl build on Travis. Fix it by making this token
- a comment.
-
- Closes https://github.com/curl/curl/pull/1734
-
-- CMake: fix CURL_WERROR for MSVC
-
- When using CURL_WERROR in MSVC builds, the debug flags were overridden
- by the release flags and /WX got added twice in debug mode.
-
- Closes https://github.com/curl/curl/pull/1715
-
-Daniel Stenberg (4 Aug 2017)
-- RELEASE-NOTES: synced with 561e9217c
-
-- test1010: verify that #1718 is fixed
-
- ... by doing two transfers in nocwd mode and check that there's no
- superfluous CWD command.
-
-- FTP: skip unnecessary CWD when in nocwd mode
-
- ... when reusing a connection. If it didn't do any CWD previously.
-
- Fixes #1718
-
-Marcel Raad (4 Aug 2017)
-- travis: explicitly specify dist
-
- This makes the builds more reproducible as travis is currently rolling
- out trusty as default dist [1]. Specifically, this avoids coverage
- check failures when trusty is used as seen in [2] until we figure out
- what's wrong.
-
- [1] https://blog.travis-ci.com/2017-07-11-trusty-as-default-linux-is-coming
- [2] https://github.com/curl/curl/pull/1692
-
- Closes https://github.com/curl/curl/pull/1725
-
-Daniel Stenberg (4 Aug 2017)
-- travis: BUILD_TYPE => T
-
- (to make the full line appear nicer on travis web UI)
-
-- travis: add osx build with darwinssl
-
- Closes #1706
-
-- darwin: silence compiler warnings
-
- With a clang pragma and three type fixes
-
- Fixes #1722
-
-- BUILD.WINDOWS: mention buildconf.bat for builds off git
-
-- darwinssl: fix curlssl_sha256sum() compiler warnings on first argument
-
-- test130: verify comments in .netrc
-
-- [Gisle Vanem brought this change]
-
- netrc: skip lines starting with '#'
-
- Bug: https://curl.haxx.se/mail/lib-2017-08/0008.html
-
-Marcel Raad (3 Aug 2017)
-- CMake: set MSVC warning level to 4
-
- The MSVC warning level defaults to 3 in CMake. Change it to 4, which is
- consistent with the Visual Studio and NMake builds. Disable level 4
- warning C4127 for the library and additionally C4306 for the test
- servers to get a clean CURL_WERROR build as that warning is raised in
- some macros in older Visual Studio versions.
-
- Ref: https://github.com/curl/curl/pull/1667#issuecomment-314082794
- Closes https://github.com/curl/curl/pull/1711
-
-Daniel Stenberg (2 Aug 2017)
-- CURLOPT_NETRC.3: fix typo in 7e48aa386156f9c2
-
- Reported-by: Viktor Szakats
-
-- CURLOPT_NETRC.3: mention the file name on windows
-
- ... and CURLOPT_NETRC_FILE(3).
-
-- travis: build osx with libressl too
-
-- travis: build osx with openssl too
-
-- tests/server/util: fix curltime mistake from 4dee50b9c80f9
-
-Marcel Raad (1 Aug 2017)
-- curl_threads: fix MSVC compiler warning
-
- Use LongToHandle to convert from long to HANDLE in the Win32
- implementation.
- This should fix the following warning when compiling with
- MSVC 11 (2012) in 64-bit mode:
- lib\curl_threads.c(113): warning C4306:
- 'type cast' : conversion from 'long' to 'HANDLE' of greater size
-
- Closes https://github.com/curl/curl/pull/1717
-
-Daniel Stenberg (1 Aug 2017)
-- BUGS: improved phrasing about security bugs
-
- Reported-by: Max Dymond
-
-- BUGS: clarify how to report security related bugs
-
-- [Brad Spencer brought this change]
-
- multi: fix request timer management
-
- There are some bugs in how timers are managed for a single easy handle
- that causes the wrong "next timeout" value to be reported to the
- application when a new minimum needs to be recomputed and that new
- minimum should be an existing timer that isn't currently set for the
- easy handle. When the application drives a set of easy handles via the
- `curl_multi_socket_action()` API (for example), it gets told to wait the
- wrong amount of time before the next call, which causes requests to
- linger for a long time (or, it is my guess, possibly forever).
-
- Bug: https://curl.haxx.se/mail/lib-2017-07/0033.html
-
-Jay Satiro (1 Aug 2017)
-- curl_setup: Define CURL_NO_OLDIES for building libcurl
-
- .. to catch accidental use of deprecated error codes.
-
- Ref: https://github.com/curl/curl/issues/1688#issuecomment-316764237
-
-Daniel Stenberg (1 Aug 2017)
-- [Jeremy Tan brought this change]
-
- configure: fix the check for IdnToUnicode
-
- Fixes #1669
- Closes #1713
-
-- http: fix response code parser to avoid integer overflow
-
- test 1429 and 1433 were updated to work with the stricter HTTP status line
- parser.
-
- Closes #1714
- Reported-by: Brian Carpenter
-
-Jay Satiro (31 Jul 2017)
-- [Dwarakanath Yadavalli brought this change]
-
- libcurl: Stop using error codes defined under CURL_NO_OLDIES
-
- Fixes https://github.com/curl/curl/issues/1688
- Closes https://github.com/curl/curl/pull/1712
-
-- include.d: clarify --include is only for response headers
-
- Follow-up to 171f8de and de6de94.
-
- Bug: https://github.com/curl/curl/commit/de6de94#commitcomment-23370851
- Reported-by: Daniel Stenberg
-
-Daniel Stenberg (30 Jul 2017)
-- [jasjuang brought this change]
-
- cmake: support make uninstall
-
- Closes #1674
-
-- RELEASE-NOTES: synced with 001701c47
-
-Marcel Raad (29 Jul 2017)
-- AppVeyor: now really use CURL_WERROR
-
- It was misspelled as CURL_ERROR in commit
- 2d86e8d1286e0fbe3d811e2e87fa0b5e53722db4.
-
- Closes https://github.com/curl/curl/pull/1686
-
-Jay Satiro (29 Jul 2017)
-- tool_help: clarify --include is only for response headers
-
- Follow-up to 171f8de.
-
- Ref: https://github.com/curl/curl/issues/1704
-
-- splay: fix signed/unsigned mismatch warning
-
- Follow-up to 4dee50b.
-
- Ref: https://github.com/curl/curl/pull/1693
-
-Daniel Stenberg (28 Jul 2017)
-- include.d: clarify that it concerns the response headers
-
- Reported-by: olesteban at github
- Fixes #1704
-
-- [Johannes Schindelin brought this change]
-
- curl_rtmp: fix a compiler warning
-
- The headers of librtmp declare the socket as `int`, and on Windows, that
- disagrees with curl_socket_t.
-
- Bug: #1652
-
- Signed-off-by: Johannes Schindelin
-
-- test1323: verify curlx_tvdiff
-
-- timeval: struct curltime is a struct timeval replacement
-
- ... to make all libcurl internals able to use the same data types for
- the struct members. The timeval struct differs subtly on several
- platforms so it makes it cumbersome to use everywhere.
-
- Ref: #1652
- Closes #1693
-
-- darwinssl: fix variable type mistake (regression)
-
- ... which made --tlsv1.2 not work because it would blank the max tls
- version variable.
-
- Reported-by: Nick Miyake
- Bug: #1703
-
-- multi: mention integer overflow risk if using > 500 million sockets
-
- Reported-by: ovidiu-benea@users.noreply.github.com
-
- Closes #1675
- Closes #1683
-
-- checksrc: escape open brace in regex
-
- ... to silence warning.
-
-Kamil Dudka (20 Jul 2017)
-- nss: fix a possible use-after-free in SelectClientCert()
-
- ... causing a SIGSEGV in showit() in case the handle used to initiate
- the connection has already been freed.
-
- This commit fixes a bug introduced in curl-7_19_5-204-g5f0cae803.
-
- Reported-by: Rob Sanders
- Bug: https://bugzilla.redhat.com/1436158
-
-- nss: unify the coding style of nss_send() and nss_recv()
-
- No changes in behavior intended by this commit.
-
-Marcel Raad (18 Jul 2017)
-- tests/server/resolve.c: fix deprecation warning
-
- MSVC warns that gethostbyname is deprecated. Always use getaddrinfo
- instead to fix this when IPv6 is enabled, also for IPv4 resolves. This
- is also consistent with what libcurl does.
-
- Closes https://github.com/curl/curl/pull/1682
-
-Jay Satiro (17 Jul 2017)
-- darwinssl: fix pinnedpubkey build error
-
- - s/SessionHandle/Curl_easy/
-
- Bug: https://github.com/curl/curl/commit/eb16305#commitcomment-23035670
- Reported-by: Gisle Vanem
-
-Marcel Raad (16 Jul 2017)
-- rtspd: fix GCC warning after MSVC warning fix
-
- Older GCC warns:
- /tests/server/rtspd.c:1194:10: warning: missing braces around
- initializer [-Wmissing-braces]
-
- Fix this by using memset instead of an initializer.
-
-- libtest: fix MSVC warning C4706
-
- With warning level 4, MSVC warns about assignments within conditional
- expressions. Change the while loop to a do-while loop to fix this. This
- change is also consistent with CODE_STYLE.md.
-
-- sockfilt: suppress conversion warning with explicit cast
-
- MSVC warns when implicitly casting -1 to unsigned long.
-
-- rtspd: fix MSVC level 4 warning
-
- warning C4701: potentially uninitialized local variable 'req' used
-
-- winbuild: re-enable warning C4127 for curl tool
-
- Disabled in cda19a345f6970e22fe8b7a808aeb8f086a21eac. It only needs to
- be disabled for libcurl.
-
-- winbuild: build with warning level 4
-
- This is consistent with 7bc64561a2e63ca93e4b0b31d350773ba80955c2, which
- changed the warning level from 3 to 4 for the Visual Studio project
- files. But disable the level 4 warning C4127 "conditional expression is
- constant", as that one is issued by older versions of the Windows SDK
- as well as curl itself under some circumstances.
-
- Closes https://github.com/curl/curl/pull/1667
-
-Jay Satiro (12 Jul 2017)
-- [Max Dymond brought this change]
-
- travis: install libidn2
-
- Install libidn2 to increase test coverage (IDN tests)
-
- Closes https://github.com/curl/curl/pull/1673
-
-Marcel Raad (12 Jul 2017)
-- travis: enable warnings also in release mode
-
- ... to get warnings also on Linux/GCC and OSX/clang.
-
- Closes https://github.com/curl/curl/pull/1666
-
-Daniel Stenberg (12 Jul 2017)
-- [Max Dymond brought this change]
-
- travis: install libssh2
-
- Install libssh2 to increase test coverage (SFTP, SCP)
-
-Marcel Raad (12 Jul 2017)
-- system.h: include winsock2.h before windows.h
-
- ... to avoid compiler warnings if the user doesn't want
- WIN32_LEAN_AND_MEAN.
-
-- build: remove WIN32_LEAN_AND_MEAN from individual build systems
-
- It's defined for all build systems in curl_setup.h since commit
- beb08481d01a07a8b10938b1078a5e298b1c2912. This caused macro
- redefinition warnings in the configure builds.
-
- Closes https://github.com/curl/curl/pull/1677
-
-Jay Satiro (11 Jul 2017)
-- ISSUE_TEMPLATE: Add a comment not to file security issues on github
-
-Marcel Raad (11 Jul 2017)
-- curl_setup: always define WIN32_LEAN_AND_MEAN on Windows
-
- Make sure to always define WIN32_LEAN_AND_MEAN before including any
- Windows headers to avoid pulling in unnecessary headers. This avoids
- unnecessary macro clashes and compiler warnings.
-
- Ref: https://github.com/curl/curl/issues/1562
- Closes https://github.com/curl/curl/pull/1672
-
-Jay Satiro (11 Jul 2017)
-- strerror: Preserve Windows error code in some functions
-
- This is a follow-up to af02162 which removed (SET_)ERRNO macros. That
- commit was an earlier draft that I committed by mistake, which was then
- remedied by a5834e5 and e909de6, and now this commit. With this commit
- there is now no difference between the current code and the changes that
- were approved in the final draft.
-
- Thanks-to: Max Dymond, Marcel Raad, Daniel Stenberg, Gisle Vanem
- Ref: https://github.com/curl/curl/pull/1589
-
-Marcel Raad (10 Jul 2017)
-- [Max Dymond brought this change]
-
- tests: Fix up issues with errno in test files
-
- Closes https://github.com/curl/curl/pull/1671
-
-Daniel Stenberg (10 Jul 2017)
-- errno: fix non-windows builds after af0216251b94e7
-
-- [Ryan Winograd brought this change]
-
- make: fix docs build on OpenBSD
-
- Ref: #1591
-
-Marcel Raad (10 Jul 2017)
-- ldap: fix MinGW compiler warning
-
- ldap_bind_s is marked as deprecated in w32api's winldap.h shipping with
- the latest original MinGW, resulting in compiler warnings since commit
- f0fe66f13c93d3d0af45d9fb1231c9164e0f9dc8. Fix this for the non-SSPI
- case by using ldap_simple_bind_s again instead of ldap_bind_s with
- LDAP_AUTH_SIMPLE.
-
- Closes https://github.com/curl/curl/pull/1664
-
-- curl-compilers.m4: disable warning spam with Cygwin's clang
-
- When building with Cygwin or MinGW, libtool uses a wrapper executable
- instead of a wrapper script [1], which is written in C and throws
- missing-variable-declarations warnings. Don't enable these warnings on
- Cygwin and MinGW in order to avoid warnings for every executable built,
- which spams the test suite output when using Cygwin's clang.
-
- [1] https://www.gnu.org/software/libtool/manual/html_node/Wrapper-executables.html
-
- Closes https://github.com/curl/curl/pull/1665
-
-Jay Satiro (10 Jul 2017)
-- curl_setup_once: Remove ERRNO/SET_ERRNO macros
-
- Prior to this change (SET_)ERRNO mapped to GetLastError/SetLastError
- for Win32 and regular errno otherwise.
-
- I reviewed the code and found no justifiable reason for conflating errno
- on WIN32 with GetLastError/SetLastError. All Win32 CRTs support errno,
- and any Win32 multithreaded CRT supports thread-local errno.
-
- Fixes https://github.com/curl/curl/issues/895
- Closes https://github.com/curl/curl/pull/1589
-
-- tool_getparam: fix potentially uninitialized err
-
-Marcel Raad (9 Jul 2017)
-- smb: rename variable to fix shadowing warning
-
- GCC 4.6.3 on travis complains:
- smb.c: In function ‘get_posix_time’:
- smb.c:725:13: error: declaration of ‘time’ shadows a global declaration
- [-Werror=shadow]
-
- Fix this by renaming the variable.
-
-- tool_cb_wrt: fix variable shadowing warning
-
- GCC 4.4 complains:
- tool_cb_wrt.c:81: error: declaration of ‘isatty’ shadows a global
- declaration
- /usr/include/unistd.h:782: error: shadowed declaration is here
-
- Fix this by renaming the variable.
-
- Closes https://github.com/curl/curl/pull/1661
-
-Daniel Stenberg (8 Jul 2017)
-- RELEASE-NOTES: synced with be2c999b8
-
-- travis: install stunnel
-
-- valgrind.supp: supress OpenSSL false positive seen on travis
-
-- travis: detect and use valgrind for normal builds
-
- Closes #1653
-
-- travis: add SMB, DICT, TELNET torture to coverage test
-
-- [Paul Harris brought this change]
-
- cmake: offer CMAKE_DEBUG_POSTFIX when building with MSVC
-
- Removes BUILD_RELEASE_DEBUG_DIRS since it wasn't used anywhere.
-
- Closes #1649
-
-- CURLOPT_POSTFIELDS.3: explain the 100-continue magic better
-
-- [Max Dymond brought this change]
-
- test1452: add telnet negotiation
-
- Add a basic telnet server for negotiating some telnet options before
- echoing back any data that's sent to it.
-
- Closes #1645
-
-- travis: do more tests in the coverage run
-
- I added a selection of torture and event tests that run "fast enough"
-
-- curl_easy_escape.3: mention the (lack of) encoding
-
- Fixes #1612
- Reported-by: Jeroen Ooms
-
-- [Gisle Vanem brought this change]
-
- memdebug: don't setbuf() if the file open failed
-
- Bug: https://github.com/curl/curl/issues/828#issuecomment-313475151
-
-- appveyor: enable CURL_WERROR on all builds
-
-- cmake: add CURL_WERROR for enabling "warning as errors"
-
-- [Hannes Magnusson brought this change]
-
- cmake: remove spurious "-l" from linker flags
-
- Fixes #1552
-
-- test506: skip if threaded-resolver
-
-- runtests: support "threaded-resolver" as a feature
-
- ... to let tests require it or skip if present
-
-- asyn-thread.c: fix unused variable warnings on macOS
-
-- http: s/TINY_INITIAL_POST_SIZE/EXPECT_100_THRESHOLD
-
- Make the name reflect its use better, and add a short comment describing
- what it's for.
-
-- cmake: if inet_pton is used, bump _WIN32_WINNT
-
- ... and make sure inet_pton is always checked for when *not* using Windows,
- which is a regression from 4fc6ebe18.
-
- Idea-by: Sergei Nikulov
-
-- select.h: avoid macro redefinition harder
-
- ... by checking the POLLIN define, as the header file checks don't work
- on Windows.
-
-- inet_pton: fix include on windows to get prototype
-
- inet_pton() exists on Windows and gets used by our cmake builds. Make
- sure the correct header file is included to avoid compiler warnings.
-
- Closes #1639
-
-- TODO: 1.10 auto-detect proxy
-
- Closes #1572
-
-- TODO: HTTP proxy CONNECT is non-blocking now
-
-- cmake: fix send/recv argument scanner for windows
-
- ... by simply trying the Windows argument types first.
-
- Fixes #1640
-
-- RELEASE-NOTES: synced with 596cfb6c0
-
-- [Gisle Vanem brought this change]
-
- smb: add support for CURLOPT_FILETIME
-
- Bug: https://curl.haxx.se/mail/lib-2017-07/0005.html
-
- Closes #1643
-
-- travis: install nghttp2 on linux builds
-
- Closes #1642
-
-- [Gisle Vanem brought this change]
-
- smb: fix build for djgpp/MSDOS
-
- bug: https://curl.haxx.se/mail/lib-2017-07/0005.html
-
-- configure: try ldap/lber in reversed order first
-
- When scanning for which LDAP libraries to use, try the -lldap -llber
- combination before the reversed order since it has a greater chance of
- working when linking with libcurl statically.
-
- Fixes #1619
- Closes #1634
- Reported-by: David E. Narváez
-
-- configure: remove checks for 5 functions never used
-
- fork, getprotobyname, inet_addr, perror, uname
-
- closes #1638
-
-- dist: add SMB python deps into the tarball
-
-- [Max Dymond brought this change]
-
- test1451: add SMB support to the testbed
-
- Add test 1451 which does some very basic SMB testing using the impacket
- SMB server.
-
- Closes #1630
-
-- [Max Dymond brought this change]
-
- test: add impacket for SMB testing
-
- Import impacket 0.9.15 for use in SMB testing. This was generated by
- doing "pip2.7 install -t . impacket"
-
- Unnecessary files for current testing were deleted.
-
-- travis.yml: use --enable-werror on debug builds
-
- ... to better detect and fault on compiler warnings/errors
-
- Closes #1637
-
-- tool_sleep: typecast to avoid macos compiler warning
-
- tool_sleep.c:54:24: error: implicit conversion loses integer precision:
- 'long' to '__darwin_suseconds_t' (aka 'int')
- [-Werror,-Wshorten-64-to-32]
-
-- [Martin Kepplinger brought this change]
-
- timeval.c: Use long long constant type for timeval assignment
-
- On a 64 bit host, sparse says:
-
- timeval.c:148:15: warning: constant 0x7fffffffffffffff is so big it is long
- timeval.c:149:12: warning: constant 0x7fffffffffffffff is so big it is long
-
- so let's use long long constant types in order to prevent undesired overflow
- failures.
-
- Bug: https://curl.haxx.se/mail/lib-2017-07/0003.html
-
- Closes #1636
-
- Signed-off-by: Martin Kepplinger
-
-- url: make the original string get used on subsequent transfers
-
- ... since CURLOPT_URL should follow the same rules as other options:
- they remain set until changed or cleared.
-
- Added test 1551 to verify.
-
- Fixes #1631
- Closes #1632
- Reported-by: Pavel Rochnyak
-
-- [Johannes Schindelin brought this change]
-
- gtls: fix build when sizeof(long) < sizeof(void *)
-
- - Change gnutls pointer/int macros to pointer/curl_socket_t.
- Prior to this change they used long type as well.
-
- The size of the `long` data type can be shorter than that of pointer
- types. This is the case most notably on Windows.
-
- If C99 were acceptable, we could simply use `intptr_t` here. But we
- want to retain C89 compatibility.
-
- Simply use the trick of performing pointer arithmetic with the NULL
- pointer: to convert an integer `i` to a pointer, simply take the
- address of the `i`th element of a hypothetical character array
- starting at address NULL. To convert back, simply cast the pointer
- difference.
-
- Thanks to Jay Satiro for the initial modification to use curl_socket_t
- instead of int/long.
-
- Closes #1617
-
- Signed-off-by: Johannes Schindelin
-
-- [Ryan Winograd brought this change]
-
- unit1399: fix integer overflow
-
- Bug: #1616
- Closes #1633
-
-- [Per Malmberg brought this change]
-
- cmake: Added compatibility options for older Windows versions
-
- CURL_STATIC_CRT and ENABLE_INET_PTON
-
- Closes #1621
-
-- unit1399: add logging to time comparison
-
- ... to enable tracking down why autobuilds fail on this
-
- Bug: #1616
-
-- make: build the docs subdir only from within src
-
- ... and don't build at all in include
-
- Prompted-by-work-by: Simon Warta
- Ref: #1590
- Closes #1591
-
-- [Max Dymond brought this change]
-
- test1450: fix up DICT server in torture mode
-
- As per https://github.com/curl/curl/pull/1615, the DICT server is a
- little spammy in torture mode due to the sockets being torn down
- unexpectedly. Fix this by adding some error handling to the handling
- function.
-
- Closes #1629
-
-- [Max Dymond brought this change]
-
- test1450: add simple testing for DICT
-
- Add a new server which provides a DICT interface. This is intended to
- begin coverage testing for lib/dict.c
-
- Closes #1615
-
-- [Dan Fandrich brought this change]
-
- test1521: fix out-of-tree builds, broken with 467da3af
-
- The test.h file is no longer in the same directory as the source file,
- so that directory needs to be added to the include path.
-
- Fixes #1627
- Closes #1628
-
-- [Max Dymond brought this change]
-
- http2: handle PING frames
-
- Add a connection check function to HTTP2 based off RTSP. This causes
- PINGs to be handled the next time the connection is reused.
-
- Closes #1521
-
-- [Max Dymond brought this change]
-
- handler: refactor connection checking
-
- Add a new type of callback to Curl_handler which performs checks on
- the connection. Alter RTSP so that it uses this callback to do its
- own check on connection health.
-
-- [dmitrykos brought this change]
-
- openssl: improve fallback seed of PRNG with a time based hash
-
- Fixes #1620
-
-- [Ryan Winograd brought this change]
-
- progress: prevent resetting t_starttransfer
-
- Prevent `Curl_pgrsTime` from modifying `t_starttransfer` when invoked
- with `TIMER_STARTTRANSFER` more than once during a single request.
-
- When a redirect occurs, this is considered a new request and
- `t_starttransfer` can be updated to reflect the `t_starttransfer` time
- of the redirect request.
-
- Closes #1616
-
- Bug: https://github.com/curl/curl/pull/1602#issuecomment-310267370
-
-- curl_strequal.3: fix typo in SYNOPSIS
-
- Reported-by: Jesse Chisholm
-
- Fixes #1623
-
-- RELEASE-NOTES: synced with ce2c3ebda
-
-Kamil Dudka (28 Jun 2017)
-- curl --socks5-{basic,gssapi}: control socks5 auth
-
- Closes https://github.com/curl/curl/pull/1454
-
-- CURLOPT_SOCKS5_AUTH: allowed methods for SOCKS5 proxy auth
-
- If libcurl was built with GSS-API support, it unconditionally advertised
- GSS-API authentication while connecting to a SOCKS5 proxy. This caused
- problems in environments with improperly configured Kerberos: a stock
- libcurl failed to connect, despite libcurl built without GSS-API
- connected fine using username and password.
-
- This commit introduces the CURLOPT_SOCKS5_AUTH option to control the
- allowed methods for SOCKS5 authentication at run time.
-
- Note that a new option was preferred over reusing CURLOPT_PROXYAUTH
- for compatibility reasons because the set of authentication methods
- allowed by default was different for HTTP and SOCKS5 proxies.
-
- Bug: https://curl.haxx.se/mail/lib-2017-01/0005.html
- Closes https://github.com/curl/curl/pull/1454
-
-- socks: deduplicate the code for auth request
-
-- socks: use proxy_user instead of proxy_name
-
- ... to make it obvious what the data is used for
-
-Daniel Stenberg (27 Jun 2017)
-- libtest/make: generate lib1521.c
-
- ... instead of having the generated code checked in. This saves space in
- the tarball but primarily automatically adapts to newly added options.
-
- Closes #1614
-
-Jay Satiro (26 Jun 2017)
-- tool_getparam: fix memory leak on test 1147 OOM (torture tests)
-
- Bug: https://github.com/curl/curl/pull/1486#issuecomment-310926872
- Reported-by: Dan Fandrich
-
-Dan Fandrich (25 Jun 2017)
-- test1537: fixed memory leak on OOM
-
-Marcel Raad (25 Jun 2017)
-- test1521: fix compiler warnings
-
- The integer literal 3123123123 doesn't fit into a 32-bit signed
- integer, so GCC with 32-bit long warns in C90 mode:
- this decimal constant is unsigned only in ISO C90 [enabled by default]
- Fix this by using ULONG_MAX, which should fit in any curl_off_t and has
- the correct suffix to not issue any warnings.
- Also adds the missing CURLOPT_REQUEST_TARGET from commit
- 9b167fd090f596eac828817d48c247eeae53407f.
-
- Closes https://github.com/curl/curl/pull/1611
-
-Daniel Stenberg (24 Jun 2017)
-- curl/system.h: add check for XTENSA for 32bit gcc
-
- Reported-by: Neil Kolban
- Fixes: 1598
-
-- [Henrik S. Gaßmann brought this change]
-
- winbuild: fix boringssl build
-
- Compile with `WIN32_LEAN_AND_MEAN` which prevents `windows.h` from
- including too much clutter including `wincrypt.h` which in turn contains
- some preprocessor macros that clash with boringssl symbols.
-
- Detect boringssl by checking the existance of `is_boringssl.h` and set
- the corresponding `HAVE_BORINGSSL` for compilation which is used in
- `ldap.c` to undefine the evil macros.
-
- Closes #1610
-
-- progress: progress.timespent needs to be us
-
- follow-up to 64ed44a815e4e to fix test 500 failures
-
-Marcel Raad (24 Jun 2017)
-- curl-compilers.m4: fix unknown-warning-option on Apple clang
-
- Since 5598b0bd63f690c151074494ce47ef872f004ab4, clang -v is used to
- detect the clang version. The version number was expected to come after
- the word "version". For Apple clang, this doesn't work as it has its
- own versioning scheme.
- The version number is now first searched after the string
- "based on LLVM". This works for Apple clang before version 7, and also
- for e.g. Ubuntu's clang up to version 3.7. If it's not found and the
- version string contains "Apple LLVM version", clang version 3.7 is
- assumed, which is the version that comes with Xcode 7. Otherwise, the
- version number is still expected after the word "version", which works
- for very old Apple clang versions.
-
- Ref: https://trac.macports.org/wiki/XcodeVersionInfo
- Fixes https://github.com/curl/curl/issues/1606
- Closes https://github.com/curl/curl/pull/1607
-
-Daniel Stenberg (24 Jun 2017)
-- progress: fix "time spent", broke in adef394ac
-
-- CURLINFO_REDIRECT_URL.3: mention the CURLOPT_MAXREDIRS case
-
- ... supported since 7.54.1
-
-- maketgz: switch to -6e for xz
-
- To reduce the memory requirement for decompress, and still do almost as
- good compression as with -9e.
-
- Pointed-out-by: Dan Fandrich
-
-- libtest/Makefile: remove unused lib1541 variables
-
-- CONTRIBUTE.md: mention the out-of-tree build test too
-
-- maketgz: switch to xz instead of lzma
-
- The compressed output size seems to be a tad bit smaller, but generally
- xz seems more preferred these days and is used directly by for example
- gentoo instead of bz2.
-
- "Users of LZMA Utils should move to XZ Utils" =>
- https://tukaani.org/lzma/
-
- Closes #1604
-
-- --request-target: instead of --strip-path-slash
-
- ... and CURLOPT_REQUEST_TARGET instead of CURLOPT_STRIP_PATH_SLASH.
-
- This option instead provides the full "alternative" target to use in the
- request, instead of extracting the path from the URL.
-
- Test 1298 and 1299 updated accordingly.
-
- Idea-by: Evert Pot
- Suggestion: https://daniel.haxx.se/blog/2017/06/19/options-with-curl/comment-page-1/#comment-18373
-
- Closes #1593
-
-Marcel Raad (21 Jun 2017)
-- lib1521: fix missing-variable-declarations clang warnings
-
- Declare TU-local variables static.
-
-- travis: enable typecheck-gcc warnings
-
- - switch debug and release configurations so that we get an optimized
- build with GCC 4.3+ as required by typecheck-gcc
- - enable warnings-as-errors for release builds
- (which have warnings disabled)
-
- Closes https://github.com/curl/curl/pull/1595
-
-- typecheck-gcc: add support for CURLINFO_OFF_T
-
- typecheck-gcc expected curl_socket_t instead of curl_off_t arguments
- for CURLINFO_OFF_T. Detected by test1521, unfortunately only when run
- locally.
-
- Closes https://github.com/curl/curl/pull/1592
-
-Daniel Stenberg (21 Jun 2017)
-- [Simon Warta brought this change]
-
- ci: whitelist branches to avoid testing feature branches twice
-
-- [Gisle Vanem brought this change]
-
- lib: fix the djgpp build
-
- Bug: https://github.com/curl/curl/commit/73a2fcea0b4adea6ba342cd7ed1149782c214ae3#commitcomment-22655993
-
-Marcel Raad (20 Jun 2017)
-- if2ip: fix compiler warning in ISO C90 mode
-
- remote_scope_id is only used when both HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
- and ENABLE_IPV6 are defined instead of only one of them.
-
-Daniel Stenberg (20 Jun 2017)
-- travis: do the distcheck test build out-of-tree as well
-
-- http: add --strip-path-slash and CURLOPT_STRIP_PATH_SLASH
-
- ... to enable sending "OPTIONS *" which wasn't possible previously.
-
- This option currently only works for HTTP.
-
- Added test cases 1298 + 1299 to verify
-
- Fixes #1280
- Closes #1462
-
-- test1521: test getinfo's OFF_T types too
-
- Closes #1588
-
-- lib1521: add curl_easy_getinfo calls to the test set
-
- Also added return value checks to make sure no unexpected return codes
- are used.
-
-- [Simon Warta brought this change]
-
- automake: use $(MKHELP) variable instead if constant mkhelp.pl
-
- this improves symmetry with the rule above
-
-- [Simon Warta brought this change]
-
- mkhelp.pl: fix script name in usage text
-
-- RELEASE-NOTES: synced with 3b80d3ca4
-
-- getinfo: return sizes as curl_off_t
-
- This change introduces new alternatives for the existing six
- curl_easy_getinfo() options that return sizes or speeds as doubles. The
- new versions are named like the old ones but with an appended '_T':
-
- CURLINFO_CONTENT_LENGTH_DOWNLOAD_T
- CURLINFO_CONTENT_LENGTH_UPLOAD_T
- CURLINFO_SIZE_DOWNLOAD_T
- CURLINFO_SIZE_UPLOAD_T
- CURLINFO_SPEED_DOWNLOAD_T
- CURLINFO_SPEED_UPLOAD_T
-
- Closes #1511
-
-- PIPELINING_SERVER_BL: cleanup the internal list use
-
- The list was freed incorrectly since the llist refactor of
- cbae73e1dd959. Added test 1550 to verify that it works and avoid future
- regressions.
-
- Reported-by: Pascal Terjan
-
- Fixes #1584
- Closes #1585
-
-- http2: fix OOM crash
-
- torture mode with test 1021 found it
-
-- CURLOPT_PREQUOTE.3: spellfix man page reference
-
-Marcel Raad (18 Jun 2017)
-- http_proxy: fix build with http and proxy
-
- After deff7de0eb0e22d2d142b96b9cc84cd8db5d2a48, the build without
- CURL_DISABLE_PROXY and CURL_DISABLE_HTTP was failing because of missing
- includes.
-
-- http_proxy: fix compiler warning
-
- With CURL_DISABLE_PROXY or CURL_DISABLE_HTTP, GCC complained about a
- missing prototype for Curl_connect_free.
-
-Daniel Stenberg (18 Jun 2017)
-- TODO: update the TOC too
-
-- TODO: implement support for CURLOPT_PREQUOTE with SFTP
-
- ... also updated the CURLOPT_PREQUOTE.3 man page to mention the correct
- protocol support.
-
- Closes #1514
-
-- tool_wrte_cb: remove check for config == NULL
-
- ... as it really cannot have reached this far with config being NULL,
- thus this is unnecesary and misleading.
-
- Bug: https://news.ycombinator.com/item?id=14577585 and
- https://daniel.haxx.se/blog/2017/06/17/curl-doesnt-spew-binary-anymore/comment-page-1/#comment-18356
-
- Forwarded-to-us-by: Jakub Wilk
-
-- curl: prevent binary output spewed to terminal
-
- ... unless "--output -" is used. Binary detection is done by simply
- checking for a binary zero in early data.
-
- Added test 1425 1426 to verify.
-
- Closes #1512
-
-Marcel Raad (16 Jun 2017)
-- Makefile.m32: enable -W for MinGW32 build
-
- The configure-based build also has this in addition to -Wall.
-
- Closes https://github.com/curl/curl/pull/1578
-
-- curl-compilers.m4: enable comma clang warning
-
- It usually warns when using commas instead of semicolons or other
- operators by accident.
-
- Closes https://github.com/curl/curl/pull/1578
-
-- curl-compilers.m4: enable missing-variable-declarations clang warning
-
- It usually warns when forgetting to declare TU-local variables static.
-
- Closes https://github.com/curl/curl/pull/1578
-
-- curl-compilers.m4: enable double-promotion warning
-
- Enable -Wdouble-promotion for both GCC and clang. It warns on implicit
- promotion from float to double.
-
- Closes https://github.com/curl/curl/pull/1578
-
-- curl-compilers.m4: enable vla warning for clang
-
- Previously, that warning was only implicitly active in C90 mode.
- Enable it unconditionally as already done for GCC.
-
- Closes https://github.com/curl/curl/pull/1578
-
-Daniel Stenberg (16 Jun 2017)
-- http-proxy: fix chunked-encoded CONNECT responses
-
- Regression since 5113ad0424.
-
- ... and remove 'flaky' from test 1061 again
-
- Closes #1579
-
-- http-proxy: deal with EAGAIN
-
- ... the previous code would reset the header length wrongly (since
- 5113ad0424). This makes test 1060 reliable again.
-
- Also: make sws send even smaller chunks of data to increase the
- likeliness of this happening.
-
-- libtest/libntlmconnect: fix compiler warnings from f94fcdb
-
-- [Jay Satiro brought this change]
-
- HTTPS-Proxy: don't offer h2 for https proxy connections
-
- Bug: https://github.com/curl/curl/issues/1254
-
- Closes #1546
-
-- tests: stabilize test 2032 and 2033
-
- Both these tests run the same underlying test code: libntlmconnect.c -
- this test code made some assumptions about socket ordering when it used
- curl_easy_fdset() and when we changed timing or got accidental changes
- in libcurl the tests would fail.
-
- The tests verify that the different transfers keep using the same
- connections, which I now instead made sure by adding the number of bytes
- each transfer gets and then verifies that they always get the same
- amount as when these tests worked.
-
- Closes #1576
-
-- test1148: verify the -# progressbar
-
- Closes #1569
-
-- test1061: mark as flaky
-
- Fails intermittently on travis builds since a few days. Likely due to
- 5113ad0424.
-
-Jay Satiro (16 Jun 2017)
-- url: refactor the check for Windows drive letter in path
-
- - Move the logic to detect a Windows drive letter prefix
- (eg c: in c:foo) into a function-like macro.
-
- Closes https://github.com/curl/curl/pull/1571
-
-- mk-ca-bundle.pl: Check curl's exit code after certdata download
-
- - No longer allow partial downloads of certdata.
-
- Prior to this change partial downloads were (erroneously?) allowed since
- only the server code was checked to be 200.
-
- Bug: https://github.com/curl/curl/pull/1577
- Reported-by: Matteo B.
-
-Daniel Stenberg (16 Jun 2017)
-- dist: add the fuzz dir to the tarball
-
-- configure: disable nghttp2 too if HTTP has been disabled
-
-- http-proxy: fix build with --disable-proxy or --disable-http
-
- Reported-by: Dan Fandrich
-
-- fuzz/README: document how to build
-
- Fixes #1476
-
-- [Frederik B brought this change]
-
- fuzz: corpora file structure, initial commit
-
-- [Frederik B brought this change]
-
- fuzz: bring oss-fuzz initial code converted to C89
-
-- http-proxy: only attempt FTP over HTTP proxy
-
- ... all other non-HTTP protocol schemes are now defaulting to "tunnel
- trough" mode if a HTTP proxy is specified. In reality there are no HTTP
- proxies out there that allow those other schemes.
-
- Assisted-by: Ray Satiro, Michael Kaufmann
-
- Closes #1505
-
-- TODO: the generated include file is gone
-
- ... since commit 73a2fcea0b
-
-- curl_setup.h: error out on CURL_WANTS_CA_BUNDLE_ENV use
-
- ... to make it really apparent if there's any user using this on purpose.
-
- Suggested-by: Jay Satiro
-
- Closes #1542
-
-- lib/curl_setup.h: remove CURL_WANTS_CA_BUNDLE_ENV
-
- When this define was set, libcurl would check the environment variable
- named CURL_CA_BUNDLE at run-time and use that CA cert bundle. This
- feature was only defined by the watcom and m32 makefiles and caused
- inconsistent behaviours among libcurls built on different platforms.
-
- The curl tool does already feature its own similar logic and the library
- does not really need it, and it isn't documented libcurl behavior. So
- this change removes it.
-
- Ref: #1538
-
-- test1147: verify -H on a file
-
-- curl: allow --header and --proxy-header read from file
-
- So many headers can be provided as @filename.
-
- Suggested-by: Timothe Litt
-
- Closes #1486
-
-- RELEASE-NOTES: synced with 2ad80eec5
-
-- curl/curlver.h: start working on 7.55.0
-
-- http-proxy: do the HTTP CONNECT process entirely non-blocking
-
- Mentioned as a problem since 2007 (8f87c15bdac63) and of course it
- existed even before that.
-
- Closes #1547
-
-- progress: let "current speed" be UL + DL speeds combined
-
- Bug #1556
- Reported-by: Paul Harris
- Closes #1559
-
-Marcel Raad (14 Jun 2017)
-- system.h: fix MinGW build
-
- CURLSYS_PULL_WS2TCPIP_H got renamed to CURL_PULL_WS2TCPIP_H in commit
- 73a2fcea0b4adea6ba342cd7ed1149782c214ae3.
-
-Daniel Stenberg (14 Jun 2017)
-- timers: store internal time stamps as time_t instead of doubles
-
- This gives us accurate precision and it allows us to avoid storing "no
- time" for systems with too low timer resolution as we then bump the time
- up to 1 microsecond. Should fix test 573 on windows.
-
- Remove the now unused curlx_tvdiff_secs() function.
-
- Maintains the external getinfo() API with using doubles.
-
- Fixes #1531
-
-- dist: make the hugehelp.c not get regenerated unnecessarily
-
- The maketgz script now makes sure the generated hugehelp.c file in the
- tarball is newer than the generated curl.1 man page, so that it doesn't
- have to get unnecessarily rebuilt first thing in a typical build. It
- thus also removes the need for perl to build off a plain release
- tarball.
-
- Fixes #1565
-
-- includes: remove curl/curlbuild.h and curl/curlrules.h
-
- Rely entirely on curl/system.h now.
-
- Introduced in Aug 2008 with commit 14240e9e109f. Now gone.
-
- Fixes #1456
-
-Version 7.54.1 (14 Jun 2017)
-
-Daniel Stenberg (14 Jun 2017)
-- release: 7.54.1
-
-Dan Fandrich (13 Jun 2017)
-- mk-lib1521.pl: updated to match the test changes in 916ec30a
-
-Daniel Stenberg (13 Jun 2017)
-- [Stuart Henderson brought this change]
-
- libressl: OCSP and intermediate certs workaround no longer needed
-
- lib/vtls/openssl.c has a workaround for a bug with OCSP responses signed
- by intermediate certs, this was fixed in LibreSSL in
- https://github.com/libressl-portable/openbsd/commit/912c64f68f7ac4f225b7d1fdc8fbd43168912ba0
-
- Bug: https://curl.haxx.se/mail/lib-2017-06/0038.html
-
-- url: fix buffer overwrite with file protocol (CVE-2017-9502)
-
- Bug: https://github.com/curl/curl/issues/1540
- Advisory: https://curl.haxx.se/docs/adv_20170614.html
-
- Assisted-by: Ray Satiro
- Reported-by: Marcel Raad
-
-- urlglob: fix division by zero
-
- The multiply() function that is used to avoid integer overflows, was
- itself reason for a possible division by zero error when passed a
- specially formatted glob.
-
- Reported-by: GwanYeong Kim
-
-- configure: update the copyright year in the output
-
-- [ygrek brought this change]
-
- BINDINGS: update SP-Forth and OCaml urls
-
-Michael Kaufmann (11 Jun 2017)
-- FindWin32CACert: Use a temporary buffer on the stack
-
- Don't malloc() the temporary buffer, and use the correct type:
- SearchPath() works with TCHAR, but SearchPathA() works with char.
- Set the buffer size to MAX_PATH, because the terminating null byte
- is already included in MAX_PATH.
-
- Reviewed-by: Daniel Stenberg
- Reviewed-by: Marcel Raad
-
- Closes #1548
-
-Dan Fandrich (11 Jun 2017)
-- test1521: fixed OOM handling
-
-Daniel Stenberg (9 Jun 2017)
-- RELEASE-PROCEDURE: updated future release dates
-
-- [Paul Harris brought this change]
-
- gitignore: ignore all vim swap files
-
- Closes #1561
-
-- lib1521: fix compiler warnings on the use of bad 'long' values
-
- Reported-by: Marcel Raad
- Bug: https://github.com/curl/curl/commit/cccac4fb2b20d6ed87da7978408c3ecacc464fe4#commitcomment-22453387
-
-- setopt: check CURLOPT_ADDRESS_SCOPE option range
-
- ... and return error instead of triggering an assert() when being way
- out of range.
-
-Jay Satiro (8 Jun 2017)
-- [TheAssassin brought this change]
-
- cmake: Fix inconsistency regarding mbed TLS include directory
-
- Previously, one had to set MBEDTLS_INCLUDE_DIR to make CMake find the
- headers, but the system complained that mbed TLS wasn't found due to
- MBEDTLS_INCLUDE_DIRS (note the trailing s) was not set. This commit
- attempts to fix that.
-
- Closes https://github.com/curl/curl/pull/1541
-
-Daniel Stenberg (8 Jun 2017)
-- [Ryuichi KAWAMATA brought this change]
-
- examples/multi-uv.c: fix deprecated symbol
-
- Closes #1557
-
-- asyn-ares: s/Curl_expire_latest/Curl_expire
-
-- expire: remove Curl_expire_latest()
-
- With the introduction of expire IDs and the fact that existing timers
- can be removed now and thus never expire, the concept with adding a
- "latest" timer is not working anymore as it risks to not expire at all.
-
- So, to be certain the timers actually are in line and will expire, the
- plain Curl_expire() needs to be used. The _latest() function was added
- as a sort of shortcut in the past that's quite simply not necessary
- anymore.
-
- Follow-up to 31b39c40cf90
-
- Reported-by: Paul Harris
-
- Closes #1555
-
-- [Chris Carlmar brought this change]
-
- configure: fix link with librtmp when specifying path
-
- Bug: https://curl.haxx.se/mail/lib-2017-06/0017.html
-
-- file: make speedcheck use current time for checks
-
- ... as it would previously just get the "now" timestamp before the
- transfer starts and then not update it again.
-
- Closes #1550
-
-- metalink: remove unused printf() argument
-
-- travis: let some builds *not* use --enable-debug
-
- typecheck-gcc and other things require optimized builds
-
- Closes #1544
-
-- README.md: show the coverall coverage on github
-
-- lib1521: fix compiler warnings
-
-- test1521: make the code < 80 columns wide
-
-- test1121: use stricter types to work with typcheck-gcc
-
-- typecheck-gcc: allow CURLOPT_STDERR to be NULL too
-
-- test1521: test *all* curl_easy_setopt options
-
- mk-lib1521.pl generates a test program (lib1521.c) that calls
- curl_easy_setopt() for every known option with a few typical values to
- make sure they work (ignoring the return codes).
-
- Some small changes were necessary to avoid asserts and NULL accesses
- when doing this.
-
- The perl script needs to be manually rerun when we add new options.
-
- Closes #1543
-
-Dan Fandrich (5 Jun 2017)
-- test1538: added "verbose logs" keyword
-
- These error messages are not displayed with --disable-verbose
-
-Daniel Stenberg (5 Jun 2017)
-- test1262: verify ftp download with -z for "if older than this"
-
-Marcel Raad (5 Jun 2017)
-- curl_ntlm_core: use Curl_raw_toupper instead of toupper
-
- This was the only remaining use of toupper in the entire source code.
-
- Suggested-by: Daniel Stenberg
-
-Daniel Stenberg (4 Jun 2017)
-- RELEASE-NOTES: synced with 65ba92650
-
-Marcel Raad (4 Jun 2017)
-- curl_ntlm_core: pass unsigned char to toupper
-
- Otherwise, clang on Cygwin64 warns:
- curl_ntlm_core.c:525:35: error: array subscript is of type 'char'
- [-Werror,-Wchar-subscripts]
- dest[2 * i] = (unsigned char)(toupper(src[i]));
- ^~~~~~~~~~~~~~~
- /usr/include/ctype.h:152:25: note: expanded from macro 'toupper'
- (void) __CTYPE_PTR[__x]; (toupper) (__x);})
- ^~~~
-
-Jay Satiro (3 Jun 2017)
-- [Mahmoud Samir Fayed brought this change]
-
- BINDINGS: add Ring binding
-
- Closes https://github.com/curl/curl/pull/1539
-
-Daniel Stenberg (4 Jun 2017)
-- CONTRIBUTE.md: mention tests done on pull requests
-
-- travis: add coverage, distcheck and cmake builds
-
- Closes #1534
-
-Marcel Raad (3 Jun 2017)
-- libtest: fix int-in-bool-context warnings
-
- GCC 7 complained:
- ‘*’ in boolean context, suggest ‘&&’ instead [-Wint-in-bool-context]
-
-- libtest: fix implicit-fallthrough warnings with GCC 7
-
-- x509asn1: fix implicit-fallthrough warning with GCC 7
-
-- curl_sasl: fix unused-variable warning
-
- This fixes the following warning with CURL_DISABLE_CRYPTO_AUTH,
- as seen in the autobuilds:
-
- curl_sasl.c:417:9: warning: unused variable 'serverdata'
- [-Wunused-variable]
-
-Daniel Stenberg (3 Jun 2017)
-- updatemanpages.pl: error out on too old git version
-
-Marcel Raad (3 Jun 2017)
-- cyassl: define build macros before including ssl.h
-
- cyassl/ssl.h needs the macros from cyassl/options.h, so define them
- before including cyassl/ssl.h the first time, which happens in
- urldata.h.
- This broke the build on Ubuntu Xenial, which comes with WolfSSL 3.4.8
- and therefore redefines the symbols from cyassl/options.h instead of
- including the header.
-
- Closes https://github.com/curl/curl/pull/1536
-
-Daniel Stenberg (3 Jun 2017)
-- tool_util: remove unused tvdiff_secs and remove tool_ prefix
-
- Closes #1532
-
-- dedotdot: fixed output for ".." and "." only input
-
- Found when updating test 1395, which I did to increase test coverage of
- this source file...
-
- Closes #1535
-
-Marcel Raad (2 Jun 2017)
-- mbedtls: make TU-local variable static
-
- mbedtls_x509_crt_profile_fr is only used locally.
- This fixes a missing-variable-declarations warning with clang.
-
-- MD(4|5): silence cast-align clang warning
-
- Unaligned access is on purpose here and the warning is harmless on
- affected architectures. GCC knows that, while clang warns on all
- architectures.
-
-Daniel Stenberg (2 Jun 2017)
-- test1538: fix typo
-
-- test1538: verify the libcurl strerror API calls
-
-- curl_endian: remove unused functions
-
- Closes #1529
-
-- test1537: dedicated tests of the URL (un)escape API calls
-
- Closes #1530
-
-- coverage: run event tests too
-
- ... the torture ones are commented out only because they are slooooow.
-
-- build: provide easy code coverage measuring
-
- Closes #1528
-
-- typecheck-gcc.h: check CURLINFO_CERTINFO
-
- ... and update the certinfo.c example accordingly.
-
- Fixes https://github.com/curl/curl/issues/846
-
-- typecheck-gcc.h: check CURLINFO_TLS_SSL_PTR and CURLINFO_TLS_SESSION
-
- ... so that they get the required "struct curl_tlssessioninfo **"
- arguments.
-
-- typecheck-gcc.h: separate getinfo slist checks from other pointers
-
- Fixes #1524
-
-Marcel Raad (1 Jun 2017)
-- curl-compilers.m4: escape square brackets in regex
-
- Otherwise, they are removed in the final configure file.
- Also changed sed to "$SED" like in most other calls in this file.
-
-- curl-compilers.m4: fix compiler_num for clang
-
- "clang -dumpversion" always returns "4.2.1", the GCC version that clang
- was initially compatible to. Use "clang -v" instead, which returns the
- actual clang version.
-
- Fixes https://github.com/curl/curl/issues/1522
- Closes https://github.com/curl/curl/pull/1523
-
-Daniel Stenberg (31 May 2017)
-- examples/externalsocket.c: s/closesocket/closecb
-
- ... since closesocket is a function in WinSock.
-
- Reported-by: Marcel Raad
- Bug: https://github.com/curl/curl/commit/55fcb8485914700132fd1854c9509b66c955efbe#co
- mmitcomment-22347818
-
-Marcel Raad (31 May 2017)
-- lib583: fix compiler warning
-
- Use CURLMcode for variable 'res' and cast to int where necessary
- instead of the other way around. Other tests do the same.
-
- This fixes the following clang warning:
- lib583.c:68:15: warning: cast from function call of type 'CURLMcode' to
- non-matching type 'int' [-Wbad-function-cast]
-
-Daniel Stenberg (31 May 2017)
-- CURLOPT_SSH_KEY*.3: typos
-
- Reported-by: Gisle Vanem
-
-- CURLOPT_STREAM_DEPENDS.3: typo
-
-- CURLOPT_FNMATCH_FUNCTION.3: also modified example to avoid fcpp issues
-
-- CURLOPT_FNMATCH_DATA.3: modified example to avoid fcpp issues
-
-- opts: more than 100 more examples for man pages...
-
-- libtest/lib574.c: use correct callback proto
-
-- examples/sampleconv.c: indent changes, made callbacks static
-
-- example/externalsocket.c: make it use CLOSESOCKETFUNCTION too
-
-Marcel Raad (31 May 2017)
-- curl-compilers.m4: enable -Wshift-sign-overflow for clang
-
- clang 2.9+ supports -Wshift-sign-overflow, which warns about undefined
- behavior on signed left shifts when shifting by too many places.
-
- Ref: https://github.com/curl/curl/issues/1516
- Closes https://github.com/curl/curl/pull/1517
-
-Daniel Stenberg (31 May 2017)
-- CURLOPT_PROXY.3: fix test 1140 breakage
-
-Jay Satiro (31 May 2017)
-- build-wolfssl: Sync config with wolfSSL 3.11
-
- wolfSSL configure script relevant changes from 3.10 to 3.11:
-
- - Async threading support added; disabled by default without async
- crypto, which continues to be disabled by default.
-
- wolfSSL configure script relevant changes from 3.11 to 3.11.1 (beta):
-
- - TLS 1.3 beta support added; disabled by default.
-
- For experimenting I put in a comment block the defines needed to enable
- TLS 1.3 support (ie the equivalent of --enable-tls13).
-
-Daniel Stenberg (30 May 2017)
-- opts: more examples added to man pages
-
-- docs: clarify NO_PROXY further
-
- Fixes #1208
-
-- CURLOPT_PROXY.3: describe the environment variables more
-
-- transfer: init the infilesize from the postfields...
-
- ... with a strlen() if no size was set, and do this in the pretransfer
- function so that the info is set early. Otherwise, the default strlen()
- done on the POSTFIELDS data never sets state.infilesize.
-
- Reported-by: Vincas Razma
- Bug: #1294
-
-Jay Satiro (29 May 2017)
-- test557: fix ubsan runtime error due to int left shift
-
- - Test curl_msnprintf negative int width arg using INT_MIN instead of
- 1 << 31 which is undefined behavior.
-
- Closes https://github.com/curl/curl/issues/1516
-
-- mbedtls: fix variable shadow warning
-
- vtls/mbedtls.c:804:69: warning: declaration of 'entropy' shadows a global declaration [-Wshadow]
- CURLcode Curl_mbedtls_random(struct Curl_easy *data, unsigned char *entropy,
- ^~~~~~~
-
-Daniel Stenberg (29 May 2017)
-- RELEASE-NOTES: synced with 3aaac8c2f
-
-Dan Fandrich (28 May 2017)
-- tests: removed some redundant empty sections
-
-- runtests.pl: removed feature
-
- This hasn't been used in over a decade. can still be used to
- run commands before the main test.
-
-Daniel Stenberg (27 May 2017)
-- opts: more examples added in option man pages
-
-Dan Fandrich (27 May 2017)
-- runtests.pl: removed unused arguments to valgrindparse
-
-Daniel Stenberg (25 May 2017)
-- TODO: 6.4 is done, send telnet data in chunks
-
-- [Phil Crump brought this change]
-
- docs/CURLOPT_SSLVERSION.3: Correct define name in example
-
- Closes #1509
-
-- ssh: fix 'left' may be used uninitialized
-
- follow-up to f31760e63b4e
-
- Reported-by: Michael Kaufmann
- Bug: https://github.com/curl/curl/pull/1495#issuecomment-303982793
-
-Michael Kaufmann (24 May 2017)
-- time: fix type conversions and compiler warnings
-
- Fix bugs and compiler warnings on systems with 32-bit long and
- 64-bit time_t.
-
- Reviewed-by: Daniel Stenberg
-
- Closes #1499
-
-Marcel Raad (24 May 2017)
-- examples: fix Wimplicit-fallthrough warnings
-
- This is contained in -Wextra with GCC 7.
-
-Daniel Stenberg (24 May 2017)
-- [Anatol Belski brought this change]
-
- winbuild: fix the nghttp2 build
-
- Closes #1321
-
-GitHub (24 May 2017)
-- [Sergei Nikulov brought this change]
-
- LDAP: documentation update per #878 changes (#1506)
-
-Daniel Stenberg (23 May 2017)
-- redirect: store the "would redirect to" URL when max redirs is reached
-
- Test 1261 added to verify.
-
- Reported-by: Lloyd Fournier
-
- Fixes #1489
- Closes #1497
-
-GitHub (24 May 2017)
-- [Sergei Nikulov brought this change]
-
- LDAP: fixed checksrc issue
-
-- [Sergei Nikulov brought this change]
-
- LDAP: using ldap_bind_s on Windows with methods (#878)
-
- * LDAP: using ldap_bind_s on Windows with methods(BASIC/DIGEST/NTLM/AUTONEG)
-
- * ldap: updated per build options handling
-
- * ldap: fixed logic for auth selection
-
-Daniel Stenberg (23 May 2017)
-- [Akhil Kedia brought this change]
-
- cmake: fix build on Ubuntu 14.04
-
- Fixed a syntax error with setting cache variables (The type and
- docstring were missing), resulting in build errors. Quoted the
- CURL_CA_PATH and CURL_CA_BUNDLE otherwise the path was written without
- quotes in C code, resulting in build errors.
-
- Closes #1503
-
- Signed-off-by: Akhil
-
-- url: fix declaration of 'pipe' shadows a global declaration
-
- follow-up to 4cdb1be8246c
-
-Kamil Dudka (22 May 2017)
-- memdebug: fix compilation failure
-
- .... caused by a typo in the last commit (fixing issue #1504):
-
- memdebug.c: In function ‘curl_fclose’:
- memdebug.c:444:3: error: implicit declaration of function
- ‘DEBUGDEBUGASSERT’ [-Werror=implicit-function-declaration]
-
-Daniel Stenberg (22 May 2017)
-- assert: avoid, use DEBUGASSERT instead!
-
- ... as it does extra checks to actually work.
-
- Reported-by: jonrumsey at github
- Fixes #1504
-
-- [Simon Warta brought this change]
-
- cmake: remove unused variables: GNUTLS_ENABLED, NSS_ENABLED
-
-- [Simon Warta brought this change]
-
- cmake: remove CURL_CA_BUNDLE from cmake TODO
-
-- [Simon Warta brought this change]
-
- cmake: auto detection of CURL_CA_BUNDLE/CURL_CA_PATH
-
- Closes #1461
-
-- [Simon Warta brought this change]
-
- cmake: add CURL_CA_BUNDLE/CURL_CA_FALLBACK/CURL_CA_PATH options
-
-- [Simon Warta brought this change]
-
- cmake: Add CURL_CA_FALLBACK to curl_config.h.cmake
-
- This is for symmetry with the autoconf generated curl_config.h.in
-
-- RELEASE-NOTES: synced with 052a14e3c
-
-Michael Kaufmann (20 May 2017)
-- tests: stabilize test 1034
-
- Pass the invalid domain name on stdin. On some systems, the test
- framework cannot pass invalid UTF-8 sequences on the command line.
-
- Closes #1488
-
-Daniel Stenberg (20 May 2017)
-- ssh: ignore timeouts during disconnect
-
- ... as otherwise it risks not cleaning up the libssh2 handle properly
- which leads to memory leak!
-
- Assisted-by: Joel Depooter
-
- Closes #1495
- Closes #1479
-
- Bug: https://curl.haxx.se/mail/lib-2017-04/0024.html
-
-- ghiper.c/hiperfifo.c: add comment about missing timer functionality
-
- It takes someone to read up on the APIs of these libraries to figure out
- how to do this correctly.
-
- Reported-by: Michael Kaufmann
-
- Closes #1253
-
-- asiohiper.cpp / evhiperfifo.c: deal with negative timerfunction input
-
- That means delete the timer.
-
- Reported-by: Michael Kaufmann
- Ref: #1253
-
-- cmdline-opts/write-out.d: s/-L/--location
-
- Since the man page generator wants the long option name version to
- generate the proper output.
-
-- [Bernhard M. Wiedemann brought this change]
-
- mkhelp.pl: do not add current time into curl binary
-
- ... as part of hugehelpgz rodata to make build reproducible.
-
- See https://reproducible-builds.org/ for why this is good
-
- Closes #1490
-
-- oauth2-bearer.d: mention the argument
-
-Nick Zitzmann (16 May 2017)
-- darwinssl: Fix exception when processing a client-side certificate file
- if no error was raised by the API but the SecIdentityRef was null
-
- Fixes #1450
-
-Daniel Stenberg (16 May 2017)
-- curl_sasl: fix build error with CURL_DISABLE_CRYPTO_AUTH + USE_NTLM
-
- Reported-by: wyattoday at github
- Fixes #1487
-
-- docs/cmdline-opts/config.d: edit for language
-
-- RELEASE-NOTES: synced with eb16305e6
-
-- [moparisthebest brought this change]
-
- SecureTransport/DarwinSSL: Implement public key pinning
-
- Closes #1400
-
-- man pages: fix example syntax errors
-
- follow-up to 5ddad099b42b50
-
-- docs/libcurl/opts: added more examples in man pages
-
-- CURLOPT_HTTPPROXYTUNNEL: clarify, add example
-
-- curl: show the libcurl release date in --version output
-
- ... and support and additional "security patched" date for those who
- enhance older versions that way. Pass on the define CURL_PATCHSTAMP with
- a date for that.
-
- Building with non-release headers shows the date as [unreleased].
-
- Also: this changes the date format generated in the curlver.h file to be
- "YYYY-MM-DD" (no name of the day or month, no time, no time zone) to
- make it easier on the eye and easier to parse. Example (new) date
- string: 2017-05-09
-
- Suggested-by: Brian Childs
-
- Closes #1474
-
-Dan Fandrich (13 May 2017)
-- url.c: add a compile-time check that CURL_MAX_WRITE_SIZE is large enough
-
- Some code (e.g. Curl_fillreadbuffer) assumes that this buffer is not
- exceedingly tiny and will break if it is. This same check is already
- done at run time in the CURLOPT_BUFFERSIZE option.
-
-- lib510: don't write past the end of the buffer if it's too small
-
-- tests: added missing keywords "chunked Transfer-Encoding"
-
-Daniel Stenberg (13 May 2017)
-- THANKS: add a few missing names
-
- ... I found them in the commit logs from the early years
-
-Dan Fandrich (13 May 2017)
-- tests: made a couple of prechecks consistent with others
-
- Also removed a TODO suggesting caching the precheck results. Tests
- showed this would save about 0.1 sec on the total test run time on a
- relatively modern system, an unnoticeable gain at the cost of longer and
- more complicated code. There would also be a danger that a cached test
- result would be inappropriately returned, such as when other test
- dependencies (like environment variables) are different or when the
- precheck causes side effects (like filesystem changes).
-
-Daniel Stenberg (12 May 2017)
-- FAQ: add 7.4 to toc
-
- ... and delete trailing whitespace
-
- Fixes #1484
-
-- multi: remove leftover debug infof() calls from e9fd794a6
-
-- pipeline: fix mistakenly trying to pipeline POSTs
-
- The function IsPipeliningPossible() would return TRUE if either
- pipelining OR HTTP/2 were possible on a connection, which would lead to
- it returning TRUE even for POSTs on HTTP/1 connections.
-
- It now returns a bitmask so that the caller can differentiate which kind
- the connection allows.
-
- Fixes #1481
- Closes #1483
- Reported-by: stootill at github
-
-Jay Satiro (12 May 2017)
-- [Ron Eldor brought this change]
-
- mbedtls: Support server renegotiation request
-
- Tested with servers: IIS 7.5; OpenSSL 1.0.2.
-
- Closes https://github.com/curl/curl/pull/1475
-
-Marcel Raad (11 May 2017)
-- cookie_interface: fix -Wcomma warning
-
- clang 5.0 complains:
- possible misuse of comma operator here [-Wcomma]
-
-- formdata: fix -Wcomma warning
-
- clang 5.0 complains:
- possible misuse of comma operator here [-Wcomma]
-
- Change the comma to a semicolon to fix that.
-
-Daniel Stenberg (10 May 2017)
-- multi: use a fixed array of timers instead of malloc
-
- ... since the total amount is low this is faster, easier and reduces
- memory overhead.
-
- Also, Curl_expire_done() can now mark an expire timeout as done so that
- it never times out.
-
- Closes #1472
-
-- multi: assign IDs to all timers and make each timer singleton
-
- A) reduces the timeout lists drastically
-
- B) prevents a lot of superfluous loops for timers that expires "in vain"
- when it has actually already been extended to fire later on
-
-- [Richard Hsu brought this change]
-
- tests: remove superfluous test 1399
-
- @MarcelRaad noted that `test1399` causes infinite loop on MinGW.
- Looking into this, seems like it is related to how Windows handles
- CRLF. See https://github.com/curl/curl/commit/9e093f by @mback2k.
- Removing `test1399` as it's identical to `test1326` then with such a
- fix.
-
- Test 1399 was broughy by commit 862b02f8947039e
-
- Closes #1478
-
-Dan Fandrich (9 May 2017)
-- tests: make test file names more unique
-
- Include the test number in the names of files written out by tests to
- reduce the chance of accidental duplication and to make it more clear
- which test is associated with which file.
-
-- tests: removed redundant --trace-ascii arguments
-
- This is already added by the test suite; it's not clear why all these
- tests had it, unless it's cargo-culting.
-
-Marcel Raad (9 May 2017)
-- tool: fix remaining -Wcast-qual warnings
-
- Avoid casting away low-level const.
-
-Daniel Stenberg (9 May 2017)
-- formboundary: convert assert into run-time check
-
- ... to really make sure the boundary fits in the target buffer.
-
- Fixes unused parameter 'buflen' warning.
-
- Reported-by: Michael Kaufmann
- Bug: https://github.com/curl/curl/pull/1468#issuecomment-300078754
-
-Dan Fandrich (9 May 2017)
-- tests: list the primary server first in the server section
-
-Daniel Stenberg (8 May 2017)
-- curl: generate the --help output
-
- ... using the docs/cmdline-opts/gen.pl script, so that we get all the
- command line option documentation from the same source.
-
- The generation of the list has to be done manually and pasted into the
- source code.
-
- Closes #1465
-
-- tests: updated for modified fake random
-
-- [Jay Satiro brought this change]
-
- rand: treat fake entropy the same regardless of endianness
-
- When the random seed is purposely made predictable for testing purposes
- by using the CURL_ENTROPY environment variable, process that data in an
- endian agnostic way so the the initial random seed is the same
- regardless of endianness.
-
- - Change Curl_rand to write to a char array instead of int array.
-
- - Add Curl_rand_hex to write random hex characters to a buffer.
-
- Fixes #1315
- Closes #1468
-
- Co-authored-by: Daniel Stenberg
- Reported-by: Michael Kaufmann
-
-Dan Fandrich (8 May 2017)
-- tests: give each stunnel.conf file a unique name
-
- Otherwise, subsequent uses of stunnel overwrite the configuration file
- of previous invocations so they can no longer be inspected.
-
-Marcel Raad (8 May 2017)
-- tool_msgs: remove wrong cast
-
- Commit 481e0de00a9003b9c5220b120e3fc302d9b0932d changed the variable
- type from int to size_t, so don't cast the result of strlen to int
- anymore.
-
-- tftpd: fix signed/unsigned mismatch warnings
-
- alarm's argument is unsigned.
-
-- libtest: fix MinGW-w64 warnings
-
- long is 32 bits while size_t is 64 bits on MinGW-w64, so
- typecheck-gcc.h complains when using size_t for a long option.
- Also, curl_socket_t is unsigned long long rather than int.
-
-Daniel Stenberg (8 May 2017)
-- curl.1: depend the build on the Makefile.inc too
-
- ... to also make it update when we remove files, like we did for
- --environment in commit a8e388dd1095.
-
-- RELEASE-NOTES: synced with e3f84efc32d6b01a
-
-- runtests: fix "use of undefined value" warning in -R handling
-
-Marcel Raad (8 May 2017)
-- test537: use correct variable type
-
- Avoids narrowing conversion warnings because rlim_t is usually
- unsigned long.
-
- Closes https://github.com/curl/curl/pull/1469
-
-- sendrecv: fix MinGW-w64 warning
-
- The first argument to select is an int, while curl_socket_t is
- unsigned long long when using WinSock. It's ignored anyway [1].
-
- [1] https://msdn.microsoft.com/en-us/library/windows/desktop/ms740141.aspx
-
-- tool_parsecfg: fix -Wcast-qual warning
-
- Don't convert string literal to char * before assigning it to
- const char *.
-
-- asyn-thread: fix unused macro warnings
-
- Don't do anything in this file if CURLRES_THREADED is not defined.
-
-- tftp: silence bad-function-cast warning
-
- The cases this warns about are handled elsewhere, so just use an
- intermediate variable to silence the warning.
-
-Daniel Stenberg (7 May 2017)
-- [canavan at github brought this change]
-
- buildconf: fix hang on IRIX
-
- Apparently, /usr/bin/m4 ignores the --version parameter and waits for
- input from stdin.
-
- Fixes #1471
-
-- opts: fix bad example formatting \n => \\n
-
- ...to render properly nroff.
-
-- opts: examples added to 8 more libcurl option man pages
-
-- curl: remove tool_writeenv.[ch]
-
- ... and USE_ENVIRONMENT and --environment. It was once added for RISC OS
- support and its platform specific behavior has been annoying ever
- since. Added in commit c3c8bbd3b2688da8e, mostly unchanged since
- then. Most probably not actually used for years.
-
- Closes #1463
-
-Dan Fandrich (6 May 2017)
-- runtests.pl: simplify the datacheck read section
-
- Also, document that numbered datacheck sections are possible.
-
-Marcel Raad (5 May 2017)
-- tests: fix -Wcast-qual warnings
-
- Avoid casting string literals to non-const char *.
-
-Daniel Stenberg (5 May 2017)
-- docs/opts: 24 more man pages now have examples
-
-- docs/opts: 23 more man pages now have examples
-
-- tests/server: run checksrc by default in debug-builds
-
-- curl_slist_append.3: clarify a NULL input creates a new list
-
-Marcel Raad (5 May 2017)
-- unit1305: fix compiler warning
-
- calloc and ai_addrlen expect different (usually unsigned) types.
-
-Daniel Stenberg (5 May 2017)
-- runtests: use -R for random order
-
- Suggested-by: Dan Fandrich
-
-- runtests: add -o to run test cases in scrambled order
-
- ... instead of numerical order.
-
- Closes #1466
-
-Dan Fandrich (4 May 2017)
-- sockfilt.c: shortened too long line
-
-Marcel Raad (4 May 2017)
-- tests/server: make string literals const
-
- assign string literals to const char * instead of char * in order to
- avoid a lot of these warnings:
- cast from 'const char *' to 'char *' drops const qualifier
- [-Wcast-qual]
-
-Dan Fandrich (4 May 2017)
-- schannel: return a more specific error code for SEC_E_UNTRUSTED_ROOT
-
-- test557: set a known good numeric locale
-
- Windows does not allow setting the locale with environment variables (as
- the test attempted to do), so the test failed when run with a user
- locale that has a comma as radixchar. Changed the test to call
- setlocale() explicitly to ensure that a known working locale is set even
- on Windows.
-
-Daniel Stenberg (4 May 2017)
-- curl: fix warning "comma at end of enumerator list"
-
-- test559: verify use of minimum CURLOPT_BUFFERSIZE
-
-Marcel Raad (4 May 2017)
-- curl_setup_once: use SEND_QUAL_ARG2 for swrite
-
- SEND_QUAL_ARG2 had to be set, but was never used. Use it in swrite to
- avoid warnings about casting away low-level const.
-
- Closes https://github.com/curl/curl/pull/1464
-
-Daniel Stenberg (4 May 2017)
-- CURLINFO_REDIRECT_URL.3: add example
-
-- CURLINFO_EFFECTIVE_URL.3: add example
-
-Marcel Raad (3 May 2017)
-- lib: fix compiler warnings
-
- Fix the following warnings when building the tests by using the correct
- types:
- cast from 'const char *' to 'void *' drops const qualifier
- [-Wcast-qual]
- implicit conversion changes signedness [-Wsign-conversion]
-
-- typecheck-gcc: add support for CURLINFO_SOCKET
-
- Closes https://github.com/curl/curl/pull/1452
-
-- typecheck-gcc: add missing string options
-
- Closes https://github.com/curl/curl/pull/1452
-
-Daniel Stenberg (3 May 2017)
-- abstract-unix-socket.d: shorten the help text to fit within 79 cols
-
-- RELEASE-NOTES: synced with 862b02f89
-
-- [Richard Hsu brought this change]
-
- Telnet: Write full buffer instead of byte-by-byte
-
- Previous TODO wanting to write in chunks. We should support writing more
- at once since some TELNET servers may respond immediately upon first
- byte written such as WHOIS servers.
-
- Closes #1389
-
-- curl: non-boolean command line args reject --no- prefixes
-
- ... and instead properly respond with an error message to the user
- instead of silently ignoring.
-
- Fixes #1453
- Closes #1458
-
-Marcel Raad (2 May 2017)
-- testpart: remove _MPRINTF_REPLACE
-
- Support for _MPRINTF_REPLACE in mprintf.h was removed in
- 55452ebdff47f98bf3cc383f1dfc3623fcaefefd, replaced with curl_printf.h.
-
-Dan Fandrich (2 May 2017)
-- gtls: fixed a lingering BUFSIZE reference
-
-Daniel Stenberg (2 May 2017)
-- ssh: fix compiler warning from e40e9d7f0de
-
-- url: let CURLOPT_BUFFERSIZE realloc to smaller sizes too
-
- Closes #1449
-
-- BUFSIZE: rename to READBUFFER_*, make separate MASTERBUF_SIZE
-
-- openssl: use local stack for temp storage
-
-- sendf: remove use of BUFSIZE from debug data conversions
-
- The buffer can have other sizes.
-
-- buffer: use data->set.buffer_size instead of BUFSIZE
-
- ... to properly use the dynamically set buffer size!
-
-- krb5: use private buffer for temp string, not receive buffer
-
-- upload: UPLOAD_BUFSIZE is now for the upload buffer
-
-- unit1606: do not print/access buffer
-
- It was a wrong assumption that it could do that!
-
-- http-proxy: use a dedicated CONNECT response buffer
-
- To make it suitably independent of the receive buffer and its flexible
- size.
-
-- transfer: fix minor buffer_size mistake
-
-- failf: use private buffer, don't clobber receive buffer
-
-- pingpong: use the set buffer size
-
-- http2: use the correct set buffer size
-
-- http: don't clobber the receive buffer for timecond
-
-- buffer_size: make sure it always has the correct size
-
- Removes the need for CURL_BUFSIZE
-
-- file: use private buffer for C-L output
-
- ... instead of clobbering the download buffer.
-
-- CURLOPT_BUFFERSIZE: 1024 bytes is now the minimum size
-
- The buffer is needed to receive FTP, HTTP CONNECT responses etc so
- already at this size things risk breaking and smaller is certainly not
- wise.
-
-- ftp: use private buffer for temp storage, not receive buffer
-
-- http: use private user:password output buffer
-
- Don't clobber the receive buffer.
-
-Marcel Raad (1 May 2017)
-- anyauthput: remove unused code
-
- The definition of TRUE was introduced in
- 4a728747e6f8845e500910e397dfc99aaf4a7984 and is not used anymore since
- e664cd5826d43930fcc5b5dbaedbec94af33184b.
- The usage of intptr_t was removed in
- 32e38b8f42477cf5ce3c3fef2fcc9db82f7fb7be.
-
-Jay Satiro (1 May 2017)
-- tool: Fix missing prototype warnings for CURL_DOES_CONVERSIONS
-
- - Include tool_convert.h where needed.
-
- Bug: https://github.com/curl/curl/issues/1460
- Reported-by: Gisle Vanem
-
-- curl_setup: Ensure no more than one IDN lib is enabled
-
- Prior to this change it was possible for libcurl to be built with both
- Windows' native IDN lib (normaliz) and libidn2 enabled. It appears that
- doesn't offer any benefit --and could cause a bug-- since libcurl's IDN
- handling is written to use either one but not both.
-
- Bug: https://github.com/curl/curl/issues/1441#issuecomment-297689856
- Reported-by: Gisle Vanem
-
-Marcel Raad (1 May 2017)
-- getpart: use correct variable type
-
- This fixes the following clang warning:
- getpart.c:201:17: warning: cast from function call of type 'CURLcode'
- to non-matching type 'int' [-Wbad-function-cast]
-
-- tests: declare TU-local variables static
-
- This fixes missing-variable-declarations warnings when building with
- clang.
-
-- tool_cb_prg: fix double-promotion warning
-
- clang complains:
- tool_cb_prg.c:86:22: error: implicit conversion increases
- floating-point precision: 'float' to 'double'
- [-Werror,-Wdouble-promotion]
-
- Fix this by using a double instead of a float constant.
-
-Dan Fandrich (1 May 2017)
-- examples: fixed too long line and too long string warnings
-
-Marcel Raad (30 Apr 2017)
-- examples: declare TU-local variables static
-
- This fixes missing-variable-declarations warnings when building with
- clang.
-
-- http2: declare TU-local variables static
-
- This fixes the following clang warnings:
-
- http2.c:184:27: error: no previous extern declaration for non-static
- variable 'Curl_handler_http2' [-Werror,-Wmissing-variable-declarations]
- http2.c:204:27: error: no previous extern declaration for non-static
- variable 'Curl_handler_http2_ssl'
- [-Werror,-Wmissing-variable-declarations]
-
-Dan Fandrich (30 Apr 2017)
-- unit1604: fixed indentation
-
-- unit1604: fixed compilation under Windows, broken in the previous commit
-
-- tests: fixed OOM handling of unit tests to abort test
-
- It's dangerous to continue to run the test when a memory alloc fails.
-
-Marcel Raad (29 Apr 2017)
-- curl_rtmp: fix missing-variable-declarations warnings
-
- clang complains:
-
- curl_rtmp.c:61:27: error: no previous extern declaration for non-static variable 'Curl_handler_rtmp' [-Werror,-Wmissing-variable-declarations]
- curl_rtmp.c:81:27: error: no previous extern declaration for non-static variable 'Curl_handler_rtmpt' [-Werror,-Wmissing-variable-declarations]
- curl_rtmp.c:101:27: error: no previous extern declaration for non-static variable 'Curl_handler_rtmpe' [-Werror,-Wmissing-variable-declarations]
- curl_rtmp.c:121:27: error: no previous extern declaration for non-static variable 'Curl_handler_rtmpte' [-Werror,-Wmissing-variable-declarations]
- curl_rtmp.c:141:27: error: no previous extern declaration for non-static variable 'Curl_handler_rtmps' [-Werror,-Wmissing-variable-declarations]
- curl_rtmp.c:161:27: error: no previous extern declaration for non-static variable 'Curl_handler_rtmpts' [-Werror,-Wmissing-variable-declarations]
-
- Fix this by including the header file.
-
-Dan Fandrich (29 Apr 2017)
-- url: fixed a memory leak on OOM while setting CURLOPT_BUFFERSIZE
-
-- tests: added --remote-time tests for remaining protocols that support it
-
-- runtests.pl: support multiline commands
-
-- tool_operate: use utimes instead of obsolescent utime when available
-
-- test1443: test --remote-time
-
-- http-proxy: removed unused argument in CURL_DISABLE_PROXY case
-
- Missed in commit 55c3c02e
-
-Daniel Stenberg (27 Apr 2017)
-- cookie_interface.c: changed the other domain to example.com too
-
-- cookie_interface.c: fix cookie domain so the example works
-
-Dan Fandrich (26 Apr 2017)
-- Makefile: fix make dist
-
- Commit 80a87e8a broke 'make dist' as it can't handle installing from
- absolute target names. Rearranged the dependencies so the absolute name
- is used for building but the relative name is use for distributing.
-
-Marcel Raad (26 Apr 2017)
-- lib: remove unused code
-
- This fixes the following clang warnings:
- macro is not used [-Wunused-macros]
- will never be executed [-Wunreachable-code]
-
- Closes https://github.com/curl/curl/pull/1448
-
-Daniel Stenberg (26 Apr 2017)
-- http-proxy: remove unused argument from Curl_proxyCONNECT()
-
-- [Martin Kepplinger brought this change]
-
- url: declare get_protocol_family() static
-
- get_protocol_family() is not defined static even though there is a
- static local forward declaration. Let's simply make the definition match
- it's declaration.
-
- Bug: https://curl.haxx.se/mail/lib-2017-04/0127.html
-
-- examples: ftpuploadfrommem.c
-
- Uploads data to an FTP site, directly from memory.
-
- Closes #1451
-
-Kamil Dudka (25 Apr 2017)
-- nss: load libnssckbi.so if no other trust is specified
-
- The module contains a more comprehensive set of trust information than
- supported by nss-pem, because libnssckbi.so also includes information
- about distrusted certificates.
-
- Reviewed-by: Kai Engert
- Closes #1414
-
-- nss: factorize out nss_{un,}load_module to separate fncs
-
- No change of behavior is intended by this commit.
-
-- nss: do not leak PKCS #11 slot while loading a key
-
- It could prevent nss-pem from being unloaded later on.
-
- Bug: https://bugzilla.redhat.com/1444860
-
-Marcel Raad (25 Apr 2017)
-- typecheck-gcc: fix _curl_is_slist_info
-
- Info values starting with CURLINFO_SOCKET expect a curl_socket_t, not a
- curl_slist argument.
-
- This fixes the following GCC warning when building the examples with
- --enable-optimize:
-
- ../../include/curl/typecheck-gcc.h:126:42: warning: call to
- ‘_curl_easy_getinfo_err_curl_slist’ declared with attribute warning:
- curl_easy_getinfo expects a pointer to 'struct curl_slist *' for this
- info [enabled by default]
- sendrecv.c:90:11: note: in expansion of macro ‘curl_easy_getinfo’
- res = curl_easy_getinfo(curl, CURLINFO_ACTIVESOCKET, &sockfd);
-
- Closes https://github.com/curl/curl/pull/1447
-
-Daniel Stenberg (25 Apr 2017)
-- curl: set a 100K buffer size by default
-
- Test command 'time curl http://localhost/80GB -so /dev/null' on a Debian
- Linux.
-
- Before (middle performing run out 9):
-
- real 0m28.078s
- user 0m11.240s
- sys 0m12.876s
-
- After (middle performing run out 9)
-
- real 0m26.356s (93.9%)
- user 0m5.324s (47.4%)
- sys 0m8.368s (65.0%)
-
- Also, doing SFTP over a 200 millsecond latency link is now about 6 times
- faster.
-
- Closes #1446
-
-- transfer: remove 'uploadbuf' pointer and cleanup readwrite_upload()
-
- The data->req.uploadbuf struct member served no good purpose, instead we
- use ->state.uploadbuffer directly. It makes it clearer in the code which
- buffer that's being used.
-
- Removed the 'SingleRequest *' argument from the readwrite_upload() proto
- as it can be derived from the Curl_easy struct. Also made the code in
- the readwrite_upload() function use the 'k->' shortcut to all references
- to struct fields in 'data->req', which previously was made with a mix of
- both.
-
-Jay Satiro (25 Apr 2017)
-- configure: stop prepending to LDFLAGS, CPPFLAGS
-
- - Change prepends to appends because user's LDFLAGS and CPPFLAGS should
- always come first so they're searched before ours.
-
- Bug: https://github.com/curl/curl/issues/1420
- Reported-by: Helmut K. C. Tessarek
-
-Marcel Raad (25 Apr 2017)
-- if2ip: fix -Wcast-align warning
-
- Follow-up to 119037325de02579f5c58256ca2ed2a0aa592c86, which fixed the
- warning in the HAVE_GETIFADDRS block, but not in the
- HAVE_IOCTL_SIOCGIFADDR block.
-
-Dan Fandrich (24 Apr 2017)
-- Makefile: avoid use of GNU-specific form of $<
-
- $< is only allowed in implicit rules in some non-GNU makes (e.g. BSD,
- AIX) so avoid use elsewhere by referencing the dependent curl.1 file
- directly instead. This is somewhat tricky because the file is supplied
- in the packaged tar ball (but not in git) but must still be able to be
- rebuilt when its dependencies change. The right thing must happen in
- both tar ball and git source trees, as well as in both in-tree and
- out-of-tree builds.
-
-Kamil Dudka (24 Apr 2017)
-- nss: adapt to the new Curl_llist API
-
- This commit fixes compilation failure caused by
- cbae73e1dd95946597ea74ccb580c30f78e3fa73.
-
-Marcel Raad (24 Apr 2017)
-- curl-compilers.m4: accept -Og and -Ofast GCC flags
-
- -Og, introduced in GCC 4.8, optimizes for debugging experience.
- -Ofast, introduced in GCC 4.7, builds on -O3 and enables further
- optimizations breaking strict standards compliance.
- When specified in CFLAGS, these were always overridden by -O0 or -O2.
- Fix this by adding them to flags_opt_all.
-
- Ref: https://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Optimize-Options.html
- Ref: https://github.com/curl/curl/pull/1404#issuecomment-296401570
- Closes https://github.com/curl/curl/pull/1440
-
-Daniel Stenberg (24 Apr 2017)
-- RELEASE-NOTES: synced with c68fed875
-
-- configure: fix the -ldl check for openssl, add -lpthread check
-
- The check for if -ldl is needed to build with (a statically built)
- openssl was broken. This repairs the check, and adds a check for
- -lpthread as well since OpenSSL 1.1.0+ does in fact require -lpthread so
- only adding -ldl for a static openssl build is no longer enough.
-
- Reported-by: Jay Satiro
- Ref: #1426
- Closes #1427
-
-- llist: fix a comment after cbae73e1dd9
-
- Pointed-it-by: Kevin Ji
- URL: https://github.com/curl/curl/commit/cbae73e1dd95946597ea74ccb580c30f78e3fa73#commitcomment-21872622
-
-Jay Satiro (22 Apr 2017)
-- schannel: Don't treat encrypted partial record as pending data
-
- - Track when the cached encrypted data contains only a partial record
- that can't be decrypted without more data (SEC_E_INCOMPLETE_MESSAGE).
-
- - Change Curl_schannel_data_pending to return false in such a case.
-
- Other SSL libraries have pending data functions that behave similarly.
-
- Ref: https://github.com/curl/curl/pull/1387
-
- Closes https://github.com/curl/curl/pull/1392
-
-Daniel Stenberg (22 Apr 2017)
-- [Alan Jenkins brought this change]
-
- multi: clarify condition in curl_multi_wait
-
- `if(nfds || extra_nfds) {` is followed by `malloc(nfds * ...)`.
-
- If `extra_fs` could be non-zero when `nfds` was zero, then we have
- `malloc(0)` which is allowed to return `NULL`. But, malloc returning
- NULL can be confusing. In this code, the next line would treat the NULL
- as an allocation failure.
-
- It turns out, if `nfds` is zero then `extra_nfds` must also be zero.
- The final value of `nfds` includes `extra_nfds`. So the test for
- `extra_nfds` is redundant. It can only confuse the reader.
-
- Closes #1439
-
-Marcel Raad (22 Apr 2017)
-- lib: fix maybe-uninitialized warnings
-
- With -Og, GCC complains:
-
- easy.c:628:7: error: ‘mcode’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
-
- ../lib/strcase.h:35:29: error: ‘tok_buf’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
- vauth/digest.c:208:9: note: ‘tok_buf’ was declared here
-
- ../lib/strcase.h:35:29: error: ‘tok_buf’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
- vauth/digest.c:566:15: note: ‘tok_buf’ was declared here
-
- Fix this by initializing the variables.
-
-Dan Fandrich (22 Apr 2017)
-- gnutls: removed some code when --disable-verbose is configured
-
- This reduces the binary size and fixes a compile warning.
-
-Daniel Stenberg (22 Apr 2017)
-- llist: no longer uses malloc
-
- The 'list element' struct now has to be within the data that is being
- added to the list. Removes 16.6% (tiny) mallocs from a simple HTTP
- transfer. (96 => 80)
-
- Also removed return codes since the llist functions can't fail now.
-
- Test 1300 updated accordingly.
-
- Closes #1435
-
-Marcel Raad (21 Apr 2017)
-- typecheck-gcc: handle function pointers properly
-
- All the callbacks passed to curl_easy_setopt are defined as function
- pointers. The possibility to pass both functions and function pointers
- was handled for the callbacks that typecheck-gcc.h defined as
- compatible, but not for the public callback types themselves.
-
- This makes all compatible callback types defined in typecheck-gcc.h
- function pointers too and checks all functions uniformly with
- _curl_callback_compatible, which handles both functions and function
- pointers.
-
- A symptom of the problem was a warning in tool_operate.c with
- --disable-libcurl-option and without --enable-debug as that file
- passes the callback functions to curl_easy_setopt directly.
-
- Fixes https://github.com/curl/curl/issues/1403
- Closes https://github.com/curl/curl/pull/1404
-
-Dan Fandrich (21 Apr 2017)
-- mbedtls: enable NTLM (& SMB) even if MD4 support is unavailable
-
- In that case, use libcurl's internal MD4 routine. This fixes tests 1013
- and 1014 which were failing due to configure assuming NTLM and SMB were
- always available whenever mbed TLS was in use (which is now true).
-
-Daniel Stenberg (21 Apr 2017)
-- tests: remove the html and PDF versions from the tarball
-
-- openssl: fix memory leak in servercert
-
- ... when failing to get the server certificate.
-
-- Revert "src/Makefile.am: avoid explicit $<"
-
- This reverts commit 5b4cbcf11d5100ff793a8e9edbaa6fe1fc7495f5.
-
- Since it broke out-of-tree builds from tarballs. See discussion in #1432
-
-- bump: start working on next release
-
-- src/Makefile.am: avoid explicit $<
-
- ... since apparently "BSD make" doesn't support it.
-
- Reported-by: Thomas Klausner
- Fixes #1432
-
-Version 7.54.0 (19 Apr 2017)
-
-Daniel Stenberg (19 Apr 2017)
-- THANKS: add contributors from 7.54.0 release notes
-
-- RELEASE-NOTES: curl 7.54.0
-
-Marcel Raad (18 Apr 2017)
-- nss: fix MinGW compiler warnings
-
- This fixes 3 warnings issued by MinGW:
- 1. PR_ImportTCPSocket actually has a paramter of type PROsfd instead of
- PRInt32, which is 64 bits on Windows. Fixed this by including the
- corresponding header file instead of redeclaring the function, which is
- supported even though it is in the private include folder. [1]
- 2. In 64-bit mode, size_t is 64 bits while CK_ULONG is 32 bits, so an explicit
- narrowing cast is needed.
- 3. Curl_timeleft returns time_t instead of long since commit
- 21aa32d30dbf319f2d336e0cb68d3a3235869fbb.
-
- [1] https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR/Reference/PR_ImportTCPSocket
-
- Closes https://github.com/curl/curl/pull/1393
-
-Daniel Stenberg (18 Apr 2017)
-- [Jay Satiro brought this change]
-
- TLS: Fix switching off SSL session id when client cert is used
-
- Move the sessionid flag to ssl_primary_config so that ssl and proxy_ssl
- will each have their own sessionid flag.
-
- Regression since HTTPS-Proxy support was added in cb4e2be. Prior to that
- this issue had been fixed in 247d890, CVE-2016-5419.
-
- Bug: https://github.com/curl/curl/issues/1341
- Reported-by: lijian996@users.noreply.github.com
-
- The new incarnation of this bug is called CVE-2017-7468 and is documented
- here: https://curl.haxx.se/docs/adv_20170419.html
-
-- [David Benjamin brought this change]
-
- openssl: don't try to print nonexistant peer private keys
-
- X.509 certificates carry public keys, not private keys. Fields
- corresponding to the private half of the key will always be NULL.
-
- Closes #1425
-
-- [David Benjamin brought this change]
-
- openssl: fix thread-safety bugs in error-handling
-
- ERR_error_string with NULL parameter is not thread-safe. The library
- writes the string into some static buffer. Two threads doing this at
- once may clobber each other and run into problems. Switch to
- ERR_error_string_n which avoids this problem and is explicitly
- bounds-checked.
-
- Also clean up some remnants of OpenSSL 0.9.5 around here. A number of
- comments (fixed buffer size, explaining that ERR_error_string_n was
- added in a particular version) date to when ossl_strerror tried to
- support pre-ERR_error_string_n OpenSSLs.
-
- Closes #1424
-
-- [David Benjamin brought this change]
-
- openssl: make SSL_ERROR_to_str more future-proof
-
- Rather than making assumptions about the values, use a switch-case.
-
- Closes #1424
-
-- [Daniel Gustafsson brought this change]
-
- code: fix typos and style in comments
-
- A few random typos, and minor whitespace cleanups, found in comments
- while reading code.
-
- Closes #1423
-
-Marcel Raad (17 Apr 2017)
-- extern-scan.pl: strip trailing CR
-
- This makes test 1135 pass with CRLF checkouts.
-
- Ref: https://github.com/curl/curl/pull/1344#issuecomment-289243166
- Closes https://github.com/curl/curl/pull/1422
-
-- configure.ac: ignore CR after version numbers
-
- Ignore everything after the version numbers in LIBCURL_VERSION and
- LIBCURL_VERSION_NUM to ged rid of the extra CR character.
- This makes tests 1022 and 1023 pass on Linux with a CRLF checkout.
-
- Ref: https://github.com/curl/curl/pull/1344#issuecomment-289243166
- Closes https://github.com/curl/curl/pull/1422
-
-- .gitattributes: force shell scripts to LF
-
- Bash on Linux errors out on CR characters.
- This makes tests 1221 and 1222 pass on Linux with a CRLF checkout.
-
- Ref: https://github.com/curl/curl/pull/1344#issuecomment-289243166
- Closes https://github.com/curl/curl/pull/1422
-
-- unit1303: fix compiler warning
-
- MinGW-w64 complains:
- warning: conversion to 'long int' from 'time_t {aka long long int}' may
- alter its value [-Wconversion]
- Fix this by using the correct type.
-
-Daniel Stenberg (16 Apr 2017)
-- RELEASE-NOTES: synced with 1451271e0
-
-- [Larry Stefani brought this change]
-
- http2: fix handle leak in error path
-
- Add missing newhandle free call in push_promise().
-
- Closes #1416
-
-- [Larry Stefani brought this change]
-
- mbedtls: fix memory leak in error path
-
- Add missing our_ssl_sessionid free call in mbed_connect_step3().
-
- Closes #1417
-
-Marcel Raad (15 Apr 2017)
-- curl-compilers.m4: turn implicit function declarations into errors
-
- This adds -Werror-implicit-function-declaration for GCC 2.95+ so that
- these errors are visible at the point where they occur instead of only
- at link time.
- Implicit function declarations are illegal in C99 and C++ anyway, and
- the same warning has been turned into an error for ICC in commit
- 3072c5b8a127057aa922b7c51051bbb4a630b091.
-
- Ref: https://gcc.gnu.org/onlinedocs/gcc-2.95.2/gcc_2.html#SEC8
- Ref: https://curl.haxx.se/mail/lib-2017-04/0001.html
- Closes https://github.com/curl/curl/pull/1419
-
-- test1541: also test for CURL_PULL_WS2TCPIP_H
-
- Ref: https://github.com/curl/curl/issues/1408
- Closes https://github.com/curl/curl/pull/1412
-
-- tests/server/util: prefer over
-
- Follow-up to aa573c3c55cda72ec5ef677d87f6f46a53385f0c
-
- Ref: https://github.com/curl/curl/pull/1406
-
-Daniel Stenberg (11 Apr 2017)
-- Curl_expire_latest: ignore already expired timers
-
- If the existing timer is still in there but has expired, the new timer
- should be added.
-
- Reported-by: Rainer Canavan
- Bug: https://curl.haxx.se/mail/lib-2017-04/0030.html
- Closes #1407
-
-- system.h: fix mingw section
-
- Reported-by: Marcel Raad
- Fixes #1408
- Closes #1409
-
-Marcel Raad (11 Apr 2017)
-- polarssl: unbreak build with versions < 1.3.8
-
- ssl_session_init was only introduced in version 1.3.8, the penultimate
- version. The function only contains a memset, so replace it with that.
-
- Suggested-by: Jay Satiro
- Fixes https://github.com/curl/curl/issues/1401
-
-- poll: prefer over
-
- The POSIX standard location is . Using results in
- warning spam when using the musl standard library.
-
- Closes https://github.com/curl/curl/pull/1406
-
-Daniel Stenberg (10 Apr 2017)
-- [Alexis La Goutte brought this change]
-
- openssl: fix this statement may fall through [-Wimplicit-fallthrough=]
-
- Closes #1402
-
-Kamil Dudka (10 Apr 2017)
-- nss: load CA certificates even with --insecure
-
- ... because they may include an intermediate certificate for a client
- certificate and the intermediate certificate needs to be presented to
- the server, no matter if we verify the peer or not.
-
- Reported-by: thraidh
- Closes #851
-
-Daniel Stenberg (10 Apr 2017)
-- RELEASE-NOTES: synced with f9d1e9a27f7e1
-
-Dan Fandrich (10 Apr 2017)
-- libcurl-thread.3: fixed a bad macro that caused test 1140 to fail
-
-Daniel Stenberg (9 Apr 2017)
-- libcurl-thread.3: also mention threaded-resolver
-
- Reported-by: Alex Bligh
- Bug: https://curl.haxx.se/mail/lib-2017-04/0044.html
-
-- .github/stale.yml: enable the stale bot
-
- Issues and PRs with no activity for 180 days will get marked as stale,
- and if no further activity happens within 14 more days, the issue gets
- closed.
-
- This follows our established policy of not letting stalled bugs "get in
- the way": https://curl.haxx.se/docs/bugs.html#Closing_off_stalled_bugs
-
- Closes #1398
-
-Jay Satiro (8 Apr 2017)
-- CURLINFO_SCHEME.3: fix variable type
-
- - Change documented param type to char ** from incorrect long *.
-
-Marcel Raad (8 Apr 2017)
-- INSTALL.md: fix secure transport configure arguments
-
- --without-ssl is needed instead of --with-winssl.
-
-- vtls: fix unreferenced variable warnings
-
- ... by moving the variables into the correct #ifdef block.
-
-Daniel Stenberg (7 Apr 2017)
-- BUGS: "Bugs in old versions"
-
-- system.h: add section for tcc
-
- Closes #1397
-
-Marcel Raad (7 Apr 2017)
-- schannel: fix compiler warnings
-
- When UNICODE is not defined, the Curl_convert_UTF8_to_tchar macro maps
- directly to its argument. As it is declared as a pointer to const and
- InitializeSecurityContext expects a pointer to non-const, both MSVC and MinGW
- issue a warning about implicitly casting away the const. Fix this by declaring
- the variables as pointers to non-const.
-
- Closes https://github.com/curl/curl/pull/1394
-
-- [Isaac Boukris brought this change]
-
- sspi: print out InitializeSecurityContext() error message
-
- Reported-by: Carsten (talksinmath)
-
- Fixes #1384
- Closes #1395
-
-- gtls: fix compiler warning
-
- Curl_timeleft returns time_t instead of long since commit
- 21aa32d30dbf319f2d336e0cb68d3a3235869fbb.
-
-Daniel Stenberg (6 Apr 2017)
-- test1606: verify speedcheck
-
-- low_speed_limit: improved function for longer time periods
-
- Previously, periods of fast speed between periods of slow speed would
- not count and could still erroneously trigger a timeout.
-
- Reported-by: Paul Harris
- Fixes #1345
- Closes #1390
-
-- system.h: set sizeof long to 4 on "default 32 bit" systems
-
- Triggered a test failure on test 1541 for the build known as
- "Linux 4.4 i686 tcc 0.9.26 glibc 2.20"
-
-Marcel Raad (6 Apr 2017)
-- nss: fix build after e60fe20fdf94e829ba5fce33f7a9d6c281149f7d
-
- Curl_llist_alloc is now Curl_llist_init.
-
- Closes https://github.com/curl/curl/pull/1391
-
-Daniel Stenberg (6 Apr 2017)
-- INSTALL.cmake: more problems
-
- and mention specific issues where they are discussed
-
-- test1541: ignore the curl_off_t variable type name comparison
-
- ... the sizes and the formatting strings are what's really important and
- avoids problems with int64_t vs "long long".
-
- Bug: https://curl.haxx.se/mail/lib-2017-04/0019.html
-
-- Revert "configure: prefer 'long long' to int64_t for curl_off_t"
-
- This reverts commit 81284374bf3c670d2050f8562edeb69f060b07cc.
-
- Due to mingw32 brekage.
-
-Marcel Raad (5 Apr 2017)
-- tool_operate: fix MinGW compiler warning
-
- MinGW complains:
- tool_operate.c:197:15: error: comparison is always true due to limited range
- of data type [-Werror=type-limits]
-
- Fix this by only doing the comparison if 'long' is large enough to hold the
- constant it is compared with.
-
- Closes https://github.com/curl/curl/pull/1378
-
-- tool_operate: move filetime code to its own function
-
- Ref: https://github.com/curl/curl/pull/1378
-
-Daniel Stenberg (5 Apr 2017)
-- configure: prefer 'long long' to int64_t for curl_off_t
-
- Since it is a native type and it makes it less complicated to find a
- matching one in system.h
-
- Bug: https://curl.haxx.se/mail/lib-2017-04/0010.html
- Reported-by: Dan Fandrich
-
- Closes #1388
-
-- [Dániel Bakai brought this change]
-
- tests: added test for Curl_splaygetbest to unit1309
-
- This checks the new behavior of Curl_splaygetbest, so that the smallest
- node not larger than the key is removed, and FIFO behavior is kept even
- when there are multiple nodes with the same key.
-
- Closes #1358
-
-- [Dániel Bakai brought this change]
-
- multi: fix queueing of pending easy handles
-
- Multi handles repeatedly invert the queue of pending easy handles when
- used with CURLMOPT_MAX_TOTAL_CONNECTIONS. This is caused by a multistep
- process involving Curl_splaygetbest and violates the FIFO property of
- the multi handle.
- This patch fixes this issue by redefining the "best" node in the
- context of timeouts as the "smallest not larger than now", and
- implementing the necessary data structure modifications to do this
- effectively, namely:
- - splay nodes with the same key are now stored in a doubly-linked
- circular list instead of a non-circular one to enable O(1)
- insertion to the tail of the list
- - Curl_splayinsert inserts nodes with the same key to the tail of
- the same list
- - in case of multiple nodes with the same key, the one on the head of
- the list gets selected
-
-Marcel Raad (4 Apr 2017)
-- tool: fix Windows Unicode build
-
- ... by explicitly calling the ANSI versions of Windows API functions where
- required.
-
-Daniel Stenberg (4 Apr 2017)
-- [Martin Kepplinger brought this change]
-
- curl_sasl: declare mechtable static
-
- struct mechtable is only used locally here. It can be declared static.
-
-Jay Satiro (4 Apr 2017)
-- [Antti Hätälä brought this change]
-
- url: don't free postponed data on connection reuse
-
- - Don't free postponed data on a connection that will be reused since
- doing so can cause data loss when pipelining.
-
- Only Windows builds are affected by this.
-
- Closes https://github.com/curl/curl/issues/1380
-
-Daniel Stenberg (4 Apr 2017)
-- RELEASE-NOTES: synced with 4f2e348f9b42c69c480
-
-- hash: move key into hash struct to reduce mallocs
-
- This removes one tiny malloc for each hash struct allocated. In a simple
- case like "curl localhost", this save three mallocs.
-
- Closes #1376
-
-- llist: replace Curl_llist_alloc with Curl_llist_init
-
- No longer allocate the curl_llist head struct for lists separately.
-
- Removes 17 (15%) tiny allocations in a normal "curl localhost" invoke.
-
- closes #1381
-
-Jay Satiro (4 Apr 2017)
-- easy: silence compiler warning
-
- Safe to silence warning adding time delta of poll, which can trigger on
- Windows since sizeof time_t > sizeof long.
-
- warning C4244: '+=' : conversion from 'time_t' to 'long', possible loss
- of data
-
-Daniel Stenberg (4 Apr 2017)
-- [Richlv brought this change]
-
- docs: minor typo in write-out.d
-
- Closes #1382
-
-- include: curl/system.h is a run-time version of curlbuild.h
-
- system.h is aimed to replace curlbuild.h at a later point in time when
- we feel confident system.h works sufficiently well.
-
- curl/system.h is currently used in parallel with curl/curlbuild.h
-
- curl/system.h determines a data sizes, data types and include file
- status based on available preprocessor defines instead of getting
- generated at build-time. This, in order to avoid relying on a build-time
- generated file that makes it complicated to do 32 and 64 bit bields from
- the same installed set of headers.
-
- Test 1541 verifies that system.h comes to the same conclusion that
- curlbuild.h offers.
-
- Closes #1373
-
-- multi: make curl_multi_wait avoid malloc in the typical case
-
- When only a few additional file descriptors are used, avoid the malloc.
-
- Closes #1377
-
-Marcel Raad (3 Apr 2017)
-- tests/server/util: remove in6addr_any for recent MinGW
-
- In ancient MinGW versions, in6addr_any was declared as extern, but not
- defined. Because of that, 22a0c57746ae12506b1ba0f0fafffd26c1907d6a added
- definitions for in6addr_any when compiling with MinGW. The bug was fixed in
- w32api version 3.6 from 2006, so this workaround is not needed anymore for
- recent versions.
-
- This fixes the following MinGW-w64 warnings because the MinGW-w64 version of
- IN6ADDR_ANY_INIT has the two additional braces inside the macro:
- util.c:59:14: warning: braces around scalar initializer
- util.c:59:40: warning: excess elements in scalar initializer
-
- Ref: https://sourceforge.net/p/mingw/mingw-org-wsl/ci/e4803e0da25c57ae1ad0fa75ae2b7182ff7fa339/tree/w32api/ChangeLog
- Closes https://github.com/curl/curl/pull/1379
-
-Daniel Stenberg (3 Apr 2017)
-- docs: added examples for CURLINFO_FILETIME.3 and CURLOPT_FILETIME.3
-
-Jay Satiro (31 Mar 2017)
-- fail-early.d: fix typos
-
-- docs: Explain --fail-early does not imply --fail
-
- Closes https://github.com/curl/curl/pull/1375
-
-Daniel Stenberg (1 Apr 2017)
-- telnet: (win32) fix read callback return variable
-
- telnet.c(1427,21): warning: comparison of constant 268435456 with
- expression of type 'CURLcode' is always false
-
- telnet.c(1433,21): warning: comparison of constant 268435457 with
- expression of type 'CURLcode' is always false
-
- Reviewed-by: Jay Satiro
- Reported-by: Gisle Vanem
- Bug: https://github.com/curl/curl/issues/1225#issuecomment-290340890
-
- Closes #1374
-
-- CTestConfig.cmake: removed, unused
-
-- libcurl.def: removed, unused
-
-- docs/index.html: removed, was not shipped anyway
-
-- dist: add missing files to the tarball
-
-Peter Wu (30 Mar 2017)
-- cmake: fix build with cmake 2.8.12.2
-
- For some reason, CMake 2.8.12.2 did not expand the list argument in a
- single DEPENDS argument. Remove the quotes, so it gets expanded into
- multiple arguments for add_custom_command and add_custom_target.
-
- Fixes https://github.com/curl/curl/issues/1370
- Closes #1372
-
-Marcel Raad (30 Mar 2017)
-- ssh: fix narrowing conversion warning
-
- 'left' is used as time_t but declared as long.
- MinGW complains:
- error: conversion to 'long int' from 'time_t {aka long long int}' may alter
- its value [-Werror=conversion]
- Changed the declaration to time_t.
-
-- http2: silence unused parameter warnings
-
- In release mode, MinGW complains:
- error: unused parameter 'lib_error_code' [-Werror=unused-parameter]
-
-Daniel Stenberg (30 Mar 2017)
-- [Hanno Böck brought this change]
-
- curl: fix callback functions to match prototype
-
- The function tool_debug_cb doesn't match curl_debug_callback in curl.h
- (unsigned vs. signed char* for 3rd param).
-
- Bug: https://curl.haxx.se/mail/lib-2017-03/0120.html
-
-- [Alexis La Goutte brought this change]
-
- gcc7: fix ‘*’ in boolean context, suggest ‘&&’ instead [-Wint-in-bool-context]
-
- Closes #1371
-
-Marcel Raad (30 Mar 2017)
-- schannel: fix unused variable warning
-
- If CURL_DISABLE_VERBOSE_STRINGS is defined, hostname is not used in
- schannel_connect_step3.
-
-- connect: fix unreferenced parameter warning
-
- When CURL_DISABLE_VERBOSE_STRINGS is defined, the reason parameter in
- Curl_conncontrol is not used as the infof macro expands to nothing.
-
-- select: use correct SIZEOF_ constant
-
- At least under Windows, there is no SIZEOF_LONG, so it evaluates to 0 even
- though sizeof(int) == sizeof(long). This should probably have been
- CURL_SIZEOF_LONG, but the type of timeout_ms changed from long to time_t
- anyway.
- This triggered MSVC warning C4668 about implicitly replacing undefined
- macros with '0'.
-
- Closes https://github.com/curl/curl/pull/1362
-
-Daniel Stenberg (30 Mar 2017)
-- cmake: add cmake file in docs/libcurl/opts/ to dist
-
-- cmake: add more missing files to the dist
-
-- docs/Makefile.am: include CMakeLists.txt in the dist tarball
-
-Marcel Raad (29 Mar 2017)
-- NTLM: check for features with #ifdef instead of #if
-
- Feature defines are normally checked with #ifdef instead of #if in the rest of
- the codebase. Additionally, some compilers warn when a macro is implicitly
- evaluated to 0 because it is not defined, which was the case here.
-
- Ref: https://github.com/curl/curl/pull/1362#discussion_r108605101
- Closes https://github.com/curl/curl/pull/1367
-
-Daniel Stenberg (29 Mar 2017)
-- [Hanno Böck brought this change]
-
- curl: fix callback argument inconsistency
-
- As you can see the callback definition uses a char* for the first
- argument, while the function uses a void*.
-
- URL: https://curl.haxx.se/mail/lib-2017-03/0116.html
-
-- RELEASE-NOTES: synced with 556c51a2df
-
-- [madblobfish brought this change]
-
- KNOWN_BUGS: typo
-
- Closes #1364
-
-- [Maksim Stsepanenka brought this change]
-
- make: use the variable MAKE for recursive calls
-
- Closes #1366
-
-- conncache: make hashkey avoid malloc
-
- ... to make it much faster. Idea developed with primepie on IRC.
-
- Closes #1365
-
-Kamil Dudka (28 Mar 2017)
-- http: do not treat FTPS over CONNECT as HTTPS
-
- If we use FTPS over CONNECT, the TLS handshake for the FTPS control
- connection needs to be initiated in the SENDPROTOCONNECT state, not
- the WAITPROXYCONNECT state. Otherwise, if the TLS handshake completed
- without blocking, the information about the completed TLS handshake
- would be saved to a wrong flag. Consequently, the TLS handshake would
- be initiated in the SENDPROTOCONNECT state once again on the same
- connection, resulting in a failure of the TLS handshake. I was able to
- observe the failure with the NSS backend if curl ran through valgrind.
-
- Note that this commit partially reverts curl-7_21_6-52-ge34131d.
-
-Daniel Stenberg (28 Mar 2017)
-- pause: handle mixed types of data when paused
-
- When receiving chunked encoded data with trailers, and the write
- callback returns PAUSE, there might be both body and header to store to
- resend on unpause. Previously libcurl returned error for that case.
-
- Added test case 1540 to verify.
-
- Reported-by: Stephen Toub
- Fixes #1354
- Closes #1357
-
-Jay Satiro (28 Mar 2017)
-- [Isaac Boukris brought this change]
-
- http: Fix proxy connection reuse with basic-auth
-
- When using basic-auth, connections and proxy connections
- can be re-used with different Authorization headers since
- it does not authenticate the connection (like NTLM does).
-
- For instance, the below command should re-use the proxy
- connection, but it currently doesn't:
- curl -v -U alice:a -x http://localhost:8181 http://localhost/
- --next -U bob:b -x http://localhost:8181 http://localhost/
-
- This is a regression since refactoring of ConnectionExists()
- as part of: cb4e2be7c6d42ca0780f8e0a747cecf9ba45f151
-
- Fix the above by removing the username and password compare
- when re-using proxy connection at proxy_info_matches().
-
- However, this fix brings back another bug would make curl
- to re-print the old proxy-authorization header of previous
- proxy basic-auth connection because it wasn't cleared.
-
- For instance, in the below command the second request should
- fail if the proxy requires authentication, but would succeed
- after the above fix (and before aforementioned commit):
- curl -v -U alice:a -x http://localhost:8181 http://localhost/
- --next -x http://localhost:8181 http://localhost/
-
- Fix this by clearing conn->allocptr.proxyuserpwd after use
- unconditionally, same as we do for conn->allocptr.userpwd.
-
- Also fix test 540 to not expect digest auth header to be
- resent when connection is reused.
-
- Signed-off-by: Isaac Boukris
-
- Closes https://github.com/curl/curl/pull/1350
-
-- openssl: exclude DSA code when OPENSSL_NO_DSA is defined
-
- - Fix compile errors that occur in openssl.c when OpenSSL lib was
- built without DSA support.
-
- Bug: https://github.com/curl/curl/issues/1361
- Reported-by: neheb@users.noreply.github.com
-
-- examples/fopen: checksrc compliance
-
-Marcel Raad (28 Mar 2017)
-- schannel: fix variable shadowing warning
-
- No need to redeclare the variable.
-
-- multi: fix MinGW-w64 compiler warnings
-
- error: conversion to 'long int' from 'time_t {aka long long int}' may alter
- its value [-Werror=conversion]
-
-- .gitattributes: turn off CRLF for *.am
-
- If Makefile.am uses CRLF, buildconf in a Windows checkout fails with:
- ".ibtoolize: error: AC_CONFIG_MACRO_DIRS([m4]) conflicts with
- ACLOCAL_AMFLAGS=-I m4"
-
-Daniel Stenberg (26 Mar 2017)
-- [klemens brought this change]
-
- spelling fixes
-
- Closes #1356
-
-- curl: check for end of input in writeout backslash handling
-
- Reported-by: Brian Carpenter
-
- Added test 1442 to verify
-
-Marcel Raad (24 Mar 2017)
-- tests/README: make "Run" section foolproof
-
- curl must be built before building the tests.
-
- Closes https://github.com/curl/curl/pull/1352
-
-Daniel Stenberg (23 Mar 2017)
-- openssl: fix comparison between signed and unsigned integer expressions
-
-Marcel Raad (23 Mar 2017)
-- [Edward Kimmel brought this change]
-
- asiohiper: make sure socket is open in event_cb
-
- Send curl_socket_t to event_cb and make sure it hasn't been closed yet.
-
- Closes https://github.com/curl/curl/pull/1318
-
-Dan Fandrich (23 Mar 2017)
-- openssl: made the error table static const
-
-Jay Satiro (23 Mar 2017)
-- openssl: fall back on SSL_ERROR_* string when no error detail
-
- - If SSL_get_error is called but no extended error detail is available
- then show that SSL_ERROR_* as a string.
-
- Prior to this change there was some inconsistency in that case: the
- SSL_ERROR_* code may or may not have been shown, or may have been shown
- as unknown even if it was known.
-
- Ref: https://github.com/curl/curl/issues/1300
-
- Closes https://github.com/curl/curl/pull/1348
-
-Dan Fandrich (23 Mar 2017)
-- mkhelp: disable compression if the perl gzip module is unavailable
-
- This is nowadays included with the base perl distribution, but wasn't
- prior to about perl 5.14
-
-Daniel Stenberg (23 Mar 2017)
-- [Anders Roxell brought this change]
-
- tests/README: mention nroff for --manual tests
-
- Signed-off-by: Anders Roxell
-
- Closes #1342
-
-- CURLINFO_PRIMARY_IP.3: add example
-
-- travis: run tests-nonflaky instead of tests-full
-
-- make: introduce 'test-nonflaky' target
-
- Running this in the root build dir will invoke the test suite to only
- run tests not marked as 'flaky'.
-
-- test2033: flaky
-
-Jay Satiro (21 Mar 2017)
-- [Ales Mlakar brought this change]
-
- mbedtls: add support for CURLOPT_SSL_CTX_FUNCTION
-
- Ref: https://curl.haxx.se/mail/lib-2017-02/0097.html
-
- Closes https://github.com/curl/curl/pull/1272
-
-Peter Wu (21 Mar 2017)
-- cmake: add support for building HTML and PDF docs
-
- Note that for some reason there is this warning (that also exists with
- autotools, added since curl-7_15_1-94-ga718cb05f):
-
- docs/libcurl/curl_multi_socket_all.3:1: can't open `man3/curl_multi_socket.3': No such file or directory
-
- Additionally, adjust the roffit --mandir option to support creating
- links when doing out-of-tree builds.
-
- Ref: https://github.com/curl/curl/pull/1288
-
-- cmake: build manual pages (including curl.1)
-
- Also make Perl mandatory to allow building the docs.
-
- While CMakeLists.txt could probably read the list of manual pages from
- Makefile.am, actually putting those in CMakeLists.txt is cleaner so that
- is what is done here.
-
- Fixes #1230
- Ref: https://github.com/curl/curl/pull/1288
-
-- docs: split file lists into Makefile.inc
-
- For easier sharing with CMake. The contents were reformatted to use
- two-space indent and expanded tabs (matching lib/Makefile.common).
-
- Ref: https://github.com/curl/curl/pull/1288
-
-Daniel Stenberg (21 Mar 2017)
-- examples: comment typos in http2 examples
-
-- RELEASE-NOTES: typo
-
-- RELEASE-NOTES: synced with 6e0f26c8a8c28df
-
-- multi: fix streamclose() crash in debug mode
-
- The code would refer to the wrong data pointer. Only debug builds do
- this - for verbosity.
-
- Reported-by: zelinchen@users.noreply.github.com
- Fixes #1329
-
-- CONTRIBUTE: mention referring to github issues in commit msgs
-
-Dan Fandrich (20 Mar 2017)
-- runtests.pl: fixed display of the Gopher IPv6 port number
-
-- tests: fixed the documented test server port numbers
-
-- test714/5: added HTTP as a required feature
-
- These tests use an HTTP proxy so require that curl be built with HTTP
- support.
-
-- tests: strip more options from non-HTTP --libcurl tests
-
- The CURLOPT_USERAGENT and CURLOPT_MAXREDIRS options are only set if HTTP
- support is available, so ignore them in tests where HTTP is not
- guaranteed.
-
-Jay Satiro (18 Mar 2017)
-- [Palo Markovic brought this change]
-
- darwinssl: fix typo in variable name
-
- Broken a week ago in 6448f98.
-
- Closes https://github.com/curl/curl/pull/1337
-
-- tool_operate: Fix showing HTTPS-Proxy options on CURLE_SSL_CACERT
-
- - Show the HTTPS-proxy options on CURLE_SSL_CACERT if libcurl was built
- with HTTPS-proxy support.
-
- Prior to this change those options were shown only if an HTTPS-proxy was
- specified by --proxy, but that did not take into account environment
- variables such as http_proxy, https_proxy, etc. Follow-up to e1187c4.
-
- Bug: https://github.com/curl/curl/issues/1331
- Reported-by: Nehal J Wani
-
-- CURLINFO_LOCAL_PORT.3: fix typo
-
-Daniel Stenberg (16 Mar 2017)
-- CURLINFO_LOCAL_PORT.3: added example
-
-- SSLCERTS.md: mention HTTPS proxies and their separate options
-
-- BINDINGS: a Delphi binding
-
-- KNOWN_BUGS: remove libidn related issue
-
- ... as we no longer use libidn
-
-Dan Fandrich (14 Mar 2017)
-- build: removed redundant DEPENDENCIES from makefiles
-
-Daniel Stenberg (13 Mar 2017)
-- [Sylvestre Ledru brought this change]
-
- Improve code readbility
-
- ... by removing the else branch after a return, break or continue.
-
- Closes #1310
-
-Jay Satiro (13 Mar 2017)
-- [Anatol Belski brought this change]
-
- winbuild: add basic support for OpenSSL 1.1.x
-
- - Auto-detect OpenSSL 1.1 libs
-
- Closes https://github.com/curl/curl/pull/1322
-
-Daniel Stenberg (13 Mar 2017)
-- RELEASE-NOTES: synced with c25e0761d0fc49c4
-
-- make: regenerate docs/curl.1 by runinng make in docs
-
- ... previously, docs/ was only a dist subdir, now also a build subdir.
-
- Reported-by: Dan Fandrich
- Bug: https://curl.haxx.se/mail/lib-2017-03/0017.html
-
-Dan Fandrich (12 Mar 2017)
-- test1440/1: depend on well-defined file: behaviour
-
- Depend on the known behaviour of URLs for nonexistent files rather than
- the undefined behaviour of URLs for directories (which fails on Windows).
- The test isn't about file: URLs at all, so the URL used doesn't really
- matter.
-
-- tests: clear the SSL_CERT_FILE variable on --libcurl tests
-
- Otherwise, the contents will end up in the output and fail the
- verification.
-
-- test1287: added verbose logs keyword
-
-- tool_writeout: fixed a buffer read overrun on --write-out
-
- If a % ended the statement, the string's trailing NUL would be skipped
- and memory past the end of the buffer would be accessed and potentially
- displayed as part of the --write-out output. Added tests 1440 and 1441
- to check for this kind of condition.
-
- Reported-by: Brian Carpenter
-
-Jay Satiro (12 Mar 2017)
-- [Desmond O. Chang brought this change]
-
- url: add option CURLOPT_SUPPRESS_CONNECT_HEADERS
-
- - Add new option CURLOPT_SUPPRESS_CONNECT_HEADERS to allow suppressing
- proxy CONNECT response headers from the user callback functions
- CURLOPT_HEADERFUNCTION and CURLOPT_WRITEFUNCTION.
-
- - Add new tool option --suppress-connect-headers to expose
- CURLOPT_SUPPRESS_CONNECT_HEADERS and allow suppressing proxy CONNECT
- response headers from --dump-header and --include.
-
- Assisted-by: Jay Satiro
- Assisted-by: CarloCannas@users.noreply.github.com
- Closes https://github.com/curl/curl/pull/783
-
-- http_proxy: Ignore TE and CL in CONNECT 2xx responses
-
- A client MUST ignore any Content-Length or Transfer-Encoding header
- fields received in a successful response to CONNECT.
- "Successful" described as: 2xx (Successful). RFC 7231 4.3.6
-
- Prior to this change such a case would cause an error.
-
- In some ways this bug appears to be a regression since c50b878. Prior to
- that libcurl may have appeared to function correctly in such cases by
- acting on those headers instead of causing an error. But that behavior
- was also incorrect.
-
- Bug: https://github.com/curl/curl/issues/1317
- Reported-by: mkzero@users.noreply.github.com
-
-- [Thomas Glanzmann brought this change]
-
- mbedtls: fix typo in variable name
-
- Broken a few days ago in 6448f98.
-
- Bug: https://curl.haxx.se/mail/lib-2017-03/0015.html
-
-Michael Kaufmann (11 Mar 2017)
-- tests: fix the authretry tests
-
- Do not call curl_easy_reset() between the requests, because the
- auth state must be preserved for these tests.
-
- Follow-up to 0afbcfd
-
-- proxy: skip SSL initialization for closed connections
-
- This prevents a "Descriptor is not a socket" error for WinSSL.
-
- Reported-by: Antony74@users.noreply.github.com
- Reviewed-by: Jay Satiro
-
- Fixes https://github.com/curl/curl/issues/1239
-
-- curl_easy_reset: Also reset the authentication state
-
- Follow-up to 5278462
- See https://github.com/curl/curl/issues/1095
-
-- [Isaac Boukris brought this change]
-
- authneg: clear auth.multi flag at http_done
-
- This flag is meant for the current request based on authentication
- state, once the request is done we can clear the flag.
-
- Also change auth.multi to auth.multipass for better readability.
-
- Fixes https://github.com/curl/curl/issues/1095
- Closes https://github.com/curl/curl/pull/1326
-
- Signed-off-by: Isaac Boukris
- Reported-by: Michael Kaufmann
-
-Dan Fandrich (11 Mar 2017)
-- url: don't compile detect_proxy if HTTP support is disabled
-
-- cmdline-opts: fixed a few typos
-
-Daniel Stenberg (10 Mar 2017)
-- README.md: add coverity and travis badges
-
-- ISSUE_TEMPLATE: for bugs, ask questions on the mailing list
-
- and try to add the top comment within an HTML comment in the hope
- that it might get hidden if the text is kept
-
-- openssl: add two /* FALLTHROUGH */ to satisfy coverity
-
- CID 1402159 and 1402158
-
-- tests: disabled 1903 now
-
- Test 1903 is doing HTTP pipelining, and that is a timing and ordering
- sensitive operation and this fails far too often on the Travis CI
- leading to people more or less ignoring test failures there. Not good.
-
- The end of pipelning is probably coming sooner rather than later
- anyway...
-
-Dan Fandrich (9 Mar 2017)
-- tls-max.d: added to the makefile
-
-- build: fixed making man page in out-of-tree tarball builds
-
- The man page taken from the release package is found in a different
- location than if it's built from source. It must be referenced as $< in
- the rule to get its correct location in the VPATH.
-
-- mkhelp: simplified the gzip code
-
- This eliminates the need for an external gzip program, which wasn't
- working with Busybox's gzip, anyway. It now compresses using perl's
- IO::Compress::Gzip
-
-- polarssl: fixed compile errors introduced in 6448f98c
-
-Daniel Stenberg (8 Mar 2017)
-- bump: next release will be known as 7.54.0
-
- ...due to the newly added CURL_SSLVERSION_MAX_* functionality
-
-- openssl: unbreak the build after 6448f98c1857de
-
- Verified with OpenSSL 1.1.0e and OpenSSL master (1.1.1)
-
-Kamil Dudka (8 Mar 2017)
-- [Jozef Kralik brought this change]
-
- vtls: add options to specify range of enabled TLS versions
-
- This commit introduces the CURL_SSLVERSION_MAX_* constants as well as
- the --tls-max option of the curl tool.
-
- Closes https://github.com/curl/curl/pull/1166
-
-Daniel Stenberg (8 Mar 2017)
-- RELEASE-NOTES: synced with 6888a670aa01
-
-- MANPAGE: clarify the dash situation in meta data
-
-- insecure.d: clarify that this is for server connections
-
- Assisted-by: Ray Satiro
- Bug: https://curl.haxx.se/mail/lib-2017-03/0002.html
-
-Dan Fandrich (8 Mar 2017)
-- test1260: added http as a required feature
-
-Daniel Stenberg (7 Mar 2017)
-- [Steve Brokenshire brought this change]
-
- maketgz: Run updatemanpages.pl to update man pages
-
- maketgz now runs scripts/updatemanpages.pl to update the man pages .TH
- section to use the current date and curl/libcurl version.
-
- (TODO Section 3.1)
-
- Closes #1058
-
-- [Steve Brokenshire brought this change]
-
- gitignore: Ignore man page dist files
-
- Ignore man page dist files generated by scripts/updatemanpages.pl
-
-- [Steve Brokenshire brought this change]
-
- Makefile.am: Remove distribution man pages when running 'make clean'
-
-- [Steve Brokenshire brought this change]
-
- Makefile.am: Added scripts/updatemanpages.pl to EXTRA_DIST
-
-- [Steve Brokenshire brought this change]
-
- updatemanpages.pl: Update man pages to use current date and versions
-
- Added script to update man pages to use the current date and
- curl/libcurl versions.
-
- updatemanpages.pl has three arrays: list of directories to look in,
- list of extensions to process, list of files to exclude from
- processing.
-
- Check man page in git repoistory using the date from the existing man
- page before updating to avoid updating the man page if no change is
- made.
-
- If data is received from the git command then update the man page with
- the current date and version otherwise leave alone.
-
- Applied patch from badger to make the date argument optional, change the
- git command used, added date argument to processfile subroutine and
- print to STDERR if no date is found in a man page.
-
- Added code to process the changed man page into a new man page with
- .dist added to the filename to keep the original source files unchanged.
- Updated POD documentation to reflect that the date argument optional.
-
- Code style is in line with CODE_STYLE.md.
-
- Directories: docs/ docs/libcurl/ docs/libcurl/opts/ tests/
- Extensions: .1 .3
- Excluded files: mk-ca-bundle.1 template.3
-
- (TODO Section 3.1)
-
-- [Tatsuhiro Tsujikawa brought this change]
-
- http2: Fix assertion error on redirect with CL=0
-
- This fixes assertion error which occurs when redirect is done with 0
- length body via HTTP/2, and the easy handle is reused, but new
- connection is established due to hostname change:
-
- curl: http2.c:1572: ssize_t http2_recv(struct connectdata *,
- int, char *, size_t, CURLcode *):
- Assertion `httpc->drain_total >= data->state.drain' failed.
-
- To fix this bug, ensure that http2_handle_stream is called.
-
- Fixes #1286
- Closes #1302
-
-- ares: Curl_resolver_wait_resolv: clear *entry first in function
-
-- ares: better error return on timeouts
-
- Assisted-by: Ray Satiro
-
- Bug: https://curl.haxx.se/mail/lib-2017-03/0009.html
-
-Jay Satiro (6 Mar 2017)
-- KNOWN_BUGS: Add DarwinSSL won't import PKCS#12 without a password
-
- Bug: https://github.com/curl/curl/issues/1308
- Reported-by: Justin Clift
-
-Dan Fandrich (6 Mar 2017)
-- test1260: removed errant XML tag
-
-Daniel Stenberg (6 Mar 2017)
-- URL: return error on malformed URLs with junk after port number
-
- ... because it causes confusion with users. Example URLs:
-
- "http://[127.0.0.1]:11211:80" which a lot of languages' URL parsers will
- parse and claim uses port number 80, while libcurl would use port number
- 11211.
-
- "http://user@example.com:80@localhost" which by the WHATWG URL spec will
- be treated to contain user name 'user@example.com' but according to
- RFC3986 is user name 'user' for the host 'example.com' and then port 80
- is followed by "@localhost"
-
- Both these formats are now rejected, and verified so in test 1260.
-
- Reported-by: Orange Tsai
-
-- BINDINGS: update the Lua-cURL URL
-
-- [Sylvestre Ledru brought this change]
-
- BINDINGS: add Scilab binding
-
- Closes #1312
-
-- BINDINGS: add go-curl and perl6-net-curl
-
- Reported-by: Peter Pentchev
-
-- BINDINGS: add misssing C++ bindings
-
- Reported-by: Giuseppe Persico
+$ git log --pretty=fuller --no-color --date=short --decorate=full | \
+ ./scripts/log2changes.pl
diff --git a/curl/CMake/CMakeConfigurableFile.in b/curl/CMake/CMakeConfigurableFile.in
index 4cf74a12..8ccd016a 100644
--- a/curl/CMake/CMakeConfigurableFile.in
+++ b/curl/CMake/CMakeConfigurableFile.in
@@ -1,2 +1,22 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2020, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
@CMAKE_CONFIGURABLE_FILE_CONTENT@
-
diff --git a/curl/CMake/CurlSymbolHiding.cmake b/curl/CMake/CurlSymbolHiding.cmake
index 9f7d2963..e99ea6f6 100644
--- a/curl/CMake/CurlSymbolHiding.cmake
+++ b/curl/CMake/CurlSymbolHiding.cmake
@@ -1,60 +1,75 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2020, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
include(CheckCSourceCompiles)
option(CURL_HIDDEN_SYMBOLS "Set to ON to hide libcurl internal symbols (=hide all symbols that aren't officially external)." ON)
mark_as_advanced(CURL_HIDDEN_SYMBOLS)
if(CURL_HIDDEN_SYMBOLS)
- set(SUPPORTS_SYMBOL_HIDING FALSE)
+ set(SUPPORTS_SYMBOL_HIDING FALSE)
- if(CMAKE_C_COMPILER_ID MATCHES "Clang")
- set(SUPPORTS_SYMBOL_HIDING TRUE)
- set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))")
- set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden")
- elseif(CMAKE_COMPILER_IS_GNUCC)
- if(NOT CMAKE_VERSION VERSION_LESS 2.8.10)
- set(GCC_VERSION ${CMAKE_C_COMPILER_VERSION})
- else()
- execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion
- OUTPUT_VARIABLE GCC_VERSION)
- endif()
- if(NOT GCC_VERSION VERSION_LESS 3.4)
- # note: this is considered buggy prior to 4.0 but the autotools don't care, so let's ignore that fact
- set(SUPPORTS_SYMBOL_HIDING TRUE)
- set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))")
- set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden")
- endif()
- elseif(CMAKE_C_COMPILER_ID MATCHES "SunPro" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 8.0)
- set(SUPPORTS_SYMBOL_HIDING TRUE)
- set(_SYMBOL_EXTERN "__global")
- set(_CFLAG_SYMBOLS_HIDE "-xldscope=hidden")
- elseif(CMAKE_C_COMPILER_ID MATCHES "Intel" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 9.0)
- # note: this should probably just check for version 9.1.045 but I'm not 100% sure
- # so let's to it the same way autotools do.
- set(SUPPORTS_SYMBOL_HIDING TRUE)
- set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))")
- set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden")
- check_c_source_compiles("#include
- int main (void) { printf(\"icc fvisibility bug test\"); return 0; }" _no_bug)
- if(NOT _no_bug)
- set(SUPPORTS_SYMBOL_HIDING FALSE)
- set(_SYMBOL_EXTERN "")
- set(_CFLAG_SYMBOLS_HIDE "")
- endif()
- elseif(MSVC)
- set(SUPPORTS_SYMBOL_HIDING TRUE)
+ if(CMAKE_C_COMPILER_ID MATCHES "Clang" AND NOT MSVC)
+ set(SUPPORTS_SYMBOL_HIDING TRUE)
+ set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))")
+ set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden")
+ elseif(CMAKE_COMPILER_IS_GNUCC)
+ if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4)
+ # note: this is considered buggy prior to 4.0 but the autotools don't care, so let's ignore that fact
+ set(SUPPORTS_SYMBOL_HIDING TRUE)
+ set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))")
+ set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden")
endif()
+ elseif(CMAKE_C_COMPILER_ID MATCHES "SunPro" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 8.0)
+ set(SUPPORTS_SYMBOL_HIDING TRUE)
+ set(_SYMBOL_EXTERN "__global")
+ set(_CFLAG_SYMBOLS_HIDE "-xldscope=hidden")
+ elseif(CMAKE_C_COMPILER_ID MATCHES "Intel" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 9.0)
+ # note: this should probably just check for version 9.1.045 but I'm not 100% sure
+ # so let's do it the same way autotools do.
+ set(SUPPORTS_SYMBOL_HIDING TRUE)
+ set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))")
+ set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden")
+ check_c_source_compiles("#include
+ int main (void) { printf(\"icc fvisibility bug test\"); return 0; }" _no_bug)
+ if(NOT _no_bug)
+ set(SUPPORTS_SYMBOL_HIDING FALSE)
+ set(_SYMBOL_EXTERN "")
+ set(_CFLAG_SYMBOLS_HIDE "")
+ endif()
+ elseif(MSVC)
+ set(SUPPORTS_SYMBOL_HIDING TRUE)
+ endif()
- set(HIDES_CURL_PRIVATE_SYMBOLS ${SUPPORTS_SYMBOL_HIDING})
+ set(HIDES_CURL_PRIVATE_SYMBOLS ${SUPPORTS_SYMBOL_HIDING})
elseif(MSVC)
- if(NOT CMAKE_VERSION VERSION_LESS 3.7)
- set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) #present since 3.4.3 but broken
- set(HIDES_CURL_PRIVATE_SYMBOLS FALSE)
- else()
- message(WARNING "Hiding private symbols regardless CURL_HIDDEN_SYMBOLS being disabled.")
- set(HIDES_CURL_PRIVATE_SYMBOLS TRUE)
- endif()
-elseif()
+ if(NOT CMAKE_VERSION VERSION_LESS 3.7)
+ set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) #present since 3.4.3 but broken
set(HIDES_CURL_PRIVATE_SYMBOLS FALSE)
+ else()
+ message(WARNING "Hiding private symbols regardless CURL_HIDDEN_SYMBOLS being disabled.")
+ set(HIDES_CURL_PRIVATE_SYMBOLS TRUE)
+ endif()
+else()
+ set(HIDES_CURL_PRIVATE_SYMBOLS FALSE)
endif()
set(CURL_CFLAG_SYMBOLS_HIDE ${_CFLAG_SYMBOLS_HIDE})
diff --git a/curl/CMake/CurlTests.c b/curl/CMake/CurlTests.c
index bc36c8ef..e418146b 100644
--- a/curl/CMake/CurlTests.c
+++ b/curl/CMake/CurlTests.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, , et al.
+ * Copyright (C) 1998 - 2021, Daniel Stenberg, , et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
+ * are also available at https://curl.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
@@ -71,21 +71,15 @@ main ()
}
#endif
-/* tests for gethostbyaddr_r or gethostbyname_r */
-#if defined(HAVE_GETHOSTBYADDR_R_5_REENTRANT) || \
- defined(HAVE_GETHOSTBYADDR_R_7_REENTRANT) || \
- defined(HAVE_GETHOSTBYADDR_R_8_REENTRANT) || \
- defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT) || \
+/* tests for gethostbyname_r */
+#if defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT) || \
defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) || \
defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT)
# define _REENTRANT
/* no idea whether _REENTRANT is always set, just invent a new flag */
# define TEST_GETHOSTBYFOO_REENTRANT
#endif
-#if defined(HAVE_GETHOSTBYADDR_R_5) || \
- defined(HAVE_GETHOSTBYADDR_R_7) || \
- defined(HAVE_GETHOSTBYADDR_R_8) || \
- defined(HAVE_GETHOSTBYNAME_R_3) || \
+#if defined(HAVE_GETHOSTBYNAME_R_3) || \
defined(HAVE_GETHOSTBYNAME_R_5) || \
defined(HAVE_GETHOSTBYNAME_R_6) || \
defined(TEST_GETHOSTBYFOO_REENTRANT)
@@ -98,18 +92,10 @@ int main(void)
int type = 0;
struct hostent h;
int rc = 0;
-#if defined(HAVE_GETHOSTBYADDR_R_5) || \
- defined(HAVE_GETHOSTBYADDR_R_5_REENTRANT) || \
- \
- defined(HAVE_GETHOSTBYNAME_R_3) || \
+#if defined(HAVE_GETHOSTBYNAME_R_3) || \
defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT)
struct hostent_data hdata;
-#elif defined(HAVE_GETHOSTBYADDR_R_7) || \
- defined(HAVE_GETHOSTBYADDR_R_7_REENTRANT) || \
- defined(HAVE_GETHOSTBYADDR_R_8) || \
- defined(HAVE_GETHOSTBYADDR_R_8_REENTRANT) || \
- \
- defined(HAVE_GETHOSTBYNAME_R_5) || \
+#elif defined(HAVE_GETHOSTBYNAME_R_5) || \
defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) || \
defined(HAVE_GETHOSTBYNAME_R_6) || \
defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT)
@@ -118,22 +104,6 @@ int main(void)
struct hostent *hp;
#endif
-#ifndef gethostbyaddr_r
- (void)gethostbyaddr_r;
-#endif
-
-#if defined(HAVE_GETHOSTBYADDR_R_5) || \
- defined(HAVE_GETHOSTBYADDR_R_5_REENTRANT)
- rc = gethostbyaddr_r(address, length, type, &h, &hdata);
-#elif defined(HAVE_GETHOSTBYADDR_R_7) || \
- defined(HAVE_GETHOSTBYADDR_R_7_REENTRANT)
- hp = gethostbyaddr_r(address, length, type, &h, buffer, 8192, &h_errnop);
- (void)hp;
-#elif defined(HAVE_GETHOSTBYADDR_R_8) || \
- defined(HAVE_GETHOSTBYADDR_R_8_REENTRANT)
- rc = gethostbyaddr_r(address, length, type, &h, buffer, 8192, &hp, &h_errnop);
-#endif
-
#if defined(HAVE_GETHOSTBYNAME_R_3) || \
defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT)
rc = gethostbyname_r(address, &h, &hdata);
@@ -212,53 +182,6 @@ if (sizeof (bool *) )
#include
int main() { return 0; }
#endif
-#ifdef RETSIGTYPE_TEST
-#include
-#include
-#ifdef signal
-# undef signal
-#endif
-#ifdef __cplusplus
-extern "C" void (*signal (int, void (*)(int)))(int);
-#else
-void (*signal ()) ();
-#endif
-
-int
-main ()
-{
- return 0;
-}
-#endif
-#ifdef HAVE_INET_NTOA_R_DECL
-#include
-
-typedef void (*func_type)();
-
-int main()
-{
-#ifndef inet_ntoa_r
- func_type func;
- func = (func_type)inet_ntoa_r;
-#endif
- return 0;
-}
-#endif
-#ifdef HAVE_INET_NTOA_R_DECL_REENTRANT
-#define _REENTRANT
-#include
-
-typedef void (*func_type)();
-
-int main()
-{
-#ifndef inet_ntoa_r
- func_type func;
- func = (func_type)&inet_ntoa_r;
-#endif
- return 0;
-}
-#endif
#ifdef HAVE_GETADDRINFO
#include
#include
@@ -375,7 +298,7 @@ main ()
/* IoctlSocket source code */
long flags = 0;
- if(0 != ioctlsocket(0, FIONBIO, &flags))
+ if(0 != IoctlSocket(0, FIONBIO, &flags))
return 1;
;
return 0;
@@ -507,30 +430,30 @@ main ()
#ifdef HAVE_GLIBC_STRERROR_R
#include
#include
+
+void check(char c) {}
+
int
main () {
- char buffer[1024]; /* big enough to play with */
- char *string =
- strerror_r(EACCES, buffer, sizeof(buffer));
- /* this should've returned a string */
- if(!string || !string[0])
- return 99;
- return 0;
+ char buffer[1024];
+ /* This will not compile if strerror_r does not return a char* */
+ check(strerror_r(EACCES, buffer, sizeof(buffer))[0]);
+ return 0;
}
#endif
#ifdef HAVE_POSIX_STRERROR_R
#include
#include
+
+/* float, because a pointer can't be implicitly cast to float */
+void check(float f) {}
+
int
main () {
- char buffer[1024]; /* big enough to play with */
- int error =
- strerror_r(EACCES, buffer, sizeof(buffer));
- /* This should've returned zero, and written an error string in the
- buffer.*/
- if(!buffer[0] || error)
- return 99;
- return 0;
+ char buffer[1024];
+ /* This will not compile if strerror_r does not return an int */
+ check(strerror_r(EACCES, buffer, sizeof(buffer)));
+ return 0;
}
#endif
#ifdef HAVE_FSETXATTR_6
@@ -549,3 +472,65 @@ main() {
return 0;
}
#endif
+#ifdef HAVE_CLOCK_GETTIME_MONOTONIC
+#include
+int
+main() {
+ struct timespec ts = {0, 0};
+ clock_gettime(CLOCK_MONOTONIC, &ts);
+ return 0;
+}
+#endif
+#ifdef HAVE_BUILTIN_AVAILABLE
+int
+main() {
+ if(__builtin_available(macOS 10.12, *)) {}
+ return 0;
+}
+#endif
+#ifdef HAVE_VARIADIC_MACROS_C99
+#define c99_vmacro3(first, ...) fun3(first, __VA_ARGS__)
+#define c99_vmacro2(first, ...) fun2(first, __VA_ARGS__)
+
+int fun3(int arg1, int arg2, int arg3);
+int fun2(int arg1, int arg2);
+
+int fun3(int arg1, int arg2, int arg3) {
+ return arg1 + arg2 + arg3;
+}
+int fun2(int arg1, int arg2) {
+ return arg1 + arg2;
+}
+
+int
+main() {
+ int res3 = c99_vmacro3(1, 2, 3);
+ int res2 = c99_vmacro2(1, 2);
+ (void)res3;
+ (void)res2;
+ return 0;
+}
+#endif
+#ifdef HAVE_VARIADIC_MACROS_GCC
+#define gcc_vmacro3(first, args...) fun3(first, args)
+#define gcc_vmacro2(first, args...) fun2(first, args)
+
+int fun3(int arg1, int arg2, int arg3);
+int fun2(int arg1, int arg2);
+
+int fun3(int arg1, int arg2, int arg3) {
+ return arg1 + arg2 + arg3;
+}
+int fun2(int arg1, int arg2) {
+ return arg1 + arg2;
+}
+
+int
+main() {
+ int res3 = gcc_vmacro3(1, 2, 3);
+ int res2 = gcc_vmacro2(1, 2);
+ (void)res3;
+ (void)res2;
+ return 0;
+}
+#endif
diff --git a/curl/CMake/FindBearSSL.cmake b/curl/CMake/FindBearSSL.cmake
new file mode 100644
index 00000000..9455f4ba
--- /dev/null
+++ b/curl/CMake/FindBearSSL.cmake
@@ -0,0 +1,30 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2020, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+find_path(BEARSSL_INCLUDE_DIRS bearssl.h)
+
+find_library(BEARSSL_LIBRARY bearssl)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(BEARSSL DEFAULT_MSG
+ BEARSSL_INCLUDE_DIRS BEARSSL_LIBRARY)
+
+mark_as_advanced(BEARSSL_INCLUDE_DIRS BEARSSL_LIBRARY)
diff --git a/curl/CMake/FindBrotli.cmake b/curl/CMake/FindBrotli.cmake
new file mode 100644
index 00000000..0ed08550
--- /dev/null
+++ b/curl/CMake/FindBrotli.cmake
@@ -0,0 +1,41 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2020, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+include(FindPackageHandleStandardArgs)
+
+find_path(BROTLI_INCLUDE_DIR "brotli/decode.h")
+
+find_library(BROTLICOMMON_LIBRARY NAMES brotlicommon)
+find_library(BROTLIDEC_LIBRARY NAMES brotlidec)
+
+find_package_handle_standard_args(BROTLI
+ FOUND_VAR
+ BROTLI_FOUND
+ REQUIRED_VARS
+ BROTLIDEC_LIBRARY
+ BROTLICOMMON_LIBRARY
+ BROTLI_INCLUDE_DIR
+ FAIL_MESSAGE
+ "Could NOT find BROTLI"
+)
+
+set(BROTLI_INCLUDE_DIRS ${BROTLI_INCLUDE_DIR})
+set(BROTLI_LIBRARIES ${BROTLICOMMON_LIBRARY} ${BROTLIDEC_LIBRARY})
diff --git a/curl/CMake/FindCARES.cmake b/curl/CMake/FindCARES.cmake
index c4ab5f13..71806823 100644
--- a/curl/CMake/FindCARES.cmake
+++ b/curl/CMake/FindCARES.cmake
@@ -1,3 +1,24 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2020, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
# - Find c-ares
# Find the c-ares includes and library
# This module defines
@@ -7,36 +28,18 @@
# also defined, but not for general use are
# CARES_LIBRARY, where to find the c-ares library.
-FIND_PATH(CARES_INCLUDE_DIR ares.h
- /usr/local/include
- /usr/include
- )
+find_path(CARES_INCLUDE_DIR ares.h)
-SET(CARES_NAMES ${CARES_NAMES} cares)
-FIND_LIBRARY(CARES_LIBRARY
+set(CARES_NAMES ${CARES_NAMES} cares)
+find_library(CARES_LIBRARY
NAMES ${CARES_NAMES}
- PATHS /usr/lib /usr/local/lib
)
-IF (CARES_LIBRARY AND CARES_INCLUDE_DIR)
- SET(CARES_LIBRARIES ${CARES_LIBRARY})
- SET(CARES_FOUND "YES")
-ELSE (CARES_LIBRARY AND CARES_INCLUDE_DIR)
- SET(CARES_FOUND "NO")
-ENDIF (CARES_LIBRARY AND CARES_INCLUDE_DIR)
-
-
-IF (CARES_FOUND)
- IF (NOT CARES_FIND_QUIETLY)
- MESSAGE(STATUS "Found c-ares: ${CARES_LIBRARIES}")
- ENDIF (NOT CARES_FIND_QUIETLY)
-ELSE (CARES_FOUND)
- IF (CARES_FIND_REQUIRED)
- MESSAGE(FATAL_ERROR "Could not find c-ares library")
- ENDIF (CARES_FIND_REQUIRED)
-ENDIF (CARES_FOUND)
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(CARES
+ REQUIRED_VARS CARES_LIBRARY CARES_INCLUDE_DIR)
-MARK_AS_ADVANCED(
+mark_as_advanced(
CARES_LIBRARY
CARES_INCLUDE_DIR
)
diff --git a/curl/CMake/FindGSS.cmake b/curl/CMake/FindGSS.cmake
index 60dcb73c..4e4747d6 100644
--- a/curl/CMake/FindGSS.cmake
+++ b/curl/CMake/FindGSS.cmake
@@ -1,3 +1,24 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2020, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
# - Try to find the GSS Kerberos library
# Once done this will define
#
@@ -28,211 +49,213 @@ set(_GSS_ROOT_HINTS
# try to find library using system pkg-config if user didn't specify root dir
if(NOT GSS_ROOT_DIR AND NOT "$ENV{GSS_ROOT_DIR}")
- if(UNIX)
- find_package(PkgConfig QUIET)
- pkg_search_module(_GSS_PKG ${_MIT_MODNAME} ${_HEIMDAL_MODNAME})
- list(APPEND _GSS_ROOT_HINTS "${_GSS_PKG_PREFIX}")
- elseif(WIN32)
- list(APPEND _GSS_ROOT_HINTS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MIT\\Kerberos;InstallDir]")
- endif()
+ if(UNIX)
+ find_package(PkgConfig QUIET)
+ pkg_search_module(_GSS_PKG ${_MIT_MODNAME} ${_HEIMDAL_MODNAME})
+ list(APPEND _GSS_ROOT_HINTS "${_GSS_PKG_PREFIX}")
+ elseif(WIN32)
+ list(APPEND _GSS_ROOT_HINTS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MIT\\Kerberos;InstallDir]")
+ endif()
endif()
if(NOT _GSS_FOUND) #not found by pkg-config. Let's take more traditional approach.
- find_file(_GSS_CONFIGURE_SCRIPT
- NAMES
- "krb5-config"
- HINTS
- ${_GSS_ROOT_HINTS}
- PATH_SUFFIXES
- bin
- NO_CMAKE_PATH
- NO_CMAKE_ENVIRONMENT_PATH
+ find_file(_GSS_CONFIGURE_SCRIPT
+ NAMES
+ "krb5-config"
+ HINTS
+ ${_GSS_ROOT_HINTS}
+ PATH_SUFFIXES
+ bin
+ NO_CMAKE_PATH
+ NO_CMAKE_ENVIRONMENT_PATH
+ )
+
+ # if not found in user-supplied directories, maybe system knows better
+ find_file(_GSS_CONFIGURE_SCRIPT
+ NAMES
+ "krb5-config"
+ PATH_SUFFIXES
+ bin
+ )
+
+ if(_GSS_CONFIGURE_SCRIPT)
+ execute_process(
+ COMMAND ${_GSS_CONFIGURE_SCRIPT} "--cflags" "gssapi"
+ OUTPUT_VARIABLE _GSS_CFLAGS
+ RESULT_VARIABLE _GSS_CONFIGURE_FAILED
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ message(STATUS "CFLAGS: ${_GSS_CFLAGS}")
+ if(NOT _GSS_CONFIGURE_FAILED) # 0 means success
+ # should also work in an odd case when multiple directories are given
+ string(STRIP "${_GSS_CFLAGS}" _GSS_CFLAGS)
+ string(REGEX REPLACE " +-I" ";" _GSS_CFLAGS "${_GSS_CFLAGS}")
+ string(REGEX REPLACE " +-([^I][^ \\t;]*)" ";-\\1" _GSS_CFLAGS "${_GSS_CFLAGS}")
+
+ foreach(_flag ${_GSS_CFLAGS})
+ if(_flag MATCHES "^-I.*")
+ string(REGEX REPLACE "^-I" "" _val "${_flag}")
+ list(APPEND _GSS_INCLUDE_DIR "${_val}")
+ else()
+ list(APPEND _GSS_COMPILER_FLAGS "${_flag}")
+ endif()
+ endforeach()
+ endif()
+
+ execute_process(
+ COMMAND ${_GSS_CONFIGURE_SCRIPT} "--libs" "gssapi"
+ OUTPUT_VARIABLE _GSS_LIB_FLAGS
+ RESULT_VARIABLE _GSS_CONFIGURE_FAILED
+ OUTPUT_STRIP_TRAILING_WHITESPACE
)
+ message(STATUS "LDFLAGS: ${_GSS_LIB_FLAGS}")
+
+ if(NOT _GSS_CONFIGURE_FAILED) # 0 means success
+ # this script gives us libraries and link directories. Blah. We have to deal with it.
+ string(STRIP "${_GSS_LIB_FLAGS}" _GSS_LIB_FLAGS)
+ string(REGEX REPLACE " +-(L|l)" ";-\\1" _GSS_LIB_FLAGS "${_GSS_LIB_FLAGS}")
+ string(REGEX REPLACE " +-([^Ll][^ \\t;]*)" ";-\\1" _GSS_LIB_FLAGS "${_GSS_LIB_FLAGS}")
+
+ foreach(_flag ${_GSS_LIB_FLAGS})
+ if(_flag MATCHES "^-l.*")
+ string(REGEX REPLACE "^-l" "" _val "${_flag}")
+ list(APPEND _GSS_LIBRARIES "${_val}")
+ elseif(_flag MATCHES "^-L.*")
+ string(REGEX REPLACE "^-L" "" _val "${_flag}")
+ list(APPEND _GSS_LINK_DIRECTORIES "${_val}")
+ else()
+ list(APPEND _GSS_LINKER_FLAGS "${_flag}")
+ endif()
+ endforeach()
+ endif()
- # if not found in user-supplied directories, maybe system knows better
- find_file(_GSS_CONFIGURE_SCRIPT
- NAMES
- "krb5-config"
- PATH_SUFFIXES
- bin
+ execute_process(
+ COMMAND ${_GSS_CONFIGURE_SCRIPT} "--version"
+ OUTPUT_VARIABLE _GSS_VERSION
+ RESULT_VARIABLE _GSS_CONFIGURE_FAILED
+ OUTPUT_STRIP_TRAILING_WHITESPACE
)
- if(_GSS_CONFIGURE_SCRIPT)
- execute_process(
- COMMAND ${_GSS_CONFIGURE_SCRIPT} "--cflags" "gssapi"
- OUTPUT_VARIABLE _GSS_CFLAGS
- RESULT_VARIABLE _GSS_CONFIGURE_FAILED
- )
-message(STATUS "CFLAGS: ${_GSS_CFLAGS}")
- if(NOT _GSS_CONFIGURE_FAILED) # 0 means success
- # should also work in an odd case when multiple directories are given
- string(STRIP "${_GSS_CFLAGS}" _GSS_CFLAGS)
- string(REGEX REPLACE " +-I" ";" _GSS_CFLAGS "${_GSS_CFLAGS}")
- string(REGEX REPLACE " +-([^I][^ \\t;]*)" ";-\\1"_GSS_CFLAGS "${_GSS_CFLAGS}")
-
- foreach(_flag ${_GSS_CFLAGS})
- if(_flag MATCHES "^-I.*")
- string(REGEX REPLACE "^-I" "" _val "${_flag}")
- list(APPEND _GSS_INCLUDE_DIR "${_val}")
- else()
- list(APPEND _GSS_COMPILER_FLAGS "${_flag}")
- endif()
- endforeach()
- endif()
+ # older versions may not have the "--version" parameter. In this case we just don't care.
+ if(_GSS_CONFIGURE_FAILED)
+ set(_GSS_VERSION 0)
+ endif()
- execute_process(
- COMMAND ${_GSS_CONFIGURE_SCRIPT} "--libs" "gssapi"
- OUTPUT_VARIABLE _GSS_LIB_FLAGS
- RESULT_VARIABLE _GSS_CONFIGURE_FAILED
- )
-message(STATUS "LDFLAGS: ${_GSS_LIB_FLAGS}")
- if(NOT _GSS_CONFIGURE_FAILED) # 0 means success
- # this script gives us libraries and link directories. Blah. We have to deal with it.
- string(STRIP "${_GSS_LIB_FLAGS}" _GSS_LIB_FLAGS)
- string(REGEX REPLACE " +-(L|l)" ";-\\1" _GSS_LIB_FLAGS "${_GSS_LIB_FLAGS}")
- string(REGEX REPLACE " +-([^Ll][^ \\t;]*)" ";-\\1"_GSS_LIB_FLAGS "${_GSS_LIB_FLAGS}")
-
- foreach(_flag ${_GSS_LIB_FLAGS})
- if(_flag MATCHES "^-l.*")
- string(REGEX REPLACE "^-l" "" _val "${_flag}")
- list(APPEND _GSS_LIBRARIES "${_val}")
- elseif(_flag MATCHES "^-L.*")
- string(REGEX REPLACE "^-L" "" _val "${_flag}")
- list(APPEND _GSS_LINK_DIRECTORIES "${_val}")
- else()
- list(APPEND _GSS_LINKER_FLAGS "${_flag}")
- endif()
- endforeach()
- endif()
+ execute_process(
+ COMMAND ${_GSS_CONFIGURE_SCRIPT} "--vendor"
+ OUTPUT_VARIABLE _GSS_VENDOR
+ RESULT_VARIABLE _GSS_CONFIGURE_FAILED
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ # older versions may not have the "--vendor" parameter. In this case we just don't care.
+ if(_GSS_CONFIGURE_FAILED)
+ set(GSS_FLAVOUR "Heimdal") # most probably, shouldn't really matter
+ else()
+ if(_GSS_VENDOR MATCHES ".*H|heimdal.*")
+ set(GSS_FLAVOUR "Heimdal")
+ else()
+ set(GSS_FLAVOUR "MIT")
+ endif()
+ endif()
- execute_process(
- COMMAND ${_GSS_CONFIGURE_SCRIPT} "--version"
- OUTPUT_VARIABLE _GSS_VERSION
- RESULT_VARIABLE _GSS_CONFIGURE_FAILED
- )
+ else() # either there is no config script or we are on a platform that doesn't provide one (Windows?)
- # older versions may not have the "--version" parameter. In this case we just don't care.
- if(_GSS_CONFIGURE_FAILED)
- set(_GSS_VERSION 0)
- endif()
+ find_path(_GSS_INCLUDE_DIR
+ NAMES
+ "gssapi/gssapi.h"
+ HINTS
+ ${_GSS_ROOT_HINTS}
+ PATH_SUFFIXES
+ include
+ inc
+ )
+ if(_GSS_INCLUDE_DIR) #jay, we've found something
+ set(CMAKE_REQUIRED_INCLUDES "${_GSS_INCLUDE_DIR}")
+ check_include_files( "gssapi/gssapi_generic.h;gssapi/gssapi_krb5.h" _GSS_HAVE_MIT_HEADERS)
+
+ if(_GSS_HAVE_MIT_HEADERS)
+ set(GSS_FLAVOUR "MIT")
+ else()
+ # prevent compiling the header - just check if we can include it
+ set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D__ROKEN_H__")
+ check_include_file( "roken.h" _GSS_HAVE_ROKEN_H)
+
+ check_include_file( "heimdal/roken.h" _GSS_HAVE_HEIMDAL_ROKEN_H)
+ if(_GSS_HAVE_ROKEN_H OR _GSS_HAVE_HEIMDAL_ROKEN_H)
+ set(GSS_FLAVOUR "Heimdal")
+ endif()
+ set(CMAKE_REQUIRED_DEFINITIONS "")
+ endif()
+ else()
+ # I'm not convinced if this is the right way but this is what autotools do at the moment
+ find_path(_GSS_INCLUDE_DIR
+ NAMES
+ "gssapi.h"
+ HINTS
+ ${_GSS_ROOT_HINTS}
+ PATH_SUFFIXES
+ include
+ inc
+ )
+
+ if(_GSS_INCLUDE_DIR)
+ set(GSS_FLAVOUR "Heimdal")
+ endif()
+ endif()
- execute_process(
- COMMAND ${_GSS_CONFIGURE_SCRIPT} "--vendor"
- OUTPUT_VARIABLE _GSS_VENDOR
- RESULT_VARIABLE _GSS_CONFIGURE_FAILED
- )
+ # if we have headers, check if we can link libraries
+ if(GSS_FLAVOUR)
+ set(_GSS_LIBDIR_SUFFIXES "")
+ set(_GSS_LIBDIR_HINTS ${_GSS_ROOT_HINTS})
+ get_filename_component(_GSS_CALCULATED_POTENTIAL_ROOT "${_GSS_INCLUDE_DIR}" PATH)
+ list(APPEND _GSS_LIBDIR_HINTS ${_GSS_CALCULATED_POTENTIAL_ROOT})
- # older versions may not have the "--vendor" parameter. In this case we just don't care.
- if(_GSS_CONFIGURE_FAILED)
- set(GSS_FLAVOUR "Heimdal") # most probably, shouldn't really matter
+ if(WIN32)
+ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+ list(APPEND _GSS_LIBDIR_SUFFIXES "lib/AMD64")
+ if(GSS_FLAVOUR STREQUAL "MIT")
+ set(_GSS_LIBNAME "gssapi64")
+ else()
+ set(_GSS_LIBNAME "libgssapi")
+ endif()
else()
- if(_GSS_VENDOR MATCHES ".*H|heimdal.*")
- set(GSS_FLAVOUR "Heimdal")
- else()
- set(GSS_FLAVOUR "MIT")
- endif()
+ list(APPEND _GSS_LIBDIR_SUFFIXES "lib/i386")
+ if(GSS_FLAVOUR STREQUAL "MIT")
+ set(_GSS_LIBNAME "gssapi32")
+ else()
+ set(_GSS_LIBNAME "libgssapi")
+ endif()
endif()
-
- else() # either there is no config script or we are on platform that doesn't provide one (Windows?)
-
- find_path(_GSS_INCLUDE_DIR
- NAMES
- "gssapi/gssapi.h"
- HINTS
- ${_GSS_ROOT_HINTS}
- PATH_SUFFIXES
- include
- inc
- )
-
- if(_GSS_INCLUDE_DIR) #jay, we've found something
- set(CMAKE_REQUIRED_INCLUDES "${_GSS_INCLUDE_DIR}")
- check_include_files( "gssapi/gssapi_generic.h;gssapi/gssapi_krb5.h" _GSS_HAVE_MIT_HEADERS)
-
- if(_GSS_HAVE_MIT_HEADERS)
- set(GSS_FLAVOUR "MIT")
- else()
- # prevent compiling the header - just check if we can include it
- set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D__ROKEN_H__")
- check_include_file( "roken.h" _GSS_HAVE_ROKEN_H)
-
- check_include_file( "heimdal/roken.h" _GSS_HAVE_HEIMDAL_ROKEN_H)
- if(_GSS_HAVE_ROKEN_H OR _GSS_HAVE_HEIMDAL_ROKEN_H)
- set(GSS_FLAVOUR "Heimdal")
- endif()
- set(CMAKE_REQUIRED_DEFINITIONS "")
- endif()
+ else()
+ list(APPEND _GSS_LIBDIR_SUFFIXES "lib;lib64") # those suffixes are not checked for HINTS
+ if(GSS_FLAVOUR STREQUAL "MIT")
+ set(_GSS_LIBNAME "gssapi_krb5")
else()
- # I'm not convienced if this is the right way but this is what autotools do at the moment
- find_path(_GSS_INCLUDE_DIR
- NAMES
- "gssapi.h"
- HINTS
- ${_GSS_ROOT_HINTS}
- PATH_SUFFIXES
- include
- inc
- )
-
- if(_GSS_INCLUDE_DIR)
- set(GSS_FLAVOUR "Heimdal")
- endif()
+ set(_GSS_LIBNAME "gssapi")
endif()
+ endif()
- # if we have headers, check if we can link libraries
- if(GSS_FLAVOUR)
- set(_GSS_LIBDIR_SUFFIXES "")
- set(_GSS_LIBDIR_HINTS ${_GSS_ROOT_HINTS})
- get_filename_component(_GSS_CALCULATED_POTENTIAL_ROOT "${_GSS_INCLUDE_DIR}" PATH)
- list(APPEND _GSS_LIBDIR_HINTS ${_GSS_CALCULATED_POTENTIAL_ROOT})
-
- if(WIN32)
- if(CMAKE_SIZEOF_VOID_P EQUAL 8)
- list(APPEND _GSS_LIBDIR_SUFFIXES "lib/AMD64")
- if(GSS_FLAVOUR STREQUAL "MIT")
- set(_GSS_LIBNAME "gssapi64")
- else()
- set(_GSS_LIBNAME "libgssapi")
- endif()
- else()
- list(APPEND _GSS_LIBDIR_SUFFIXES "lib/i386")
- if(GSS_FLAVOUR STREQUAL "MIT")
- set(_GSS_LIBNAME "gssapi32")
- else()
- set(_GSS_LIBNAME "libgssapi")
- endif()
- endif()
- else()
- list(APPEND _GSS_LIBDIR_SUFFIXES "lib;lib64") # those suffixes are not checked for HINTS
- if(GSS_FLAVOUR STREQUAL "MIT")
- set(_GSS_LIBNAME "gssapi_krb5")
- else()
- set(_GSS_LIBNAME "gssapi")
- endif()
- endif()
-
- find_library(_GSS_LIBRARIES
- NAMES
- ${_GSS_LIBNAME}
- HINTS
- ${_GSS_LIBDIR_HINTS}
- PATH_SUFFIXES
- ${_GSS_LIBDIR_SUFFIXES}
- )
-
- endif()
+ find_library(_GSS_LIBRARIES
+ NAMES
+ ${_GSS_LIBNAME}
+ HINTS
+ ${_GSS_LIBDIR_HINTS}
+ PATH_SUFFIXES
+ ${_GSS_LIBDIR_SUFFIXES}
+ )
endif()
+ endif()
else()
- if(_GSS_PKG_${_MIT_MODNAME}_VERSION)
- set(GSS_FLAVOUR "MIT")
- set(_GSS_VERSION _GSS_PKG_${_MIT_MODNAME}_VERSION)
- else()
- set(GSS_FLAVOUR "Heimdal")
- set(_GSS_VERSION _GSS_PKG_${_MIT_HEIMDAL}_VERSION)
- endif()
+ if(_GSS_PKG_${_MIT_MODNAME}_VERSION)
+ set(GSS_FLAVOUR "MIT")
+ set(_GSS_VERSION _GSS_PKG_${_MIT_MODNAME}_VERSION)
+ else()
+ set(GSS_FLAVOUR "Heimdal")
+ set(_GSS_VERSION _GSS_PKG_${_MIT_HEIMDAL}_VERSION)
+ endif()
endif()
set(GSS_INCLUDE_DIR ${_GSS_INCLUDE_DIR})
@@ -243,36 +266,34 @@ set(GSS_COMPILER_FLAGS ${_GSS_COMPILER_FLAGS})
set(GSS_VERSION ${_GSS_VERSION})
if(GSS_FLAVOUR)
+ if(NOT GSS_VERSION AND GSS_FLAVOUR STREQUAL "Heimdal")
+ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+ set(HEIMDAL_MANIFEST_FILE "Heimdal.Application.amd64.manifest")
+ else()
+ set(HEIMDAL_MANIFEST_FILE "Heimdal.Application.x86.manifest")
+ endif()
- if(NOT GSS_VERSION AND GSS_FLAVOUR STREQUAL "Heimdal")
- if(CMAKE_SIZEOF_VOID_P EQUAL 8)
- set(HEIMDAL_MANIFEST_FILE "Heimdal.Application.amd64.manifest")
- else()
- set(HEIMDAL_MANIFEST_FILE "Heimdal.Application.x86.manifest")
- endif()
-
- if(EXISTS "${GSS_INCLUDE_DIR}/${HEIMDAL_MANIFEST_FILE}")
- file(STRINGS "${GSS_INCLUDE_DIR}/${HEIMDAL_MANIFEST_FILE}" heimdal_version_str
- REGEX "^.*version=\"[0-9]\\.[^\"]+\".*$")
+ if(EXISTS "${GSS_INCLUDE_DIR}/${HEIMDAL_MANIFEST_FILE}")
+ file(STRINGS "${GSS_INCLUDE_DIR}/${HEIMDAL_MANIFEST_FILE}" heimdal_version_str
+ REGEX "^.*version=\"[0-9]\\.[^\"]+\".*$")
- string(REGEX MATCH "[0-9]\\.[^\"]+"
- GSS_VERSION "${heimdal_version_str}")
- endif()
+ string(REGEX MATCH "[0-9]\\.[^\"]+"
+ GSS_VERSION "${heimdal_version_str}")
+ endif()
- if(NOT GSS_VERSION)
- set(GSS_VERSION "Heimdal Unknown")
- endif()
- elseif(NOT GSS_VERSION AND GSS_FLAVOUR STREQUAL "MIT")
- get_filename_component(_MIT_VERSION "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MIT\\Kerberos\\SDK\\CurrentVersion;VersionString]" NAME CACHE)
- if(WIN32 AND _MIT_VERSION)
- set(GSS_VERSION "${_MIT_VERSION}")
- else()
- set(GSS_VERSION "MIT Unknown")
- endif()
+ if(NOT GSS_VERSION)
+ set(GSS_VERSION "Heimdal Unknown")
endif()
+ elseif(NOT GSS_VERSION AND GSS_FLAVOUR STREQUAL "MIT")
+ get_filename_component(_MIT_VERSION "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MIT\\Kerberos\\SDK\\CurrentVersion;VersionString]" NAME CACHE)
+ if(WIN32 AND _MIT_VERSION)
+ set(GSS_VERSION "${_MIT_VERSION}")
+ else()
+ set(GSS_VERSION "MIT Unknown")
+ endif()
+ endif()
endif()
-
include(FindPackageHandleStandardArgs)
set(_GSS_REQUIRED_VARS GSS_LIBRARIES GSS_FLAVOUR)
diff --git a/curl/CMake/FindLibSSH2.cmake b/curl/CMake/FindLibSSH2.cmake
index 12a7c612..ce46a408 100644
--- a/curl/CMake/FindLibSSH2.cmake
+++ b/curl/CMake/FindLibSSH2.cmake
@@ -1,3 +1,24 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2020, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
# - Try to find the libssh2 library
# Once done this will define
#
@@ -5,31 +26,18 @@
# LIBSSH2_INCLUDE_DIR - the libssh2 include directory
# LIBSSH2_LIBRARY - the libssh2 library name
-if (LIBSSH2_INCLUDE_DIR AND LIBSSH2_LIBRARY)
- set(LibSSH2_FIND_QUIETLY TRUE)
-endif (LIBSSH2_INCLUDE_DIR AND LIBSSH2_LIBRARY)
+find_path(LIBSSH2_INCLUDE_DIR libssh2.h)
-FIND_PATH(LIBSSH2_INCLUDE_DIR libssh2.h
-)
-
-FIND_LIBRARY(LIBSSH2_LIBRARY NAMES ssh2
-)
+find_library(LIBSSH2_LIBRARY NAMES ssh2 libssh2)
if(LIBSSH2_INCLUDE_DIR)
- file(STRINGS "${LIBSSH2_INCLUDE_DIR}/libssh2.h" libssh2_version_str REGEX "^#define[\t ]+LIBSSH2_VERSION_NUM[\t ]+0x[0-9][0-9][0-9][0-9][0-9][0-9].*")
-
- string(REGEX REPLACE "^.*LIBSSH2_VERSION_NUM[\t ]+0x([0-9][0-9]).*$" "\\1" LIBSSH2_VERSION_MAJOR "${libssh2_version_str}")
- string(REGEX REPLACE "^.*LIBSSH2_VERSION_NUM[\t ]+0x[0-9][0-9]([0-9][0-9]).*$" "\\1" LIBSSH2_VERSION_MINOR "${libssh2_version_str}")
- string(REGEX REPLACE "^.*LIBSSH2_VERSION_NUM[\t ]+0x[0-9][0-9][0-9][0-9]([0-9][0-9]).*$" "\\1" LIBSSH2_VERSION_PATCH "${libssh2_version_str}")
-
- string(REGEX REPLACE "^0(.+)" "\\1" LIBSSH2_VERSION_MAJOR "${LIBSSH2_VERSION_MAJOR}")
- string(REGEX REPLACE "^0(.+)" "\\1" LIBSSH2_VERSION_MINOR "${LIBSSH2_VERSION_MINOR}")
- string(REGEX REPLACE "^0(.+)" "\\1" LIBSSH2_VERSION_PATCH "${LIBSSH2_VERSION_PATCH}")
-
- set(LIBSSH2_VERSION "${LIBSSH2_VERSION_MAJOR}.${LIBSSH2_VERSION_MINOR}.${LIBSSH2_VERSION_PATCH}")
-endif(LIBSSH2_INCLUDE_DIR)
+ file(STRINGS "${LIBSSH2_INCLUDE_DIR}/libssh2.h" libssh2_version_str REGEX "^#define[\t ]+LIBSSH2_VERSION[\t ]+\"(.*)\"")
+ string(REGEX REPLACE "^.*\"([^\"]+)\"" "\\1" LIBSSH2_VERSION "${libssh2_version_str}")
+endif()
include(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibSSH2 DEFAULT_MSG LIBSSH2_INCLUDE_DIR LIBSSH2_LIBRARY )
+find_package_handle_standard_args(LibSSH2
+ REQUIRED_VARS LIBSSH2_LIBRARY LIBSSH2_INCLUDE_DIR
+ VERSION_VAR LIBSSH2_VERSION)
-MARK_AS_ADVANCED(LIBSSH2_INCLUDE_DIR LIBSSH2_LIBRARY LIBSSH2_VERSION_MAJOR LIBSSH2_VERSION_MINOR LIBSSH2_VERSION_PATCH LIBSSH2_VERSION)
+mark_as_advanced(LIBSSH2_INCLUDE_DIR LIBSSH2_LIBRARY)
diff --git a/curl/CMake/FindMbedTLS.cmake b/curl/CMake/FindMbedTLS.cmake
index a9163958..1746093d 100644
--- a/curl/CMake/FindMbedTLS.cmake
+++ b/curl/CMake/FindMbedTLS.cmake
@@ -1,3 +1,24 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2020, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
find_path(MBEDTLS_INCLUDE_DIRS mbedtls/ssl.h)
find_library(MBEDTLS_LIBRARY mbedtls)
diff --git a/curl/CMake/FindNGHTTP2.cmake b/curl/CMake/FindNGHTTP2.cmake
index 4e566cf0..8614492b 100644
--- a/curl/CMake/FindNGHTTP2.cmake
+++ b/curl/CMake/FindNGHTTP2.cmake
@@ -1,3 +1,24 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2020, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
include(FindPackageHandleStandardArgs)
find_path(NGHTTP2_INCLUDE_DIR "nghttp2/nghttp2.h")
@@ -10,9 +31,9 @@ find_package_handle_standard_args(NGHTTP2
REQUIRED_VARS
NGHTTP2_LIBRARY
NGHTTP2_INCLUDE_DIR
- FAIL_MESSAGE
- "Could NOT find NGHTTP2"
)
-set(NGHTTP2_INCLUDE_DIRS ${NGHTTP2_INCLUDE_DIR} )
+set(NGHTTP2_INCLUDE_DIRS ${NGHTTP2_INCLUDE_DIR})
set(NGHTTP2_LIBRARIES ${NGHTTP2_LIBRARY})
+
+mark_as_advanced(NGHTTP2_INCLUDE_DIRS NGHTTP2_LIBRARIES)
diff --git a/curl/CMake/FindNGHTTP3.cmake b/curl/CMake/FindNGHTTP3.cmake
new file mode 100644
index 00000000..643b6009
--- /dev/null
+++ b/curl/CMake/FindNGHTTP3.cmake
@@ -0,0 +1,76 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2020, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+
+#[=======================================================================[.rst:
+FindNGHTTP3
+----------
+
+Find the nghttp3 library
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+``NGHTTP3_FOUND``
+ System has nghttp3
+``NGHTTP3_INCLUDE_DIRS``
+ The nghttp3 include directories.
+``NGHTTP3_LIBRARIES``
+ The libraries needed to use nghttp3
+``NGHTTP3_VERSION``
+ version of nghttp3.
+#]=======================================================================]
+
+if(UNIX)
+ find_package(PkgConfig QUIET)
+ pkg_search_module(PC_NGHTTP3 libnghttp3)
+endif()
+
+find_path(NGHTTP3_INCLUDE_DIR nghttp3/nghttp3.h
+ HINTS
+ ${PC_NGHTTP3_INCLUDEDIR}
+ ${PC_NGHTTP3_INCLUDE_DIRS}
+)
+
+find_library(NGHTTP3_LIBRARY NAMES nghttp3
+ HINTS
+ ${PC_NGHTTP3_LIBDIR}
+ ${PC_NGHTTP3_LIBRARY_DIRS}
+)
+
+if(PC_NGHTTP3_VERSION)
+ set(NGHTTP3_VERSION ${PC_NGHTTP3_VERSION})
+endif()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(NGHTTP3
+ REQUIRED_VARS
+ NGHTTP3_LIBRARY
+ NGHTTP3_INCLUDE_DIR
+ VERSION_VAR NGHTTP3_VERSION
+)
+
+if(NGHTTP3_FOUND)
+ set(NGHTTP3_LIBRARIES ${NGHTTP3_LIBRARY})
+ set(NGHTTP3_INCLUDE_DIRS ${NGHTTP3_INCLUDE_DIR})
+endif()
+
+mark_as_advanced(NGHTTP3_INCLUDE_DIRS NGHTTP3_LIBRARIES)
diff --git a/curl/CMake/FindNGTCP2.cmake b/curl/CMake/FindNGTCP2.cmake
new file mode 100644
index 00000000..5757009a
--- /dev/null
+++ b/curl/CMake/FindNGTCP2.cmake
@@ -0,0 +1,113 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2020, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+
+#[=======================================================================[.rst:
+FindNGTCP2
+----------
+
+Find the ngtcp2 library
+
+This module accepts optional COMPONENTS to control the crypto library (these are
+mutually exclusive)::
+
+ OpenSSL: Use libngtcp2_crypto_openssl
+ GnuTLS: Use libngtcp2_crypto_gnutls
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+``NGTCP2_FOUND``
+ System has ngtcp2
+``NGTCP2_INCLUDE_DIRS``
+ The ngtcp2 include directories.
+``NGTCP2_LIBRARIES``
+ The libraries needed to use ngtcp2
+``NGTCP2_VERSION``
+ version of ngtcp2.
+#]=======================================================================]
+
+if(UNIX)
+ find_package(PkgConfig QUIET)
+ pkg_search_module(PC_NGTCP2 libngtcp2)
+endif()
+
+find_path(NGTCP2_INCLUDE_DIR ngtcp2/ngtcp2.h
+ HINTS
+ ${PC_NGTCP2_INCLUDEDIR}
+ ${PC_NGTCP2_INCLUDE_DIRS}
+)
+
+find_library(NGTCP2_LIBRARY NAMES ngtcp2
+ HINTS
+ ${PC_NGTCP2_LIBDIR}
+ ${PC_NGTCP2_LIBRARY_DIRS}
+)
+
+if(PC_NGTCP2_VERSION)
+ set(NGTCP2_VERSION ${PC_NGTCP2_VERSION})
+endif()
+
+if(NGTCP2_FIND_COMPONENTS)
+ set(NGTCP2_CRYPTO_BACKEND "")
+ foreach(component IN LISTS NGTCP2_FIND_COMPONENTS)
+ if(component MATCHES "^(OpenSSL|GnuTLS)")
+ if(NGTCP2_CRYPTO_BACKEND)
+ message(FATAL_ERROR "NGTCP2: Only one crypto library can be selected")
+ endif()
+ set(NGTCP2_CRYPTO_BACKEND ${component})
+ endif()
+ endforeach()
+
+ if(NGTCP2_CRYPTO_BACKEND)
+ string(TOLOWER "ngtcp2_crypto_${NGTCP2_CRYPTO_BACKEND}" _crypto_library)
+ if(UNIX)
+ pkg_search_module(PC_${_crypto_library} lib${_crypto_library})
+ endif()
+ find_library(${_crypto_library}_LIBRARY
+ NAMES
+ ${_crypto_library}
+ HINTS
+ ${PC_${_crypto_library}_LIBDIR}
+ ${PC_${_crypto_library}_LIBRARY_DIRS}
+ )
+ if(${_crypto_library}_LIBRARY)
+ set(NGTCP2_${NGTCP2_CRYPTO_BACKEND}_FOUND TRUE)
+ set(NGTCP2_CRYPTO_LIBRARY ${${_crypto_library}_LIBRARY})
+ endif()
+ endif()
+endif()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(NGTCP2
+ REQUIRED_VARS
+ NGTCP2_LIBRARY
+ NGTCP2_INCLUDE_DIR
+ VERSION_VAR NGTCP2_VERSION
+ HANDLE_COMPONENTS
+)
+
+if(NGTCP2_FOUND)
+ set(NGTCP2_LIBRARIES ${NGTCP2_LIBRARY} ${NGTCP2_CRYPTO_LIBRARY})
+ set(NGTCP2_INCLUDE_DIRS ${NGTCP2_INCLUDE_DIR})
+endif()
+
+mark_as_advanced(NGTCP2_INCLUDE_DIRS NGTCP2_LIBRARIES)
diff --git a/curl/CMake/FindNSS.cmake b/curl/CMake/FindNSS.cmake
new file mode 100644
index 00000000..899c6b07
--- /dev/null
+++ b/curl/CMake/FindNSS.cmake
@@ -0,0 +1,38 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2020, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+if(UNIX)
+ find_package(PkgConfig QUIET)
+ pkg_search_module(PC_NSS nss)
+endif()
+if(NOT PC_NSS_FOUND)
+ return()
+endif()
+
+set(NSS_LIBRARIES ${PC_NSS_LINK_LIBRARIES})
+set(NSS_INCLUDE_DIRS ${PC_NSS_INCLUDE_DIRS})
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(NSS
+ REQUIRED_VARS NSS_LIBRARIES NSS_INCLUDE_DIRS
+ VERSION_VAR PC_NSS_VERSION)
+
+mark_as_advanced(NSS_INCLUDE_DIRS NSS_LIBRARIES)
diff --git a/curl/CMake/FindQUICHE.cmake b/curl/CMake/FindQUICHE.cmake
new file mode 100644
index 00000000..0247364d
--- /dev/null
+++ b/curl/CMake/FindQUICHE.cmake
@@ -0,0 +1,68 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2020, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+
+#[=======================================================================[.rst:
+FindQUICHE
+----------
+
+Find the quiche library
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+``QUICHE_FOUND``
+ System has quiche
+``QUICHE_INCLUDE_DIRS``
+ The quiche include directories.
+``QUICHE_LIBRARIES``
+ The libraries needed to use quiche
+#]=======================================================================]
+if(UNIX)
+ find_package(PkgConfig QUIET)
+ pkg_search_module(PC_QUICHE quiche)
+endif()
+
+find_path(QUICHE_INCLUDE_DIR quiche.h
+ HINTS
+ ${PC_QUICHE_INCLUDEDIR}
+ ${PC_QUICHE_INCLUDE_DIRS}
+)
+
+find_library(QUICHE_LIBRARY NAMES quiche
+ HINTS
+ ${PC_QUICHE_LIBDIR}
+ ${PC_QUICHE_LIBRARY_DIRS}
+)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(QUICHE
+ REQUIRED_VARS
+ QUICHE_LIBRARY
+ QUICHE_INCLUDE_DIR
+)
+
+if(QUICHE_FOUND)
+ set(QUICHE_LIBRARIES ${QUICHE_LIBRARY})
+ set(QUICHE_INCLUDE_DIRS ${QUICHE_INCLUDE_DIR})
+endif()
+
+mark_as_advanced(QUICHE_INCLUDE_DIRS QUICHE_LIBRARIES)
diff --git a/curl/CMake/FindWolfSSL.cmake b/curl/CMake/FindWolfSSL.cmake
new file mode 100644
index 00000000..42256b3c
--- /dev/null
+++ b/curl/CMake/FindWolfSSL.cmake
@@ -0,0 +1,34 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2020, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+find_path(WolfSSL_INCLUDE_DIR NAMES wolfssl/ssl.h)
+find_library(WolfSSL_LIBRARY NAMES wolfssl)
+mark_as_advanced(WolfSSL_INCLUDE_DIR WolfSSL_LIBRARY)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(WolfSSL
+ REQUIRED_VARS WolfSSL_INCLUDE_DIR WolfSSL_LIBRARY
+ )
+
+if(WolfSSL_FOUND)
+ set(WolfSSL_INCLUDE_DIRS ${WolfSSL_INCLUDE_DIR})
+ set(WolfSSL_LIBRARIES ${WolfSSL_LIBRARY})
+endif()
diff --git a/curl/CMake/FindZstd.cmake b/curl/CMake/FindZstd.cmake
new file mode 100644
index 00000000..eaba3974
--- /dev/null
+++ b/curl/CMake/FindZstd.cmake
@@ -0,0 +1,69 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2020, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+
+#[=======================================================================[.rst:
+FindZstd
+----------
+
+Find the zstd library
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+``Zstd_FOUND``
+ System has zstd
+``Zstd_INCLUDE_DIRS``
+ The zstd include directories.
+``Zstd_LIBRARIES``
+ The libraries needed to use zstd
+#]=======================================================================]
+
+if(UNIX)
+ find_package(PkgConfig QUIET)
+ pkg_search_module(PC_Zstd libzstd)
+endif()
+
+find_path(Zstd_INCLUDE_DIR zstd.h
+ HINTS
+ ${PC_Zstd_INCLUDEDIR}
+ ${PC_Zstd_INCLUDE_DIRS}
+)
+
+find_library(Zstd_LIBRARY NAMES zstd
+ HINTS
+ ${PC_Zstd_LIBDIR}
+ ${PC_Zstd_LIBRARY_DIRS}
+)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Zstd
+ REQUIRED_VARS
+ Zstd_LIBRARY
+ Zstd_INCLUDE_DIR
+)
+
+if(Zstd_FOUND)
+ set(Zstd_LIBRARIES ${Zstd_LIBRARY})
+ set(Zstd_INCLUDE_DIRS ${Zstd_INCLUDE_DIR})
+endif()
+
+mark_as_advanced(Zstd_INCLUDE_DIRS Zstd_LIBRARIES)
diff --git a/curl/CMake/Macros.cmake b/curl/CMake/Macros.cmake
index 82aadca9..d57dd6ad 100644
--- a/curl/CMake/Macros.cmake
+++ b/curl/CMake/Macros.cmake
@@ -1,3 +1,24 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2020, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
#File defines convenience macros for available feature testing
# This macro checks if the symbol exists in the library and if it
@@ -5,35 +26,35 @@
# multiple times with a sequence of possibly dependent libraries in
# order of least-to-most-dependent. Some libraries depend on others
# to link correctly.
-macro(CHECK_LIBRARY_EXISTS_CONCAT LIBRARY SYMBOL VARIABLE)
+macro(check_library_exists_concat LIBRARY SYMBOL VARIABLE)
check_library_exists("${LIBRARY};${CURL_LIBS}" ${SYMBOL} "${CMAKE_LIBRARY_PATH}"
${VARIABLE})
if(${VARIABLE})
set(CURL_LIBS ${LIBRARY} ${CURL_LIBS})
- endif(${VARIABLE})
-endmacro(CHECK_LIBRARY_EXISTS_CONCAT)
+ endif()
+endmacro()
# Check if header file exists and add it to the list.
# This macro is intended to be called multiple times with a sequence of
# possibly dependent header files. Some headers depend on others to be
# compiled correctly.
-macro(CHECK_INCLUDE_FILE_CONCAT FILE VARIABLE)
+macro(check_include_file_concat FILE VARIABLE)
check_include_files("${CURL_INCLUDES};${FILE}" ${VARIABLE})
if(${VARIABLE})
set(CURL_INCLUDES ${CURL_INCLUDES} ${FILE})
set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -D${VARIABLE}")
- endif(${VARIABLE})
-endmacro(CHECK_INCLUDE_FILE_CONCAT)
+ endif()
+endmacro()
# For other curl specific tests, use this macro.
-macro(CURL_INTERNAL_TEST CURL_TEST)
+macro(curl_internal_test CURL_TEST)
if(NOT DEFINED "${CURL_TEST}")
set(MACRO_CHECK_FUNCTION_DEFINITIONS
"-D${CURL_TEST} ${CURL_TEST_DEFINES} ${CMAKE_REQUIRED_FLAGS}")
if(CMAKE_REQUIRED_LIBRARIES)
set(CURL_TEST_ADD_LIBRARIES
"-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
- endif(CMAKE_REQUIRED_LIBRARIES)
+ endif()
message(STATUS "Performing Curl Test ${CURL_TEST}")
try_compile(${CURL_TEST}
@@ -48,53 +69,17 @@ macro(CURL_INTERNAL_TEST CURL_TEST)
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
"Performing Curl Test ${CURL_TEST} passed with the following output:\n"
"${OUTPUT}\n")
- else(${CURL_TEST})
+ else()
message(STATUS "Performing Curl Test ${CURL_TEST} - Failed")
set(${CURL_TEST} "" CACHE INTERNAL "Curl test ${FUNCTION}")
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
"Performing Curl Test ${CURL_TEST} failed with the following output:\n"
"${OUTPUT}\n")
- endif(${CURL_TEST})
- endif()
-endmacro(CURL_INTERNAL_TEST)
-
-macro(CURL_INTERNAL_TEST_RUN CURL_TEST)
- if(NOT DEFINED "${CURL_TEST}_COMPILE")
- set(MACRO_CHECK_FUNCTION_DEFINITIONS
- "-D${CURL_TEST} ${CMAKE_REQUIRED_FLAGS}")
- if(CMAKE_REQUIRED_LIBRARIES)
- set(CURL_TEST_ADD_LIBRARIES
- "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
- endif(CMAKE_REQUIRED_LIBRARIES)
-
- message(STATUS "Performing Curl Test ${CURL_TEST}")
- try_run(${CURL_TEST} ${CURL_TEST}_COMPILE
- ${CMAKE_BINARY_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}/CMake/CurlTests.c
- CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
- "${CURL_TEST_ADD_LIBRARIES}"
- OUTPUT_VARIABLE OUTPUT)
- if(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
- set(${CURL_TEST} 1 CACHE INTERNAL "Curl test ${FUNCTION}")
- message(STATUS "Performing Curl Test ${CURL_TEST} - Success")
- else(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
- message(STATUS "Performing Curl Test ${CURL_TEST} - Failed")
- set(${CURL_TEST} "" CACHE INTERNAL "Curl test ${FUNCTION}")
- file(APPEND "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
- "Performing Curl Test ${CURL_TEST} failed with the following output:\n"
- "${OUTPUT}")
- if(${CURL_TEST}_COMPILE)
- file(APPEND
- "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
- "There was a problem running this test\n")
- endif(${CURL_TEST}_COMPILE)
- file(APPEND "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
- "\n\n")
- endif(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
+ endif()
endif()
-endmacro(CURL_INTERNAL_TEST_RUN)
+endmacro()
-macro(CURL_NROFF_CHECK)
+macro(curl_nroff_check)
find_program(NROFF NAMES gnroff nroff)
if(NROFF)
# Need a way to write to stdin, this will do
@@ -121,4 +106,15 @@ macro(CURL_NROFF_CHECK)
else()
message(WARNING "Found no *nroff program")
endif()
-endmacro(CURL_NROFF_CHECK)
+endmacro()
+
+macro(optional_dependency DEPENDENCY)
+ set(CURL_${DEPENDENCY} AUTO CACHE STRING "Build curl with ${DEPENDENCY} support (AUTO, ON or OFF)")
+ set_property(CACHE CURL_${DEPENDENCY} PROPERTY STRINGS AUTO ON OFF)
+
+ if(CURL_${DEPENDENCY} STREQUAL AUTO)
+ find_package(${DEPENDENCY})
+ elseif(CURL_${DEPENDENCY})
+ find_package(${DEPENDENCY} REQUIRED)
+ endif()
+endmacro()
diff --git a/curl/CMake/OtherTests.cmake b/curl/CMake/OtherTests.cmake
index 989f04eb..5cddf4af 100644
--- a/curl/CMake/OtherTests.cmake
+++ b/curl/CMake/OtherTests.cmake
@@ -1,3 +1,24 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2021, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
include(CheckCSourceCompiles)
# The begin of the sources (macros and includes)
set(_source_epilogue "#undef inline")
@@ -5,8 +26,8 @@ set(_source_epilogue "#undef inline")
macro(add_header_include check header)
if(${check})
set(_source_epilogue "${_source_epilogue}\n#include <${header}>")
- endif(${check})
-endmacro(add_header_include)
+ endif()
+endmacro()
set(signature_call_conv)
if(HAVE_WINDOWS_H)
@@ -19,10 +40,46 @@ if(HAVE_WINDOWS_H)
if(HAVE_LIBWS2_32)
set(CMAKE_REQUIRED_LIBRARIES ws2_32)
endif()
-else(HAVE_WINDOWS_H)
+else()
add_header_include(HAVE_SYS_TYPES_H "sys/types.h")
add_header_include(HAVE_SYS_SOCKET_H "sys/socket.h")
-endif(HAVE_WINDOWS_H)
+endif()
+
+set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
+
+function(curl_cv_func_recv_run_test recv_retv recv_arg1 recv_arg2 recv_arg3 recv_arg4)
+ unset(curl_cv_func_recv_test CACHE)
+ check_c_source_compiles("
+ ${_source_epilogue}
+ #ifdef WINSOCK_API_LINKAGE
+ WINSOCK_API_LINKAGE
+ #endif
+ extern ${recv_retv} ${signature_call_conv}
+ recv(${recv_arg1}, ${recv_arg2}, ${recv_arg3}, ${recv_arg4});
+ int main(void) {
+ ${recv_arg1} s=0;
+ ${recv_arg2} buf=0;
+ ${recv_arg3} len=0;
+ ${recv_arg4} flags=0;
+ ${recv_retv} res = recv(s, buf, len, flags);
+ (void) res;
+ return 0;
+ }"
+ curl_cv_func_recv_test)
+ message(STATUS
+ "Tested: ${recv_retv} recv(${recv_arg1}, ${recv_arg2}, ${recv_arg3}, ${recv_arg4})")
+ if(curl_cv_func_recv_test)
+ set(curl_cv_func_recv_args
+ "${recv_arg1},${recv_arg2},${recv_arg3},${recv_arg4},${recv_retv}" PARENT_SCOPE)
+ set(RECV_TYPE_ARG1 "${recv_arg1}" PARENT_SCOPE)
+ set(RECV_TYPE_ARG2 "${recv_arg2}" PARENT_SCOPE)
+ set(RECV_TYPE_ARG3 "${recv_arg3}" PARENT_SCOPE)
+ set(RECV_TYPE_ARG4 "${recv_arg4}" PARENT_SCOPE)
+ set(RECV_TYPE_RETV "${recv_retv}" PARENT_SCOPE)
+ set(HAVE_RECV 1 PARENT_SCOPE)
+ set(curl_cv_func_recv_done 1 PARENT_SCOPE)
+ endif()
+endfunction()
check_c_source_compiles("${_source_epilogue}
int main(void) {
@@ -30,47 +87,23 @@ int main(void) {
return 0;
}" curl_cv_recv)
if(curl_cv_recv)
- if(NOT DEFINED curl_cv_func_recv_args OR "${curl_cv_func_recv_args}" STREQUAL "unknown")
+ if(NOT DEFINED curl_cv_func_recv_args OR curl_cv_func_recv_args STREQUAL "unknown")
+ if(APPLE)
+ curl_cv_func_recv_run_test("ssize_t" "int" "void *" "size_t" "int")
+ endif()
foreach(recv_retv "int" "ssize_t" )
foreach(recv_arg1 "SOCKET" "int" )
foreach(recv_arg2 "char *" "void *" )
foreach(recv_arg3 "int" "size_t" "socklen_t" "unsigned int")
foreach(recv_arg4 "int" "unsigned int")
if(NOT curl_cv_func_recv_done)
- unset(curl_cv_func_recv_test CACHE)
- check_c_source_compiles("
- ${_source_epilogue}
- extern ${recv_retv} ${signature_call_conv}
- recv(${recv_arg1}, ${recv_arg2}, ${recv_arg3}, ${recv_arg4});
- int main(void) {
- ${recv_arg1} s=0;
- ${recv_arg2} buf=0;
- ${recv_arg3} len=0;
- ${recv_arg4} flags=0;
- ${recv_retv} res = recv(s, buf, len, flags);
- (void) res;
- return 0;
- }"
- curl_cv_func_recv_test)
- message(STATUS
- "Tested: ${recv_retv} recv(${recv_arg1}, ${recv_arg2}, ${recv_arg3}, ${recv_arg4})")
- if(curl_cv_func_recv_test)
- set(curl_cv_func_recv_args
- "${recv_arg1},${recv_arg2},${recv_arg3},${recv_arg4},${recv_retv}")
- set(RECV_TYPE_ARG1 "${recv_arg1}")
- set(RECV_TYPE_ARG2 "${recv_arg2}")
- set(RECV_TYPE_ARG3 "${recv_arg3}")
- set(RECV_TYPE_ARG4 "${recv_arg4}")
- set(RECV_TYPE_RETV "${recv_retv}")
- set(HAVE_RECV 1)
- set(curl_cv_func_recv_done 1)
- endif(curl_cv_func_recv_test)
- endif(NOT curl_cv_func_recv_done)
- endforeach(recv_arg4)
- endforeach(recv_arg3)
- endforeach(recv_arg2)
- endforeach(recv_arg1)
- endforeach(recv_retv)
+ curl_cv_func_recv_run_test(${recv_retv} ${recv_arg1} ${recv_arg2} ${recv_arg3} ${recv_arg4})
+ endif()
+ endforeach()
+ endforeach()
+ endforeach()
+ endforeach()
+ endforeach()
else()
string(REGEX REPLACE "^([^,]*),[^,]*,[^,]*,[^,]*,[^,]*$" "\\1" RECV_TYPE_ARG1 "${curl_cv_func_recv_args}")
string(REGEX REPLACE "^[^,]*,([^,]*),[^,]*,[^,]*,[^,]*$" "\\1" RECV_TYPE_ARG2 "${curl_cv_func_recv_args}")
@@ -79,15 +112,51 @@ if(curl_cv_recv)
string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,[^,]*,([^,]*)$" "\\1" RECV_TYPE_RETV "${curl_cv_func_recv_args}")
endif()
- if("${curl_cv_func_recv_args}" STREQUAL "unknown")
+ if(curl_cv_func_recv_args STREQUAL "unknown")
message(FATAL_ERROR "Cannot find proper types to use for recv args")
- endif("${curl_cv_func_recv_args}" STREQUAL "unknown")
-else(curl_cv_recv)
+ endif()
+else()
message(FATAL_ERROR "Unable to link function recv")
-endif(curl_cv_recv)
+endif()
set(curl_cv_func_recv_args "${curl_cv_func_recv_args}" CACHE INTERNAL "Arguments for recv")
set(HAVE_RECV 1)
+function(curl_cv_func_send_run_test send_retv send_arg1 send_arg2 send_arg3 send_arg4)
+ unset(curl_cv_func_send_test CACHE)
+ check_c_source_compiles("
+ ${_source_epilogue}
+ #ifdef WINSOCK_API_LINKAGE
+ WINSOCK_API_LINKAGE
+ #endif
+ extern ${send_retv} ${signature_call_conv}
+ send(${send_arg1}, ${send_arg2}, ${send_arg3}, ${send_arg4});
+ int main(void) {
+ ${send_arg1} s=0;
+ ${send_arg2} buf=0;
+ ${send_arg3} len=0;
+ ${send_arg4} flags=0;
+ ${send_retv} res = send(s, buf, len, flags);
+ (void) res;
+ return 0;
+ }"
+ curl_cv_func_send_test)
+ message(STATUS
+ "Tested: ${send_retv} send(${send_arg1}, ${send_arg2}, ${send_arg3}, ${send_arg4})")
+ if(curl_cv_func_send_test)
+ string(REGEX REPLACE "(const) .*" "\\1" send_qual_arg2 "${send_arg2}")
+ string(REGEX REPLACE "const (.*)" "\\1" send_arg2 "${send_arg2}")
+ set(curl_cv_func_send_args
+ "${send_arg1},${send_arg2},${send_arg3},${send_arg4},${send_retv},${send_qual_arg2}" PARENT_SCOPE)
+ set(SEND_TYPE_ARG1 "${send_arg1}" PARENT_SCOPE)
+ set(SEND_TYPE_ARG2 "${send_arg2}" PARENT_SCOPE)
+ set(SEND_TYPE_ARG3 "${send_arg3}" PARENT_SCOPE)
+ set(SEND_TYPE_ARG4 "${send_arg4}" PARENT_SCOPE)
+ set(SEND_TYPE_RETV "${send_retv}" PARENT_SCOPE)
+ set(HAVE_SEND 1 PARENT_SCOPE)
+ set(curl_cv_func_send_done 1 PARENT_SCOPE)
+ endif()
+endfunction()
+
check_c_source_compiles("${_source_epilogue}
int main(void) {
send(0, 0, 0, 0);
@@ -95,48 +164,22 @@ int main(void) {
}" curl_cv_send)
if(curl_cv_send)
if(NOT DEFINED curl_cv_func_send_args OR "${curl_cv_func_send_args}" STREQUAL "unknown")
+ if(APPLE)
+ curl_cv_func_send_run_test("ssize_t" "int" "const void *" "size_t" "int")
+ endif()
foreach(send_retv "int" "ssize_t" )
foreach(send_arg1 "SOCKET" "int" "ssize_t" )
foreach(send_arg2 "const char *" "const void *" "void *" "char *")
foreach(send_arg3 "int" "size_t" "socklen_t" "unsigned int")
foreach(send_arg4 "int" "unsigned int")
if(NOT curl_cv_func_send_done)
- unset(curl_cv_func_send_test CACHE)
- check_c_source_compiles("
- ${_source_epilogue}
- extern ${send_retv} ${signature_call_conv}
- send(${send_arg1}, ${send_arg2}, ${send_arg3}, ${send_arg4});
- int main(void) {
- ${send_arg1} s=0;
- ${send_arg2} buf=0;
- ${send_arg3} len=0;
- ${send_arg4} flags=0;
- ${send_retv} res = send(s, buf, len, flags);
- (void) res;
- return 0;
- }"
- curl_cv_func_send_test)
- message(STATUS
- "Tested: ${send_retv} send(${send_arg1}, ${send_arg2}, ${send_arg3}, ${send_arg4})")
- if(curl_cv_func_send_test)
- string(REGEX REPLACE "(const) .*" "\\1" send_qual_arg2 "${send_arg2}")
- string(REGEX REPLACE "const (.*)" "\\1" send_arg2 "${send_arg2}")
- set(curl_cv_func_send_args
- "${send_arg1},${send_arg2},${send_arg3},${send_arg4},${send_retv},${send_qual_arg2}")
- set(SEND_TYPE_ARG1 "${send_arg1}")
- set(SEND_TYPE_ARG2 "${send_arg2}")
- set(SEND_TYPE_ARG3 "${send_arg3}")
- set(SEND_TYPE_ARG4 "${send_arg4}")
- set(SEND_TYPE_RETV "${send_retv}")
- set(HAVE_SEND 1)
- set(curl_cv_func_send_done 1)
- endif(curl_cv_func_send_test)
- endif(NOT curl_cv_func_send_done)
- endforeach(send_arg4)
- endforeach(send_arg3)
- endforeach(send_arg2)
- endforeach(send_arg1)
- endforeach(send_retv)
+ curl_cv_func_send_run_test("${send_retv}" "${send_arg1}" "${send_arg2}" "${send_arg3}" "${send_arg4}")
+ endif()
+ endforeach()
+ endforeach()
+ endforeach()
+ endforeach()
+ endforeach()
else()
string(REGEX REPLACE "^([^,]*),[^,]*,[^,]*,[^,]*,[^,]*,[^,]*$" "\\1" SEND_TYPE_ARG1 "${curl_cv_func_send_args}")
string(REGEX REPLACE "^[^,]*,([^,]*),[^,]*,[^,]*,[^,]*,[^,]*$" "\\1" SEND_TYPE_ARG2 "${curl_cv_func_send_args}")
@@ -148,11 +191,11 @@ if(curl_cv_send)
if("${curl_cv_func_send_args}" STREQUAL "unknown")
message(FATAL_ERROR "Cannot find proper types to use for send args")
- endif("${curl_cv_func_send_args}" STREQUAL "unknown")
+ endif()
set(SEND_QUAL_ARG2 "const")
-else(curl_cv_send)
+else()
message(FATAL_ERROR "Unable to link function send")
-endif(curl_cv_send)
+endif()
set(curl_cv_func_send_args "${curl_cv_func_send_args}" CACHE INTERNAL "Arguments for send")
set(HAVE_SEND 1)
@@ -177,56 +220,68 @@ int main(void) {
return 0;
}" HAVE_STRUCT_TIMEVAL)
-
-include(CheckCSourceRuns)
-# See HAVE_POLL in CMakeLists.txt for why poll is disabled on macOS
-if(NOT APPLE)
- set(CMAKE_REQUIRED_FLAGS)
- if(HAVE_SYS_POLL_H)
- set(CMAKE_REQUIRED_FLAGS "-DHAVE_SYS_POLL_H")
- endif(HAVE_SYS_POLL_H)
- check_c_source_runs("
- #ifdef HAVE_SYS_POLL_H
- # include
- #endif
- int main(void) {
- return poll((void *)0, 0, 10 /*ms*/);
- }" HAVE_POLL_FINE)
-endif()
-
-set(HAVE_SIG_ATOMIC_T 1)
-set(CMAKE_REQUIRED_FLAGS)
-if(HAVE_SIGNAL_H)
- set(CMAKE_REQUIRED_FLAGS "-DHAVE_SIGNAL_H")
- set(CMAKE_EXTRA_INCLUDE_FILES "signal.h")
-endif(HAVE_SIGNAL_H)
-check_type_size("sig_atomic_t" SIZEOF_SIG_ATOMIC_T)
-if(HAVE_SIZEOF_SIG_ATOMIC_T)
- check_c_source_compiles("
- #ifdef HAVE_SIGNAL_H
- # include
- #endif
- int main(void) {
- static volatile sig_atomic_t dummy = 0;
- (void)dummy;
- return 0;
- }" HAVE_SIG_ATOMIC_T_NOT_VOLATILE)
- if(NOT HAVE_SIG_ATOMIC_T_NOT_VOLATILE)
- set(HAVE_SIG_ATOMIC_T_VOLATILE 1)
- endif(NOT HAVE_SIG_ATOMIC_T_NOT_VOLATILE)
-endif(HAVE_SIZEOF_SIG_ATOMIC_T)
-
if(HAVE_WINDOWS_H)
set(CMAKE_EXTRA_INCLUDE_FILES winsock2.h)
else()
set(CMAKE_EXTRA_INCLUDE_FILES)
if(HAVE_SYS_SOCKET_H)
set(CMAKE_EXTRA_INCLUDE_FILES sys/socket.h)
- endif(HAVE_SYS_SOCKET_H)
+ endif()
endif()
check_type_size("struct sockaddr_storage" SIZEOF_STRUCT_SOCKADDR_STORAGE)
if(HAVE_SIZEOF_STRUCT_SOCKADDR_STORAGE)
set(HAVE_STRUCT_SOCKADDR_STORAGE 1)
-endif(HAVE_SIZEOF_STRUCT_SOCKADDR_STORAGE)
+endif()
+
+unset(CMAKE_TRY_COMPILE_TARGET_TYPE)
+
+if(NOT DEFINED CMAKE_TOOLCHAIN_FILE)
+ if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+ # only try this on non-macOS
+
+ # if not cross-compilation...
+ include(CheckCSourceRuns)
+ set(CMAKE_REQUIRED_FLAGS "")
+ if(HAVE_SYS_POLL_H)
+ set(CMAKE_REQUIRED_FLAGS "-DHAVE_SYS_POLL_H")
+ elseif(HAVE_POLL_H)
+ set(CMAKE_REQUIRED_FLAGS "-DHAVE_POLL_H")
+ endif()
+ check_c_source_runs("
+ #include
+ #include
+
+ #ifdef HAVE_SYS_POLL_H
+ # include
+ #elif HAVE_POLL_H
+ # include
+ #endif
+
+ int main(void)
+ {
+ if(0 != poll(0, 0, 10)) {
+ return 1; /* fail */
+ }
+ else {
+ /* detect the 10.12 poll() breakage */
+ struct timeval before, after;
+ int rc;
+ size_t us;
+
+ gettimeofday(&before, NULL);
+ rc = poll(NULL, 0, 500);
+ gettimeofday(&after, NULL);
+
+ us = (after.tv_sec - before.tv_sec) * 1000000 +
+ (after.tv_usec - before.tv_usec);
+
+ if(us < 400000) {
+ return 1;
+ }
+ }
+ return 0;
+ }" HAVE_POLL_FINE)
+ endif()
+endif()
diff --git a/curl/CMake/Platforms/WindowsCache.cmake b/curl/CMake/Platforms/WindowsCache.cmake
index 6fc2991c..fb803f8a 100644
--- a/curl/CMake/Platforms/WindowsCache.cmake
+++ b/curl/CMake/Platforms/WindowsCache.cmake
@@ -1,3 +1,24 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2021, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
if(NOT UNIX)
if(WIN32)
set(HAVE_LIBDL 0)
@@ -7,7 +28,6 @@ if(NOT UNIX)
set(HAVE_LIBNSL 0)
set(HAVE_GETHOSTNAME 1)
set(HAVE_LIBZ 0)
- set(HAVE_LIBCRYPTO 0)
set(HAVE_DLOPEN 0)
@@ -26,7 +46,6 @@ if(NOT UNIX)
set(HAVE_PROCESS_H 1)
set(HAVE_PWD_H 0)
set(HAVE_SETJMP_H 1)
- set(HAVE_SGTTY_H 0)
set(HAVE_SIGNAL_H 1)
set(HAVE_SOCKIO_H 0)
set(HAVE_STDINT_H 0)
@@ -64,14 +83,8 @@ if(NOT UNIX)
set(HAVE_STRCASECMP 0)
set(HAVE_STRICMP 1)
set(HAVE_STRCMPI 1)
- set(HAVE_GETHOSTBYADDR 1)
set(HAVE_GETTIMEOFDAY 0)
set(HAVE_INET_ADDR 1)
- set(HAVE_INET_NTOA 1)
- set(HAVE_INET_NTOA_R 0)
- set(HAVE_TCGETATTR 0)
- set(HAVE_TCSETATTR 0)
- set(HAVE_PERROR 1)
set(HAVE_CLOSESOCKET 1)
set(HAVE_SETVBUF 0)
set(HAVE_SIGSETJMP 0)
@@ -85,17 +98,10 @@ if(NOT UNIX)
set(HAVE_RAND_STATUS 0)
set(HAVE_GMTIME_R 0)
set(HAVE_LOCALTIME_R 0)
- set(HAVE_GETHOSTBYADDR_R 0)
set(HAVE_GETHOSTBYNAME_R 0)
set(HAVE_SIGNAL_FUNC 1)
set(HAVE_SIGNAL_MACRO 0)
- set(HAVE_GETHOSTBYADDR_R_5 0)
- set(HAVE_GETHOSTBYADDR_R_5_REENTRANT 0)
- set(HAVE_GETHOSTBYADDR_R_7 0)
- set(HAVE_GETHOSTBYADDR_R_7_REENTRANT 0)
- set(HAVE_GETHOSTBYADDR_R_8 0)
- set(HAVE_GETHOSTBYADDR_R_8_REENTRANT 0)
set(HAVE_GETHOSTBYNAME_R_3 0)
set(HAVE_GETHOSTBYNAME_R_3_REENTRANT 0)
set(HAVE_GETHOSTBYNAME_R_5 0)
@@ -106,20 +112,16 @@ if(NOT UNIX)
set(TIME_WITH_SYS_TIME 0)
set(HAVE_O_NONBLOCK 0)
set(HAVE_IN_ADDR_T 0)
- set(HAVE_INET_NTOA_R_DECL 0)
- set(HAVE_INET_NTOA_R_DECL_REENTRANT 0)
if(ENABLE_IPV6)
set(HAVE_GETADDRINFO 1)
else()
set(HAVE_GETADDRINFO 0)
endif()
set(STDC_HEADERS 1)
- set(RETSIGTYPE_TEST 1)
set(HAVE_SIGACTION 0)
set(HAVE_MACRO_SIGSETJMP 0)
- else(WIN32)
+ else()
message("This file should be included on Windows platform only")
- endif(WIN32)
-endif(NOT UNIX)
-
+ endif()
+endif()
diff --git a/curl/CMake/Utilities.cmake b/curl/CMake/Utilities.cmake
index 8b6276df..8f9b861b 100644
--- a/curl/CMake/Utilities.cmake
+++ b/curl/CMake/Utilities.cmake
@@ -1,44 +1,33 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2020, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
# File containing various utilities
-# Converts a CMake list to a string containing elements separated by spaces
-function(TO_LIST_SPACES _LIST_NAME OUTPUT_VAR)
- set(NEW_LIST_SPACE)
- foreach(ITEM ${${_LIST_NAME}})
- set(NEW_LIST_SPACE "${NEW_LIST_SPACE} ${ITEM}")
- endforeach()
- string(STRIP ${NEW_LIST_SPACE} NEW_LIST_SPACE)
- set(${OUTPUT_VAR} "${NEW_LIST_SPACE}" PARENT_SCOPE)
-endfunction()
-
-# Appends a lis of item to a string which is a space-separated list, if they don't already exist.
-function(LIST_SPACES_APPEND_ONCE LIST_NAME)
- string(REPLACE " " ";" _LIST ${${LIST_NAME}})
- list(APPEND _LIST ${ARGN})
- list(REMOVE_DUPLICATES _LIST)
- to_list_spaces(_LIST NEW_LIST_SPACE)
- set(${LIST_NAME} "${NEW_LIST_SPACE}" PARENT_SCOPE)
-endfunction()
-
-# Convinience function that does the same as LIST(FIND ...) but with a TRUE/FALSE return value.
-# Ex: IN_STR_LIST(MY_LIST "Searched item" WAS_FOUND)
-function(IN_STR_LIST LIST_NAME ITEM_SEARCHED RETVAL)
- list(FIND ${LIST_NAME} ${ITEM_SEARCHED} FIND_POS)
- if(${FIND_POS} EQUAL -1)
- set(${RETVAL} FALSE PARENT_SCOPE)
- else()
- set(${RETVAL} TRUE PARENT_SCOPE)
- endif()
-endfunction()
-
# Returns a list of arguments that evaluate to true
-function(collect_true output_var output_count_var)
- set(${output_var})
+function(count_true output_count_var)
+ set(lst_len 0)
foreach(option_var IN LISTS ARGN)
if(${option_var})
- list(APPEND ${output_var} ${option_var})
+ math(EXPR lst_len "${lst_len} + 1")
endif()
endforeach()
- set(${output_var} ${${output_var}} PARENT_SCOPE)
- list(LENGTH ${output_var} ${output_count_var})
- set(${output_count_var} ${${output_count_var}} PARENT_SCOPE)
+ set(${output_count_var} ${lst_len} PARENT_SCOPE)
endfunction()
diff --git a/curl/CMake/cmake_uninstall.cmake.in b/curl/CMake/cmake_uninstall.cmake.in
index d00a5166..e96c1432 100644
--- a/curl/CMake/cmake_uninstall.cmake.in
+++ b/curl/CMake/cmake_uninstall.cmake.in
@@ -1,11 +1,32 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2020, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
-endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+endif()
-if (NOT DEFINED CMAKE_INSTALL_PREFIX)
- set (CMAKE_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@")
-endif ()
- message(${CMAKE_INSTALL_PREFIX})
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@")
+endif()
+message(${CMAKE_INSTALL_PREFIX})
file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
string(REGEX REPLACE "\n" ";" files "${files}")
@@ -19,8 +40,8 @@ foreach(file ${files})
)
if(NOT "${rm_retval}" STREQUAL 0)
message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
- endif(NOT "${rm_retval}" STREQUAL 0)
- else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
+ endif()
+ else()
message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
- endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
-endforeach(file)
+ endif()
+endforeach()
diff --git a/curl/CMake/curl-config.cmake.in b/curl/CMake/curl-config.cmake.in
new file mode 100644
index 00000000..957148ec
--- /dev/null
+++ b/curl/CMake/curl-config.cmake.in
@@ -0,0 +1,33 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2020, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+@PACKAGE_INIT@
+
+include(CMakeFindDependencyMacro)
+if(@USE_OPENSSL@)
+ find_dependency(OpenSSL @OPENSSL_VERSION_MAJOR@)
+endif()
+if(@USE_ZLIB@)
+ find_dependency(ZLIB @ZLIB_VERSION_MAJOR@)
+endif()
+
+include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake")
+check_required_components("@PROJECT_NAME@")
diff --git a/curl/CMakeLists.txt b/curl/CMakeLists.txt
index 3bfb5feb..d8084de8 100644
--- a/curl/CMakeLists.txt
+++ b/curl/CMakeLists.txt
@@ -5,11 +5,11 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2017, Daniel Stenberg, , et al.
+# Copyright (C) 1998 - 2021, Daniel Stenberg, , et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
-# are also available at https://curl.haxx.se/docs/copyright.html.
+# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
@@ -26,7 +26,6 @@
# The output .so file lacks the soname number which we currently have within the lib/Makefile.am file
# Add full (4 or 5 libs) SSL support
# Add INSTALL target (EXTRA_DIST variables in Makefile.am may be moved to Makefile.inc so that CMake/CPack is aware of what's to include).
-# Add CTests(?)
# Check on all possible platforms
# Test with as many configurations possible (With or without any option)
# Create scripts that help keeping the CMake build system up to date (to reduce maintenance). According to Tetetest:
@@ -38,26 +37,24 @@
# To check:
# (From Daniel Stenberg) The cmake build selected to run gcc with -fPIC on my box while the plain configure script did not.
# (From Daniel Stenberg) The gcc command line use neither -g nor any -O options. As a developer, I also treasure our configure scripts's --enable-debug option that sets a long range of "picky" compiler options.
-cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
+cmake_minimum_required(VERSION 3.2...3.16 FATAL_ERROR)
+
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake;${CMAKE_MODULE_PATH}")
include(Utilities)
include(Macros)
include(CMakeDependentOption)
include(CheckCCompilerFlag)
-project( CURL C )
-
-message(WARNING "the curl cmake build system is poorly maintained. Be aware")
+project(CURL C)
-file (READ ${CURL_SOURCE_DIR}/include/curl/curlver.h CURL_VERSION_H_CONTENTS)
-string (REGEX MATCH "#define LIBCURL_VERSION \"[^\"]*"
+file(STRINGS ${CURL_SOURCE_DIR}/include/curl/curlver.h CURL_VERSION_H_CONTENTS REGEX "#define LIBCURL_VERSION( |_NUM )")
+string(REGEX MATCH "#define LIBCURL_VERSION \"[^\"]*"
CURL_VERSION ${CURL_VERSION_H_CONTENTS})
-string (REGEX REPLACE "[^\"]+\"" "" CURL_VERSION ${CURL_VERSION})
-string (REGEX MATCH "#define LIBCURL_VERSION_NUM 0x[0-9a-fA-F]+"
+string(REGEX REPLACE "[^\"]+\"" "" CURL_VERSION ${CURL_VERSION})
+string(REGEX MATCH "#define LIBCURL_VERSION_NUM 0x[0-9a-fA-F]+"
CURL_VERSION_NUM ${CURL_VERSION_H_CONTENTS})
-string (REGEX REPLACE "[^0]+0x" "" CURL_VERSION_NUM ${CURL_VERSION_NUM})
+string(REGEX REPLACE "[^0]+0x" "" CURL_VERSION_NUM ${CURL_VERSION_NUM})
-include_regular_expression("^.*$") # Sukender: Is it necessary?
# Setup package meta-data
# SET(PACKAGE "curl")
@@ -66,24 +63,44 @@ message(STATUS "curl version=[${CURL_VERSION}]")
# SET(PACKAGE_NAME "curl")
# SET(PACKAGE_VERSION "-")
# SET(PACKAGE_STRING "curl-")
-# SET(PACKAGE_BUGREPORT "a suitable curl mailing list => https://curl.haxx.se/mail/")
+# SET(PACKAGE_BUGREPORT "a suitable curl mailing list => https://curl.se/mail/")
set(OPERATING_SYSTEM "${CMAKE_SYSTEM_NAME}")
set(OS "\"${CMAKE_SYSTEM_NAME}\"")
-include_directories(${PROJECT_BINARY_DIR}/include/curl)
-include_directories( ${CURL_SOURCE_DIR}/include )
+include_directories(${CURL_SOURCE_DIR}/include)
option(CURL_WERROR "Turn compiler warnings into errors" OFF)
option(PICKY_COMPILER "Enable picky compiler options" ON)
option(BUILD_CURL_EXE "Set to ON to build curl executable." ON)
-option(CURL_STATICLIB "Set to ON to build libcurl with static linking." OFF)
+option(BUILD_SHARED_LIBS "Build shared libraries" ON)
option(ENABLE_ARES "Set to ON to enable c-ares support" OFF)
if(WIN32)
option(CURL_STATIC_CRT "Set to ON to build libcurl with static CRT on Windows (/MT)." OFF)
option(ENABLE_INET_PTON "Set to OFF to prevent usage of inet_pton when building against modern SDKs while still requiring compatibility with older Windows versions, such as Windows XP, Windows Server 2003 etc." ON)
+ option(ENABLE_UNICODE "Set to ON to use the Unicode version of the Windows API functions" OFF)
+ set(CURL_TARGET_WINDOWS_VERSION "" CACHE STRING "Minimum target Windows version as hex string")
+ if(CURL_TARGET_WINDOWS_VERSION)
+ add_definitions(-D_WIN32_WINNT=${CURL_TARGET_WINDOWS_VERSION})
+ set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_WIN32_WINNT=${CURL_TARGET_WINDOWS_VERSION}")
+ elseif(ENABLE_INET_PTON)
+ # _WIN32_WINNT_VISTA (0x0600)
+ add_definitions(-D_WIN32_WINNT=0x0600)
+ set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_WIN32_WINNT=0x0600")
+ else()
+ # _WIN32_WINNT_WINXP (0x0501)
+ add_definitions(-D_WIN32_WINNT=0x0501)
+ set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_WIN32_WINNT=0x0501")
+ endif()
+ if(ENABLE_UNICODE)
+ add_definitions(-DUNICODE -D_UNICODE)
+ if(MINGW)
+ add_compile_options(-municode)
+ endif()
+ endif()
endif()
+option(CURL_LTO "Turn on compiler Link Time Optimizations" OFF)
-CMAKE_DEPENDENT_OPTION(ENABLE_THREADED_RESOLVER "Set to ON to enable threaded DNS lookup"
+cmake_dependent_option(ENABLE_THREADED_RESOLVER "Set to ON to enable threaded DNS lookup"
ON "NOT ENABLE_ARES"
OFF)
@@ -91,34 +108,42 @@ option(ENABLE_DEBUG "Set to ON to enable curl debug features" OFF)
option(ENABLE_CURLDEBUG "Set to ON to build with TrackMemory feature enabled" OFF)
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG)
- if (PICKY_COMPILER)
- foreach (_CCOPT -pedantic -Wall -W -Wpointer-arith -Wwrite-strings -Wunused -Wshadow -Winline -Wnested-externs -Wmissing-declarations -Wmissing-prototypes -Wno-long-long -Wfloat-equal -Wno-multichar -Wsign-compare -Wundef -Wno-format-nonliteral -Wendif-labels -Wstrict-prototypes -Wdeclaration-after-statement -Wstrict-aliasing=3 -Wcast-align -Wtype-limits -Wold-style-declaration -Wmissing-parameter-type -Wempty-body -Wclobbered -Wignored-qualifiers -Wconversion -Wno-sign-conversion -Wvla -Wdouble-promotion -Wno-system-headers)
+ if(PICKY_COMPILER)
+ foreach(_CCOPT -pedantic -Wall -W -Wpointer-arith -Wwrite-strings -Wunused -Wshadow -Winline -Wnested-externs -Wmissing-declarations -Wmissing-prototypes -Wfloat-equal -Wsign-compare -Wundef -Wendif-labels -Wstrict-prototypes -Wdeclaration-after-statement -Wstrict-aliasing=3 -Wcast-align -Wtype-limits -Wold-style-declaration -Wmissing-parameter-type -Wempty-body -Wclobbered -Wignored-qualifiers -Wconversion -Wvla -Wdouble-promotion)
# surprisingly, CHECK_C_COMPILER_FLAG needs a new variable to store each new
# test result in.
- CHECK_C_COMPILER_FLAG(${_CCOPT} OPT${_CCOPT})
- if(OPT${_CCOPT})
+ string(MAKE_C_IDENTIFIER "OPT${_CCOPT}" _optvarname)
+ check_c_compiler_flag(${_CCOPT} ${_optvarname})
+ if(${_optvarname})
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_CCOPT}")
endif()
endforeach()
- endif(PICKY_COMPILER)
-endif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG)
+ foreach(_CCOPT long-long multichar format-nonliteral sign-conversion system-headers pedantic-ms-format)
+ # GCC only warns about unknown -Wno- options if there are also other diagnostic messages,
+ # so test for the positive form instead
+ string(MAKE_C_IDENTIFIER "OPT${_CCOPT}" _optvarname)
+ check_c_compiler_flag("-W${_CCOPT}" ${_optvarname})
+ if(${_optvarname})
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-${_CCOPT}")
+ endif()
+ endforeach()
+ endif()
+endif()
-if (ENABLE_DEBUG)
+if(ENABLE_DEBUG)
# DEBUGBUILD will be defined only for Debug builds
- if(NOT CMAKE_VERSION VERSION_LESS 3.0)
- set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$:DEBUGBUILD>)
- else()
- set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUGBUILD)
- endif()
+ set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$:DEBUGBUILD>)
set(ENABLE_CURLDEBUG ON)
endif()
-if (ENABLE_CURLDEBUG)
+if(ENABLE_CURLDEBUG)
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS CURLDEBUG)
endif()
# For debug libs and exes, add "-d" postfix
-set(CMAKE_DEBUG_POSTFIX "-d" CACHE STRING "Set debug library postfix")
+if(NOT DEFINED CMAKE_DEBUG_POSTFIX)
+ set(CMAKE_DEBUG_POSTFIX "-d")
+endif()
# initialize CURL_LIBS
set(CURL_LIBS "")
@@ -126,67 +151,100 @@ set(CURL_LIBS "")
if(ENABLE_ARES)
set(USE_ARES 1)
find_package(CARES REQUIRED)
- list(APPEND CURL_LIBS ${CARES_LIBRARY} )
- set(CURL_LIBS ${CURL_LIBS} ${CARES_LIBRARY})
+ list(APPEND CURL_LIBS ${CARES_LIBRARY})
endif()
include(CurlSymbolHiding)
-option(HTTP_ONLY "disables all protocols except HTTP (This overrides all CURL_DISABLE_* options)" OFF)
-mark_as_advanced(HTTP_ONLY)
-option(CURL_DISABLE_FTP "disables FTP" OFF)
-mark_as_advanced(CURL_DISABLE_FTP)
-option(CURL_DISABLE_LDAP "disables LDAP" OFF)
-mark_as_advanced(CURL_DISABLE_LDAP)
-option(CURL_DISABLE_TELNET "disables Telnet" OFF)
-mark_as_advanced(CURL_DISABLE_TELNET)
+option(CURL_ENABLE_EXPORT_TARGET "to enable cmake export target" ON)
+mark_as_advanced(CURL_ENABLE_EXPORT_TARGET)
+
+option(CURL_DISABLE_ALTSVC "disables alt-svc support" OFF)
+mark_as_advanced(CURL_DISABLE_ALTSVC)
+option(CURL_DISABLE_COOKIES "disables cookies support" OFF)
+mark_as_advanced(CURL_DISABLE_COOKIES)
+option(CURL_DISABLE_CRYPTO_AUTH "disables cryptographic authentication" OFF)
+mark_as_advanced(CURL_DISABLE_CRYPTO_AUTH)
option(CURL_DISABLE_DICT "disables DICT" OFF)
mark_as_advanced(CURL_DISABLE_DICT)
+option(CURL_DISABLE_DOH "disables DNS-over-HTTPS" OFF)
+mark_as_advanced(CURL_DISABLE_DOH)
option(CURL_DISABLE_FILE "disables FILE" OFF)
mark_as_advanced(CURL_DISABLE_FILE)
-option(CURL_DISABLE_TFTP "disables TFTP" OFF)
-mark_as_advanced(CURL_DISABLE_TFTP)
+option(CURL_DISABLE_FTP "disables FTP" OFF)
+mark_as_advanced(CURL_DISABLE_FTP)
+option(CURL_DISABLE_GETOPTIONS "disables curl_easy_options API for existing options to curl_easy_setopt" OFF)
+mark_as_advanced(CURL_DISABLE_GETOPTIONS)
+option(CURL_DISABLE_GOPHER "disables Gopher" OFF)
+mark_as_advanced(CURL_DISABLE_GOPHER)
+option(CURL_DISABLE_HSTS "disables HSTS support" OFF)
+mark_as_advanced(CURL_DISABLE_HSTS)
option(CURL_DISABLE_HTTP "disables HTTP" OFF)
mark_as_advanced(CURL_DISABLE_HTTP)
-
-option(CURL_DISABLE_LDAPS "to disable LDAPS" OFF)
+option(CURL_DISABLE_HTTP_AUTH "disables all HTTP authentication methods" OFF)
+mark_as_advanced(CURL_DISABLE_HTTP_AUTH)
+option(CURL_DISABLE_IMAP "disables IMAP" OFF)
+mark_as_advanced(CURL_DISABLE_IMAP)
+option(CURL_DISABLE_LDAP "disables LDAP" OFF)
+mark_as_advanced(CURL_DISABLE_LDAP)
+option(CURL_DISABLE_LDAPS "disables LDAPS" OFF)
mark_as_advanced(CURL_DISABLE_LDAPS)
-
-option(CURL_DISABLE_RTSP "to disable RTSP" OFF)
-mark_as_advanced(CURL_DISABLE_RTSP)
-option(CURL_DISABLE_PROXY "to disable proxy" OFF)
-mark_as_advanced(CURL_DISABLE_PROXY)
-option(CURL_DISABLE_POP3 "to disable POP3" OFF)
+option(CURL_DISABLE_LIBCURL_OPTION "disables --libcurl option from the curl tool" OFF)
+mark_as_advanced(CURL_DISABLE_LIBCURL_OPTION)
+option(CURL_DISABLE_MIME "disables MIME support" OFF)
+mark_as_advanced(CURL_DISABLE_MIME)
+option(CURL_DISABLE_MQTT "disables MQTT" OFF)
+mark_as_advanced(CURL_DISABLE_MQTT)
+option(CURL_DISABLE_NETRC "disables netrc parser" OFF)
+mark_as_advanced(CURL_DISABLE_NETRC)
+option(CURL_DISABLE_NTLM "disables NTLM support" OFF)
+mark_as_advanced(CURL_DISABLE_NTLM)
+option(CURL_DISABLE_PARSEDATE "disables date parsing" OFF)
+mark_as_advanced(CURL_DISABLE_PARSEDATE)
+option(CURL_DISABLE_POP3 "disables POP3" OFF)
mark_as_advanced(CURL_DISABLE_POP3)
-option(CURL_DISABLE_IMAP "to disable IMAP" OFF)
-mark_as_advanced(CURL_DISABLE_IMAP)
-option(CURL_DISABLE_SMTP "to disable SMTP" OFF)
+option(CURL_DISABLE_PROGRESS_METER "disables built-in progress meter" OFF)
+mark_as_advanced(CURL_DISABLE_PROGRESS_METER)
+option(CURL_DISABLE_PROXY "disables proxy support" OFF)
+mark_as_advanced(CURL_DISABLE_PROXY)
+option(CURL_DISABLE_RTSP "disables RTSP" OFF)
+mark_as_advanced(CURL_DISABLE_RTSP)
+option(CURL_DISABLE_SHUFFLE_DNS "disables shuffle DNS feature" OFF)
+mark_as_advanced(CURL_DISABLE_SHUFFLE_DNS)
+option(CURL_DISABLE_SMB "disables SMB" OFF)
+mark_as_advanced(CURL_DISABLE_SMB)
+option(CURL_DISABLE_SMTP "disables SMTP" OFF)
mark_as_advanced(CURL_DISABLE_SMTP)
-option(CURL_DISABLE_GOPHER "to disable Gopher" OFF)
-mark_as_advanced(CURL_DISABLE_GOPHER)
+option(CURL_DISABLE_SOCKETPAIR "disables use of socketpair for curl_multi_poll" OFF)
+mark_as_advanced(CURL_DISABLE_SOCKETPAIR)
+option(CURL_DISABLE_TELNET "disables Telnet" OFF)
+mark_as_advanced(CURL_DISABLE_TELNET)
+option(CURL_DISABLE_TFTP "disables TFTP" OFF)
+mark_as_advanced(CURL_DISABLE_TFTP)
+option(CURL_DISABLE_VERBOSE_STRINGS "disables verbose strings" OFF)
+mark_as_advanced(CURL_DISABLE_VERBOSE_STRINGS)
+
+# Corresponds to HTTP_ONLY in lib/curl_setup.h
+option(HTTP_ONLY "disables all protocols except HTTP (This overrides all CURL_DISABLE_* options)" OFF)
+mark_as_advanced(HTTP_ONLY)
if(HTTP_ONLY)
+ set(CURL_DISABLE_DICT ON)
+ set(CURL_DISABLE_FILE ON)
set(CURL_DISABLE_FTP ON)
+ set(CURL_DISABLE_GOPHER ON)
+ set(CURL_DISABLE_IMAP ON)
set(CURL_DISABLE_LDAP ON)
set(CURL_DISABLE_LDAPS ON)
- set(CURL_DISABLE_TELNET ON)
- set(CURL_DISABLE_DICT ON)
- set(CURL_DISABLE_FILE ON)
- set(CURL_DISABLE_TFTP ON)
- set(CURL_DISABLE_RTSP ON)
+ set(CURL_DISABLE_MQTT ON)
set(CURL_DISABLE_POP3 ON)
- set(CURL_DISABLE_IMAP ON)
+ set(CURL_DISABLE_RTSP ON)
+ set(CURL_DISABLE_SMB ON)
set(CURL_DISABLE_SMTP ON)
- set(CURL_DISABLE_GOPHER ON)
+ set(CURL_DISABLE_TELNET ON)
+ set(CURL_DISABLE_TFTP ON)
endif()
-option(CURL_DISABLE_COOKIES "to disable cookies support" OFF)
-mark_as_advanced(CURL_DISABLE_COOKIES)
-
-option(CURL_DISABLE_CRYPTO_AUTH "to disable cryptographic authentication" OFF)
-mark_as_advanced(CURL_DISABLE_CRYPTO_AUTH)
-option(CURL_DISABLE_VERBOSE_STRINGS "to disable verbose strings" OFF)
-mark_as_advanced(CURL_DISABLE_VERBOSE_STRINGS)
option(ENABLE_IPV6 "Define if you want to enable IPv6 support" ON)
mark_as_advanced(ENABLE_IPV6)
if(ENABLE_IPV6 AND NOT WIN32)
@@ -203,26 +261,22 @@ if(ENABLE_IPV6 AND NOT WIN32)
endif()
endif()
-CURL_NROFF_CHECK()
+if(USE_MANUAL)
+ #nroff is currently only used when USE_MANUAL is set, so we can prevent the warning of no *NROFF if USE_MANUAL is OFF (or not defined), by not even looking for NROFF..
+ curl_nroff_check()
+endif()
find_package(Perl)
-CMAKE_DEPENDENT_OPTION(ENABLE_MANUAL "to provide the built-in manual"
+cmake_dependent_option(ENABLE_MANUAL "to provide the built-in manual"
ON "NROFF_USEFUL;PERL_FOUND"
OFF)
-if(NOT PERL_FOUND)
- message(STATUS "Perl not found, testing disabled.")
- set(BUILD_TESTING OFF)
-endif()
if(ENABLE_MANUAL)
set(USE_MANUAL ON)
endif()
-# We need ansi c-flags, especially on HP
-set(CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS}")
-set(CMAKE_REQUIRED_FLAGS ${CMAKE_ANSI_CFLAGS})
-
if(CURL_STATIC_CRT)
+ set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MT")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd")
endif()
@@ -230,38 +284,28 @@ endif()
# Disable warnings on Borland to avoid changing 3rd party code.
if(BORLAND)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w-")
-endif(BORLAND)
-
-if(CURL_WERROR)
- if(MSVC_VERSION)
- set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /WX")
- set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /WX")
- else()
- # this assumes clang or gcc style options
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
- endif()
-endif(CURL_WERROR)
+endif()
# If we are on AIX, do the _ALL_SOURCE magic
if(${CMAKE_SYSTEM_NAME} MATCHES AIX)
set(_ALL_SOURCE 1)
-endif(${CMAKE_SYSTEM_NAME} MATCHES AIX)
+endif()
# Include all the necessary files for macros
-include (CheckFunctionExists)
-include (CheckIncludeFile)
-include (CheckIncludeFiles)
-include (CheckLibraryExists)
-include (CheckSymbolExists)
-include (CheckTypeSize)
-include (CheckCSourceCompiles)
-include (CMakeDependentOption)
+include(CMakePushCheckState)
+include(CheckFunctionExists)
+include(CheckIncludeFile)
+include(CheckIncludeFiles)
+include(CheckLibraryExists)
+include(CheckSymbolExists)
+include(CheckTypeSize)
+include(CheckCSourceCompiles)
# On windows preload settings
if(WIN32)
set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_WINSOCKAPI_=")
include(${CMAKE_CURRENT_SOURCE_DIR}/CMake/Platforms/WindowsCache.cmake)
-endif(WIN32)
+endif()
if(ENABLE_THREADED_RESOLVER)
find_package(Threads REQUIRED)
@@ -275,7 +319,7 @@ if(ENABLE_THREADED_RESOLVER)
endif()
# Check for all needed libraries
-check_library_exists_concat("dl" dlopen HAVE_LIBDL)
+check_library_exists_concat("${CMAKE_DL_LIBS}" dlopen HAVE_LIBDL)
check_library_exists_concat("socket" connect HAVE_LIBSOCKET)
check_library_exists("c" gethostbyname "" NOT_NEED_LIBNSL)
@@ -284,11 +328,11 @@ if(BEOS)
set(NOT_NEED_LIBNSL 1)
check_library_exists_concat("bind" gethostbyname HAVE_LIBBIND)
check_library_exists_concat("bnetapi" closesocket HAVE_LIBBNETAPI)
-endif(BEOS)
+endif()
if(NOT NOT_NEED_LIBNSL)
check_library_exists_concat("nsl" gethostbyname HAVE_LIBNSL)
-endif(NOT NOT_NEED_LIBNSL)
+endif()
check_function_exists(gethostname HAVE_GETHOSTNAME)
@@ -298,39 +342,48 @@ if(WIN32)
endif()
# check SSL libraries
-# TODO support GNUTLS, NSS, POLARSSL, AXTLS, CYASSL
+# TODO support GnuTLS
+if(CMAKE_USE_WINSSL)
+ message(FATAL_ERROR "The cmake option CMAKE_USE_WINSSL was renamed to CMAKE_USE_SCHANNEL.")
+endif()
if(APPLE)
- option(CMAKE_USE_DARWINSSL "enable Apple OS native SSL/TLS" OFF)
+ option(CMAKE_USE_SECTRANSP "enable Apple OS native SSL/TLS" OFF)
endif()
if(WIN32)
- option(CMAKE_USE_WINSSL "enable Windows native SSL/TLS" OFF)
+ option(CMAKE_USE_SCHANNEL "enable Windows native SSL/TLS" OFF)
cmake_dependent_option(CURL_WINDOWS_SSPI "Use windows libraries to allow NTLM authentication without openssl" ON
- CMAKE_USE_WINSSL OFF)
+ CMAKE_USE_SCHANNEL OFF)
endif()
option(CMAKE_USE_MBEDTLS "Enable mbedTLS for SSL/TLS" OFF)
+option(CMAKE_USE_BEARSSL "Enable BearSSL for SSL/TLS" OFF)
+option(CMAKE_USE_NSS "Enable NSS for SSL/TLS" OFF)
+option(CMAKE_USE_WOLFSSL "enable wolfSSL for SSL/TLS" OFF)
set(openssl_default ON)
-if(WIN32 OR CMAKE_USE_DARWINSSL OR CMAKE_USE_WINSSL OR CMAKE_USE_MBEDTLS)
+if(WIN32 OR CMAKE_USE_SECTRANSP OR CMAKE_USE_SCHANNEL OR CMAKE_USE_MBEDTLS OR CMAKE_USE_NSS OR CMAKE_USE_WOLFSSL)
set(openssl_default OFF)
endif()
option(CMAKE_USE_OPENSSL "Use OpenSSL code. Experimental" ${openssl_default})
+option(CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG "Disable automatic loading of OpenSSL configuration" OFF)
-collect_true(enabled_ssl_options enabled_ssl_options_count
- CMAKE_USE_WINSSL
- CMAKE_USE_DARWINSSL
+count_true(enabled_ssl_options_count
+ CMAKE_USE_SCHANNEL
+ CMAKE_USE_SECTRANSP
CMAKE_USE_OPENSSL
CMAKE_USE_MBEDTLS
+ CMAKE_USE_BEARSSL
+ CMAKE_USE_NSS
+ CMAKE_USE_WOLFSSL
)
-if(enabled_ssl_options_count GREATER 1)
- message(FATAL_ERROR "Multiple SSL options specified: ${enabled_ssl_options}. Please pick at most one and disable the rest.")
+if(enabled_ssl_options_count GREATER "1")
+ set(CURL_WITH_MULTI_SSL ON)
endif()
-if(CMAKE_USE_WINSSL)
+if(CMAKE_USE_SCHANNEL)
set(SSL_ENABLED ON)
set(USE_SCHANNEL ON) # Windows native SSL/TLS support
- set(USE_WINDOWS_SSPI ON) # CMAKE_USE_WINSSL implies CURL_WINDOWS_SSPI
- list(APPEND CURL_LIBS "crypt32")
+ set(USE_WINDOWS_SSPI ON) # CMAKE_USE_SCHANNEL implies CURL_WINDOWS_SSPI
endif()
if(CURL_WINDOWS_SSPI)
set(USE_WINDOWS_SSPI ON)
@@ -338,32 +391,51 @@ if(CURL_WINDOWS_SSPI)
endif()
if(CMAKE_USE_DARWINSSL)
+ message(FATAL_ERROR "The cmake option CMAKE_USE_DARWINSSL was renamed to CMAKE_USE_SECTRANSP.")
+endif()
+
+if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
find_library(COREFOUNDATION_FRAMEWORK "CoreFoundation")
if(NOT COREFOUNDATION_FRAMEWORK)
message(FATAL_ERROR "CoreFoundation framework not found")
endif()
- find_library(SECURITY_FRAMEWORK "Security")
- if(NOT SECURITY_FRAMEWORK)
- message(FATAL_ERROR "Security framework not found")
+ find_library(SYSTEMCONFIGURATION_FRAMEWORK "SystemConfiguration")
+ if(NOT SYSTEMCONFIGURATION_FRAMEWORK)
+ message(FATAL_ERROR "SystemConfiguration framework not found")
endif()
- set(SSL_ENABLED ON)
- set(USE_DARWINSSL ON)
- list(APPEND CURL_LIBS "${COREFOUNDATION_FRAMEWORK}" "${SECURITY_FRAMEWORK}")
+ list(APPEND CURL_LIBS "-framework CoreFoundation" "-framework SystemConfiguration")
+
+ if(CMAKE_USE_SECTRANSP)
+ find_library(SECURITY_FRAMEWORK "Security")
+ if(NOT SECURITY_FRAMEWORK)
+ message(FATAL_ERROR "Security framework not found")
+ endif()
+
+ set(SSL_ENABLED ON)
+ set(USE_SECTRANSP ON)
+ list(APPEND CURL_LIBS "-framework Security")
+ endif()
endif()
if(CMAKE_USE_OPENSSL)
find_package(OpenSSL REQUIRED)
set(SSL_ENABLED ON)
set(USE_OPENSSL ON)
- set(HAVE_LIBCRYPTO ON)
- set(HAVE_LIBSSL ON)
- list(APPEND CURL_LIBS ${OPENSSL_LIBRARIES})
- include_directories(${OPENSSL_INCLUDE_DIR})
+
+ # Depend on OpenSSL via imported targets if supported by the running
+ # version of CMake. This allows our dependents to get our dependencies
+ # transitively.
+ if(NOT CMAKE_VERSION VERSION_LESS 3.4)
+ list(APPEND CURL_LIBS OpenSSL::SSL OpenSSL::Crypto)
+ else()
+ list(APPEND CURL_LIBS ${OPENSSL_LIBRARIES})
+ include_directories(${OPENSSL_INCLUDE_DIR})
+ endif()
+
set(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
check_include_file("openssl/crypto.h" HAVE_OPENSSL_CRYPTO_H)
- check_include_file("openssl/engine.h" HAVE_OPENSSL_ENGINE_H)
check_include_file("openssl/err.h" HAVE_OPENSSL_ERR_H)
check_include_file("openssl/pem.h" HAVE_OPENSSL_PEM_H)
check_include_file("openssl/rsa.h" HAVE_OPENSSL_RSA_H)
@@ -383,6 +455,35 @@ if(CMAKE_USE_MBEDTLS)
include_directories(${MBEDTLS_INCLUDE_DIRS})
endif()
+if(CMAKE_USE_BEARSSL)
+ find_package(BearSSL REQUIRED)
+ set(SSL_ENABLED ON)
+ set(USE_BEARSSL ON)
+ list(APPEND CURL_LIBS ${BEARSSL_LIBRARY})
+ include_directories(${BEARSSL_INCLUDE_DIRS})
+endif()
+
+if(CMAKE_USE_WOLFSSL)
+ find_package(WolfSSL REQUIRED)
+ set(SSL_ENABLED ON)
+ set(USE_WOLFSSL ON)
+ list(APPEND CURL_LIBS ${WolfSSL_LIBRARIES})
+ include_directories(${WolfSSL_INCLUDE_DIRS})
+endif()
+
+if(CMAKE_USE_NSS)
+ find_package(NSS REQUIRED)
+ include_directories(${NSS_INCLUDE_DIRS})
+ list(APPEND CURL_LIBS ${NSS_LIBRARIES})
+ set(SSL_ENABLED ON)
+ set(USE_NSS ON)
+ cmake_push_check_state()
+ set(CMAKE_REQUIRED_INCLUDES ${NSS_INCLUDE_DIRS})
+ set(CMAKE_REQUIRED_LIBRARIES ${NSS_LIBRARIES})
+ check_symbol_exists(PK11_CreateManagedGenericObject "pk11pub.h" HAVE_PK11_CREATEMANAGEDGENERICOBJECT)
+ cmake_pop_check_state()
+endif()
+
option(USE_NGHTTP2 "Use Nghttp2 library" OFF)
if(USE_NGHTTP2)
find_package(NGHTTP2 REQUIRED)
@@ -390,6 +491,56 @@ if(USE_NGHTTP2)
list(APPEND CURL_LIBS ${NGHTTP2_LIBRARIES})
endif()
+function(CheckQuicSupportInOpenSSL)
+ # Be sure that the OpenSSL library actually supports QUIC.
+ cmake_push_check_state()
+ set(CMAKE_REQUIRED_INCLUDES "${OPENSSL_INCLUDE_DIR}")
+ set(CMAKE_REQUIRED_LIBRARIES "${OPENSSL_LIBRARIES}")
+ check_symbol_exists(SSL_CTX_set_quic_method "openssl/ssl.h" HAVE_SSL_CTX_SET_QUIC_METHOD)
+ if(NOT HAVE_SSL_CTX_SET_QUIC_METHOD)
+ message(FATAL_ERROR "QUIC support is missing in OpenSSL/boringssl. Try setting -DOPENSSL_ROOT_DIR")
+ endif()
+ cmake_pop_check_state()
+endfunction()
+
+option(USE_NGTCP2 "Use ngtcp2 and nghttp3 libraries for HTTP/3 support" OFF)
+if(USE_NGTCP2)
+ if(USE_OPENSSL)
+ find_package(NGTCP2 REQUIRED OpenSSL)
+ CheckQuicSupportInOpenSSL()
+ elseif(USE_GNUTLS)
+ # TODO add GnuTLS support as vtls library.
+ find_package(NGTCP2 REQUIRED GnuTLS)
+ else()
+ message(FATAL_ERROR "ngtcp2 requires OpenSSL or GnuTLS")
+ endif()
+ set(USE_NGTCP2 ON)
+ include_directories(${NGTCP2_INCLUDE_DIRS})
+ list(APPEND CURL_LIBS ${NGTCP2_LIBRARIES})
+
+ find_package(NGHTTP3 REQUIRED)
+ set(USE_NGHTTP3 ON)
+ include_directories(${NGHTTP3_INCLUDE_DIRS})
+ list(APPEND CURL_LIBS ${NGHTTP3_LIBRARIES})
+endif()
+
+option(USE_QUICHE "Use quiche library for HTTP/3 support" OFF)
+if(USE_QUICHE)
+ if(USE_NGTCP2)
+ message(FATAL_ERROR "Only one HTTP/3 backend can be selected!")
+ endif()
+ find_package(QUICHE REQUIRED)
+ CheckQuicSupportInOpenSSL()
+ set(USE_QUICHE ON)
+ include_directories(${QUICHE_INCLUDE_DIRS})
+ list(APPEND CURL_LIBS ${QUICHE_LIBRARIES})
+ cmake_push_check_state()
+ set(CMAKE_REQUIRED_INCLUDES "${QUICHE_INCLUDE_DIRS}")
+ set(CMAKE_REQUIRED_LIBRARIES "${QUICHE_LIBRARIES}")
+ check_symbol_exists(quiche_conn_set_qlog_fd "quiche.h" HAVE_QUICHE_CONN_SET_QLOG_FD)
+ cmake_pop_check_state()
+endif()
+
if(NOT CURL_DISABLE_LDAP)
if(WIN32)
option(USE_WIN32_LDAP "Use Windows LDAP implementation" ON)
@@ -475,6 +626,7 @@ if(NOT CURL_DISABLE_LDAP)
list(APPEND CMAKE_REQUIRED_LIBRARIES ${CMAKE_LBER_LIB})
endif()
check_c_source_compiles("${_SRC_STRING}" NOT_NEED_LBER_H)
+ unset(CMAKE_REQUIRED_LIBRARIES)
if(NOT_NEED_LBER_H)
set(NEED_LBER_H OFF)
@@ -483,7 +635,6 @@ if(NOT CURL_DISABLE_LDAP)
endif()
endif()
endif()
-
endif()
# No ldap, no ldaps.
@@ -500,24 +651,69 @@ if(NOT CURL_DISABLE_LDAPS)
endif()
# Check for idn
-check_library_exists_concat("idn2" idn2_lookup_ul HAVE_LIBIDN2)
+option(USE_LIBIDN2 "Use libidn2 for IDN support" ON)
+set(HAVE_LIBIDN2 OFF)
+if(USE_LIBIDN2)
+ check_library_exists_concat("idn2" idn2_lookup_ul HAVE_LIBIDN2)
+endif()
+
+if(WIN32)
+ option(USE_WIN32_IDN "Use WinIDN for IDN support" OFF)
+ if(USE_WIN32_IDN)
+ list(APPEND CURL_LIBS "Normaliz")
+ set(WANT_IDN_PROTOTYPES ON)
+ endif()
+endif()
# Check for symbol dlopen (same as HAVE_LIBDL)
check_library_exists("${CURL_LIBS}" dlopen "" HAVE_DLOPEN)
-option(CURL_ZLIB "Set to ON to enable building curl with zlib support." ON)
set(HAVE_LIBZ OFF)
set(HAVE_ZLIB_H OFF)
-set(HAVE_ZLIB OFF)
-if(CURL_ZLIB)
- find_package(ZLIB QUIET)
- if(ZLIB_FOUND)
- set(HAVE_ZLIB_H ON)
- set(HAVE_ZLIB ON)
- set(HAVE_LIBZ ON)
+set(USE_ZLIB OFF)
+optional_dependency(ZLIB)
+if(ZLIB_FOUND)
+ set(HAVE_ZLIB_H ON)
+ set(HAVE_LIBZ ON)
+ set(USE_ZLIB ON)
+
+ # Depend on ZLIB via imported targets if supported by the running
+ # version of CMake. This allows our dependents to get our dependencies
+ # transitively.
+ if(NOT CMAKE_VERSION VERSION_LESS 3.4)
+ list(APPEND CURL_LIBS ZLIB::ZLIB)
+ else()
list(APPEND CURL_LIBS ${ZLIB_LIBRARIES})
include_directories(${ZLIB_INCLUDE_DIRS})
- list(APPEND CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIRS})
+ endif()
+ list(APPEND CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIRS})
+endif()
+
+option(CURL_BROTLI "Set to ON to enable building curl with brotli support." OFF)
+set(HAVE_BROTLI OFF)
+if(CURL_BROTLI)
+ find_package(Brotli QUIET)
+ if(BROTLI_FOUND)
+ set(HAVE_BROTLI ON)
+ list(APPEND CURL_LIBS ${BROTLI_LIBRARIES})
+ include_directories(${BROTLI_INCLUDE_DIRS})
+ list(APPEND CMAKE_REQUIRED_INCLUDES ${BROTLI_INCLUDE_DIRS})
+ endif()
+endif()
+
+option(CURL_ZSTD "Set to ON to enable building curl with zstd support." OFF)
+set(HAVE_ZSTD OFF)
+if(CURL_ZSTD)
+ find_package(Zstd REQUIRED)
+ cmake_push_check_state()
+ set(CMAKE_REQUIRED_INCLUDES ${Zstd_INCLUDE_DIRS})
+ set(CMAKE_REQUIRED_LIBRARIES ${Zstd_LIBRARIES})
+ check_symbol_exists(ZSTD_createDStream "zstd.h" HAVE_ZSTD_CREATEDSTREAM)
+ cmake_pop_check_state()
+ if(Zstd_FOUND AND HAVE_ZSTD_CREATEDSTREAM)
+ set(HAVE_ZSTD ON)
+ list(APPEND CURL_LIBS ${Zstd_LIBRARIES})
+ include_directories(${Zstd_INCLUDE_DIRS})
endif()
endif()
@@ -542,18 +738,23 @@ if(CMAKE_USE_LIBSSH2)
set(HAVE_LIBSSH2_H ON)
set(CURL_INCLUDES ${CURL_INCLUDES} "${LIBSSH2_INCLUDE_DIR}/libssh2.h")
set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -DHAVE_LIBSSH2_H")
+ unset(CMAKE_REQUIRED_LIBRARIES)
+ endif()
+endif()
- # now check for specific libssh2 symbols as they were added in different versions
- set(CMAKE_EXTRA_INCLUDE_FILES "libssh2.h")
- check_function_exists(libssh2_version HAVE_LIBSSH2_VERSION)
- check_function_exists(libssh2_init HAVE_LIBSSH2_INIT)
- check_function_exists(libssh2_exit HAVE_LIBSSH2_EXIT)
- check_function_exists(libssh2_scp_send64 HAVE_LIBSSH2_SCP_SEND64)
- check_function_exists(libssh2_session_handshake HAVE_LIBSSH2_SESSION_HANDSHAKE)
- set(CMAKE_EXTRA_INCLUDE_FILES "")
-
- endif(LIBSSH2_FOUND)
-endif(CMAKE_USE_LIBSSH2)
+# libssh
+option(CMAKE_USE_LIBSSH "Use libSSH" OFF)
+mark_as_advanced(CMAKE_USE_LIBSSH)
+if(NOT HAVE_LIBSSH2 AND CMAKE_USE_LIBSSH)
+ find_package(libssh CONFIG)
+ if(libssh_FOUND)
+ message(STATUS "Found libssh ${libssh_VERSION}")
+ # Use imported target for include and library paths.
+ list(APPEND CURL_LIBS ssh)
+ set(USE_LIBSSH ON)
+ set(HAVE_LIBSSH_LIBSSH_H 1)
+ endif()
+endif()
option(CMAKE_USE_GSSAPI "Use GSSAPI implementation (right now only Heimdal is supported with CMake build)" OFF)
mark_as_advanced(CMAKE_USE_GSSAPI)
@@ -566,7 +767,7 @@ if(CMAKE_USE_GSSAPI)
message(STATUS "Found ${GSS_FLAVOUR} GSSAPI version: \"${GSS_VERSION}\"")
- list(APPEND CMAKE_REQUIRED_INCLUDES ${GSS_INCLUDE_DIRECTORIES})
+ list(APPEND CMAKE_REQUIRED_INCLUDES ${GSS_INCLUDE_DIR})
check_include_file_concat("gssapi/gssapi.h" HAVE_GSSAPI_GSSAPI_H)
check_include_file_concat("gssapi/gssapi_generic.h" HAVE_GSSAPI_GSSAPI_GENERIC_H)
check_include_file_concat("gssapi/gssapi_krb5.h" HAVE_GSSAPI_GSSAPI_KRB5_H)
@@ -599,14 +800,16 @@ if(CMAKE_USE_GSSAPI)
if(NOT HAVE_GSS_C_NT_HOSTBASED_SERVICE)
set(HAVE_OLD_GSSMIT ON)
endif()
+ unset(CMAKE_REQUIRED_LIBRARIES)
endif()
- include_directories(${GSS_INCLUDE_DIRECTORIES})
+ include_directories(${GSS_INCLUDE_DIR})
link_directories(${GSS_LINK_DIRECTORIES})
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GSS_COMPILER_FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${GSS_LINKER_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GSS_LINKER_FLAGS}")
+ set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} ${GSS_LINKER_FLAGS}")
list(APPEND CURL_LIBS ${GSS_LIBRARIES})
else()
@@ -617,7 +820,11 @@ endif()
option(ENABLE_UNIX_SOCKETS "Define if you want Unix domain sockets support" ON)
if(ENABLE_UNIX_SOCKETS)
include(CheckStructHasMember)
- check_struct_has_member("struct sockaddr_un" sun_path "sys/un.h" USE_UNIX_SOCKETS)
+ if(WIN32)
+ set(USE_UNIX_SOCKETS ON)
+ else()
+ check_struct_has_member("struct sockaddr_un" sun_path "sys/un.h" USE_UNIX_SOCKETS)
+ endif()
else()
unset(USE_UNIX_SOCKETS CACHE)
endif()
@@ -634,77 +841,78 @@ set(CURL_CA_PATH "auto" CACHE STRING
"Location of default CA path. Set 'none' to disable or 'auto' for auto-detection. Defaults to 'auto'.")
if("${CURL_CA_BUNDLE}" STREQUAL "")
- message(FATAL_ERROR "Invalid value of CURL_CA_BUNDLE. Use 'none', 'auto' or file path.")
+ message(FATAL_ERROR "Invalid value of CURL_CA_BUNDLE. Use 'none', 'auto' or file path.")
elseif("${CURL_CA_BUNDLE}" STREQUAL "none")
- unset(CURL_CA_BUNDLE CACHE)
+ unset(CURL_CA_BUNDLE CACHE)
elseif("${CURL_CA_BUNDLE}" STREQUAL "auto")
- unset(CURL_CA_BUNDLE CACHE)
- set(CURL_CA_BUNDLE_AUTODETECT TRUE)
+ unset(CURL_CA_BUNDLE CACHE)
+ set(CURL_CA_BUNDLE_AUTODETECT TRUE)
else()
- set(CURL_CA_BUNDLE_SET TRUE)
+ set(CURL_CA_BUNDLE_SET TRUE)
endif()
if("${CURL_CA_PATH}" STREQUAL "")
- message(FATAL_ERROR "Invalid value of CURL_CA_PATH. Use 'none', 'auto' or directory path.")
+ message(FATAL_ERROR "Invalid value of CURL_CA_PATH. Use 'none', 'auto' or directory path.")
elseif("${CURL_CA_PATH}" STREQUAL "none")
- unset(CURL_CA_PATH CACHE)
+ unset(CURL_CA_PATH CACHE)
elseif("${CURL_CA_PATH}" STREQUAL "auto")
- unset(CURL_CA_PATH CACHE)
+ unset(CURL_CA_PATH CACHE)
+ if(NOT USE_NSS)
set(CURL_CA_PATH_AUTODETECT TRUE)
+ endif()
else()
- set(CURL_CA_PATH_SET TRUE)
+ set(CURL_CA_PATH_SET TRUE)
endif()
if(CURL_CA_BUNDLE_SET AND CURL_CA_PATH_AUTODETECT)
- # Skip autodetection of unset CA path because CA bundle is set explicitly
+ # Skip autodetection of unset CA path because CA bundle is set explicitly
elseif(CURL_CA_PATH_SET AND CURL_CA_BUNDLE_AUTODETECT)
- # Skip autodetection of unset CA bundle because CA path is set explicitly
+ # Skip autodetection of unset CA bundle because CA path is set explicitly
elseif(CURL_CA_PATH_AUTODETECT OR CURL_CA_BUNDLE_AUTODETECT)
- # first try autodetecting a CA bundle, then a CA path
-
- if(CURL_CA_BUNDLE_AUTODETECT)
- set(SEARCH_CA_BUNDLE_PATHS
- /etc/ssl/certs/ca-certificates.crt
- /etc/pki/tls/certs/ca-bundle.crt
- /usr/share/ssl/certs/ca-bundle.crt
- /usr/local/share/certs/ca-root-nss.crt
- /etc/ssl/cert.pem)
-
- foreach(SEARCH_CA_BUNDLE_PATH ${SEARCH_CA_BUNDLE_PATHS})
- if(EXISTS "${SEARCH_CA_BUNDLE_PATH}")
- message(STATUS "Found CA bundle: ${SEARCH_CA_BUNDLE_PATH}")
- set(CURL_CA_BUNDLE "${SEARCH_CA_BUNDLE_PATH}")
- set(CURL_CA_BUNDLE_SET TRUE CACHE BOOL "Path to the CA bundle has been set")
- break()
- endif()
- endforeach()
- endif()
+ # first try autodetecting a CA bundle, then a CA path
+
+ if(CURL_CA_BUNDLE_AUTODETECT)
+ set(SEARCH_CA_BUNDLE_PATHS
+ /etc/ssl/certs/ca-certificates.crt
+ /etc/pki/tls/certs/ca-bundle.crt
+ /usr/share/ssl/certs/ca-bundle.crt
+ /usr/local/share/certs/ca-root-nss.crt
+ /etc/ssl/cert.pem)
+
+ foreach(SEARCH_CA_BUNDLE_PATH ${SEARCH_CA_BUNDLE_PATHS})
+ if(EXISTS "${SEARCH_CA_BUNDLE_PATH}")
+ message(STATUS "Found CA bundle: ${SEARCH_CA_BUNDLE_PATH}")
+ set(CURL_CA_BUNDLE "${SEARCH_CA_BUNDLE_PATH}" CACHE STRING
+ "Path to the CA bundle. Set 'none' to disable or 'auto' for auto-detection. Defaults to 'auto'.")
+ set(CURL_CA_BUNDLE_SET TRUE CACHE BOOL "Path to the CA bundle has been set")
+ break()
+ endif()
+ endforeach()
+ endif()
- if(CURL_CA_PATH_AUTODETECT AND (NOT CURL_CA_PATH_SET))
- if(EXISTS "/etc/ssl/certs")
- set(CURL_CA_PATH "/etc/ssl/certs")
- set(CURL_CA_PATH_SET TRUE CACHE BOOL "Path to the CA bundle has been set")
- endif()
+ if(CURL_CA_PATH_AUTODETECT AND (NOT CURL_CA_PATH_SET))
+ if(EXISTS "/etc/ssl/certs")
+ set(CURL_CA_PATH "/etc/ssl/certs" CACHE STRING
+ "Location of default CA path. Set 'none' to disable or 'auto' for auto-detection. Defaults to 'auto'.")
+ set(CURL_CA_PATH_SET TRUE CACHE BOOL "Path to the CA bundle has been set")
endif()
+ endif()
endif()
if(CURL_CA_PATH_SET AND NOT USE_OPENSSL AND NOT USE_MBEDTLS)
- message(FATAL_ERROR
- "CA path only supported by OpenSSL, GnuTLS or mbed TLS. "
- "Set CURL_CA_PATH=none or enable one of those TLS backends.")
+ message(STATUS
+ "CA path only supported by OpenSSL, GnuTLS or mbed TLS. "
+ "Set CURL_CA_PATH=none or enable one of those TLS backends.")
endif()
-
# Check for header files
if(NOT UNIX)
check_include_file_concat("windows.h" HAVE_WINDOWS_H)
check_include_file_concat("winsock.h" HAVE_WINSOCK_H)
check_include_file_concat("ws2tcpip.h" HAVE_WS2TCPIP_H)
check_include_file_concat("winsock2.h" HAVE_WINSOCK2_H)
- if(NOT CURL_WINDOWS_SSPI AND USE_OPENSSL)
- set(CURL_LIBS ${CURL_LIBS} "crypt32")
- endif()
-endif(NOT UNIX)
+ check_include_file_concat("wincrypt.h" HAVE_WINCRYPT_H)
+endif()
check_include_file_concat("stdio.h" HAVE_STDIO_H)
check_include_file_concat("inttypes.h" HAVE_INTTYPES_H)
@@ -727,9 +935,6 @@ check_include_file_concat("alloca.h" HAVE_ALLOCA_H)
check_include_file_concat("arpa/inet.h" HAVE_ARPA_INET_H)
check_include_file_concat("arpa/tftp.h" HAVE_ARPA_TFTP_H)
check_include_file_concat("assert.h" HAVE_ASSERT_H)
-check_include_file_concat("crypto.h" HAVE_CRYPTO_H)
-check_include_file_concat("des.h" HAVE_DES_H)
-check_include_file_concat("err.h" HAVE_ERR_H)
check_include_file_concat("errno.h" HAVE_ERRNO_H)
check_include_file_concat("fcntl.h" HAVE_FCNTL_H)
check_include_file_concat("idn2.h" HAVE_IDN2_H)
@@ -737,19 +942,17 @@ check_include_file_concat("ifaddrs.h" HAVE_IFADDRS_H)
check_include_file_concat("io.h" HAVE_IO_H)
check_include_file_concat("krb.h" HAVE_KRB_H)
check_include_file_concat("libgen.h" HAVE_LIBGEN_H)
-check_include_file_concat("limits.h" HAVE_LIMITS_H)
check_include_file_concat("locale.h" HAVE_LOCALE_H)
check_include_file_concat("net/if.h" HAVE_NET_IF_H)
check_include_file_concat("netdb.h" HAVE_NETDB_H)
check_include_file_concat("netinet/in.h" HAVE_NETINET_IN_H)
check_include_file_concat("netinet/tcp.h" HAVE_NETINET_TCP_H)
+check_include_file("linux/tcp.h" HAVE_LINUX_TCP_H)
check_include_file_concat("pem.h" HAVE_PEM_H)
check_include_file_concat("poll.h" HAVE_POLL_H)
check_include_file_concat("pwd.h" HAVE_PWD_H)
-check_include_file_concat("rsa.h" HAVE_RSA_H)
check_include_file_concat("setjmp.h" HAVE_SETJMP_H)
-check_include_file_concat("sgtty.h" HAVE_SGTTY_H)
check_include_file_concat("signal.h" HAVE_SIGNAL_H)
check_include_file_concat("ssl.h" HAVE_SSL_H)
check_include_file_concat("stdbool.h" HAVE_STDBOOL_H)
@@ -788,17 +991,17 @@ check_type_size("time_t" SIZEOF_TIME_T)
if(NOT HAVE_SIZEOF_SSIZE_T)
if(SIZEOF_LONG EQUAL SIZEOF_SIZE_T)
set(ssize_t long)
- endif(SIZEOF_LONG EQUAL SIZEOF_SIZE_T)
+ endif()
if(NOT ssize_t AND SIZEOF___INT64 EQUAL SIZEOF_SIZE_T)
set(ssize_t __int64)
- endif(NOT ssize_t AND SIZEOF___INT64 EQUAL SIZEOF_SIZE_T)
-endif(NOT HAVE_SIZEOF_SSIZE_T)
+ endif()
+endif()
# off_t is sized later, after the HAVE_FILE_OFFSET_BITS test
if(HAVE_SIZEOF_LONG_LONG)
set(HAVE_LONGLONG 1)
set(HAVE_LL 1)
-endif(HAVE_SIZEOF_LONG_LONG)
+endif()
find_file(RANDOM_FILE urandom /dev)
mark_as_advanced(RANDOM_FILE)
@@ -812,12 +1015,8 @@ endif()
check_symbol_exists(basename "${CURL_INCLUDES}" HAVE_BASENAME)
check_symbol_exists(socket "${CURL_INCLUDES}" HAVE_SOCKET)
-# poll on macOS is unreliable, it first did not exist, then was broken until
-# fixed in 10.9 only to break again in 10.12.
-if(NOT APPLE)
- check_symbol_exists(poll "${CURL_INCLUDES}" HAVE_POLL)
-endif()
check_symbol_exists(select "${CURL_INCLUDES}" HAVE_SELECT)
+check_symbol_exists(poll "${CURL_INCLUDES}" HAVE_POLL)
check_symbol_exists(strdup "${CURL_INCLUDES}" HAVE_STRDUP)
check_symbol_exists(strstr "${CURL_INCLUDES}" HAVE_STRSTR)
check_symbol_exists(strtok_r "${CURL_INCLUDES}" HAVE_STRTOK_R)
@@ -830,23 +1029,19 @@ check_symbol_exists(strncmpi "${CURL_INCLUDES}" HAVE_STRNCMPI)
check_symbol_exists(alarm "${CURL_INCLUDES}" HAVE_ALARM)
if(NOT HAVE_STRNCMPI)
set(HAVE_STRCMPI)
-endif(NOT HAVE_STRNCMPI)
-check_symbol_exists(gethostbyaddr "${CURL_INCLUDES}" HAVE_GETHOSTBYADDR)
-check_symbol_exists(gethostbyaddr_r "${CURL_INCLUDES}" HAVE_GETHOSTBYADDR_R)
+endif()
+check_symbol_exists(getppid "${CURL_INCLUDES}" HAVE_GETPPID)
+check_symbol_exists(utimes "${CURL_INCLUDES}" HAVE_UTIMES)
+
check_symbol_exists(gettimeofday "${CURL_INCLUDES}" HAVE_GETTIMEOFDAY)
check_symbol_exists(inet_addr "${CURL_INCLUDES}" HAVE_INET_ADDR)
-check_symbol_exists(inet_ntoa "${CURL_INCLUDES}" HAVE_INET_NTOA)
-check_symbol_exists(inet_ntoa_r "${CURL_INCLUDES}" HAVE_INET_NTOA_R)
-check_symbol_exists(tcsetattr "${CURL_INCLUDES}" HAVE_TCSETATTR)
-check_symbol_exists(tcgetattr "${CURL_INCLUDES}" HAVE_TCGETATTR)
-check_symbol_exists(perror "${CURL_INCLUDES}" HAVE_PERROR)
check_symbol_exists(closesocket "${CURL_INCLUDES}" HAVE_CLOSESOCKET)
-check_symbol_exists(setvbuf "${CURL_INCLUDES}" HAVE_SETVBUF)
check_symbol_exists(sigsetjmp "${CURL_INCLUDES}" HAVE_SIGSETJMP)
check_symbol_exists(getpass_r "${CURL_INCLUDES}" HAVE_GETPASS_R)
-check_symbol_exists(strlcat "${CURL_INCLUDES}" HAVE_STRLCAT)
check_symbol_exists(getpwuid "${CURL_INCLUDES}" HAVE_GETPWUID)
+check_symbol_exists(getpwuid_r "${CURL_INCLUDES}" HAVE_GETPWUID_R)
check_symbol_exists(geteuid "${CURL_INCLUDES}" HAVE_GETEUID)
+check_symbol_exists(usleep "${CURL_INCLUDES}" HAVE_USLEEP)
check_symbol_exists(utime "${CURL_INCLUDES}" HAVE_UTIME)
check_symbol_exists(gmtime_r "${CURL_INCLUDES}" HAVE_GMTIME_R)
check_symbol_exists(localtime_r "${CURL_INCLUDES}" HAVE_LOCALTIME_R)
@@ -858,67 +1053,66 @@ check_symbol_exists(signal "${CURL_INCLUDES}" HAVE_SIGNAL_FUNC)
check_symbol_exists(SIGALRM "${CURL_INCLUDES}" HAVE_SIGNAL_MACRO)
if(HAVE_SIGNAL_FUNC AND HAVE_SIGNAL_MACRO)
set(HAVE_SIGNAL 1)
-endif(HAVE_SIGNAL_FUNC AND HAVE_SIGNAL_MACRO)
+endif()
check_symbol_exists(uname "${CURL_INCLUDES}" HAVE_UNAME)
check_symbol_exists(strtoll "${CURL_INCLUDES}" HAVE_STRTOLL)
check_symbol_exists(_strtoi64 "${CURL_INCLUDES}" HAVE__STRTOI64)
check_symbol_exists(strerror_r "${CURL_INCLUDES}" HAVE_STRERROR_R)
check_symbol_exists(siginterrupt "${CURL_INCLUDES}" HAVE_SIGINTERRUPT)
-check_symbol_exists(perror "${CURL_INCLUDES}" HAVE_PERROR)
-check_symbol_exists(fork "${CURL_INCLUDES}" HAVE_FORK)
check_symbol_exists(getaddrinfo "${CURL_INCLUDES}" HAVE_GETADDRINFO)
check_symbol_exists(freeaddrinfo "${CURL_INCLUDES}" HAVE_FREEADDRINFO)
-check_symbol_exists(freeifaddrs "${CURL_INCLUDES}" HAVE_FREEIFADDRS)
check_symbol_exists(pipe "${CURL_INCLUDES}" HAVE_PIPE)
check_symbol_exists(ftruncate "${CURL_INCLUDES}" HAVE_FTRUNCATE)
check_symbol_exists(getprotobyname "${CURL_INCLUDES}" HAVE_GETPROTOBYNAME)
+check_symbol_exists(getpeername "${CURL_INCLUDES}" HAVE_GETPEERNAME)
+check_symbol_exists(getsockname "${CURL_INCLUDES}" HAVE_GETSOCKNAME)
+check_symbol_exists(if_nametoindex "${CURL_INCLUDES}" HAVE_IF_NAMETOINDEX)
check_symbol_exists(getrlimit "${CURL_INCLUDES}" HAVE_GETRLIMIT)
check_symbol_exists(setlocale "${CURL_INCLUDES}" HAVE_SETLOCALE)
+check_symbol_exists(setmode "${CURL_INCLUDES}" HAVE_SETMODE)
check_symbol_exists(setrlimit "${CURL_INCLUDES}" HAVE_SETRLIMIT)
check_symbol_exists(fcntl "${CURL_INCLUDES}" HAVE_FCNTL)
check_symbol_exists(ioctl "${CURL_INCLUDES}" HAVE_IOCTL)
check_symbol_exists(setsockopt "${CURL_INCLUDES}" HAVE_SETSOCKOPT)
-
-# symbol exists in win32, but function does not.
-if(WIN32)
- if(ENABLE_INET_PTON)
- check_function_exists(inet_pton HAVE_INET_PTON)
- # _WIN32_WINNT_VISTA (0x0600)
- add_definitions(-D_WIN32_WINNT=0x0600)
- else()
- # _WIN32_WINNT_WINXP (0x0501)
- add_definitions(-D_WIN32_WINNT=0x0501)
- endif()
-else()
- check_function_exists(inet_pton HAVE_INET_PTON)
-endif()
+check_function_exists(mach_absolute_time HAVE_MACH_ABSOLUTE_TIME)
+check_symbol_exists(inet_pton "${CURL_INCLUDES}" HAVE_INET_PTON)
check_symbol_exists(fsetxattr "${CURL_INCLUDES}" HAVE_FSETXATTR)
if(HAVE_FSETXATTR)
foreach(CURL_TEST HAVE_FSETXATTR_5 HAVE_FSETXATTR_6)
- curl_internal_test_run(${CURL_TEST})
- endforeach(CURL_TEST)
-endif(HAVE_FSETXATTR)
+ curl_internal_test(${CURL_TEST})
+ endforeach()
+endif()
+
+set(CMAKE_EXTRA_INCLUDE_FILES "sys/socket.h")
+check_type_size("sa_family_t" SIZEOF_SA_FAMILY_T)
+set(HAVE_SA_FAMILY_T ${HAVE_SIZEOF_SA_FAMILY_T})
+set(CMAKE_EXTRA_INCLUDE_FILES "")
+
+set(CMAKE_EXTRA_INCLUDE_FILES "ws2def.h")
+check_type_size("ADDRESS_FAMILY" SIZEOF_ADDRESS_FAMILY)
+set(HAVE_ADDRESS_FAMILY ${HAVE_SIZEOF_ADDRESS_FAMILY})
+set(CMAKE_EXTRA_INCLUDE_FILES "")
# sigaction and sigsetjmp are special. Use special mechanism for
# detecting those, but only if previous attempt failed.
if(HAVE_SIGNAL_H)
check_symbol_exists(sigaction "signal.h" HAVE_SIGACTION)
-endif(HAVE_SIGNAL_H)
+endif()
if(NOT HAVE_SIGSETJMP)
if(HAVE_SETJMP_H)
check_symbol_exists(sigsetjmp "setjmp.h" HAVE_MACRO_SIGSETJMP)
if(HAVE_MACRO_SIGSETJMP)
set(HAVE_SIGSETJMP 1)
- endif(HAVE_MACRO_SIGSETJMP)
- endif(HAVE_SETJMP_H)
-endif(NOT HAVE_SIGSETJMP)
+ endif()
+ endif()
+endif()
# If there is no stricmp(), do not allow LDAP to parse URLs
if(NOT HAVE_STRICMP)
set(HAVE_LDAP_URL_PARSE 1)
-endif(NOT HAVE_STRICMP)
+endif()
# Do curl specific tests
foreach(CURL_TEST
@@ -933,35 +1127,27 @@ foreach(CURL_TEST
HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
TIME_WITH_SYS_TIME
HAVE_O_NONBLOCK
- HAVE_GETHOSTBYADDR_R_5
- HAVE_GETHOSTBYADDR_R_7
- HAVE_GETHOSTBYADDR_R_8
- HAVE_GETHOSTBYADDR_R_5_REENTRANT
- HAVE_GETHOSTBYADDR_R_7_REENTRANT
- HAVE_GETHOSTBYADDR_R_8_REENTRANT
HAVE_GETHOSTBYNAME_R_3
HAVE_GETHOSTBYNAME_R_5
HAVE_GETHOSTBYNAME_R_6
HAVE_GETHOSTBYNAME_R_3_REENTRANT
HAVE_GETHOSTBYNAME_R_5_REENTRANT
HAVE_GETHOSTBYNAME_R_6_REENTRANT
- HAVE_SOCKLEN_T
HAVE_IN_ADDR_T
HAVE_BOOL_T
STDC_HEADERS
- RETSIGTYPE_TEST
- HAVE_INET_NTOA_R_DECL
- HAVE_INET_NTOA_R_DECL_REENTRANT
HAVE_GETADDRINFO
HAVE_FILE_OFFSET_BITS
+ HAVE_VARIADIC_MACROS_C99
+ HAVE_VARIADIC_MACROS_GCC
)
curl_internal_test(${CURL_TEST})
-endforeach(CURL_TEST)
+endforeach()
if(HAVE_FILE_OFFSET_BITS)
set(_FILE_OFFSET_BITS 64)
set(CMAKE_REQUIRED_FLAGS "-D_FILE_OFFSET_BITS=64")
-endif(HAVE_FILE_OFFSET_BITS)
+endif()
check_type_size("off_t" SIZEOF_OFF_T)
# include this header to get the type
@@ -976,62 +1162,56 @@ foreach(CURL_TEST
HAVE_GLIBC_STRERROR_R
HAVE_POSIX_STRERROR_R
)
- curl_internal_test_run(${CURL_TEST})
-endforeach(CURL_TEST)
+ curl_internal_test(${CURL_TEST})
+endforeach()
# Check for reentrant
foreach(CURL_TEST
- HAVE_GETHOSTBYADDR_R_5
- HAVE_GETHOSTBYADDR_R_7
- HAVE_GETHOSTBYADDR_R_8
HAVE_GETHOSTBYNAME_R_3
HAVE_GETHOSTBYNAME_R_5
- HAVE_GETHOSTBYNAME_R_6
- HAVE_INET_NTOA_R_DECL_REENTRANT)
+ HAVE_GETHOSTBYNAME_R_6)
if(NOT ${CURL_TEST})
if(${CURL_TEST}_REENTRANT)
set(NEED_REENTRANT 1)
- endif(${CURL_TEST}_REENTRANT)
- endif(NOT ${CURL_TEST})
-endforeach(CURL_TEST)
+ endif()
+ endif()
+endforeach()
if(NEED_REENTRANT)
foreach(CURL_TEST
- HAVE_GETHOSTBYADDR_R_5
- HAVE_GETHOSTBYADDR_R_7
- HAVE_GETHOSTBYADDR_R_8
HAVE_GETHOSTBYNAME_R_3
HAVE_GETHOSTBYNAME_R_5
HAVE_GETHOSTBYNAME_R_6)
set(${CURL_TEST} 0)
if(${CURL_TEST}_REENTRANT)
set(${CURL_TEST} 1)
- endif(${CURL_TEST}_REENTRANT)
- endforeach(CURL_TEST)
-endif(NEED_REENTRANT)
+ endif()
+ endforeach()
+endif()
+
+# Check clock_gettime(CLOCK_MONOTONIC, x) support
+curl_internal_test(HAVE_CLOCK_GETTIME_MONOTONIC)
-if(HAVE_INET_NTOA_R_DECL_REENTRANT)
- set(HAVE_INET_NTOA_R_DECL 1)
- set(NEED_REENTRANT 1)
-endif(HAVE_INET_NTOA_R_DECL_REENTRANT)
+# Check compiler support of __builtin_available()
+curl_internal_test(HAVE_BUILTIN_AVAILABLE)
# Some other minor tests
if(NOT HAVE_IN_ADDR_T)
set(in_addr_t "unsigned long")
-endif(NOT HAVE_IN_ADDR_T)
+endif()
# Fix libz / zlib.h
if(NOT CURL_SPECIAL_LIBZ)
if(NOT HAVE_LIBZ)
set(HAVE_ZLIB_H 0)
- endif(NOT HAVE_LIBZ)
+ endif()
if(NOT HAVE_ZLIB_H)
set(HAVE_LIBZ 0)
- endif(NOT HAVE_ZLIB_H)
-endif(NOT CURL_SPECIAL_LIBZ)
+ endif()
+endif()
# Check for nonblocking
set(HAVE_DISABLED_NONBLOCKING 1)
@@ -1040,16 +1220,7 @@ if(HAVE_FIONBIO OR
HAVE_IOCTLSOCKET_CASE OR
HAVE_O_NONBLOCK)
set(HAVE_DISABLED_NONBLOCKING)
-endif(HAVE_FIONBIO OR
- HAVE_IOCTLSOCKET OR
- HAVE_IOCTLSOCKET_CASE OR
- HAVE_O_NONBLOCK)
-
-if(RETSIGTYPE_TEST)
- set(RETSIGTYPE void)
-else(RETSIGTYPE_TEST)
- set(RETSIGTYPE int)
-endif(RETSIGTYPE_TEST)
+endif()
if(CMAKE_COMPILER_IS_GNUCC AND APPLE)
include(CheckCCompilerFlag)
@@ -1059,30 +1230,12 @@ if(CMAKE_COMPILER_IS_GNUCC AND APPLE)
get_source_file_property(MPRINTF_COMPILE_FLAGS mprintf.c COMPILE_FLAGS)
if(MPRINTF_COMPILE_FLAGS)
set(MPRINTF_COMPILE_FLAGS "${MPRINTF_COMPILE_FLAGS} -Wno-long-double")
- else(MPRINTF_COMPILE_FLAGS)
+ else()
set(MPRINTF_COMPILE_FLAGS "-Wno-long-double")
- endif(MPRINTF_COMPILE_FLAGS)
+ endif()
set_source_files_properties(mprintf.c PROPERTIES
COMPILE_FLAGS ${MPRINTF_COMPILE_FLAGS})
- endif(HAVE_C_FLAG_Wno_long_double)
-endif(CMAKE_COMPILER_IS_GNUCC AND APPLE)
-
-if(HAVE_SOCKLEN_T)
- set(CURL_TYPEOF_CURL_SOCKLEN_T "socklen_t")
- if(WIN32)
- set(CMAKE_EXTRA_INCLUDE_FILES "winsock2.h;ws2tcpip.h")
- elseif(HAVE_SYS_SOCKET_H)
- set(CMAKE_EXTRA_INCLUDE_FILES "sys/socket.h")
endif()
- check_type_size("socklen_t" CURL_SIZEOF_CURL_SOCKLEN_T)
- set(CMAKE_EXTRA_INCLUDE_FILES)
- if(NOT HAVE_CURL_SIZEOF_CURL_SOCKLEN_T)
- message(FATAL_ERROR
- "Check for sizeof socklen_t failed, see CMakeFiles/CMakerror.log")
- endif()
-else()
- set(CURL_TYPEOF_CURL_SOCKLEN_T int)
- set(CURL_SIZEOF_CURL_SOCKLEN_T ${SIZEOF_INT})
endif()
# TODO test which of these headers are required
@@ -1100,22 +1253,72 @@ include(CMake/OtherTests.cmake)
add_definitions(-DHAVE_CONFIG_H)
-# For windows, all compilers used by cmake should support large files
+# For Windows, all compilers used by CMake should support large files
if(WIN32)
set(USE_WIN32_LARGE_FILES ON)
-endif(WIN32)
+
+ # Use the manifest embedded in the Windows Resource
+ set(CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS} -DCURL_EMBED_MANIFEST")
+
+ # Check if crypto functions in wincrypt.h are actually available
+ if(HAVE_WINCRYPT_H)
+ check_symbol_exists(CryptAcquireContext "${CURL_INCLUDES}" USE_WINCRYPT)
+ endif()
+ if(USE_WINCRYPT)
+ set(USE_WIN32_CRYPTO ON)
+ endif()
+
+ # Link required libraries for USE_WIN32_CRYPTO or USE_SCHANNEL
+ if(USE_WIN32_CRYPTO OR USE_SCHANNEL)
+ list(APPEND CURL_LIBS "advapi32" "crypt32")
+ endif()
+endif()
if(MSVC)
+ # Disable default manifest added by CMake
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
+
add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
if(CMAKE_C_FLAGS MATCHES "/W[0-4]")
string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
- else(CMAKE_C_FLAGS MATCHES "/W[0-4]")
+ else()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4")
- endif(CMAKE_C_FLAGS MATCHES "/W[0-4]")
-endif(MSVC)
+ endif()
+
+ # Use multithreaded compilation on VS 2008+
+ if(MSVC_VERSION GREATER_EQUAL 1500)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP")
+ endif()
+endif()
+
+if(CURL_WERROR)
+ if(MSVC_VERSION)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX")
+ else()
+ # this assumes clang or gcc style options
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
+ endif()
+endif()
+
+if(CURL_LTO)
+ if(CMAKE_VERSION VERSION_LESS 3.9)
+ message(FATAL_ERROR "Requested LTO but your cmake version ${CMAKE_VERSION} is to old. You need at least 3.9")
+ endif()
+
+ cmake_policy(SET CMP0069 NEW)
+
+ include(CheckIPOSupported)
+ check_ipo_supported(RESULT CURL_HAS_LTO OUTPUT CURL_LTO_ERROR LANGUAGES C)
+ if(CURL_HAS_LTO)
+ message(STATUS "LTO supported and enabled")
+ else()
+ message(FATAL_ERROR "LTO was requested - but compiler doesn't support it\n${CURL_LTO_ERROR}")
+ endif()
+endif()
+
# Ugly (but functional) way to include "Makefile.inc" by transforming it (= regenerate it).
-function(TRANSFORM_MAKEFILE_INC INPUT_FILE OUTPUT_FILE)
+function(transform_makefile_inc INPUT_FILE OUTPUT_FILE)
file(READ ${INPUT_FILE} MAKEFILE_INC_TEXT)
string(REPLACE "$(top_srcdir)" "\${CURL_SOURCE_DIR}" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT})
string(REPLACE "$(top_builddir)" "\${CURL_BINARY_DIR}" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT})
@@ -1127,9 +1330,17 @@ function(TRANSFORM_MAKEFILE_INC INPUT_FILE OUTPUT_FILE)
string(REGEX REPLACE "\\$\\(([a-zA-Z_][a-zA-Z0-9_]*)\\)" "\${\\1}" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT}) # Replace $() with ${}
string(REGEX REPLACE "@([a-zA-Z_][a-zA-Z0-9_]*)@" "\${\\1}" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT}) # Replace @@ with ${}, even if that may not be read by CMake scripts.
file(WRITE ${OUTPUT_FILE} ${MAKEFILE_INC_TEXT})
-
+ set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${INPUT_FILE}")
endfunction()
+include(GNUInstallDirs)
+
+set(CURL_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
+set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
+set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
+set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake")
+set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake")
+
if(USE_MANUAL)
add_subdirectory(docs)
endif()
@@ -1140,36 +1351,46 @@ if(BUILD_CURL_EXE)
add_subdirectory(src)
endif()
-include(CTest)
+cmake_dependent_option(BUILD_TESTING "Build tests"
+ ON "PERL_FOUND;NOT CURL_DISABLE_TESTS"
+ OFF)
if(BUILD_TESTING)
add_subdirectory(tests)
endif()
# Helper to populate a list (_items) with a label when conditions (the remaining
# args) are satisfied
-function(_add_if label)
- # TODO need to disable policy CMP0054 (CMake 3.1) to allow this indirection
+macro(_add_if label)
+ # needs to be a macro to allow this indirection
if(${ARGN})
- set(_items ${_items} "${label}" PARENT_SCOPE)
+ set(_items ${_items} "${label}")
endif()
-endfunction()
+endmacro()
+
+# NTLM support requires crypto function adaptions from various SSL libs
+# TODO alternative SSL libs tests for SSP1, GNUTLS, NSS
+if(NOT (CURL_DISABLE_CRYPTO_AUTH OR CURL_DISABLE_NTLM) AND
+ (USE_OPENSSL OR USE_MBEDTLS OR USE_DARWINSSL OR USE_WIN32_CRYPTO))
+ set(use_curl_ntlm_core ON)
+endif()
# Clear list and try to detect available features
set(_items)
-_add_if("WinSSL" SSL_ENABLED AND USE_WINDOWS_SSPI)
-_add_if("OpenSSL" SSL_ENABLED AND USE_OPENSSL)
-_add_if("DarwinSSL" SSL_ENABLED AND USE_DARWINSSL)
-_add_if("mbedTLS" SSL_ENABLED AND USE_MBEDTLS)
+_add_if("SSL" SSL_ENABLED)
_add_if("IPv6" ENABLE_IPV6)
-_add_if("unix-sockets" USE_UNIX_SOCKETS)
+_add_if("unixsockets" USE_UNIX_SOCKETS)
_add_if("libz" HAVE_LIBZ)
+_add_if("brotli" HAVE_BROTLI)
+_add_if("zstd" HAVE_ZSTD)
_add_if("AsynchDNS" USE_ARES OR USE_THREADS_POSIX OR USE_THREADS_WIN32)
-_add_if("IDN" HAVE_LIBIDN2)
-_add_if("Largefile" (CURL_SIZEOF_CURL_OFF_T GREATER 4) AND
+_add_if("IDN" HAVE_LIBIDN2 OR USE_WIN32_IDN)
+_add_if("Largefile" (SIZEOF_CURL_OFF_T GREATER 4) AND
((SIZEOF_OFF_T GREATER 4) OR USE_WIN32_LARGE_FILES))
-# TODO SSP1 (WinSSL) check is missing
+# TODO SSP1 (Schannel) check is missing
_add_if("SSPI" USE_WINDOWS_SSPI)
_add_if("GSS-API" HAVE_GSSAPI)
+_add_if("alt-svc" NOT CURL_DISABLE_ALTSVC)
+_add_if("HSTS" NOT CURL_DISABLE_HSTS)
# TODO SSP1 missing for SPNEGO
_add_if("SPNEGO" NOT CURL_DISABLE_CRYPTO_AUTH AND
(HAVE_GSSAPI OR USE_WINDOWS_SSPI))
@@ -1177,15 +1398,20 @@ _add_if("Kerberos" NOT CURL_DISABLE_CRYPTO_AUTH AND
(HAVE_GSSAPI OR USE_WINDOWS_SSPI))
# NTLM support requires crypto function adaptions from various SSL libs
# TODO alternative SSL libs tests for SSP1, GNUTLS, NSS
-if(NOT CURL_DISABLE_CRYPTO_AUTH AND (USE_OPENSSL OR USE_WINDOWS_SSPI OR USE_DARWINSSL OR USE_MBEDTLS))
- _add_if("NTLM" 1)
- # TODO missing option (autoconf: --enable-ntlm-wb)
- _add_if("NTLM_WB" NOT CURL_DISABLE_HTTP AND NTLM_WB_ENABLED)
-endif()
+_add_if("NTLM" NOT (CURL_DISABLE_CRYPTO_AUTH OR CURL_DISABLE_NTLM) AND
+ (use_curl_ntlm_core OR USE_WINDOWS_SSPI))
+# TODO missing option (autoconf: --enable-ntlm-wb)
+_add_if("NTLM_WB" NOT (CURL_DISABLE_CRYPTO_AUTH OR CURL_DISABLE_NTLM) AND
+ (use_curl_ntlm_core OR USE_WINDOWS_SSPI) AND
+ NOT CURL_DISABLE_HTTP AND NTLM_WB_ENABLED)
# TODO missing option (--enable-tls-srp), depends on GNUTLS_SRP/OPENSSL_SRP
_add_if("TLS-SRP" USE_TLS_SRP)
# TODO option --with-nghttp2 tests for nghttp2 lib and nghttp2/nghttp2.h header
_add_if("HTTP2" USE_NGHTTP2)
+_add_if("HTTP3" USE_NGTCP2 OR USE_QUICHE)
+_add_if("MultiSSL" CURL_WITH_MULTI_SSL)
+_add_if("HTTPS-proxy" SSL_ENABLED AND (USE_OPENSSL OR USE_GNUTLS OR USE_NSS))
+_add_if("unicode" ENABLE_UNICODE)
string(REPLACE ";" " " SUPPORT_FEATURES "${_items}")
message(STATUS "Enabled features: ${SUPPORT_FEATURES}")
@@ -1206,20 +1432,43 @@ _add_if("LDAPS" NOT CURL_DISABLE_LDAPS AND
_add_if("DICT" NOT CURL_DISABLE_DICT)
_add_if("TFTP" NOT CURL_DISABLE_TFTP)
_add_if("GOPHER" NOT CURL_DISABLE_GOPHER)
+_add_if("GOPHERS" NOT CURL_DISABLE_GOPHER AND SSL_ENABLED)
_add_if("POP3" NOT CURL_DISABLE_POP3)
_add_if("POP3S" NOT CURL_DISABLE_POP3 AND SSL_ENABLED)
_add_if("IMAP" NOT CURL_DISABLE_IMAP)
_add_if("IMAPS" NOT CURL_DISABLE_IMAP AND SSL_ENABLED)
+_add_if("SMB" NOT CURL_DISABLE_SMB AND
+ use_curl_ntlm_core AND (SIZEOF_CURL_OFF_T GREATER 4))
+_add_if("SMBS" NOT CURL_DISABLE_SMB AND SSL_ENABLED AND
+ use_curl_ntlm_core AND (SIZEOF_CURL_OFF_T GREATER 4))
_add_if("SMTP" NOT CURL_DISABLE_SMTP)
_add_if("SMTPS" NOT CURL_DISABLE_SMTP AND SSL_ENABLED)
-_add_if("SCP" USE_LIBSSH2)
-_add_if("SFTP" USE_LIBSSH2)
+_add_if("SCP" USE_LIBSSH2 OR USE_LIBSSH)
+_add_if("SFTP" USE_LIBSSH2 OR USE_LIBSSH)
_add_if("RTSP" NOT CURL_DISABLE_RTSP)
_add_if("RTMP" USE_LIBRTMP)
-list(SORT _items)
+_add_if("MQTT" NOT CURL_DISABLE_MQTT)
+if(_items)
+ list(SORT _items)
+endif()
string(REPLACE ";" " " SUPPORT_PROTOCOLS "${_items}")
message(STATUS "Enabled protocols: ${SUPPORT_PROTOCOLS}")
+# Clear list and collect SSL backends
+set(_items)
+_add_if("Schannel" SSL_ENABLED AND USE_SCHANNEL)
+_add_if("OpenSSL" SSL_ENABLED AND USE_OPENSSL)
+_add_if("Secure Transport" SSL_ENABLED AND USE_SECTRANSP)
+_add_if("mbedTLS" SSL_ENABLED AND USE_MBEDTLS)
+_add_if("BearSSL" SSL_ENABLED AND USE_BEARSSL)
+_add_if("NSS" SSL_ENABLED AND USE_NSS)
+_add_if("wolfSSL" SSL_ENABLED AND USE_WOLFSSL)
+if(_items)
+ list(SORT _items)
+endif()
+string(REPLACE ";" " " SSL_BACKENDS "${_items}")
+message(STATUS "Enabled SSL backends: ${SSL_BACKENDS}")
+
# curl-config needs the following options to be set.
set(CC "${CMAKE_C_COMPILER}")
# TODO probably put a -D... options here?
@@ -1227,24 +1476,43 @@ set(CONFIGURE_OPTIONS "")
# TODO when to set "-DCURL_STATICLIB" for CPPFLAG_CURL_STATICLIB?
set(CPPFLAG_CURL_STATICLIB "")
set(CURLVERSION "${CURL_VERSION}")
-set(ENABLE_SHARED "yes")
-if(CURL_STATICLIB)
- set(ENABLE_STATIC "yes")
-else()
- set(ENABLE_STATIC "no")
-endif()
set(exec_prefix "\${prefix}")
set(includedir "\${prefix}/include")
set(LDFLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
set(LIBCURL_LIBS "")
set(libdir "${CMAKE_INSTALL_PREFIX}/lib")
foreach(_lib ${CMAKE_C_IMPLICIT_LINK_LIBRARIES} ${CURL_LIBS})
+ if(TARGET "${_lib}")
+ set(_libname "${_lib}")
+ get_target_property(_libtype "${_libname}" TYPE)
+ if(_libtype STREQUAL INTERFACE_LIBRARY)
+ # Interface libraries can occur when an external project embeds curl and
+ # defined targets such as ZLIB::ZLIB by themselves. Ignore these as
+ # reading the LOCATION property will error out. Assume the user won't need
+ # this information in the .pc file.
+ continue()
+ endif()
+ get_target_property(_lib "${_libname}" LOCATION)
+ if(NOT _lib)
+ message(WARNING "Bad lib in library list: ${_libname}")
+ continue()
+ endif()
+ endif()
if(_lib MATCHES ".*/.*" OR _lib MATCHES "^-")
set(LIBCURL_LIBS "${LIBCURL_LIBS} ${_lib}")
else()
set(LIBCURL_LIBS "${LIBCURL_LIBS} -l${_lib}")
endif()
endforeach()
+if(BUILD_SHARED_LIBS)
+ set(ENABLE_SHARED "yes")
+ set(ENABLE_STATIC "no")
+ set(LIBCURL_NO_SHARED "")
+else()
+ set(ENABLE_SHARED "no")
+ set(ENABLE_STATIC "yes")
+ set(LIBCURL_NO_SHARED "${LIBCURL_LIBS}")
+endif()
# "a" (Linux) or "lib" (Windows)
string(REPLACE "." "" libext "${CMAKE_STATIC_LIBRARY_SUFFIX}")
set(prefix "${CMAKE_INSTALL_PREFIX}")
@@ -1255,10 +1523,13 @@ set(REQUIRE_LIB_DEPS "no")
set(VERSIONNUM "${CURL_VERSION_NUM}")
# Finally generate a "curl-config" matching this config
+# Use:
+# * ENABLE_SHARED
+# * ENABLE_STATIC
configure_file("${CURL_SOURCE_DIR}/curl-config.in"
"${CURL_BINARY_DIR}/curl-config" @ONLY)
install(FILES "${CURL_BINARY_DIR}/curl-config"
- DESTINATION bin
+ DESTINATION ${CMAKE_INSTALL_BINDIR}
PERMISSIONS
OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
@@ -1268,18 +1539,41 @@ install(FILES "${CURL_BINARY_DIR}/curl-config"
configure_file("${CURL_SOURCE_DIR}/libcurl.pc.in"
"${CURL_BINARY_DIR}/libcurl.pc" @ONLY)
install(FILES "${CURL_BINARY_DIR}/libcurl.pc"
- DESTINATION lib/pkgconfig)
-
-# This needs to be run very last so other parts of the scripts can take advantage of this.
-if(NOT CURL_CONFIG_HAS_BEEN_RUN_BEFORE)
- set(CURL_CONFIG_HAS_BEEN_RUN_BEFORE 1 CACHE INTERNAL "Flag to track whether this is the first time running CMake or if CMake has been configured before")
-endif()
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
# install headers
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/curl"
- DESTINATION include
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
FILES_MATCHING PATTERN "*.h")
+include(CMakePackageConfigHelpers)
+write_basic_package_version_file(
+ "${version_config}"
+ VERSION ${CURL_VERSION}
+ COMPATIBILITY SameMajorVersion
+)
+
+# Use:
+# * TARGETS_EXPORT_NAME
+# * PROJECT_NAME
+configure_package_config_file(CMake/curl-config.cmake.in
+ "${project_config}"
+ INSTALL_DESTINATION ${CURL_INSTALL_CMAKE_DIR}
+)
+
+if(CURL_ENABLE_EXPORT_TARGET)
+ install(
+ EXPORT "${TARGETS_EXPORT_NAME}"
+ NAMESPACE "${PROJECT_NAME}::"
+ DESTINATION ${CURL_INSTALL_CMAKE_DIR}
+ )
+endif()
+
+install(
+ FILES ${version_config} ${project_config}
+ DESTINATION ${CURL_INSTALL_CMAKE_DIR}
+)
+
# Workaround for MSVS10 to avoid the Dialog Hell
# FIXME: This could be removed with future version of CMake.
if(MSVC_VERSION EQUAL 1600)
diff --git a/curl/COPYING b/curl/COPYING
index 1e45a5e2..48f14475 100644
--- a/curl/COPYING
+++ b/curl/COPYING
@@ -1,6 +1,6 @@
COPYRIGHT AND PERMISSION NOTICE
-Copyright (c) 1996 - 2017, Daniel Stenberg, , and many
+Copyright (c) 1996 - 2021, Daniel Stenberg, , and many
contributors, see the THANKS file.
All rights reserved.
diff --git a/curl/GIT-INFO b/curl/GIT-INFO
new file mode 100644
index 00000000..1d08d74e
--- /dev/null
+++ b/curl/GIT-INFO
@@ -0,0 +1,44 @@
+ _ _ ____ _
+ ___| | | | _ \| |
+ / __| | | | |_) | |
+ | (__| |_| | _ <| |___
+ \___|\___/|_| \_\_____|
+
+GIT-INFO
+
+This file is only present in git - never in release archives. It contains
+information about other files and things that the git repository keeps in its
+inner sanctum.
+
+To build in environments that support configure, after having extracted
+everything from git, do this:
+
+autoreconf -fi
+./configure
+make
+
+ Daniel uses a ./configure line similar to this for easier development:
+
+ ./configure --disable-shared --enable-debug --enable-maintainer-mode
+
+In environments that don't support configure (i.e. Microsoft), do this:
+
+buildconf.bat
+
+
+REQUIREMENTS
+
+ For buildconf (not buildconf.bat) to work, you need the following software
+installed:
+
+ o autoconf 2.57 (or later)
+ o automake 1.7 (or later)
+ o libtool 1.4.2 (or later)
+ o GNU m4 (required by autoconf)
+
+ o nroff + perl
+
+ If you don't have nroff and perl and you for some reason don't want to
+ install them, you can rename the source file src/tool_hugehelp.c.cvs to
+ src/tool_hugehelp.c and avoid having to generate this file. This will
+ give you a stubbed version of the file that doesn't contain actual content.
diff --git a/curl/MacOSX-Framework b/curl/MacOSX-Framework
index e6badcde..c12fd731 100644
--- a/curl/MacOSX-Framework
+++ b/curl/MacOSX-Framework
@@ -1,4 +1,25 @@
-#!/bin/bash
+#!/usr/bin/env bash
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2021, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
# This script performs all of the steps needed to build a
# universal binary libcurl.framework for Mac OS X 10.4 or greater.
#
@@ -82,7 +103,7 @@ MINVER64='-mmacosx-version-min='$MACVER64
if test ! -z $SDK32; then
echo "----Configuring libcurl for 32 bit universal framework..."
make clean
- ./configure --disable-dependency-tracking --disable-static --with-gssapi --with-darwinssl \
+ ./configure --disable-dependency-tracking --disable-static --with-gssapi --with-secure-transport \
CFLAGS="-Os -isysroot $SDK32_DIR $ARCHES32" \
LDFLAGS="-Wl,-syslibroot,$SDK32_DIR $ARCHES32 -Wl,-headerpad_max_install_names" \
CC=$CC
@@ -111,7 +132,7 @@ if test ! -z $SDK32; then
popd
make clean
echo "----Configuring libcurl for 64 bit universal framework..."
- ./configure --disable-dependency-tracking --disable-static --with-gssapi --with-darwinssl \
+ ./configure --disable-dependency-tracking --disable-static --with-gssapi --with-secure-transport \
CFLAGS="-Os -isysroot $SDK64_DIR $ARCHES64" \
LDFLAGS="-Wl,-syslibroot,$SDK64_DIR $ARCHES64 -Wl,-headerpad_max_install_names" \
CC=$CC
diff --git a/curl/Makefile b/curl/Makefile
index 8577c8a1..1a531c15 100644
--- a/curl/Makefile
+++ b/curl/Makefile
@@ -5,11 +5,11 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2017, Daniel Stenberg, , et al.
+# Copyright (C) 1998 - 2021, Daniel Stenberg, , et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
-# are also available at https://curl.haxx.se/docs/copyright.html.
+# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
@@ -25,45 +25,9 @@ all:
make
ssl:
- ./configure --with-ssl
+ ./configure --with-openssl
make
-borland:
- cd lib
- $(MAKE) -f Makefile.b32
- cd ..\src
- $(MAKE) -f Makefile.b32
-
-borland-ssl:
- cd lib
- $(MAKE) -f Makefile.b32 WITH_SSL=1
- cd ..\src
- $(MAKE) -f Makefile.b32 WITH_SSL=1
-
-borland-ssl-zlib:
- cd lib
- $(MAKE) -f Makefile.b32 WITH_SSL=1 WITH_ZLIB=1
- cd ..\src
- $(MAKE) -f Makefile.b32 WITH_SSL=1 WITH_ZLIB=1
-
-borland-clean:
- cd lib
- $(MAKE) -f Makefile.b32 clean
- cd ..\src
- $(MAKE) -f Makefile.b32 clean
-
-watcom: .SYMBOLIC
- cd lib && $(MAKE) -u -f Makefile.Watcom
- cd src && $(MAKE) -u -f Makefile.Watcom
-
-watcom-clean: .SYMBOLIC
- cd lib && $(MAKE) -u -f Makefile.Watcom clean
- cd src && $(MAKE) -u -f Makefile.Watcom clean
-
-watcom-vclean: .SYMBOLIC
- cd lib && $(MAKE) -u -f Makefile.Watcom vclean
- cd src && $(MAKE) -u -f Makefile.Watcom vclean
-
mingw32:
$(MAKE) -C lib -f Makefile.m32
$(MAKE) -C src -f Makefile.m32
@@ -102,7 +66,7 @@ cygwin:
make
cygwin-ssl:
- ./configure --with-ssl
+ ./configure --with-openssl
make
amiga:
diff --git a/curl/Makefile.am b/curl/Makefile.am
index ab8f11cb..16adc983 100644
--- a/curl/Makefile.am
+++ b/curl/Makefile.am
@@ -5,11 +5,11 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2017, Daniel Stenberg, , et al.
+# Copyright (C) 1998 - 2020, Daniel Stenberg, , et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
-# are also available at https://curl.haxx.se/docs/copyright.html.
+# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
@@ -24,13 +24,30 @@ AUTOMAKE_OPTIONS = foreign
ACLOCAL_AMFLAGS = -I m4
-CMAKE_DIST = CMakeLists.txt CMake/CMakeConfigurableFile.in \
- CMake/CurlTests.c CMake/FindGSS.cmake CMake/OtherTests.cmake \
- CMake/Platforms/WindowsCache.cmake CMake/Utilities.cmake \
- CMake/Macros.cmake \
- CMake/CurlSymbolHiding.cmake CMake/FindCARES.cmake \
- CMake/FindLibSSH2.cmake CMake/FindNGHTTP2.cmake \
- CMake/FindMbedTLS.cmake CMake/cmake_uninstall.cmake.in
+CMAKE_DIST = \
+ CMake/cmake_uninstall.cmake.in \
+ CMake/CMakeConfigurableFile.in \
+ CMake/curl-config.cmake.in \
+ CMake/CurlSymbolHiding.cmake \
+ CMake/CurlTests.c \
+ CMake/FindBearSSL.cmake \
+ CMake/FindBrotli.cmake \
+ CMake/FindCARES.cmake \
+ CMake/FindGSS.cmake \
+ CMake/FindLibSSH2.cmake \
+ CMake/FindMbedTLS.cmake \
+ CMake/FindNGHTTP2.cmake \
+ CMake/FindNGHTTP3.cmake \
+ CMake/FindNGTCP2.cmake \
+ CMake/FindNSS.cmake \
+ CMake/FindQUICHE.cmake \
+ CMake/FindWolfSSL.cmake \
+ CMake/FindZstd.cmake \
+ CMake/Macros.cmake \
+ CMake/OtherTests.cmake \
+ CMake/Platforms/WindowsCache.cmake \
+ CMake/Utilities.cmake \
+ CMakeLists.txt
VC6_LIBTMPL = projects/Windows/VC6/lib/libcurl.tmpl
VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp.dist
@@ -95,6 +112,13 @@ VC14_SRCTMPL = projects/Windows/VC14/src/curl.tmpl
VC14_SRCVCXPROJ = projects/Windows/VC14/src/curl.vcxproj.dist
VC14_SRCVCXPROJ_DEPS = $(VC14_SRCTMPL) Makefile.am src/Makefile.inc
+VC15_LIBTMPL = projects/Windows/VC15/lib/libcurl.tmpl
+VC15_LIBVCXPROJ = projects/Windows/VC15/lib/libcurl.vcxproj.dist
+VC15_LIBVCXPROJ_DEPS = $(VC15_LIBTMPL) Makefile.am lib/Makefile.inc
+VC15_SRCTMPL = projects/Windows/VC15/src/curl.tmpl
+VC15_SRCVCXPROJ = projects/Windows/VC15/src/curl.vcxproj.dist
+VC15_SRCVCXPROJ_DEPS = $(VC15_SRCTMPL) Makefile.am src/Makefile.inc
+
VC_DIST = projects/README \
projects/build-openssl.bat \
projects/build-wolfssl.bat \
@@ -134,23 +158,39 @@ VC_DIST = projects/README \
projects/Windows/VC14/lib/libcurl.vcxproj.filters \
projects/Windows/VC14/src/curl.sln \
projects/Windows/VC14/src/curl.vcxproj.filters \
+ projects/Windows/VC15/curl-all.sln \
+ projects/Windows/VC15/lib/libcurl.sln \
+ projects/Windows/VC15/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC15/src/curl.sln \
+ projects/Windows/VC15/src/curl.vcxproj.filters \
projects/generate.bat \
projects/wolfssl_options.h \
projects/wolfssl_override.props
-WINBUILD_DIST = winbuild/BUILD.WINDOWS.txt winbuild/gen_resp_file.bat \
+WINBUILD_DIST = winbuild/README.md winbuild/gen_resp_file.bat \
winbuild/MakefileBuild.vc winbuild/Makefile.vc
-EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \
- RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework scripts/zsh.pl \
- scripts/updatemanpages.pl $(CMAKE_DIST) $(VC_DIST) $(WINBUILD_DIST) \
- lib/libcurl.vers.in buildconf.bat scripts/coverage.sh
-
-CLEANFILES = $(VC6_LIBDSP) $(VC6_SRCDSP) $(VC7_LIBVCPROJ) $(VC7_SRCVCPROJ) \
- $(VC71_LIBVCPROJ) $(VC71_SRCVCPROJ) $(VC8_LIBVCPROJ) $(VC8_SRCVCPROJ) \
- $(VC9_LIBVCPROJ) $(VC9_SRCVCPROJ) $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ) \
- $(VC11_LIBVCXPROJ) $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ) \
- $(VC14_LIBVCXPROJ) $(VC14_SRCVCXPROJ)
+PLAN9_DIST = plan9/include/mkfile \
+ plan9/include/mkfile \
+ plan9/mkfile.proto \
+ plan9/mkfile \
+ plan9/README \
+ plan9/lib/mkfile.inc \
+ plan9/lib/mkfile \
+ plan9/src/mkfile.inc \
+ plan9/src/mkfile
+
+EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \
+ RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework \
+ scripts/updatemanpages.pl $(CMAKE_DIST) \
+ $(VC_DIST) $(WINBUILD_DIST) $(PLAN9_DIST) \
+ lib/libcurl.vers.in buildconf.bat scripts/coverage.sh scripts/completion.pl
+
+CLEANFILES = $(VC6_LIBDSP) $(VC6_SRCDSP) $(VC7_LIBVCPROJ) $(VC7_SRCVCPROJ) \
+ $(VC71_LIBVCPROJ) $(VC71_SRCVCPROJ) $(VC8_LIBVCPROJ) $(VC8_SRCVCPROJ) \
+ $(VC9_LIBVCPROJ) $(VC9_SRCVCPROJ) $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ) \
+ $(VC11_LIBVCXPROJ) $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ) \
+ $(VC14_LIBVCXPROJ) $(VC14_SRCVCXPROJ) $(VC15_LIBVCXPROJ) $(VC15_SRCVCXPROJ)
bin_SCRIPTS = curl-config
@@ -216,15 +256,6 @@ examples:
check-docs:
@(cd docs/libcurl; $(MAKE) check)
-# This is a hook to have 'make clean' also clean up the docs and the tests
-# dir. The extra check for the Makefiles being present is necessary because
-# 'make distcheck' will make clean first in these directories _before_ it runs
-# this hook.
-clean-local:
- @(if test -f tests/Makefile; then cd tests; $(MAKE) clean; fi)
- @(if test -f docs/Makefile; then cd docs; $(MAKE) clean; fi)
-
-#
# Build source and binary rpms. For rpm-3.0 and above, the ~/.rpmmacros
# must contain the following line:
# %_topdir /home/loic/local/rpm
@@ -274,15 +305,15 @@ cygwinbin:
# We extend the standard install with a custom hook:
install-data-hook:
- cd include && $(MAKE) install
- cd docs && $(MAKE) install
- cd docs/libcurl && $(MAKE) install
+ (cd include && $(MAKE) install)
+ (cd docs && $(MAKE) install)
+ (cd docs/libcurl && $(MAKE) install)
# We extend the standard uninstall with a custom hook:
uninstall-hook:
- cd include && $(MAKE) uninstall
- cd docs && $(MAKE) uninstall
- cd docs/libcurl && $(MAKE) uninstall
+ (cd include && $(MAKE) uninstall)
+ (cd docs && $(MAKE) uninstall)
+ (cd docs/libcurl && $(MAKE) uninstall)
ca-bundle: lib/mk-ca-bundle.pl
@echo "generating a fresh ca-bundle.crt"
@@ -293,25 +324,31 @@ ca-firefox: lib/firefox-db2pem.sh
./lib/firefox-db2pem.sh lib/ca-bundle.crt
checksrc:
- cd lib && $(MAKE) checksrc
- cd src && $(MAKE) checksrc
- cd tests && $(MAKE) checksrc
- cd include/curl && $(MAKE) checksrc
- cd docs/examples && $(MAKE) checksrc
+ (cd lib && $(MAKE) checksrc)
+ (cd src && $(MAKE) checksrc)
+ (cd tests && $(MAKE) checksrc)
+ (cd include/curl && $(MAKE) checksrc)
+ (cd docs/examples && $(MAKE) checksrc)
+ (cd packages && $(MAKE) checksrc)
.PHONY: vc-ide
-vc-ide: $(VC6_LIBDSP_DEPS) $(VC6_SRCDSP_DEPS) $(VC7_LIBVCPROJ_DEPS) \
- $(VC7_SRCVCPROJ_DEPS) $(VC71_LIBVCPROJ_DEPS) $(VC71_SRCVCPROJ_DEPS) \
- $(VC8_LIBVCPROJ_DEPS) $(VC8_SRCVCPROJ_DEPS) $(VC9_LIBVCPROJ_DEPS) \
- $(VC9_SRCVCPROJ_DEPS) $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \
- $(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS) \
- $(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS)
+vc-ide: $(VC6_LIBDSP_DEPS) $(VC6_SRCDSP_DEPS) $(VC7_LIBVCPROJ_DEPS) \
+ $(VC7_SRCVCPROJ_DEPS) $(VC71_LIBVCPROJ_DEPS) $(VC71_SRCVCPROJ_DEPS) \
+ $(VC8_LIBVCPROJ_DEPS) $(VC8_SRCVCPROJ_DEPS) $(VC9_LIBVCPROJ_DEPS) \
+ $(VC9_SRCVCPROJ_DEPS) $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \
+ $(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS) \
+ $(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS) \
+ $(VC15_LIBVCXPROJ_DEPS) $(VC15_SRCVCXPROJ_DEPS)
@(win32_lib_srcs='$(LIB_CFILES)'; \
win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
win32_lib_rc='$(LIB_RCFILES)'; \
win32_lib_vauth_srcs='$(LIB_VAUTH_CFILES)'; \
win32_lib_vauth_hdrs='$(LIB_VAUTH_HFILES)'; \
+ win32_lib_vquic_srcs='$(LIB_VQUIC_CFILES)'; \
+ win32_lib_vquic_hdrs='$(LIB_VQUIC_HFILES)'; \
+ win32_lib_vssh_srcs='$(LIB_VSSH_CFILES)'; \
+ win32_lib_vssh_hdrs='$(LIB_VSSH_HFILES)'; \
win32_lib_vtls_srcs='$(LIB_VTLS_CFILES)'; \
win32_lib_vtls_hdrs='$(LIB_VTLS_HFILES)'; \
win32_src_srcs='$(CURL_CFILES)'; \
@@ -324,6 +361,10 @@ vc-ide: $(VC6_LIBDSP_DEPS) $(VC6_SRCDSP_DEPS) $(VC7_LIBVCPROJ_DEPS) \
sorted_lib_hdrs=`for file in $$win32_lib_hdrs; do echo $$file; done | sort`; \
sorted_lib_vauth_srcs=`for file in $$win32_lib_vauth_srcs; do echo $$file; done | sort`; \
sorted_lib_vauth_hdrs=`for file in $$win32_lib_vauth_hdrs; do echo $$file; done | sort`; \
+ sorted_lib_vquic_srcs=`for file in $$win32_lib_vquic_srcs; do echo $$file; done | sort`; \
+ sorted_lib_vquic_hdrs=`for file in $$win32_lib_vquic_hdrs; do echo $$file; done | sort`; \
+ sorted_lib_vssh_srcs=`for file in $$win32_lib_vssh_srcs; do echo $$file; done | sort`; \
+ sorted_lib_vssh_hdrs=`for file in $$win32_lib_vssh_hdrs; do echo $$file; done | sort`; \
sorted_lib_vtls_srcs=`for file in $$win32_lib_vtls_srcs; do echo $$file; done | sort`; \
sorted_lib_vtls_hdrs=`for file in $$win32_lib_vtls_hdrs; do echo $$file; done | sort`; \
sorted_src_srcs=`for file in $$win32_src_srcs; do echo $$file; done | sort`; \
@@ -335,10 +376,15 @@ vc-ide: $(VC6_LIBDSP_DEPS) $(VC6_SRCDSP_DEPS) $(VC7_LIBVCPROJ_DEPS) \
function gen_element(type, dir, file)\
{\
sub(/vauth\//, "", file);\
+ sub(/vquic\//, "", file);\
+ sub(/vssh\//, "", file);\
sub(/vtls\//, "", file);\
\
spaces=" ";\
- if(dir == "lib\\vauth" || dir == "lib\\vtls")\
+ if(dir == "lib\\vauth" ||\
+ dir == "lib\\vquic" ||\
+ dir == "lib\\vssh" ||\
+ dir == "lib\\vtls")\
tabs=" ";\
else\
tabs=" ";\
@@ -400,6 +446,22 @@ function gen_element(type, dir, file)\
split(lib_vauth_hdrs, arr);\
for(val in arr) gen_element(proj_type, "lib\\vauth", arr[val]);\
}\
+ else if($$0 == "CURL_LIB_VQUIC_C_FILES") {\
+ split(lib_vquic_srcs, arr);\
+ for(val in arr) gen_element(proj_type, "lib\\vquic", arr[val]);\
+ }\
+ else if($$0 == "CURL_LIB_VQUIC_H_FILES") {\
+ split(lib_vquic_hdrs, arr);\
+ for(val in arr) gen_element(proj_type, "lib\\vquic", arr[val]);\
+ }\
+ else if($$0 == "CURL_LIB_VSSH_C_FILES") {\
+ split(lib_vssh_srcs, arr);\
+ for(val in arr) gen_element(proj_type, "lib\\vssh", arr[val]);\
+ }\
+ else if($$0 == "CURL_LIB_VSSH_H_FILES") {\
+ split(lib_vssh_hdrs, arr);\
+ for(val in arr) gen_element(proj_type, "lib\\vssh", arr[val]);\
+ }\
else if($$0 == "CURL_LIB_VTLS_C_FILES") {\
split(lib_vtls_srcs, arr);\
for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\
@@ -445,6 +507,10 @@ function gen_element(type, dir, file)\
-v lib_rc="$$win32_lib_rc" \
-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
+ -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
+ -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
+ -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
+ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
"$$awk_code" $(srcdir)/$(VC6_LIBTMPL) > $(VC6_LIBDSP) || { exit 1; }; \
@@ -465,6 +531,10 @@ function gen_element(type, dir, file)\
-v lib_rc="$$win32_lib_rc" \
-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
+ -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
+ -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
+ -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
+ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
"$$awk_code" $(srcdir)/$(VC7_LIBTMPL) > $(VC7_LIBVCPROJ) || { exit 1; }; \
@@ -485,6 +555,10 @@ function gen_element(type, dir, file)\
-v lib_rc="$$win32_lib_rc" \
-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
+ -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
+ -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
+ -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
+ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
"$$awk_code" $(srcdir)/$(VC71_LIBTMPL) > $(VC71_LIBVCPROJ) || { exit 1; }; \
@@ -505,6 +579,10 @@ function gen_element(type, dir, file)\
-v lib_rc="$$win32_lib_rc" \
-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
+ -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
+ -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
+ -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
+ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
"$$awk_code" $(srcdir)/$(VC8_LIBTMPL) > $(VC8_LIBVCPROJ) || { exit 1; }; \
@@ -525,6 +603,10 @@ function gen_element(type, dir, file)\
-v lib_rc="$$win32_lib_rc" \
-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
+ -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
+ -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
+ -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
+ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
"$$awk_code" $(srcdir)/$(VC9_LIBTMPL) > $(VC9_LIBVCPROJ) || { exit 1; }; \
@@ -545,6 +627,10 @@ function gen_element(type, dir, file)\
-v lib_rc="$$win32_lib_rc" \
-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
+ -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
+ -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
+ -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
+ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
"$$awk_code" $(srcdir)/$(VC10_LIBTMPL) > $(VC10_LIBVCXPROJ) || { exit 1; }; \
@@ -565,6 +651,10 @@ function gen_element(type, dir, file)\
-v lib_rc="$$win32_lib_rc" \
-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
+ -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
+ -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
+ -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
+ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
"$$awk_code" $(srcdir)/$(VC11_LIBTMPL) > $(VC11_LIBVCXPROJ) || { exit 1; }; \
@@ -585,6 +675,10 @@ function gen_element(type, dir, file)\
-v lib_rc="$$win32_lib_rc" \
-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
+ -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
+ -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
+ -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
+ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
"$$awk_code" $(srcdir)/$(VC12_LIBTMPL) > $(VC12_LIBVCXPROJ) || { exit 1; }; \
@@ -605,6 +699,10 @@ function gen_element(type, dir, file)\
-v lib_rc="$$win32_lib_rc" \
-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
+ -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
+ -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
+ -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
+ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
"$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \
@@ -616,4 +714,32 @@ function gen_element(type, dir, file)\
-v src_rc="$$win32_src_rc" \
-v src_x_srcs="$$sorted_src_x_srcs" \
-v src_x_hdrs="$$sorted_src_x_hdrs" \
- "$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; };)
+ "$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC15_LIBVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v lib_srcs="$$sorted_lib_srcs" \
+ -v lib_hdrs="$$sorted_lib_hdrs" \
+ -v lib_rc="$$win32_lib_rc" \
+ -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
+ -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
+ -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
+ -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
+ -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
+ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
+ -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+ -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC15_LIBTMPL) > $(VC15_LIBVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC15_SRCVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v src_srcs="$$sorted_src_srcs" \
+ -v src_hdrs="$$sorted_src_hdrs" \
+ -v src_rc="$$win32_src_rc" \
+ -v src_x_srcs="$$sorted_src_x_srcs" \
+ -v src_x_hdrs="$$sorted_src_x_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC15_SRCTMPL) > $(VC15_SRCVCXPROJ) || { exit 1; };)
+
+tidy:
+ (cd src && $(MAKE) tidy)
+ (cd lib && $(MAKE) tidy)
diff --git a/curl/Makefile.dist b/curl/Makefile.dist
new file mode 100644
index 00000000..1a531c15
--- /dev/null
+++ b/curl/Makefile.dist
@@ -0,0 +1,115 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2021, Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+
+all:
+ ./configure
+ make
+
+ssl:
+ ./configure --with-openssl
+ make
+
+mingw32:
+ $(MAKE) -C lib -f Makefile.m32
+ $(MAKE) -C src -f Makefile.m32
+
+mingw32-clean:
+ $(MAKE) -C lib -f Makefile.m32 clean
+ $(MAKE) -C src -f Makefile.m32 clean
+ $(MAKE) -C docs/examples -f Makefile.m32 clean
+
+mingw32-vclean mingw32-distclean:
+ $(MAKE) -C lib -f Makefile.m32 vclean
+ $(MAKE) -C src -f Makefile.m32 vclean
+ $(MAKE) -C docs/examples -f Makefile.m32 vclean
+
+mingw32-examples%:
+ $(MAKE) -C docs/examples -f Makefile.m32 CFG=$@
+
+mingw32%:
+ $(MAKE) -C lib -f Makefile.m32 CFG=$@
+ $(MAKE) -C src -f Makefile.m32 CFG=$@
+
+vc:
+ cd winbuild
+ nmake /f Makefile.vc MACHINE=x86
+
+vc-x64:
+ cd winbuild
+ nmake /f Makefile.vc MACHINE=x64
+
+djgpp:
+ $(MAKE) -C lib -f Makefile.dj
+ $(MAKE) -C src -f Makefile.dj
+
+cygwin:
+ ./configure
+ make
+
+cygwin-ssl:
+ ./configure --with-openssl
+ make
+
+amiga:
+ cd ./lib && make -f makefile.amiga
+ cd ./src && make -f makefile.amiga
+
+netware:
+ $(MAKE) -C lib -f Makefile.netware
+ $(MAKE) -C src -f Makefile.netware
+
+netware-clean:
+ $(MAKE) -C lib -f Makefile.netware clean
+ $(MAKE) -C src -f Makefile.netware clean
+ $(MAKE) -C docs/examples -f Makefile.netware clean
+
+netware-vclean netware-distclean:
+ $(MAKE) -C lib -f Makefile.netware vclean
+ $(MAKE) -C src -f Makefile.netware vclean
+ $(MAKE) -C docs/examples -f Makefile.netware vclean
+
+netware-install:
+ $(MAKE) -C lib -f Makefile.netware install
+ $(MAKE) -C src -f Makefile.netware install
+
+netware-examples-%:
+ $(MAKE) -C docs/examples -f Makefile.netware CFG=$@
+
+netware-%:
+ $(MAKE) -C lib -f Makefile.netware CFG=$@
+ $(MAKE) -C src -f Makefile.netware CFG=$@
+
+unix: all
+
+unix-ssl: ssl
+
+linux: all
+
+linux-ssl: ssl
+
+ca-bundle: lib/mk-ca-bundle.pl
+ @echo "generate a fresh ca-bundle.crt"
+ @perl $< -b -l -u lib/ca-bundle.crt
+
+ca-firefox: lib/firefox-db2pem.sh
+ @echo "generate a fresh ca-bundle.crt"
+ ./lib/firefox-db2pem.sh lib/ca-bundle.crt
diff --git a/curl/Makefile.in b/curl/Makefile.in
deleted file mode 100644
index 711e7015..00000000
--- a/curl/Makefile.in
+++ /dev/null
@@ -1,1780 +0,0 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2017, Daniel Stenberg, , et al.
-#
-# This software is licensed as described in the file COPYING, which
-# you should have received as part of this distribution. The terms
-# are also available at https://curl.haxx.se/docs/copyright.html.
-#
-# You may opt to use, copy, modify, merge, publish, distribute and/or sell
-# copies of the Software, and permit persons to whom the Software is
-# furnished to do so, under the terms of the COPYING file.
-#
-# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-# KIND, either express or implied.
-#
-###########################################################################
-
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2016, Daniel Stenberg, , et al.
-#
-# This software is licensed as described in the file COPYING, which
-# you should have received as part of this distribution. The terms
-# are also available at https://curl.haxx.se/docs/copyright.html.
-#
-# You may opt to use, copy, modify, merge, publish, distribute and/or sell
-# copies of the Software, and permit persons to whom the Software is
-# furnished to do so, under the terms of the COPYING file.
-#
-# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-# KIND, either express or implied.
-#
-###########################################################################
-
-# ./src/Makefile.inc
-# Using the backslash as line continuation character might be problematic
-# with some make flavours, as Watcom's wmake showed us already. If we
-# ever want to change this in a portable manner then we should consider
-# this idea (posted to the libcurl list by Adam Kellas):
-# CSRC1 = file1.c file2.c file3.c
-# CSRC2 = file4.c file5.c file6.c
-# CSOURCES = $(CSRC1) $(CSRC2)
-
-
-VPATH = @srcdir@
-am__is_gnu_make = { \
- if test -z '$(MAKELEVEL)'; then \
- false; \
- elif test -n '$(MAKE_HOST)'; then \
- true; \
- elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
- true; \
- else \
- false; \
- fi; \
-}
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = .
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_code_coverage.m4 \
- $(top_srcdir)/m4/curl-compilers.m4 \
- $(top_srcdir)/m4/curl-confopts.m4 \
- $(top_srcdir)/m4/curl-functions.m4 \
- $(top_srcdir)/m4/curl-openssl.m4 \
- $(top_srcdir)/m4/curl-override.m4 \
- $(top_srcdir)/m4/curl-reentrant.m4 $(top_srcdir)/m4/libtool.m4 \
- $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
- $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
- $(top_srcdir)/m4/xc-am-iface.m4 \
- $(top_srcdir)/m4/xc-cc-check.m4 \
- $(top_srcdir)/m4/xc-lt-iface.m4 \
- $(top_srcdir)/m4/xc-translit.m4 \
- $(top_srcdir)/m4/xc-val-flgs.m4 \
- $(top_srcdir)/m4/zz40-xc-ovr.m4 \
- $(top_srcdir)/m4/zz50-xc-ovr.m4 \
- $(top_srcdir)/m4/zz60-xc-ovr.m4 $(top_srcdir)/acinclude.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
- $(am__configure_deps) $(am__DIST_COMMON)
-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno config.status.lineno
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/lib/curl_config.h
-CONFIG_CLEAN_FILES = curl-config libcurl.pc
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgconfigdir)"
-SCRIPTS = $(bin_SCRIPTS)
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
- ctags-recursive dvi-recursive html-recursive info-recursive \
- install-data-recursive install-dvi-recursive \
- install-exec-recursive install-html-recursive \
- install-info-recursive install-pdf-recursive \
- install-ps-recursive install-recursive installcheck-recursive \
- installdirs-recursive pdf-recursive ps-recursive \
- tags-recursive uninstall-recursive
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-DATA = $(pkgconfig_DATA)
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
- distclean-recursive maintainer-clean-recursive
-am__recursive_targets = \
- $(RECURSIVE_TARGETS) \
- $(RECURSIVE_CLEAN_TARGETS) \
- $(am__extra_recursive_targets)
-AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
- cscope distdir dist dist-all distcheck
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates. Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
- BEGIN { nonempty = 0; } \
- { items[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique. This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
- list='$(am__tagged_files)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-CSCOPE = cscope
-am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/curl-config.in \
- $(srcdir)/lib/Makefile.inc $(srcdir)/libcurl.pc.in \
- $(srcdir)/src/Makefile.inc COPYING README compile config.guess \
- config.sub depcomp install-sh ltmain.sh missing
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(PACKAGE)-$(VERSION)
-top_distdir = $(distdir)
-am__remove_distdir = \
- if test -d "$(distdir)"; then \
- find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
- && rm -rf "$(distdir)" \
- || { sleep 5 && rm -rf "$(distdir)"; }; \
- else :; fi
-am__post_remove_distdir = $(am__remove_distdir)
-am__relativize = \
- dir0=`pwd`; \
- sed_first='s,^\([^/]*\)/.*$$,\1,'; \
- sed_rest='s,^[^/]*/*,,'; \
- sed_last='s,^.*/\([^/]*\)$$,\1,'; \
- sed_butlast='s,/*[^/]*$$,,'; \
- while test -n "$$dir1"; do \
- first=`echo "$$dir1" | sed -e "$$sed_first"`; \
- if test "$$first" != "."; then \
- if test "$$first" = ".."; then \
- dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
- dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
- else \
- first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
- if test "$$first2" = "$$first"; then \
- dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
- else \
- dir2="../$$dir2"; \
- fi; \
- dir0="$$dir0"/"$$first"; \
- fi; \
- fi; \
- dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
- done; \
- reldir="$$dir2"
-DIST_ARCHIVES = $(distdir).tar.gz
-GZIP_ENV = --best
-DIST_TARGETS = dist-gzip
-distuninstallcheck_listfiles = find . -type f -print
-am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
- | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
-distcleancheck_listfiles = find . -type f -print
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BLANK_AT_MAKETIME = @BLANK_AT_MAKETIME@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@
-CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
-CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
-CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
-CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
-CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
-CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@
-CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPFLAG_CURL_STATICLIB = @CPPFLAG_CURL_STATICLIB@
-CURLVERSION = @CURLVERSION@
-CURL_CA_BUNDLE = @CURL_CA_BUNDLE@
-CURL_CFLAG_EXTRAS = @CURL_CFLAG_EXTRAS@
-CURL_DISABLE_DICT = @CURL_DISABLE_DICT@
-CURL_DISABLE_FILE = @CURL_DISABLE_FILE@
-CURL_DISABLE_FTP = @CURL_DISABLE_FTP@
-CURL_DISABLE_GOPHER = @CURL_DISABLE_GOPHER@
-CURL_DISABLE_HTTP = @CURL_DISABLE_HTTP@
-CURL_DISABLE_IMAP = @CURL_DISABLE_IMAP@
-CURL_DISABLE_LDAP = @CURL_DISABLE_LDAP@
-CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
-CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
-CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
-CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
-CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
-CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
-CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
-CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
-CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
-CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
-CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
-CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
-CYGPATH_W = @CYGPATH_W@
-DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ENABLE_SHARED = @ENABLE_SHARED@
-ENABLE_STATIC = @ENABLE_STATIC@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GCOV = @GCOV@
-GENHTML = @GENHTML@
-GREP = @GREP@
-HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
-HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
-HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
-IDN_ENABLED = @IDN_ENABLED@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-IPV6_ENABLED = @IPV6_ENABLED@
-LCOV = @LCOV@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBCURL_LIBS = @LIBCURL_LIBS@
-LIBMETALINK_CPPFLAGS = @LIBMETALINK_CPPFLAGS@
-LIBMETALINK_LDFLAGS = @LIBMETALINK_LDFLAGS@
-LIBMETALINK_LIBS = @LIBMETALINK_LIBS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MANOPT = @MANOPT@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NROFF = @NROFF@
-NSS_LIBS = @NSS_LIBS@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PKGADD_NAME = @PKGADD_NAME@
-PKGADD_PKG = @PKGADD_PKG@
-PKGADD_VENDOR = @PKGADD_VENDOR@
-PKGCONFIG = @PKGCONFIG@
-RANDOM_FILE = @RANDOM_FILE@
-RANLIB = @RANLIB@
-REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SSL_ENABLED = @SSL_ENABLED@
-SSL_LIBS = @SSL_LIBS@
-STRIP = @STRIP@
-SUPPORT_FEATURES = @SUPPORT_FEATURES@
-SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
-USE_ARES = @USE_ARES@
-USE_AXTLS = @USE_AXTLS@
-USE_CYASSL = @USE_CYASSL@
-USE_DARWINSSL = @USE_DARWINSSL@
-USE_GNUTLS = @USE_GNUTLS@
-USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
-USE_LIBRTMP = @USE_LIBRTMP@
-USE_LIBSSH2 = @USE_LIBSSH2@
-USE_MBEDTLS = @USE_MBEDTLS@
-USE_NGHTTP2 = @USE_NGHTTP2@
-USE_NSS = @USE_NSS@
-USE_OPENLDAP = @USE_OPENLDAP@
-USE_POLARSSL = @USE_POLARSSL@
-USE_SCHANNEL = @USE_SCHANNEL@
-USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
-USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
-VERSION = @VERSION@
-VERSIONNUM = @VERSIONNUM@
-ZLIB_LIBS = @ZLIB_LIBS@
-ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-libext = @libext@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-runstatedir = @runstatedir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-subdirs = @subdirs@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = foreign
-ACLOCAL_AMFLAGS = -I m4
-CMAKE_DIST = CMakeLists.txt CMake/CMakeConfigurableFile.in \
- CMake/CurlTests.c CMake/FindGSS.cmake CMake/OtherTests.cmake \
- CMake/Platforms/WindowsCache.cmake CMake/Utilities.cmake \
- CMake/Macros.cmake \
- CMake/CurlSymbolHiding.cmake CMake/FindCARES.cmake \
- CMake/FindLibSSH2.cmake CMake/FindNGHTTP2.cmake \
- CMake/FindMbedTLS.cmake CMake/cmake_uninstall.cmake.in
-
-VC6_LIBTMPL = projects/Windows/VC6/lib/libcurl.tmpl
-VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp.dist
-VC6_LIBDSP_DEPS = $(VC6_LIBTMPL) Makefile.am lib/Makefile.inc
-VC6_SRCTMPL = projects/Windows/VC6/src/curl.tmpl
-VC6_SRCDSP = projects/Windows/VC6/src/curl.dsp.dist
-VC6_SRCDSP_DEPS = $(VC6_SRCTMPL) Makefile.am src/Makefile.inc
-VC7_LIBTMPL = projects/Windows/VC7/lib/libcurl.tmpl
-VC7_LIBVCPROJ = projects/Windows/VC7/lib/libcurl.vcproj.dist
-VC7_LIBVCPROJ_DEPS = $(VC7_LIBTMPL) Makefile.am lib/Makefile.inc
-VC7_SRCTMPL = projects/Windows/VC7/src/curl.tmpl
-VC7_SRCVCPROJ = projects/Windows/VC7/src/curl.vcproj.dist
-VC7_SRCVCPROJ_DEPS = $(VC7_SRCTMPL) Makefile.am src/Makefile.inc
-VC71_LIBTMPL = projects/Windows/VC7.1/lib/libcurl.tmpl
-VC71_LIBVCPROJ = projects/Windows/VC7.1/lib/libcurl.vcproj.dist
-VC71_LIBVCPROJ_DEPS = $(VC71_LIBTMPL) Makefile.am lib/Makefile.inc
-VC71_SRCTMPL = projects/Windows/VC7.1/src/curl.tmpl
-VC71_SRCVCPROJ = projects/Windows/VC7.1/src/curl.vcproj.dist
-VC71_SRCVCPROJ_DEPS = $(VC71_SRCTMPL) Makefile.am src/Makefile.inc
-VC8_LIBTMPL = projects/Windows/VC8/lib/libcurl.tmpl
-VC8_LIBVCPROJ = projects/Windows/VC8/lib/libcurl.vcproj.dist
-VC8_LIBVCPROJ_DEPS = $(VC8_LIBTMPL) Makefile.am lib/Makefile.inc
-VC8_SRCTMPL = projects/Windows/VC8/src/curl.tmpl
-VC8_SRCVCPROJ = projects/Windows/VC8/src/curl.vcproj.dist
-VC8_SRCVCPROJ_DEPS = $(VC8_SRCTMPL) Makefile.am src/Makefile.inc
-VC9_LIBTMPL = projects/Windows/VC9/lib/libcurl.tmpl
-VC9_LIBVCPROJ = projects/Windows/VC9/lib/libcurl.vcproj.dist
-VC9_LIBVCPROJ_DEPS = $(VC9_LIBTMPL) Makefile.am lib/Makefile.inc
-VC9_SRCTMPL = projects/Windows/VC9/src/curl.tmpl
-VC9_SRCVCPROJ = projects/Windows/VC9/src/curl.vcproj.dist
-VC9_SRCVCPROJ_DEPS = $(VC9_SRCTMPL) Makefile.am src/Makefile.inc
-VC10_LIBTMPL = projects/Windows/VC10/lib/libcurl.tmpl
-VC10_LIBVCXPROJ = projects/Windows/VC10/lib/libcurl.vcxproj.dist
-VC10_LIBVCXPROJ_DEPS = $(VC10_LIBTMPL) Makefile.am lib/Makefile.inc
-VC10_SRCTMPL = projects/Windows/VC10/src/curl.tmpl
-VC10_SRCVCXPROJ = projects/Windows/VC10/src/curl.vcxproj.dist
-VC10_SRCVCXPROJ_DEPS = $(VC10_SRCTMPL) Makefile.am src/Makefile.inc
-VC11_LIBTMPL = projects/Windows/VC11/lib/libcurl.tmpl
-VC11_LIBVCXPROJ = projects/Windows/VC11/lib/libcurl.vcxproj.dist
-VC11_LIBVCXPROJ_DEPS = $(VC11_LIBTMPL) Makefile.am lib/Makefile.inc
-VC11_SRCTMPL = projects/Windows/VC11/src/curl.tmpl
-VC11_SRCVCXPROJ = projects/Windows/VC11/src/curl.vcxproj.dist
-VC11_SRCVCXPROJ_DEPS = $(VC11_SRCTMPL) Makefile.am src/Makefile.inc
-VC12_LIBTMPL = projects/Windows/VC12/lib/libcurl.tmpl
-VC12_LIBVCXPROJ = projects/Windows/VC12/lib/libcurl.vcxproj.dist
-VC12_LIBVCXPROJ_DEPS = $(VC12_LIBTMPL) Makefile.am lib/Makefile.inc
-VC12_SRCTMPL = projects/Windows/VC12/src/curl.tmpl
-VC12_SRCVCXPROJ = projects/Windows/VC12/src/curl.vcxproj.dist
-VC12_SRCVCXPROJ_DEPS = $(VC12_SRCTMPL) Makefile.am src/Makefile.inc
-VC14_LIBTMPL = projects/Windows/VC14/lib/libcurl.tmpl
-VC14_LIBVCXPROJ = projects/Windows/VC14/lib/libcurl.vcxproj.dist
-VC14_LIBVCXPROJ_DEPS = $(VC14_LIBTMPL) Makefile.am lib/Makefile.inc
-VC14_SRCTMPL = projects/Windows/VC14/src/curl.tmpl
-VC14_SRCVCXPROJ = projects/Windows/VC14/src/curl.vcxproj.dist
-VC14_SRCVCXPROJ_DEPS = $(VC14_SRCTMPL) Makefile.am src/Makefile.inc
-VC_DIST = projects/README \
- projects/build-openssl.bat \
- projects/build-wolfssl.bat \
- projects/checksrc.bat \
- projects/Windows/VC6/curl-all.dsw \
- projects/Windows/VC6/lib/libcurl.dsw \
- projects/Windows/VC6/src/curl.dsw \
- projects/Windows/VC7/curl-all.sln \
- projects/Windows/VC7/lib/libcurl.sln \
- projects/Windows/VC7/src/curl.sln \
- projects/Windows/VC7.1/curl-all.sln \
- projects/Windows/VC7.1/lib/libcurl.sln \
- projects/Windows/VC7.1/src/curl.sln \
- projects/Windows/VC8/curl-all.sln \
- projects/Windows/VC8/lib/libcurl.sln \
- projects/Windows/VC8/src/curl.sln \
- projects/Windows/VC9/curl-all.sln \
- projects/Windows/VC9/lib/libcurl.sln \
- projects/Windows/VC9/src/curl.sln \
- projects/Windows/VC10/curl-all.sln \
- projects/Windows/VC10/lib/libcurl.sln \
- projects/Windows/VC10/lib/libcurl.vcxproj.filters \
- projects/Windows/VC10/src/curl.sln \
- projects/Windows/VC10/src/curl.vcxproj.filters \
- projects/Windows/VC11/curl-all.sln \
- projects/Windows/VC11/lib/libcurl.sln \
- projects/Windows/VC11/lib/libcurl.vcxproj.filters \
- projects/Windows/VC11/src/curl.sln \
- projects/Windows/VC11/src/curl.vcxproj.filters \
- projects/Windows/VC12/curl-all.sln \
- projects/Windows/VC12/lib/libcurl.sln \
- projects/Windows/VC12/lib/libcurl.vcxproj.filters \
- projects/Windows/VC12/src/curl.sln \
- projects/Windows/VC12/src/curl.vcxproj.filters \
- projects/Windows/VC14/curl-all.sln \
- projects/Windows/VC14/lib/libcurl.sln \
- projects/Windows/VC14/lib/libcurl.vcxproj.filters \
- projects/Windows/VC14/src/curl.sln \
- projects/Windows/VC14/src/curl.vcxproj.filters \
- projects/generate.bat \
- projects/wolfssl_options.h \
- projects/wolfssl_override.props
-
-WINBUILD_DIST = winbuild/BUILD.WINDOWS.txt winbuild/gen_resp_file.bat \
- winbuild/MakefileBuild.vc winbuild/Makefile.vc
-
-EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \
- RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework scripts/zsh.pl \
- scripts/updatemanpages.pl $(CMAKE_DIST) $(VC_DIST) $(WINBUILD_DIST) \
- lib/libcurl.vers.in buildconf.bat scripts/coverage.sh
-
-CLEANFILES = $(VC6_LIBDSP) $(VC6_SRCDSP) $(VC7_LIBVCPROJ) $(VC7_SRCVCPROJ) \
- $(VC71_LIBVCPROJ) $(VC71_SRCVCPROJ) $(VC8_LIBVCPROJ) $(VC8_SRCVCPROJ) \
- $(VC9_LIBVCPROJ) $(VC9_SRCVCPROJ) $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ) \
- $(VC11_LIBVCXPROJ) $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ) \
- $(VC14_LIBVCXPROJ) $(VC14_SRCVCXPROJ)
-
-bin_SCRIPTS = curl-config
-SUBDIRS = lib src
-DIST_SUBDIRS = $(SUBDIRS) tests packages scripts include docs
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = libcurl.pc
-LIB_VAUTH_CFILES = vauth/vauth.c vauth/cleartext.c vauth/cram.c \
- vauth/digest.c vauth/digest_sspi.c vauth/krb5_gssapi.c \
- vauth/krb5_sspi.c vauth/ntlm.c vauth/ntlm_sspi.c vauth/oauth2.c \
- vauth/spnego_gssapi.c vauth/spnego_sspi.c
-
-LIB_VAUTH_HFILES = vauth/vauth.h vauth/digest.h vauth/ntlm.h
-LIB_VTLS_CFILES = vtls/openssl.c vtls/gtls.c vtls/vtls.c vtls/nss.c \
- vtls/polarssl.c vtls/polarssl_threadlock.c vtls/axtls.c \
- vtls/cyassl.c vtls/schannel.c vtls/darwinssl.c vtls/gskit.c \
- vtls/mbedtls.c
-
-LIB_VTLS_HFILES = vtls/openssl.h vtls/vtls.h vtls/gtls.h \
- vtls/nssg.h vtls/polarssl.h vtls/polarssl_threadlock.h vtls/axtls.h \
- vtls/cyassl.h vtls/schannel.h vtls/darwinssl.h vtls/gskit.h \
- vtls/mbedtls.h
-
-LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c \
- cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c \
- ldap.c version.c getenv.c escape.c mprintf.c telnet.c netrc.c \
- getinfo.c transfer.c strcase.c easy.c security.c curl_fnmatch.c \
- fileinfo.c ftplistparser.c wildcard.c krb5.c memdebug.c http_chunks.c \
- strtok.c connect.c llist.c hash.c multi.c content_encoding.c share.c \
- http_digest.c md4.c md5.c http_negotiate.c inet_pton.c strtoofft.c \
- strerror.c amigaos.c hostasyn.c hostip4.c hostip6.c hostsyn.c \
- inet_ntop.c parsedate.c select.c tftp.c splay.c strdup.c socks.c \
- ssh.c curl_addrinfo.c socks_gssapi.c socks_sspi.c \
- curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c pop3.c smtp.c \
- pingpong.c rtsp.c curl_threads.c warnless.c hmac.c curl_rtmp.c \
- openldap.c curl_gethostname.c gopher.c idn_win32.c \
- http_proxy.c non-ascii.c asyn-ares.c asyn-thread.c curl_gssapi.c \
- http_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_sasl.c rand.c \
- curl_multibyte.c hostcheck.c conncache.c pipeline.c dotdot.c \
- x509asn1.c http2.c smb.c curl_endian.c curl_des.c system_win32.c \
- mime.c
-
-LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
- formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h \
- speedcheck.h urldata.h curl_ldap.h escape.h telnet.h getinfo.h \
- strcase.h curl_sec.h memdebug.h http_chunks.h curl_fnmatch.h \
- wildcard.h fileinfo.h ftplistparser.h strtok.h connect.h llist.h \
- hash.h content_encoding.h share.h curl_md4.h curl_md5.h http_digest.h \
- http_negotiate.h inet_pton.h amigaos.h strtoofft.h strerror.h \
- inet_ntop.h curlx.h curl_memory.h curl_setup.h transfer.h select.h \
- easyif.h multiif.h parsedate.h tftp.h sockaddr.h splay.h strdup.h \
- socks.h ssh.h curl_base64.h curl_addrinfo.h curl_sspi.h \
- slist.h nonblock.h curl_memrchr.h imap.h pop3.h smtp.h pingpong.h \
- rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h \
- curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h \
- http_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h \
- curl_sasl.h curl_multibyte.h hostcheck.h conncache.h \
- curl_setup_once.h multihandle.h setup-vms.h pipeline.h dotdot.h \
- x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h \
- curl_printf.h system_win32.h rand.h mime.h
-
-LIB_RCFILES = libcurl.rc
-CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES)
-HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES)
-
-# libcurl has sources that provide functions named curlx_* that aren't part of
-# the official API, but we re-use the code here to avoid duplication.
-CURLX_CFILES = \
- ../lib/strtoofft.c \
- ../lib/nonblock.c \
- ../lib/warnless.c
-
-CURLX_HFILES = \
- ../lib/curl_setup.h \
- ../lib/strtoofft.h \
- ../lib/nonblock.h \
- ../lib/warnless.h
-
-CURL_CFILES = \
- slist_wc.c \
- tool_binmode.c \
- tool_bname.c \
- tool_cb_dbg.c \
- tool_cb_hdr.c \
- tool_cb_prg.c \
- tool_cb_rea.c \
- tool_cb_see.c \
- tool_cb_wrt.c \
- tool_cfgable.c \
- tool_convert.c \
- tool_dirhie.c \
- tool_doswin.c \
- tool_easysrc.c \
- tool_formparse.c \
- tool_getparam.c \
- tool_getpass.c \
- tool_help.c \
- tool_helpers.c \
- tool_homedir.c \
- tool_hugehelp.c \
- tool_libinfo.c \
- tool_main.c \
- tool_metalink.c \
- tool_msgs.c \
- tool_operate.c \
- tool_operhlp.c \
- tool_panykey.c \
- tool_paramhlp.c \
- tool_parsecfg.c \
- tool_strdup.c \
- tool_setopt.c \
- tool_sleep.c \
- tool_urlglob.c \
- tool_util.c \
- tool_vms.c \
- tool_writeout.c \
- tool_xattr.c
-
-CURL_HFILES = \
- slist_wc.h \
- tool_binmode.h \
- tool_bname.h \
- tool_cb_dbg.h \
- tool_cb_hdr.h \
- tool_cb_prg.h \
- tool_cb_rea.h \
- tool_cb_see.h \
- tool_cb_wrt.h \
- tool_cfgable.h \
- tool_convert.h \
- tool_dirhie.h \
- tool_doswin.h \
- tool_easysrc.h \
- tool_formparse.h \
- tool_getparam.h \
- tool_getpass.h \
- tool_help.h \
- tool_helpers.h \
- tool_homedir.h \
- tool_hugehelp.h \
- tool_libinfo.h \
- tool_main.h \
- tool_metalink.h \
- tool_msgs.h \
- tool_operate.h \
- tool_operhlp.h \
- tool_panykey.h \
- tool_paramhlp.h \
- tool_parsecfg.h \
- tool_sdecls.h \
- tool_setopt.h \
- tool_setup.h \
- tool_sleep.h \
- tool_strdup.h \
- tool_urlglob.h \
- tool_util.h \
- tool_version.h \
- tool_vms.h \
- tool_writeout.h \
- tool_xattr.h
-
-CURL_RCFILES = curl.rc
-
-# curl_SOURCES is special and gets assigned in src/Makefile.am
-CURL_FILES = $(CURL_CFILES) $(CURLX_CFILES) $(CURL_HFILES)
-all: all-recursive
-
-.SUFFIXES:
-am--refresh: Makefile
- @:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/lib/Makefile.inc $(srcdir)/src/Makefile.inc $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
- $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --foreign Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- echo ' $(SHELL) ./config.status'; \
- $(SHELL) ./config.status;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
- esac;
-$(srcdir)/lib/Makefile.inc $(srcdir)/src/Makefile.inc $(am__empty):
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- $(SHELL) ./config.status --recheck
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- $(am__cd) $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-$(am__aclocal_m4_deps):
-curl-config: $(top_builddir)/config.status $(srcdir)/curl-config.in
- cd $(top_builddir) && $(SHELL) ./config.status $@
-libcurl.pc: $(top_builddir)/config.status $(srcdir)/libcurl.pc.in
- cd $(top_builddir) && $(SHELL) ./config.status $@
-install-binSCRIPTS: $(bin_SCRIPTS)
- @$(NORMAL_INSTALL)
- @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
- fi; \
- for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
- done | \
- sed -e 'p;s,.*/,,;n' \
- -e 'h;s|.*|.|' \
- -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
- $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
- { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
- if ($$2 == $$4) { files[d] = files[d] " " $$1; \
- if (++n[d] == $(am__install_max)) { \
- print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
- else { print "f", d "/" $$4, $$1 } } \
- END { for (d in files) print "f", d, files[d] }' | \
- while read type dir files; do \
- if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
- test -z "$$files" || { \
- echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
- $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
- } \
- ; done
-
-uninstall-binSCRIPTS:
- @$(NORMAL_UNINSTALL)
- @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
- files=`for p in $$list; do echo "$$p"; done | \
- sed -e 's,.*/,,;$(transform)'`; \
- dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-distclean-libtool:
- -rm -f libtool config.lt
-install-pkgconfigDATA: $(pkgconfig_DATA)
- @$(NORMAL_INSTALL)
- @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
- fi; \
- for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; \
- done | $(am__base_list) | \
- while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
- done
-
-uninstall-pkgconfigDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run 'make' without going through this Makefile.
-# To change the values of 'make' variables: instead of editing Makefiles,
-# (1) if the variable is set in 'config.status', edit 'config.status'
-# (which will cause the Makefiles to be regenerated when you run 'make');
-# (2) otherwise, pass the desired values on the 'make' command line.
-$(am__recursive_targets):
- @fail=; \
- if $(am__make_keepgoing); then \
- failcom='fail=yes'; \
- else \
- failcom='exit 1'; \
- fi; \
- dot_seen=no; \
- target=`echo $@ | sed s/-recursive//`; \
- case "$@" in \
- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
- *) list='$(SUBDIRS)' ;; \
- esac; \
- for subdir in $$list; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- dot_seen=yes; \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done; \
- if test "$$dot_seen" = "no"; then \
- $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
- fi; test -z "$$fail"
-
-ID: $(am__tagged_files)
- $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-recursive
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- set x; \
- here=`pwd`; \
- if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
- include_option=--etags-include; \
- empty_fix=.; \
- else \
- include_option=--include; \
- empty_fix=; \
- fi; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test ! -f $$subdir/TAGS || \
- set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
- fi; \
- done; \
- $(am__define_uniq_tagged_files); \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: ctags-recursive
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- $(am__define_uniq_tagged_files); \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-cscope: cscope.files
- test ! -s cscope.files \
- || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
-clean-cscope:
- -rm -f cscope.files
-cscope.files: clean-cscope cscopelist
-cscopelist: cscopelist-recursive
-
-cscopelist-am: $(am__tagged_files)
- list='$(am__tagged_files)'; \
- case "$(srcdir)" in \
- [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
- *) sdir=$(subdir)/$(srcdir) ;; \
- esac; \
- for i in $$list; do \
- if test -f "$$i"; then \
- echo "$(subdir)/$$i"; \
- else \
- echo "$$sdir/$$i"; \
- fi; \
- done >> $(top_builddir)/cscope.files
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
- -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
-
-distdir: $(DISTFILES)
- $(am__remove_distdir)
- test -d "$(distdir)" || mkdir "$(distdir)"
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- $(am__make_dryrun) \
- || test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
- $(am__relativize); \
- new_distdir=$$reldir; \
- dir1=$$subdir; dir2="$(top_distdir)"; \
- $(am__relativize); \
- new_top_distdir=$$reldir; \
- echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
- echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
- ($(am__cd) $$subdir && \
- $(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$$new_top_distdir" \
- distdir="$$new_distdir" \
- am__remove_distdir=: \
- am__skip_length_check=: \
- am__skip_mode_fix=: \
- distdir) \
- || exit 1; \
- fi; \
- done
- $(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$(top_distdir)" distdir="$(distdir)" \
- dist-hook
- -test -n "$(am__skip_mode_fix)" \
- || find "$(distdir)" -type d ! -perm -755 \
- -exec chmod u+rwx,go+rx {} \; -o \
- ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
- ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
- ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
- || chmod -R a+r "$(distdir)"
-dist-gzip: distdir
- tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
- $(am__post_remove_distdir)
-
-dist-bzip2: distdir
- tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
- $(am__post_remove_distdir)
-
-dist-lzip: distdir
- tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
- $(am__post_remove_distdir)
-
-dist-xz: distdir
- tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
- $(am__post_remove_distdir)
-
-dist-tarZ: distdir
- @echo WARNING: "Support for distribution archives compressed with" \
- "legacy program 'compress' is deprecated." >&2
- @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
- tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
- $(am__post_remove_distdir)
-
-dist-shar: distdir
- @echo WARNING: "Support for shar distribution archives is" \
- "deprecated." >&2
- @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
- shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
- $(am__post_remove_distdir)
-
-dist-zip: distdir
- -rm -f $(distdir).zip
- zip -rq $(distdir).zip $(distdir)
- $(am__post_remove_distdir)
-
-dist dist-all:
- $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
- $(am__post_remove_distdir)
-
-# This target untars the dist file and tries a VPATH configuration. Then
-# it guarantees that the distribution is self-contained by making another
-# tarfile.
-distcheck: dist
- case '$(DIST_ARCHIVES)' in \
- *.tar.gz*) \
- eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
- *.tar.bz2*) \
- bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
- *.tar.lz*) \
- lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
- *.tar.xz*) \
- xz -dc $(distdir).tar.xz | $(am__untar) ;;\
- *.tar.Z*) \
- uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
- *.shar.gz*) \
- eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
- *.zip*) \
- unzip $(distdir).zip ;;\
- esac
- chmod -R a-w $(distdir)
- chmod u+w $(distdir)
- mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
- chmod a-w $(distdir)
- test -d $(distdir)/_build || exit 0; \
- dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
- && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
- && am__cwd=`pwd` \
- && $(am__cd) $(distdir)/_build/sub \
- && ../../configure \
- $(AM_DISTCHECK_CONFIGURE_FLAGS) \
- $(DISTCHECK_CONFIGURE_FLAGS) \
- --srcdir=../.. --prefix="$$dc_install_base" \
- && $(MAKE) $(AM_MAKEFLAGS) \
- && $(MAKE) $(AM_MAKEFLAGS) dvi \
- && $(MAKE) $(AM_MAKEFLAGS) check \
- && $(MAKE) $(AM_MAKEFLAGS) install \
- && $(MAKE) $(AM_MAKEFLAGS) installcheck \
- && $(MAKE) $(AM_MAKEFLAGS) uninstall \
- && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
- distuninstallcheck \
- && chmod -R a-w "$$dc_install_base" \
- && ({ \
- (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
- distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
- } || { rm -rf "$$dc_destdir"; exit 1; }) \
- && rm -rf "$$dc_destdir" \
- && $(MAKE) $(AM_MAKEFLAGS) dist \
- && rm -rf $(DIST_ARCHIVES) \
- && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
- && cd "$$am__cwd" \
- || exit 1
- $(am__post_remove_distdir)
- @(echo "$(distdir) archives ready for distribution: "; \
- list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
- sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
-distuninstallcheck:
- @test -n '$(distuninstallcheck_dir)' || { \
- echo 'ERROR: trying to run $@ with an empty' \
- '$$(distuninstallcheck_dir)' >&2; \
- exit 1; \
- }; \
- $(am__cd) '$(distuninstallcheck_dir)' || { \
- echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
- exit 1; \
- }; \
- test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
- || { echo "ERROR: files left after uninstall:" ; \
- if test -n "$(DESTDIR)"; then \
- echo " (check DESTDIR support)"; \
- fi ; \
- $(distuninstallcheck_listfiles) ; \
- exit 1; } >&2
-distcleancheck: distclean
- @if test '$(srcdir)' = . ; then \
- echo "ERROR: distcleancheck can only run from a VPATH build" ; \
- exit 1 ; \
- fi
- @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
- || { echo "ERROR: files left in build directory after distclean:" ; \
- $(distcleancheck_listfiles) ; \
- exit 1; } >&2
-check-am: all-am
-check: check-recursive
-all-am: Makefile $(SCRIPTS) $(DATA)
-installdirs: installdirs-recursive
-installdirs-am:
- for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgconfigdir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
-
-clean-am: clean-generic clean-libtool clean-local mostlyclean-am
-
-distclean: distclean-recursive
- -rm -f $(am__CONFIG_DISTCLEAN_FILES)
- -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool \
- distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am: install-pkgconfigDATA
- @$(NORMAL_INSTALL)
- $(MAKE) $(AM_MAKEFLAGS) install-data-hook
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am: install-binSCRIPTS
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
- -rm -f $(am__CONFIG_DISTCLEAN_FILES)
- -rm -rf $(top_srcdir)/autom4te.cache
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am: uninstall-binSCRIPTS uninstall-pkgconfigDATA
- @$(NORMAL_INSTALL)
- $(MAKE) $(AM_MAKEFLAGS) uninstall-hook
-.MAKE: $(am__recursive_targets) install-am install-data-am \
- install-strip uninstall-am
-
-.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
- am--refresh check check-am clean clean-cscope clean-generic \
- clean-libtool clean-local cscope cscopelist-am ctags ctags-am \
- dist dist-all dist-bzip2 dist-gzip dist-hook dist-lzip \
- dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \
- distclean-generic distclean-libtool distclean-tags \
- distcleancheck distdir distuninstallcheck dvi dvi-am html \
- html-am info info-am install install-am install-binSCRIPTS \
- install-data install-data-am install-data-hook install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-pkgconfigDATA install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs installdirs-am maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-generic \
- mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
- uninstall-am uninstall-binSCRIPTS uninstall-hook \
- uninstall-pkgconfigDATA
-
-.PRECIOUS: Makefile
-
-
-# List of files required to generate VC IDE .dsp, .vcproj and .vcxproj files
-
-dist-hook:
- rm -rf $(top_builddir)/tests/log
- find $(distdir) -name "*.dist" -exec rm {} \;
- (distit=`find $(srcdir) -name "*.dist" | grep -v ./ares/`; \
- for file in $$distit; do \
- strip=`echo $$file | sed -e s/^$(srcdir)// -e s/\.dist//`; \
- cp -p $$file $(distdir)$$strip; \
- done)
-
-html:
- cd docs && $(MAKE) html
-
-pdf:
- cd docs && $(MAKE) pdf
-
-check: test examples check-docs
-
-@CROSSCOMPILING_TRUE@test-full: test
-@CROSSCOMPILING_TRUE@test-torture: test
-
-@CROSSCOMPILING_TRUE@test:
-@CROSSCOMPILING_TRUE@ @echo "NOTICE: we can't run the tests when cross-compiling!"
-
-@CROSSCOMPILING_FALSE@test:
-@CROSSCOMPILING_FALSE@ @(cd tests; $(MAKE) all quiet-test)
-
-@CROSSCOMPILING_FALSE@test-full:
-@CROSSCOMPILING_FALSE@ @(cd tests; $(MAKE) all full-test)
-
-@CROSSCOMPILING_FALSE@test-nonflaky:
-@CROSSCOMPILING_FALSE@ @(cd tests; $(MAKE) all nonflaky-test)
-
-@CROSSCOMPILING_FALSE@test-torture:
-@CROSSCOMPILING_FALSE@ @(cd tests; $(MAKE) all torture-test)
-
-@CROSSCOMPILING_FALSE@test-event:
-@CROSSCOMPILING_FALSE@ @(cd tests; $(MAKE) all event-test)
-
-@CROSSCOMPILING_FALSE@test-am:
-@CROSSCOMPILING_FALSE@ @(cd tests; $(MAKE) all am-test)
-
-examples:
- @(cd docs/examples; $(MAKE) check)
-
-check-docs:
- @(cd docs/libcurl; $(MAKE) check)
-
-# This is a hook to have 'make clean' also clean up the docs and the tests
-# dir. The extra check for the Makefiles being present is necessary because
-# 'make distcheck' will make clean first in these directories _before_ it runs
-# this hook.
-clean-local:
- @(if test -f tests/Makefile; then cd tests; $(MAKE) clean; fi)
- @(if test -f docs/Makefile; then cd docs; $(MAKE) clean; fi)
-
-#
-# Build source and binary rpms. For rpm-3.0 and above, the ~/.rpmmacros
-# must contain the following line:
-# %_topdir /home/loic/local/rpm
-# and that /home/loic/local/rpm contains the directory SOURCES, BUILD etc.
-#
-# cd /home/loic/local/rpm ; mkdir -p SOURCES BUILD RPMS/i386 SPECS SRPMS
-#
-# If additional configure flags are needed to build the package, add the
-# following in ~/.rpmmacros
-# %configure CFLAGS="%{optflags}" ./configure %{_target_platform} --prefix=%{_prefix} ${AM_CONFIGFLAGS}
-# and run make rpm in the following way:
-# AM_CONFIGFLAGS='--with-uri=/home/users/loic/local/RedHat-6.2' make rpm
-#
-
-rpms:
- $(MAKE) RPMDIST=curl rpm
- $(MAKE) RPMDIST=curl-ssl rpm
-
-rpm:
- RPM_TOPDIR=`rpm --showrc | $(PERL) -n -e 'print if(s/.*_topdir\s+(.*)/$$1/)'` ; \
- cp $(srcdir)/packages/Linux/RPM/$(RPMDIST).spec $$RPM_TOPDIR/SPECS ; \
- cp $(PACKAGE)-$(VERSION).tar.gz $$RPM_TOPDIR/SOURCES ; \
- rpm -ba --clean --rmsource $$RPM_TOPDIR/SPECS/$(RPMDIST).spec ; \
- mv $$RPM_TOPDIR/RPMS/i386/$(RPMDIST)-*.rpm . ; \
- mv $$RPM_TOPDIR/SRPMS/$(RPMDIST)-*.src.rpm .
-
-#
-# Build a Solaris pkgadd format file
-# run 'make pkgadd' once you've done './configure' and 'make' to make a Solaris pkgadd format
-# file (which ends up back in this directory).
-# The pkgadd file is in 'pkgtrans' format, so to install on Solaris, do
-# pkgadd -d ./HAXXcurl-*
-#
-
-# gak - libtool requires an absolute directory, hence the pwd below...
-pkgadd:
- umask 022 ; \
- $(MAKE) install DESTDIR=`/bin/pwd`/packages/Solaris/root ; \
- cat COPYING > $(srcdir)/packages/Solaris/copyright ; \
- cd $(srcdir)/packages/Solaris && $(MAKE) package
-
-#
-# Build a cygwin binary tarball installation file
-# resulting .tar.bz2 file will end up at packages/Win32/cygwin
-cygwinbin:
- $(MAKE) -C packages/Win32/cygwin cygwinbin
-
-# We extend the standard install with a custom hook:
-install-data-hook:
- cd include && $(MAKE) install
- cd docs && $(MAKE) install
- cd docs/libcurl && $(MAKE) install
-
-# We extend the standard uninstall with a custom hook:
-uninstall-hook:
- cd include && $(MAKE) uninstall
- cd docs && $(MAKE) uninstall
- cd docs/libcurl && $(MAKE) uninstall
-
-ca-bundle: lib/mk-ca-bundle.pl
- @echo "generating a fresh ca-bundle.crt"
- @perl $< -b -l -u lib/ca-bundle.crt
-
-ca-firefox: lib/firefox-db2pem.sh
- @echo "generating a fresh ca-bundle.crt"
- ./lib/firefox-db2pem.sh lib/ca-bundle.crt
-
-checksrc:
- cd lib && $(MAKE) checksrc
- cd src && $(MAKE) checksrc
- cd tests && $(MAKE) checksrc
- cd include/curl && $(MAKE) checksrc
- cd docs/examples && $(MAKE) checksrc
-
-.PHONY: vc-ide
-
-vc-ide: $(VC6_LIBDSP_DEPS) $(VC6_SRCDSP_DEPS) $(VC7_LIBVCPROJ_DEPS) \
- $(VC7_SRCVCPROJ_DEPS) $(VC71_LIBVCPROJ_DEPS) $(VC71_SRCVCPROJ_DEPS) \
- $(VC8_LIBVCPROJ_DEPS) $(VC8_SRCVCPROJ_DEPS) $(VC9_LIBVCPROJ_DEPS) \
- $(VC9_SRCVCPROJ_DEPS) $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \
- $(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS) \
- $(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS)
- @(win32_lib_srcs='$(LIB_CFILES)'; \
- win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
- win32_lib_rc='$(LIB_RCFILES)'; \
- win32_lib_vauth_srcs='$(LIB_VAUTH_CFILES)'; \
- win32_lib_vauth_hdrs='$(LIB_VAUTH_HFILES)'; \
- win32_lib_vtls_srcs='$(LIB_VTLS_CFILES)'; \
- win32_lib_vtls_hdrs='$(LIB_VTLS_HFILES)'; \
- win32_src_srcs='$(CURL_CFILES)'; \
- win32_src_hdrs='$(CURL_HFILES)'; \
- win32_src_rc='$(CURL_RCFILES)'; \
- win32_src_x_srcs='$(CURLX_CFILES)'; \
- win32_src_x_hdrs='$(CURLX_HFILES) ../lib/config-win32.h'; \
- \
- sorted_lib_srcs=`for file in $$win32_lib_srcs; do echo $$file; done | sort`; \
- sorted_lib_hdrs=`for file in $$win32_lib_hdrs; do echo $$file; done | sort`; \
- sorted_lib_vauth_srcs=`for file in $$win32_lib_vauth_srcs; do echo $$file; done | sort`; \
- sorted_lib_vauth_hdrs=`for file in $$win32_lib_vauth_hdrs; do echo $$file; done | sort`; \
- sorted_lib_vtls_srcs=`for file in $$win32_lib_vtls_srcs; do echo $$file; done | sort`; \
- sorted_lib_vtls_hdrs=`for file in $$win32_lib_vtls_hdrs; do echo $$file; done | sort`; \
- sorted_src_srcs=`for file in $$win32_src_srcs; do echo $$file; done | sort`; \
- sorted_src_hdrs=`for file in $$win32_src_hdrs; do echo $$file; done | sort`; \
- sorted_src_x_srcs=`for file in $$win32_src_x_srcs; do echo $$file; done | sort`; \
- sorted_src_x_hdrs=`for file in $$win32_src_x_hdrs; do echo $$file; done | sort`; \
- \
- awk_code='\
-function gen_element(type, dir, file)\
-{\
- sub(/vauth\//, "", file);\
- sub(/vtls\//, "", file);\
-\
- spaces=" ";\
- if(dir == "lib\\vauth" || dir == "lib\\vtls")\
- tabs=" ";\
- else\
- tabs=" ";\
-\
- if(type == "dsp") {\
- printf("# Begin Source File\r\n");\
- printf("\r\n");\
- printf("SOURCE=..\\..\\..\\..\\%s\\%s\r\n", dir, file);\
- printf("# End Source File\r\n");\
- }\
- else if(type == "vcproj1") {\
- printf("%s\r\n",\
- tabs, dir, file);\
- printf("%s\r\n", tabs);\
- }\
- else if(type == "vcproj2") {\
- printf("%s\r\n", tabs);\
- printf("%s\r\n", tabs);\
- }\
- else if(type == "vcxproj") {\
- i = index(file, ".");\
- ext = substr(file, i == 0 ? 0 : i + 1);\
-\
- if(ext == "c")\
- printf("%s\r\n",\
- spaces, dir, file);\
- else if(ext == "h")\
- printf("%s\r\n",\
- spaces, dir, file);\
- else if(ext == "rc")\
- printf("%s\r\n",\
- spaces, dir, file);\
- }\
-}\
-\
-{\
-\
- if($$0 == "CURL_LIB_C_FILES") {\
- split(lib_srcs, arr);\
- for(val in arr) gen_element(proj_type, "lib", arr[val]);\
- }\
- else if($$0 == "CURL_LIB_H_FILES") {\
- split(lib_hdrs, arr);\
- for(val in arr) gen_element(proj_type, "lib", arr[val]);\
- }\
- else if($$0 == "CURL_LIB_RC_FILES") {\
- split(lib_rc, arr);\
- for(val in arr) gen_element(proj_type, "lib", arr[val]);\
- }\
- else if($$0 == "CURL_LIB_VAUTH_C_FILES") {\
- split(lib_vauth_srcs, arr);\
- for(val in arr) gen_element(proj_type, "lib\\vauth", arr[val]);\
- }\
- else if($$0 == "CURL_LIB_VAUTH_H_FILES") {\
- split(lib_vauth_hdrs, arr);\
- for(val in arr) gen_element(proj_type, "lib\\vauth", arr[val]);\
- }\
- else if($$0 == "CURL_LIB_VTLS_C_FILES") {\
- split(lib_vtls_srcs, arr);\
- for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\
- }\
- else if($$0 == "CURL_LIB_VTLS_H_FILES") {\
- split(lib_vtls_hdrs, arr);\
- for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\
- }\
- else if($$0 == "CURL_SRC_C_FILES") {\
- split(src_srcs, arr);\
- for(val in arr) gen_element(proj_type, "src", arr[val]);\
- }\
- else if($$0 == "CURL_SRC_H_FILES") {\
- split(src_hdrs, arr);\
- for(val in arr) gen_element(proj_type, "src", arr[val]);\
- }\
- else if($$0 == "CURL_SRC_RC_FILES") {\
- split(src_rc, arr);\
- for(val in arr) gen_element(proj_type, "src", arr[val]);\
- }\
- else if($$0 == "CURL_SRC_X_C_FILES") {\
- split(src_x_srcs, arr);\
- for(val in arr) {\
- sub(/..\/lib\//, "", arr[val]);\
- gen_element(proj_type, "lib", arr[val]);\
- }\
- }\
- else if($$0 == "CURL_SRC_X_H_FILES") {\
- split(src_x_hdrs, arr);\
- for(val in arr) {\
- sub(/..\/lib\//, "", arr[val]);\
- gen_element(proj_type, "lib", arr[val]);\
- }\
- }\
- else\
- printf("%s\r\n", $$0);\
-}';\
- \
- echo "generating '$(VC6_LIBDSP)'"; \
- awk -v proj_type=dsp \
- -v lib_srcs="$$sorted_lib_srcs" \
- -v lib_hdrs="$$sorted_lib_hdrs" \
- -v lib_rc="$$win32_lib_rc" \
- -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
- -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
- -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
- -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
- "$$awk_code" $(srcdir)/$(VC6_LIBTMPL) > $(VC6_LIBDSP) || { exit 1; }; \
- \
- echo "generating '$(VC6_SRCDSP)'"; \
- awk -v proj_type=dsp \
- -v src_srcs="$$sorted_src_srcs" \
- -v src_hdrs="$$sorted_src_hdrs" \
- -v src_rc="$$win32_src_rc" \
- -v src_x_srcs="$$sorted_src_x_srcs" \
- -v src_x_hdrs="$$sorted_src_x_hdrs" \
- "$$awk_code" $(srcdir)/$(VC6_SRCTMPL) > $(VC6_SRCDSP) || { exit 1; }; \
- \
- echo "generating '$(VC7_LIBVCPROJ)'"; \
- awk -v proj_type=vcproj1 \
- -v lib_srcs="$$sorted_lib_srcs" \
- -v lib_hdrs="$$sorted_lib_hdrs" \
- -v lib_rc="$$win32_lib_rc" \
- -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
- -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
- -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
- -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
- "$$awk_code" $(srcdir)/$(VC7_LIBTMPL) > $(VC7_LIBVCPROJ) || { exit 1; }; \
- \
- echo "generating '$(VC7_SRCVCPROJ)'"; \
- awk -v proj_type=vcproj1 \
- -v src_srcs="$$sorted_src_srcs" \
- -v src_hdrs="$$sorted_src_hdrs" \
- -v src_rc="$$win32_src_rc" \
- -v src_x_srcs="$$sorted_src_x_srcs" \
- -v src_x_hdrs="$$sorted_src_x_hdrs" \
- "$$awk_code" $(srcdir)/$(VC7_SRCTMPL) > $(VC7_SRCVCPROJ) || { exit 1; }; \
- \
- echo "generating '$(VC71_LIBVCPROJ)'"; \
- awk -v proj_type=vcproj1 \
- -v lib_srcs="$$sorted_lib_srcs" \
- -v lib_hdrs="$$sorted_lib_hdrs" \
- -v lib_rc="$$win32_lib_rc" \
- -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
- -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
- -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
- -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
- "$$awk_code" $(srcdir)/$(VC71_LIBTMPL) > $(VC71_LIBVCPROJ) || { exit 1; }; \
- \
- echo "generating '$(VC71_SRCVCPROJ)'"; \
- awk -v proj_type=vcproj1 \
- -v src_srcs="$$sorted_src_srcs" \
- -v src_hdrs="$$sorted_src_hdrs" \
- -v src_rc="$$win32_src_rc" \
- -v src_x_srcs="$$sorted_src_x_srcs" \
- -v src_x_hdrs="$$sorted_src_x_hdrs" \
- "$$awk_code" $(srcdir)/$(VC71_SRCTMPL) > $(VC71_SRCVCPROJ) || { exit 1; }; \
- \
- echo "generating '$(VC8_LIBVCPROJ)'"; \
- awk -v proj_type=vcproj2 \
- -v lib_srcs="$$sorted_lib_srcs" \
- -v lib_hdrs="$$sorted_lib_hdrs" \
- -v lib_rc="$$win32_lib_rc" \
- -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
- -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
- -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
- -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
- "$$awk_code" $(srcdir)/$(VC8_LIBTMPL) > $(VC8_LIBVCPROJ) || { exit 1; }; \
- \
- echo "generating '$(VC8_SRCVCPROJ)'"; \
- awk -v proj_type=vcproj2 \
- -v src_srcs="$$sorted_src_srcs" \
- -v src_hdrs="$$sorted_src_hdrs" \
- -v src_rc="$$win32_src_rc" \
- -v src_x_srcs="$$sorted_src_x_srcs" \
- -v src_x_hdrs="$$sorted_src_x_hdrs" \
- "$$awk_code" $(srcdir)/$(VC8_SRCTMPL) > $(VC8_SRCVCPROJ) || { exit 1; }; \
- \
- echo "generating '$(VC9_LIBVCPROJ)'"; \
- awk -v proj_type=vcproj2 \
- -v lib_srcs="$$sorted_lib_srcs" \
- -v lib_hdrs="$$sorted_lib_hdrs" \
- -v lib_rc="$$win32_lib_rc" \
- -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
- -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
- -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
- -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
- "$$awk_code" $(srcdir)/$(VC9_LIBTMPL) > $(VC9_LIBVCPROJ) || { exit 1; }; \
- \
- echo "generating '$(VC9_SRCVCPROJ)'"; \
- awk -v proj_type=vcproj2 \
- -v src_srcs="$$sorted_src_srcs" \
- -v src_hdrs="$$sorted_src_hdrs" \
- -v src_rc="$$win32_src_rc" \
- -v src_x_srcs="$$sorted_src_x_srcs" \
- -v src_x_hdrs="$$sorted_src_x_hdrs" \
- "$$awk_code" $(srcdir)/$(VC9_SRCTMPL) > $(VC9_SRCVCPROJ) || { exit 1; }; \
- \
- echo "generating '$(VC10_LIBVCXPROJ)'"; \
- awk -v proj_type=vcxproj \
- -v lib_srcs="$$sorted_lib_srcs" \
- -v lib_hdrs="$$sorted_lib_hdrs" \
- -v lib_rc="$$win32_lib_rc" \
- -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
- -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
- -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
- -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
- "$$awk_code" $(srcdir)/$(VC10_LIBTMPL) > $(VC10_LIBVCXPROJ) || { exit 1; }; \
- \
- echo "generating '$(VC10_SRCVCXPROJ)'"; \
- awk -v proj_type=vcxproj \
- -v src_srcs="$$sorted_src_srcs" \
- -v src_hdrs="$$sorted_src_hdrs" \
- -v src_rc="$$win32_src_rc" \
- -v src_x_srcs="$$sorted_src_x_srcs" \
- -v src_x_hdrs="$$sorted_src_x_hdrs" \
- "$$awk_code" $(srcdir)/$(VC10_SRCTMPL) > $(VC10_SRCVCXPROJ) || { exit 1; }; \
- \
- echo "generating '$(VC11_LIBVCXPROJ)'"; \
- awk -v proj_type=vcxproj \
- -v lib_srcs="$$sorted_lib_srcs" \
- -v lib_hdrs="$$sorted_lib_hdrs" \
- -v lib_rc="$$win32_lib_rc" \
- -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
- -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
- -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
- -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
- "$$awk_code" $(srcdir)/$(VC11_LIBTMPL) > $(VC11_LIBVCXPROJ) || { exit 1; }; \
- \
- echo "generating '$(VC11_SRCVCXPROJ)'"; \
- awk -v proj_type=vcxproj \
- -v src_srcs="$$sorted_src_srcs" \
- -v src_hdrs="$$sorted_src_hdrs" \
- -v src_rc="$$win32_src_rc" \
- -v src_x_srcs="$$sorted_src_x_srcs" \
- -v src_x_hdrs="$$sorted_src_x_hdrs" \
- "$$awk_code" $(srcdir)/$(VC11_SRCTMPL) > $(VC11_SRCVCXPROJ) || { exit 1; }; \
- \
- echo "generating '$(VC12_LIBVCXPROJ)'"; \
- awk -v proj_type=vcxproj \
- -v lib_srcs="$$sorted_lib_srcs" \
- -v lib_hdrs="$$sorted_lib_hdrs" \
- -v lib_rc="$$win32_lib_rc" \
- -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
- -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
- -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
- -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
- "$$awk_code" $(srcdir)/$(VC12_LIBTMPL) > $(VC12_LIBVCXPROJ) || { exit 1; }; \
- \
- echo "generating '$(VC12_SRCVCXPROJ)'"; \
- awk -v proj_type=vcxproj \
- -v src_srcs="$$sorted_src_srcs" \
- -v src_hdrs="$$sorted_src_hdrs" \
- -v src_rc="$$win32_src_rc" \
- -v src_x_srcs="$$sorted_src_x_srcs" \
- -v src_x_hdrs="$$sorted_src_x_hdrs" \
- "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; }; \
- \
- echo "generating '$(VC14_LIBVCXPROJ)'"; \
- awk -v proj_type=vcxproj \
- -v lib_srcs="$$sorted_lib_srcs" \
- -v lib_hdrs="$$sorted_lib_hdrs" \
- -v lib_rc="$$win32_lib_rc" \
- -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
- -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
- -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
- -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
- "$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \
- \
- echo "generating '$(VC14_SRCVCXPROJ)'"; \
- awk -v proj_type=vcxproj \
- -v src_srcs="$$sorted_src_srcs" \
- -v src_hdrs="$$sorted_src_hdrs" \
- -v src_rc="$$win32_src_rc" \
- -v src_x_srcs="$$sorted_src_x_srcs" \
- -v src_x_hdrs="$$sorted_src_x_hdrs" \
- "$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; };)
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/curl/README b/curl/README
index f0b3b939..b690816e 100644
--- a/curl/README
+++ b/curl/README
@@ -17,22 +17,22 @@ README
You find answers to the most frequent questions we get in the FAQ document.
- Study the COPYING file for distribution terms and similar. If you distribute
- curl binaries or other binaries that involve libcurl, you might enjoy the
- LICENSE-MIXING document.
+ Study the COPYING file for distribution terms.
+
+ Those documents and more can be found in the docs/ directory.
CONTACT
If you have problems, questions, ideas or suggestions, please contact us
- by posting to a suitable mailing list. See https://curl.haxx.se/mail/
+ by posting to a suitable mailing list. See https://curl.se/mail/
All contributors to the project are listed in the THANKS document.
-WEB SITE
+WEBSITE
- Visit the curl web site for the latest news and downloads:
+ Visit the curl website for the latest news and downloads:
- https://curl.haxx.se/
+ https://curl.se/
GIT
@@ -42,6 +42,12 @@ GIT
(you'll get a directory named curl created, filled with the source code)
+SECURITY PROBLEMS
+
+ Report suspected security problems via our HackerOne page and not in public!
+
+ https://hackerone.com/curl
+
NOTICE
Curl contains pieces of source code that is Copyright (c) 1998, 1999
diff --git a/curl/README.md b/curl/README.md
new file mode 100644
index 00000000..0ba5b781
--- /dev/null
+++ b/curl/README.md
@@ -0,0 +1,88 @@
+![curl logo](https://curl.se/logo/curl-logo.svg)
+
+[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/63/badge)](https://bestpractices.coreinfrastructure.org/projects/63)
+[![Coverity passed](https://scan.coverity.com/projects/curl/badge.svg)](https://scan.coverity.com/projects/curl)
+[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/l1vv31029huhf4g4?svg=true)](https://ci.appveyor.com/project/curlorg/curl)
+[![Azure DevOps Build Status](https://dev.azure.com/daniel0244/curl/_apis/build/status/curl.curl?branchName=master)](https://dev.azure.com/daniel0244/curl/_build/latest?definitionId=1&branchName=master)
+[![Cirrus Build Status](https://api.cirrus-ci.com/github/curl/curl.svg?branch=master)](https://cirrus-ci.com/github/curl/curl)
+[![Backers on Open Collective](https://opencollective.com/curl/backers/badge.svg)](#backers)
+[![Sponsors on Open Collective](https://opencollective.com/curl/sponsors/badge.svg)](#sponsors)
+[![Language Grade: C/C++](https://img.shields.io/lgtm/grade/cpp/g/curl/curl.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/curl/curl/context:cpp)
+[![Codacy Badge](https://api.codacy.com/project/badge/Grade/d11483a0cc5c4ebd9da4ff9f7cd56690)](https://app.codacy.com/app/curl/curl)
+[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/curl.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:curl)
+
+Curl is a command-line tool for transferring data specified with URL
+syntax. Find out how to use curl by reading [the curl.1 man
+page](https://curl.se/docs/manpage.html) or [the MANUAL
+document](https://curl.se/docs/manual.html). Find out how to install Curl
+by reading [the INSTALL document](https://curl.se/docs/install.html).
+
+libcurl is the library curl is using to do its job. It is readily available to
+be used by your software. Read [the libcurl.3 man
+page](https://curl.se/libcurl/c/libcurl.html) to learn how!
+
+You can find answers to the most frequent questions we get in [the FAQ
+document](https://curl.se/docs/faq.html).
+
+Study [the COPYING file](https://curl.se/docs/copyright.html) for
+distribution terms.
+
+## Contact
+
+If you have problems, questions, ideas or suggestions, please contact us by
+posting to a suitable [mailing list](https://curl.se/mail/).
+
+All contributors to the project are listed in [the THANKS
+document](https://curl.se/docs/thanks.html).
+
+## Commercial support
+
+For commercial support, maybe private and dedicated help with your problems or
+applications using (lib)curl: https://curl.se/support.html
+
+## Website
+
+Visit the [curl website](https://curl.se/) for the latest news and
+downloads.
+
+## Git
+
+To download the very latest source from the Git server do this:
+
+ git clone https://github.com/curl/curl.git
+
+(you'll get a directory named curl created, filled with the source code)
+
+## Security problems
+
+Report suspected security problems via [our HackerOne
+page](https://hackerone.com/curl) and not in public!
+
+## Notice
+
+Curl contains pieces of source code that is Copyright (c) 1998, 1999 Kungliga
+Tekniska Högskolan. This notice is included here to comply with the
+distribution terms.
+
+## Backers
+
+Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/curl#backer)]
+
+
+
+## Sponsors
+
+Support this project by becoming a sponsor. Your logo will show up here with a
+link to your website. [[Become a
+sponsor](https://opencollective.com/curl#sponsor)]
+
+
+
+
+
+
+
+
+
+
+
diff --git a/curl/RELEASE-NOTES b/curl/RELEASE-NOTES
index 7da35d2e..1829b788 100644
--- a/curl/RELEASE-NOTES
+++ b/curl/RELEASE-NOTES
@@ -1,115 +1,44 @@
-Curl and libcurl 7.56.1
+curl and libcurl 7.79.1
- Public curl releases: 170
- Command line options: 211
- curl_easy_setopt() options: 249
- Public functions in libcurl: 74
- Contributors: 1626
+ Public curl releases: 203
+ Command line options: 242
+ curl_easy_setopt() options: 290
+ Public functions in libcurl: 85
+ Contributors: 2489
This release includes the following bugfixes:
- o imap: if a FETCH response has no size, don't call write callback [32]
- o ftp: UBsan fixup 'pointer index expression overflowed [1]
- o failf: skip the sprintf() if there are no consumers [2]
- o fuzzer: move to using external curl-fuzzer [3]
- o lib/Makefile.m32: allow customizing dll suffixes [4]
- o docs: fix typo in curl_mime_data_cb man page [5]
- o darwinssl: add support for TLSv1.3 [6]
- o build: fix --disable-crypto-auth [7]
- o lib/config-win32.h: let SMB/SMBS be enabled with OpenSSL/NSS [8]
- o openssl: fix build without HAVE_OPAQUE_EVP_PKEY [9]
- o strtoofft: Remove extraneous null check [10]
- o multi_cleanup: call DONE on handles that never got that [11]
- o tests: added flaky keyword to tests 587 and 644
- o pingpong: return error when trying to send without connection [12]
- o remove_handle: call multi_done() first, then clear dns cache pointer [13]
- o mime: be tolerant about setting twice the same header list in a part.
- o mime: improve unbinding top multipart from easy handle.
- o mime: avoid resetting a part's encoder when part's contents change.
- o mime: refuse to add subparts to one of their own descendants [14]
- o RTSP: avoid integer overflow on funny RTSP responses [15]
- o curl: don't pass semicolons when parsing Content-Disposition [16]
- o openssl: enable PKCS12 support for !BoringSSL [17]
- o FAQ: s/CURLOPT_PROGRESSFUNCTION/CURLOPT_XFERINFOFUNCTION
- o CURLOPT_NOPROGRESS.3: also refer to xferinfofunction
- o CURLOPT_XFERINFODATA.3: fix duplicate see also
- o test298: verify --ftp-method nowcwd with URL encoded path [18]
- o FTP: URL decode path for dir listing in nocwd mode [19]
- o smtp_done: fix memory leak on send failure [20]
- o ftpserver: support case insensitive commands
- o test950; verify SMTP with custom request
- o openssl: don't use old BORINGSSL_YYYYMM macros [21]
- o setopt: update current connection SSL verify params [22]
- o winbuild/BUILD.WINDOWS.txt: mention WITH_NGHTTP2
- o curl: reimplement stdin buffering in -F option [23]
- o mime: keep "text/plain" content type if user-specified [24]
- o mime: fix the content reader to handle >16K data properly [25]
- o configure: remove the C++ compiler check [26]
- o memdebug: trace send, recv and socket [27]
- o runtests: use valgrind for torture as well
- o ldap: silence clang warning [28]
- o makefile.m32: allow to override gcc, ar and ranlib [29]
- o setopt: avoid integer overflows when setting millsecond values [30]
- o setopt: range check most long options [31]
- o ftp: reject illegal IP/port in PASV 227 response [33]
- o mime: do not reuse previously computed multipart size [34]
- o vtls: change struct Curl_ssl `close' field name to `close_one'
- o os400: add missing symbols in config file
- o mime: limit bas64-encoded lines length to 76 characters
- o mk-ca-bundle: Remove URL for aurora [35]
- o mk-ca-bundle: Fix URL for NSS [36]
+ o Curl_http2_setup: don't change connection data on repeat invokes [10]
+ o curl_multi_fdset: make FD_SET() not operate on sockets out of range [4]
+ o dist: provide lib/.checksrc in the tarball [6]
+ o FAQ: add GOPHERS + curl works on data, not files
+ o hsts: CURLSTS_FAIL from hsts read callback should fail transfer [8]
+ o hsts: handle unlimited expiry [3]
+ o http: fix the broken >3 digit response code detection [1]
+ o strerror: use sys_errlist instead of strerror on Windows [5]
+ o test1184: disable [9]
+ o tests/sshserver.pl: make it work with openssh-8.7p1 [2]
This release includes the following known bugs:
- o see docs/KNOWN_BUGS (https://curl.haxx.se/docs/knownbugs.html)
+ o see docs/KNOWN_BUGS (https://curl.se/docs/knownbugs.html)
This release would not have looked like this without help, code, reports and
advice from friends like these:
- Alexey Melnichuk, Artak Galoyan, Benbuck Nason, Brian Carpenter,
- Christian Schmitz, Dan Fandrich, Daniel Stenberg, David Benjamin,
- Felix Kaiser, Javier Sixto, Jeroen Ooms, Jon DeVree, Kristiyan Tsaklev,
- Marcel Raad, Max Dymond, Nick Zitzmann, Patrick Monnerat, Viktor Szakáts,
- Wyatt O'Day, Zenju on github, 0xd34db347
- (21 contributors)
-
- Thanks! (and sorry if I forgot to mention someone)
+ 0xee on github, Daniel Stenberg, Evangelos Foutras, Glenn de boer,
+ Jonathan Cardoso Machado, Kamil Dudka, Marcel Raad, Ray Satiro,
+ RiderALT on github, tawmoto on github, Viktor Szakats,
+ (11 contributors)
References to bug reports and discussions on issues:
- [1] = https://curl.haxx.se/bug/?i=1939
- [2] = https://curl.haxx.se/bug/?i=1936
- [3] = https://curl.haxx.se/bug/?i=1923
- [4] = https://curl.haxx.se/bug/?i=1942
- [5] = https://curl.haxx.se/bug/?i=1946
- [6] = https://curl.haxx.se/bug/?i=1794
- [7] = https://curl.haxx.se/bug/?i=1945
- [8] = https://curl.haxx.se/bug/?i=1943
- [9] = https://curl.haxx.se/bug/?i=1955
- [10] = https://curl.haxx.se/bug/?i=1950
- [11] = https://curl.haxx.se/bug/?i=1954
- [12] = https://curl.haxx.se/bug/?i=1953
- [13] = https://curl.haxx.se/bug/?i=1960
- [14] = https://curl.haxx.se/bug/?i=1962
- [15] = https://curl.haxx.se/bug/?i=1969
- [16] = https://curl.haxx.se/bug/?i=1964
- [17] = https://curl.haxx.se/bug/?i=1948
- [18] = https://curl.haxx.se/bug/?i=1974
- [19] = https://curl.haxx.se/bug/?i=1974
- [20] = https://curl.haxx.se/bug/?i=1977
- [21] = https://curl.haxx.se/bug/?i=1979
- [22] = https://curl.haxx.se/bug/?i=1941
- [23] = https://curl.haxx.se/bug/?i=1985
- [24] = https://curl.haxx.se/bug/?i=1986
- [25] = https://curl.haxx.se/bug/?i=1988
- [26] = https://curl.haxx.se/bug/?i=1990
- [27] = https://curl.haxx.se/bug/?i=1980
- [28] = https://curl.haxx.se/bug/?i=1992
- [29] = https://curl.haxx.se/bug/?i=1993
- [30] = https://curl.haxx.se/bug/?i=1938
- [31] = https://curl.haxx.se/bug/?i=1938
- [32] = https://curl.haxx.se/docs/adv_20171023.html
- [33] = https://curl.haxx.se/bug/?i=1997
- [34] = https://curl.haxx.se/bug/?i=1999
- [35] = https://curl.haxx.se/bug/?i=1998
- [36] = https://curl.haxx.se/bug/?i=1998
+ [1] = https://curl.se/bug/?i=7738
+ [2] = https://curl.se/bug/?i=7724
+ [3] = https://curl.se/bug/?i=7720
+ [4] = https://curl.se/bug/?i=7718
+ [5] = https://curl.se/bug/?i=7735
+ [6] = https://curl.se/bug/?i=7733
+ [8] = https://curl.se/bug/?i=7726
+ [9] = https://curl.se/bug/?i=7725
+ [10] = https://curl.se/bug/?i=7730
diff --git a/curl/SECURITY.md b/curl/SECURITY.md
new file mode 100644
index 00000000..4e84fbef
--- /dev/null
+++ b/curl/SECURITY.md
@@ -0,0 +1,10 @@
+# Security Policy
+
+See [docs/SECURITY-PROCESS.md](docs/SECURITY-PROCESS.md) for full details.
+
+## Reporting a Vulnerability
+
+If you have found or just suspect a security problem somewhere in curl or libcurl,
+report it on [https://hackerone.com/curl](https://hackerone.com/curl).
+
+We treat security issues with confidentiality until controlled and disclosed responsibly.
diff --git a/curl/acinclude.m4 b/curl/acinclude.m4
index 69bb6c00..277902da 100644
--- a/curl/acinclude.m4
+++ b/curl/acinclude.m4
@@ -5,11 +5,11 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2017, Daniel Stenberg, , et al.
+# Copyright (C) 1998 - 2021, Daniel Stenberg, , et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
-# are also available at https://curl.haxx.se/docs/copyright.html.
+# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
@@ -143,7 +143,7 @@ int main (void)
dnl CURL_CHECK_AIX_ALL_SOURCE
dnl -------------------------------------------------
dnl Provides a replacement of traditional AC_AIX with
-dnl an uniform behaviour across all autoconf versions,
+dnl an uniform behavior across all autoconf versions,
dnl and with our own placement rules.
AC_DEFUN([CURL_CHECK_AIX_ALL_SOURCE], [
@@ -347,6 +347,39 @@ AC_DEFUN([CURL_CHECK_HEADER_WS2TCPIP], [
])
+dnl CURL_CHECK_HEADER_WINCRYPT
+dnl -------------------------------------------------
+dnl Check for compilable and valid wincrypt.h header
+
+AC_DEFUN([CURL_CHECK_HEADER_WINCRYPT], [
+ AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
+ AC_CACHE_CHECK([for wincrypt.h], [curl_cv_header_wincrypt_h], [
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+#undef inline
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include
+#include
+ ]],[[
+ int dummy=2*PROV_RSA_FULL;
+ ]])
+ ],[
+ curl_cv_header_wincrypt_h="yes"
+ ],[
+ curl_cv_header_wincrypt_h="no"
+ ])
+ ])
+ case "$curl_cv_header_wincrypt_h" in
+ yes)
+ AC_DEFINE_UNQUOTED(HAVE_WINCRYPT_H, 1,
+ [Define to 1 if you have the wincrypt.h header file.])
+ ;;
+ esac
+])
+
+
dnl CURL_CHECK_HEADER_WINLDAP
dnl -------------------------------------------------
dnl Check for compilable and valid winldap.h header
@@ -661,7 +694,7 @@ dnl -------------------------------------------------
dnl Check for libraries needed for WINLDAP support,
dnl and prepended to LIBS any needed libraries.
dnl This macro can take an optional parameter with a
-dnl white space separated list of libraries to check
+dnl whitespace separated list of libraries to check
dnl before the WINLDAP default ones.
AC_DEFUN([CURL_CHECK_LIBS_WINLDAP], [
@@ -755,7 +788,7 @@ dnl -------------------------------------------------
dnl Check for libraries needed for LDAP support,
dnl and prepended to LIBS any needed libraries.
dnl This macro can take an optional parameter with a
-dnl white space separated list of libraries to check
+dnl whitespace separated list of libraries to check
dnl before the default ones.
AC_DEFUN([CURL_CHECK_LIBS_LDAP], [
@@ -791,7 +824,9 @@ AC_DEFUN([CURL_CHECK_LIBS_LDAP], [
'-lldap -llber' \
'-llber -lldap' \
'-lldapssl -lldapx -lldapsdk' \
- '-lldapsdk -lldapx -lldapssl' ; do
+ '-lldapsdk -lldapx -lldapssl' \
+ '-lldap -llber -lssl -lcrypto' ; do
+
if test "$curl_cv_ldap_LIBS" = "unknown"; then
if test -z "$x_nlibs"; then
LIBS="$curl_cv_save_LIBS"
@@ -960,212 +995,6 @@ AC_DEFUN([CURL_CHECK_HEADER_MEMORY], [
fi
])
-
-dnl CURL_CHECK_FUNC_GETNAMEINFO
-dnl -------------------------------------------------
-dnl Test if the getnameinfo function is available,
-dnl and check the types of five of its arguments.
-dnl If the function succeeds HAVE_GETNAMEINFO will be
-dnl defined, defining the types of the arguments in
-dnl GETNAMEINFO_TYPE_ARG1, GETNAMEINFO_TYPE_ARG2,
-dnl GETNAMEINFO_TYPE_ARG46 and GETNAMEINFO_TYPE_ARG7,
-dnl and also defining the type qualifier of first
-dnl argument in GETNAMEINFO_QUAL_ARG1.
-
-AC_DEFUN([CURL_CHECK_FUNC_GETNAMEINFO], [
- AC_REQUIRE([CURL_CHECK_HEADER_WS2TCPIP])dnl
- AC_CHECK_HEADERS(sys/types.h sys/socket.h netdb.h)
- #
- AC_MSG_CHECKING([for getnameinfo])
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([getnameinfo])
- ],[
- AC_MSG_RESULT([yes])
- curl_cv_getnameinfo="yes"
- ],[
- AC_MSG_RESULT([no])
- curl_cv_getnameinfo="no"
- ])
- #
- if test "$curl_cv_getnameinfo" != "yes"; then
- AC_MSG_CHECKING([deeper for getnameinfo])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
- ]],[[
- getnameinfo();
- ]])
- ],[
- AC_MSG_RESULT([yes])
- curl_cv_getnameinfo="yes"
- ],[
- AC_MSG_RESULT([but still no])
- curl_cv_getnameinfo="no"
- ])
- fi
- #
- if test "$curl_cv_getnameinfo" != "yes"; then
- AC_MSG_CHECKING([deeper and deeper for getnameinfo])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include
-#ifdef HAVE_WINSOCK2_H
-#include
-#ifdef HAVE_WS2TCPIP_H
-#include
-#endif
-#endif
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include
-#endif
-#ifdef HAVE_NETDB_H
-#include
-#endif
-#endif
- ]],[[
- getnameinfo(0, 0, 0, 0, 0, 0, 0);
- ]])
- ],[
- AC_MSG_RESULT([yes])
- curl_cv_getnameinfo="yes"
- ],[
- AC_MSG_RESULT([but still no])
- curl_cv_getnameinfo="no"
- ])
- fi
- #
- if test "$curl_cv_getnameinfo" = "yes"; then
- AC_CACHE_CHECK([types of arguments for getnameinfo],
- [curl_cv_func_getnameinfo_args], [
- curl_cv_func_getnameinfo_args="unknown"
- for gni_arg1 in 'struct sockaddr *' 'const struct sockaddr *' 'void *'; do
- for gni_arg2 in 'socklen_t' 'size_t' 'int'; do
- for gni_arg46 in 'size_t' 'int' 'socklen_t' 'unsigned int' 'DWORD'; do
- for gni_arg7 in 'int' 'unsigned int'; do
- if test "$curl_cv_func_getnameinfo_args" = "unknown"; then
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#if (!defined(_WIN32_WINNT)) || (_WIN32_WINNT < 0x0501)
-#undef _WIN32_WINNT
-#define _WIN32_WINNT 0x0501
-#endif
-#include
-#ifdef HAVE_WINSOCK2_H
-#include
-#ifdef HAVE_WS2TCPIP_H
-#include
-#endif
-#endif
-#define GNICALLCONV WSAAPI
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include
-#endif
-#ifdef HAVE_NETDB_H
-#include
-#endif
-#define GNICALLCONV
-#endif
- extern int GNICALLCONV
-#ifdef __ANDROID__
-__attribute__((overloadable))
-#endif
- getnameinfo($gni_arg1, $gni_arg2,
- char *, $gni_arg46,
- char *, $gni_arg46,
- $gni_arg7);
- ]],[[
- $gni_arg2 salen=0;
- $gni_arg46 hostlen=0;
- $gni_arg46 servlen=0;
- $gni_arg7 flags=0;
- int res = getnameinfo(0, salen, 0, hostlen, 0, servlen, flags);
- ]])
- ],[
- curl_cv_func_getnameinfo_args="$gni_arg1,$gni_arg2,$gni_arg46,$gni_arg7"
- ])
- fi
- done
- done
- done
- done
- ]) # AC-CACHE-CHECK
- if test "$curl_cv_func_getnameinfo_args" = "unknown"; then
- AC_MSG_WARN([Cannot find proper types to use for getnameinfo args])
- AC_MSG_WARN([HAVE_GETNAMEINFO will not be defined])
- else
- gni_prev_IFS=$IFS; IFS=','
- set dummy `echo "$curl_cv_func_getnameinfo_args" | sed 's/\*/\*/g'`
- IFS=$gni_prev_IFS
- shift
- #
- gni_qual_type_arg1=$[1]
- #
- AC_DEFINE_UNQUOTED(GETNAMEINFO_TYPE_ARG2, $[2],
- [Define to the type of arg 2 for getnameinfo.])
- AC_DEFINE_UNQUOTED(GETNAMEINFO_TYPE_ARG46, $[3],
- [Define to the type of args 4 and 6 for getnameinfo.])
- AC_DEFINE_UNQUOTED(GETNAMEINFO_TYPE_ARG7, $[4],
- [Define to the type of arg 7 for getnameinfo.])
- #
- prev_sh_opts=$-
- #
- case $prev_sh_opts in
- *f*)
- ;;
- *)
- set -f
- ;;
- esac
- #
- case "$gni_qual_type_arg1" in
- const*)
- gni_qual_arg1=const
- gni_type_arg1=`echo $gni_qual_type_arg1 | sed 's/^const //'`
- ;;
- *)
- gni_qual_arg1=
- gni_type_arg1=$gni_qual_type_arg1
- ;;
- esac
- #
- AC_DEFINE_UNQUOTED(GETNAMEINFO_QUAL_ARG1, $gni_qual_arg1,
- [Define to the type qualifier of arg 1 for getnameinfo.])
- AC_DEFINE_UNQUOTED(GETNAMEINFO_TYPE_ARG1, $gni_type_arg1,
- [Define to the type of arg 1 for getnameinfo.])
- #
- case $prev_sh_opts in
- *f*)
- ;;
- *)
- set +f
- ;;
- esac
- #
- AC_DEFINE_UNQUOTED(HAVE_GETNAMEINFO, 1,
- [Define to 1 if you have the getnameinfo function.])
- curl_cv_func_getnameinfo="yes"
- fi
- fi
-])
-
-
dnl TYPE_SOCKADDR_STORAGE
dnl -------------------------------------------------
dnl Check for struct sockaddr_storage. Most IPv6-enabled
@@ -1203,107 +1032,6 @@ AC_DEFUN([TYPE_SOCKADDR_STORAGE],
])
])
-
-dnl CURL_CHECK_NI_WITHSCOPEID
-dnl -------------------------------------------------
-dnl Check for working NI_WITHSCOPEID in getnameinfo()
-
-AC_DEFUN([CURL_CHECK_NI_WITHSCOPEID], [
- AC_REQUIRE([CURL_CHECK_FUNC_GETNAMEINFO])dnl
- AC_REQUIRE([TYPE_SOCKADDR_STORAGE])dnl
- AC_CHECK_HEADERS(stdio.h sys/types.h sys/socket.h \
- netdb.h netinet/in.h arpa/inet.h)
- #
- AC_CACHE_CHECK([for working NI_WITHSCOPEID],
- [curl_cv_working_ni_withscopeid], [
- AC_RUN_IFELSE([
- AC_LANG_PROGRAM([[
-#ifdef HAVE_STDLIB_H
-#include