Starting with OS X 10.11 there is a library called libnetwork
which will be picked up during curl configuration.
This breaks backward compatibility of the resulting binaries
because libnetwork is not available on older OS X versions.
Fix the check code to pass 5 arguments instead of 6. This typo was
introduced in curl 7.39 but was not noticed because the result of
this check is used only if ENABLE_IPV6 is OFF.
Resolve conflicts by taking upstream side when possible and otherwise
integrating the changes from both sides. Be carful in CMakeLists.txt
where the OPENSSL code block that we modified previously has moved, and
preserve our previous modifications in the new location.
Our Windows API header checks are conditioned on if(NOT UNIX) but
libarchive checks HAVE_WINDOWS_H anyway so the result leaks into
the cache and influenes the curl build. Set the check results to
false explicitly for curl when not on Windows to tolerate this.
Reported-by: Vyacheslav Karpukhin <Vyacheslav.Karpukhin@jetbrains.com>
Move CMAKE_USE_OPENSSL and CURL_CA_BUNDLE up to the top of CMake so that
CMake's own sources can know their values. Add the CURL_CA_PATH option
at the top and honor it as part of the curl build.
On OS X, when CMAKE_USE_OPENSSL is OFF, use the OS implementation.
This will allow the OS-configured CA list to be trusted automatically.
This is supported on OS X 10.6 and above using AppleClang, Clang, and
GNU compilers.
Use check_include_file instead of check_include_file_concat to look
for OpenSSL headers. They do not need to participate in a sequence
of dependent system headers. Also they may cause winsock.h to be
included before ws2tcpip.h, causing the latter to not be detected
in the sequence.
Re-apply part of the logic from commit v2.8.0~802 (ENH: allow for shared
build of libcurl ..., 2009-04-10) to skip inet_pton on Windows. On
versions of Windows prior to Vista the function is not available at
runtime.
Set curl build options as needed for CMake rather than presenting them
to the user in the cache. Drop the CMAKE_BUILD_CURL_SHARED option for
now.
Change the curl library name to 'cmcurl'. Disable blocks of code within
curl CMakeLists.txt files that we do not need for CMake, but leave the
code in place to make merging with curl updates easier.
Use a CMake-specific path to this configured header so that it works
when included from a CMake source file in addition to curl sources.
We do not install the Curl headers with CMake, so this hack is okay.
Re-apply the logic change made by commit v2.8.2~536 (Use arch-aware
CHECK_TYPE_SIZE result, 2009-12-17). The size of some types must be
selected at preprocessing time when building for multiple archs on OS X.
Restore the check_include_file_concat functionality broken
in upstream curl. The <net/if.h> header on older OS X versions
depends on <sys/socket.h> begin included first, for example.
The resource file is only needed for the curl .dll, so skip it when
building the static library. This avoids the need to add the
'/machine:' link flag on MS tools for creating a static library.
Remove use of an old hack that takes advantage of the auto-dereference
behavior of the if() command to detect if a variable is defined. The
hack has the form:
if("${VAR} MATCHES "^${VAR}$")
where "${VAR}" is a macro argument reference. Use if(DEFINED) instead.
This also avoids warnings for CMake Policy CMP0054.
Re-apply change from commit v2.8.0~1683 (add initial support for HAIKU
OS, 2008-09-15) on updated upstream curl. However, leave out the part
that was reverted by commit v3.0.0-rc1~541^2~1 (Haiku: Remove outdated
preprocessor checks, 2013-10-05).
We imported curl from an upstream release, so report the corresponding
release version to servers. This is consistent with the version we
presented when our builtin curl was 7.16.1.
Remove our curl CMake build files since upstream now provides some.
After merging the upstream versions we may then port them to build
inside CMake and take code from our old build files as needed.
The error is caused by a workaround for UNICOS. The workaround
incorrectly uses the _CRAYC macro to determine if building for
UNICOS. This macro will always be defined for the Cray C and
C++ compiler regardless of the target platform, even when
building for Linux. The correct macro should be _CRAY, which as
per Cray documentation is only defined for UNICOS targeted
builds.
In some cases, it was possible for the include directory of the system-wide
libcurl to be added to the include path before cmcurl's, which would result
in them being picked up and causing the build to fail if the curl versions
differ too much.
One way to trigger this is to have OpenSSL installed into a non-default
location together with libcurl (/usr/local, for example). If cmcurl is built
with CMAKE_USE_OPENSSL on, -I/usr/local/include would end up being added
before -I${PATH_TO_CMCURL}.
Since commit 7d47c693 (Drop compatibility with CMake < 2.4, 2013-10-08)
we no longer need to use the configure_file IMMEDIATE option to support
compatibility modes less than 2.0.