curl-8.14.1/0000755000000000000000000000000015017756261010752 5ustar0000000000000000curl-8.14.1/CHANGES.md0000644000000000000000000000066615017756261012354 0ustar0000000000000000 In a release tarball, check the RELEASES-NOTES file for what was done in the most recent release. In a git check-out, that file mentions changes that have been done since the previous release. See the online [changelog](https://curl.se/changes.html) for the edited and human readable version of what has changed in different curl releases. curl-8.14.1/CMake/0000755000000000000000000000000015017756261011732 5ustar0000000000000000curl-8.14.1/CMake/CMakeConfigurableFile.in0000644000000000000000000000203715017756261016365 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### @CMAKE_CONFIGURABLE_FILE_CONTENT@ curl-8.14.1/CMake/CurlSymbolHiding.cmake0000644000000000000000000000565715017756261016167 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### option(CURL_HIDDEN_SYMBOLS "Hide libcurl internal symbols (=hide all symbols that are not officially external)" ON) mark_as_advanced(CURL_HIDDEN_SYMBOLS) if(WIN32 AND (ENABLE_DEBUG OR ENABLE_CURLDEBUG)) # We need to export internal debug functions, # e.g. curl_easy_perform_ev() or curl_dbg_*(), # so disable symbol hiding for debug builds and for memory tracking. set(CURL_HIDDEN_SYMBOLS OFF) elseif(DOS OR AMIGA OR MINGW32CE) set(CURL_HIDDEN_SYMBOLS OFF) endif() set(CURL_HIDES_PRIVATE_SYMBOLS FALSE) set(CURL_EXTERN_SYMBOL "") set(CURL_CFLAG_SYMBOLS_HIDE "") if(CURL_HIDDEN_SYMBOLS) if(CMAKE_C_COMPILER_ID MATCHES "Clang" AND NOT MSVC) set(CURL_HIDES_PRIVATE_SYMBOLS TRUE) set(CURL_EXTERN_SYMBOL "__attribute__((__visibility__(\"default\")))") set(CURL_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden") elseif(CMAKE_C_COMPILER_ID STREQUAL "GNU") if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 3.4) # Note: This is considered buggy prior to 4.0 but the autotools do not care, so let us ignore that fact set(CURL_HIDES_PRIVATE_SYMBOLS TRUE) set(CURL_EXTERN_SYMBOL "__attribute__((__visibility__(\"default\")))") set(CURL_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden") endif() elseif(CMAKE_C_COMPILER_ID MATCHES "SunPro" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 8.0) set(CURL_HIDES_PRIVATE_SYMBOLS TRUE) set(CURL_EXTERN_SYMBOL "__global") set(CURL_CFLAG_SYMBOLS_HIDE "-xldscope=hidden") elseif(CMAKE_C_COMPILER_ID MATCHES "Intel" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 9.0) # Requires 9.1.045 set(CURL_HIDES_PRIVATE_SYMBOLS TRUE) set(CURL_EXTERN_SYMBOL "__attribute__((__visibility__(\"default\")))") set(CURL_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden") elseif(MSVC) set(CURL_HIDES_PRIVATE_SYMBOLS TRUE) endif() else() if(MSVC) # Note: This option is prone to export non-curl extra symbols. set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) endif() endif() curl-8.14.1/CMake/CurlTests.c0000644000000000000000000002022415017756261014026 0ustar0000000000000000/*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 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. * * SPDX-License-Identifier: curl * ***************************************************************************/ #ifdef HAVE_FCNTL_O_NONBLOCK /* headers for FCNTL_O_NONBLOCK test */ #include #include #include /* */ #if defined(sun) || defined(__sun__) || \ defined(__SUNPRO_C) || defined(__SUNPRO_CC) # if defined(__SVR4) || defined(__srv4__) # define PLATFORM_SOLARIS # else # define PLATFORM_SUNOS4 # endif #endif #if (defined(_AIX) || defined(__xlC__)) && !defined(_AIX41) # define PLATFORM_AIX_V3 #endif /* */ #if defined(PLATFORM_SUNOS4) || defined(PLATFORM_AIX_V3) #error "O_NONBLOCK does not work on this platform" #endif int main(void) { /* O_NONBLOCK source test */ int flags = 0; if(0 != fcntl(0, F_SETFL, flags | O_NONBLOCK)) return 1; return 0; } #endif /* tests for gethostbyname_r */ #if defined(HAVE_GETHOSTBYNAME_R_3) || \ defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT) || \ defined(HAVE_GETHOSTBYNAME_R_5) || \ defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) || \ defined(HAVE_GETHOSTBYNAME_R_6) || \ defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT) #include #include int main(void) { const char *address = "example.com"; struct hostent h; int rc = 0; #if defined(HAVE_GETHOSTBYNAME_R_3) || \ defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT) struct hostent_data hdata; #elif defined(HAVE_GETHOSTBYNAME_R_5) || \ defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) || \ defined(HAVE_GETHOSTBYNAME_R_6) || \ defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT) char buffer[8192]; struct hostent *hp; int h_errnop; #endif #if defined(HAVE_GETHOSTBYNAME_R_3) || \ defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT) rc = gethostbyname_r(address, &h, &hdata); (void)hdata; #elif defined(HAVE_GETHOSTBYNAME_R_5) || \ defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) rc = gethostbyname_r(address, &h, buffer, 8192, &h_errnop); (void)hp; /* not used for test */ (void)h_errnop; #elif defined(HAVE_GETHOSTBYNAME_R_6) || \ defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT) rc = gethostbyname_r(address, &h, buffer, 8192, &hp, &h_errnop); (void)hp; (void)h_errnop; #endif (void)h; (void)rc; return 0; } #endif #ifdef HAVE_BOOL_T #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_STDBOOL_H #include #endif int main(void) { return (int)sizeof(bool *); } #endif #ifdef STDC_HEADERS #include #include #include #include int main(void) { return 0; } #endif #ifdef HAVE_FILE_OFFSET_BITS #include /* Check that off_t can represent 2**63 - 1 correctly. We cannot simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) static int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main(void) { (void)off_t_is_large; return 0; } #endif #ifdef HAVE_IOCTLSOCKET #ifdef _WIN32 # include #endif int main(void) { /* ioctlsocket source code */ int socket = -1; unsigned long flags = ioctlsocket(socket, FIONBIO, &flags); (void)flags; return 0; } #endif #ifdef HAVE_IOCTLSOCKET_CAMEL #include int main(void) { /* IoctlSocket source code */ if(0 != IoctlSocket(0, 0, 0)) return 1; return 0; } #endif #ifdef HAVE_IOCTLSOCKET_CAMEL_FIONBIO #include #ifdef HAVE_SYS_IOCTL_H # include #endif int main(void) { /* IoctlSocket source code */ long flags = 0; if(0 != IoctlSocket(0, FIONBIO, &flags)) return 1; (void)flags; return 0; } #endif #ifdef HAVE_IOCTLSOCKET_FIONBIO #ifdef _WIN32 # include #endif int main(void) { unsigned long flags = 0; if(0 != ioctlsocket(0, FIONBIO, &flags)) return 1; (void)flags; return 0; } #endif #ifdef HAVE_IOCTL_FIONBIO /* headers for FIONBIO test */ #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_UNISTD_H # include #endif #ifdef HAVE_SYS_SOCKET_H # include #endif #ifdef HAVE_SYS_IOCTL_H # include #endif #ifdef HAVE_STROPTS_H # include #endif int main(void) { int flags = 0; if(0 != ioctl(0, FIONBIO, &flags)) return 1; (void)flags; return 0; } #endif #ifdef HAVE_IOCTL_SIOCGIFADDR /* headers for FIONBIO test */ #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_UNISTD_H # include #endif #ifdef HAVE_SYS_SOCKET_H # include #endif #ifdef HAVE_SYS_IOCTL_H # include #endif #ifdef HAVE_STROPTS_H # include #endif #include int main(void) { struct ifreq ifr; if(0 != ioctl(0, SIOCGIFADDR, &ifr)) return 1; (void)ifr; return 0; } #endif #ifdef HAVE_SETSOCKOPT_SO_NONBLOCK #ifdef _WIN32 # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_SOCKET_H # include #endif int main(void) { if(0 != setsockopt(0, SOL_SOCKET, SO_NONBLOCK, 0, 0)) return 1; return 0; } #endif #ifdef HAVE_GLIBC_STRERROR_R #include #include static void check(char c) { (void)c; } int main(void) { char buffer[1024]; /* This will not compile if strerror_r does not return a char* */ /* !checksrc! disable ERRNOVAR 1 */ check(strerror_r(EACCES, buffer, sizeof(buffer))[0]); return 0; } #endif #ifdef HAVE_POSIX_STRERROR_R #include #include /* Float, because a pointer cannot be implicitly cast to float */ static void check(float f) { (void)f; } int main(void) { char buffer[1024]; /* This will not compile if strerror_r does not return an int */ /* !checksrc! disable ERRNOVAR 1 */ check(strerror_r(EACCES, buffer, sizeof(buffer))); return 0; } #endif #ifdef HAVE_FSETXATTR_6 #include /* header from libc, not from libattr */ int main(void) { fsetxattr(0, 0, 0, 0, 0, 0); return 0; } #endif #ifdef HAVE_FSETXATTR_5 #include /* header from libc, not from libattr */ int main(void) { fsetxattr(0, "", 0, 0, 0); return 0; } #endif #ifdef HAVE_CLOCK_GETTIME_MONOTONIC #include int main(void) { struct timespec ts; (void)clock_gettime(CLOCK_MONOTONIC, &ts); (void)ts; return 0; } #endif #ifdef HAVE_BUILTIN_AVAILABLE int main(void) { if(__builtin_available(macOS 10.12, iOS 5.0, *)) {} return 0; } #endif #ifdef HAVE_ATOMIC #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_UNISTD_H # include #endif #ifdef HAVE_STDATOMIC_H # include #endif int main(void) { _Atomic int i = 1; i = 0; /* Force an atomic-write operation. */ return i; } #endif #ifdef HAVE_WIN32_WINNT #ifdef _WIN32 # ifndef NOGDI # define NOGDI # endif # include #endif #define enquote(x) #x #define expand(x) enquote(x) #pragma message("_WIN32_WINNT=" expand(_WIN32_WINNT)) int main(void) { return 0; } #endif #ifdef MINGW64_VERSION #ifdef __MINGW32__ # include <_mingw.h> #endif #define enquote(x) #x #define expand(x) enquote(x) #pragma message("MINGW64_VERSION=" \ expand(__MINGW64_VERSION_MAJOR) "." \ expand(__MINGW64_VERSION_MINOR)) int main(void) { return 0; } #endif curl-8.14.1/CMake/FindBearSSL.cmake0000644000000000000000000000400115017756261014763 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Find the BearSSL library # # Input variables: # # - `BEARSSL_INCLUDE_DIR`: The BearSSL include directory. # - `BEARSSL_LIBRARY`: Path to `bearssl` library. # # Result variables: # # - `BEARSSL_FOUND`: System has BearSSL. # - `BEARSSL_INCLUDE_DIRS`: The BearSSL include directories. # - `BEARSSL_LIBRARIES`: The BearSSL library names. if(DEFINED BEARSSL_INCLUDE_DIRS AND NOT DEFINED BEARSSL_INCLUDE_DIR) message(WARNING "BEARSSL_INCLUDE_DIRS is deprecated, use BEARSSL_INCLUDE_DIR instead.") set(BEARSSL_INCLUDE_DIR "${BEARSSL_INCLUDE_DIRS}") unset(BEARSSL_INCLUDE_DIRS) endif() find_path(BEARSSL_INCLUDE_DIR NAMES "bearssl.h") find_library(BEARSSL_LIBRARY NAMES "bearssl") include(FindPackageHandleStandardArgs) find_package_handle_standard_args(BearSSL REQUIRED_VARS BEARSSL_INCLUDE_DIR BEARSSL_LIBRARY ) if(BEARSSL_FOUND) set(BEARSSL_INCLUDE_DIRS ${BEARSSL_INCLUDE_DIR}) set(BEARSSL_LIBRARIES ${BEARSSL_LIBRARY}) endif() mark_as_advanced(BEARSSL_INCLUDE_DIR BEARSSL_LIBRARY) curl-8.14.1/CMake/FindBrotli.cmake0000644000000000000000000000545515017756261015001 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Find the brotli library # # Input variables: # # - `BROTLI_INCLUDE_DIR`: The brotli include directory. # - `BROTLICOMMON_LIBRARY`: Path to `brotlicommon` library. # - `BROTLIDEC_LIBRARY`: Path to `brotlidec` library. # # Result variables: # # - `BROTLI_FOUND`: System has brotli. # - `BROTLI_INCLUDE_DIRS`: The brotli include directories. # - `BROTLI_LIBRARIES`: The brotli library names. # - `BROTLI_LIBRARY_DIRS`: The brotli library directories. # - `BROTLI_PC_REQUIRES`: The brotli pkg-config packages. # - `BROTLI_CFLAGS`: Required compiler flags. # - `BROTLI_VERSION`: Version of brotli. set(BROTLI_PC_REQUIRES "libbrotlidec" "libbrotlicommon") # order is significant: brotlidec then brotlicommon if(CURL_USE_PKGCONFIG AND NOT DEFINED BROTLI_INCLUDE_DIR AND NOT DEFINED BROTLICOMMON_LIBRARY AND NOT DEFINED BROTLIDEC_LIBRARY) find_package(PkgConfig QUIET) pkg_check_modules(BROTLI ${BROTLI_PC_REQUIRES}) endif() if(BROTLI_FOUND) set(Brotli_FOUND TRUE) set(BROTLI_VERSION "${BROTLI_libbrotlicommon_VERSION}") string(REPLACE ";" " " BROTLI_CFLAGS "${BROTLI_CFLAGS}") message(STATUS "Found Brotli (via pkg-config): ${BROTLI_INCLUDE_DIRS} (found version \"${BROTLI_VERSION}\")") else() find_path(BROTLI_INCLUDE_DIR "brotli/decode.h") find_library(BROTLICOMMON_LIBRARY NAMES "brotlicommon") find_library(BROTLIDEC_LIBRARY NAMES "brotlidec") include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Brotli REQUIRED_VARS BROTLI_INCLUDE_DIR BROTLIDEC_LIBRARY BROTLICOMMON_LIBRARY ) if(BROTLI_FOUND) set(BROTLI_INCLUDE_DIRS ${BROTLI_INCLUDE_DIR}) set(BROTLI_LIBRARIES ${BROTLIDEC_LIBRARY} ${BROTLICOMMON_LIBRARY}) endif() mark_as_advanced(BROTLI_INCLUDE_DIR BROTLIDEC_LIBRARY BROTLICOMMON_LIBRARY) endif() curl-8.14.1/CMake/FindCares.cmake0000644000000000000000000000722215017756261014575 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Find the c-ares library # # Input variables: # # - `CARES_INCLUDE_DIR`: The c-ares include directory. # - `CARES_LIBRARY`: Path to `cares` library. # # Result variables: # # - `CARES_FOUND`: System has c-ares. # - `CARES_INCLUDE_DIRS`: The c-ares include directories. # - `CARES_LIBRARIES`: The c-ares library names. # - `CARES_LIBRARY_DIRS`: The c-ares library directories. # - `CARES_PC_REQUIRES`: The c-ares pkg-config packages. # - `CARES_CFLAGS`: Required compiler flags. # - `CARES_VERSION`: Version of c-ares. set(CARES_PC_REQUIRES "libcares") if(CURL_USE_PKGCONFIG AND NOT DEFINED CARES_INCLUDE_DIR AND NOT DEFINED CARES_LIBRARY) find_package(PkgConfig QUIET) pkg_check_modules(CARES ${CARES_PC_REQUIRES}) endif() if(CARES_FOUND) set(Cares_FOUND TRUE) string(REPLACE ";" " " CARES_CFLAGS "${CARES_CFLAGS}") message(STATUS "Found Cares (via pkg-config): ${CARES_INCLUDE_DIRS} (found version \"${CARES_VERSION}\")") else() find_path(CARES_INCLUDE_DIR NAMES "ares.h") find_library(CARES_LIBRARY NAMES ${CARES_NAMES} "cares") unset(CARES_VERSION CACHE) if(CARES_INCLUDE_DIR AND EXISTS "${CARES_INCLUDE_DIR}/ares_version.h") set(_version_regex1 "#[\t ]*define[\t ]+ARES_VERSION_MAJOR[\t ]+([0-9]+).*") set(_version_regex2 "#[\t ]*define[\t ]+ARES_VERSION_MINOR[\t ]+([0-9]+).*") set(_version_regex3 "#[\t ]*define[\t ]+ARES_VERSION_PATCH[\t ]+([0-9]+).*") file(STRINGS "${CARES_INCLUDE_DIR}/ares_version.h" _version_str1 REGEX "${_version_regex1}") file(STRINGS "${CARES_INCLUDE_DIR}/ares_version.h" _version_str2 REGEX "${_version_regex2}") file(STRINGS "${CARES_INCLUDE_DIR}/ares_version.h" _version_str3 REGEX "${_version_regex3}") string(REGEX REPLACE "${_version_regex1}" "\\1" _version_str1 "${_version_str1}") string(REGEX REPLACE "${_version_regex2}" "\\1" _version_str2 "${_version_str2}") string(REGEX REPLACE "${_version_regex3}" "\\1" _version_str3 "${_version_str3}") set(CARES_VERSION "${_version_str1}.${_version_str2}.${_version_str3}") unset(_version_regex1) unset(_version_regex2) unset(_version_regex3) unset(_version_str1) unset(_version_str2) unset(_version_str3) endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Cares REQUIRED_VARS CARES_INCLUDE_DIR CARES_LIBRARY VERSION_VAR CARES_VERSION ) if(CARES_FOUND) set(CARES_INCLUDE_DIRS ${CARES_INCLUDE_DIR}) set(CARES_LIBRARIES ${CARES_LIBRARY}) endif() mark_as_advanced(CARES_INCLUDE_DIR CARES_LIBRARY) endif() if(CARES_FOUND AND WIN32) list(APPEND CARES_LIBRARIES "iphlpapi") # for if_indextoname and others endif() curl-8.14.1/CMake/FindGSS.cmake0000644000000000000000000002742215017756261014200 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Find the GSS Kerberos library # # Input variables: # # - `GSS_ROOT_DIR`: Set this variable to the root installation of GSS. (also supported as environment) # # Result variables: # # - `GSS_FOUND`: System has the Heimdal library. # - `GSS_FLAVOUR`: "GNU", "MIT" or "Heimdal" if anything found. # - `GSS_INCLUDE_DIRS`: The GSS include directories. # - `GSS_LIBRARIES`: The GSS library names. # - `GSS_LIBRARY_DIRS`: The GSS library directories. # - `GSS_PC_REQUIRES`: The GSS pkg-config packages. # - `GSS_CFLAGS`: Required compiler flags. # - `GSS_VERSION`: This is set to version advertised by pkg-config or read from manifest. # In case the library is found but no version info available it is set to "unknown" set(_gnu_modname "gss") set(_mit_modname "mit-krb5-gssapi") set(_heimdal_modname "heimdal-gssapi") include(CheckIncludeFile) include(CheckIncludeFiles) include(CheckTypeSize) set(_gss_root_hints "${GSS_ROOT_DIR}" "$ENV{GSS_ROOT_DIR}" ) # Try to find library using system pkg-config if user did not specify root dir if(NOT GSS_ROOT_DIR AND NOT "$ENV{GSS_ROOT_DIR}") if(CURL_USE_PKGCONFIG) find_package(PkgConfig QUIET) pkg_search_module(_GSS ${_gnu_modname} ${_mit_modname} ${_heimdal_modname}) list(APPEND _gss_root_hints "${_GSS_PREFIX}") endif() if(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 us 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 ) # 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 "FindGSS krb5-config --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 IN LISTS _GSS_CFLAGS) if(_flag MATCHES "^-I") string(REGEX REPLACE "^-I" "" _val "${_flag}") list(APPEND _GSS_INCLUDE_DIRS "${_val}") else() list(APPEND _GSS_CFLAGS "${_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 "FindGSS krb5-config --libs: ${_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 IN LISTS _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_LIBRARY_DIRS "${_val}") endif() endforeach() endif() execute_process( COMMAND ${_gss_configure_script} "--version" OUTPUT_VARIABLE _GSS_VERSION RESULT_VARIABLE _gss_configure_failed OUTPUT_STRIP_TRAILING_WHITESPACE ) # Older versions may not have the "--version" parameter. In this case we just do not care. if(_gss_configure_failed) set(_GSS_VERSION 0) 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 do not care. if(_gss_configure_failed) set(GSS_FLAVOUR "Heimdal") # most probably, should not really matter else() if(_gss_vendor MATCHES "H|heimdal") set(GSS_FLAVOUR "Heimdal") else() set(GSS_FLAVOUR "MIT") endif() endif() else() # Either there is no config script or we are on a platform that does not provide one (Windows?) find_path(_GSS_INCLUDE_DIRS NAMES "gssapi/gssapi.h" HINTS ${_gss_root_hints} PATH_SUFFIXES "include" "inc" ) if(_GSS_INCLUDE_DIRS) # jay, we have found something cmake_push_check_state() list(APPEND CMAKE_REQUIRED_INCLUDES "${_GSS_INCLUDE_DIRS}") 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 list(APPEND 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() endif() cmake_pop_check_state() else() # I am not convinced if this is the right way but this is what autotools do at the moment find_path(_GSS_INCLUDE_DIRS NAMES "gssapi.h" HINTS ${_gss_root_hints} PATH_SUFFIXES "include" "inc" ) if(_GSS_INCLUDE_DIRS) set(GSS_FLAVOUR "Heimdal") else() find_path(_GSS_INCLUDE_DIRS NAMES "gss.h" HINTS ${_gss_root_hints} PATH_SUFFIXES "include" ) if(_GSS_INCLUDE_DIRS) set(GSS_FLAVOUR "GNU") set(GSS_PC_REQUIRES "gss") endif() 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_DIRS}" DIRECTORY) 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 "GNU") set(_gss_libname "gss") elseif(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 "GNU") set(_gss_libname "gss") elseif(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 "GNU") set(_gss_libname "gss") elseif(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() endif() else() # _GSS_MODULE_NAME set since CMake 3.16 if(_GSS_MODULE_NAME STREQUAL _gnu_modname OR _GSS_${_gnu_modname}_VERSION) set(GSS_FLAVOUR "GNU") set(GSS_PC_REQUIRES "gss") if(NOT _GSS_VERSION) # for old CMake versions? set(_GSS_VERSION ${_GSS_${_gnu_modname}_VERSION}) endif() elseif(_GSS_MODULE_NAME STREQUAL _mit_modname OR _GSS_${_mit_modname}_VERSION) set(GSS_FLAVOUR "MIT") set(GSS_PC_REQUIRES "mit-krb5-gssapi") if(NOT _GSS_VERSION) # for old CMake versions? set(_GSS_VERSION ${_GSS_${_mit_modname}_VERSION}) endif() else() set(GSS_FLAVOUR "Heimdal") set(GSS_PC_REQUIRES "heimdal-gssapi") if(NOT _GSS_VERSION) # for old CMake versions? set(_GSS_VERSION ${_GSS_${_heimdal_modname}_VERSION}) endif() endif() message(STATUS "Found GSS/${GSS_FLAVOUR} (via pkg-config): ${_GSS_INCLUDE_DIRS} (found version \"${_GSS_VERSION}\")") endif() string(REPLACE ";" " " _GSS_CFLAGS "${_GSS_CFLAGS}") set(GSS_INCLUDE_DIRS ${_GSS_INCLUDE_DIRS}) set(GSS_LIBRARIES ${_GSS_LIBRARIES}) set(GSS_LIBRARY_DIRS ${_GSS_LIBRARY_DIRS}) set(GSS_CFLAGS ${_GSS_CFLAGS}) 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(EXISTS "${GSS_INCLUDE_DIRS}/${_heimdal_manifest_file}") file(STRINGS "${GSS_INCLUDE_DIRS}/${_heimdal_manifest_file}" _heimdal_version_str REGEX "^.*version=\"[0-9]\\.[^\"]+\".*$") 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() elseif(NOT GSS_VERSION AND GSS_FLAVOUR STREQUAL "GNU") if(GSS_INCLUDE_DIRS AND EXISTS "${GSS_INCLUDE_DIRS}/gss.h") set(_version_regex "#[\t ]*define[\t ]+GSS_VERSION[\t ]+\"([^\"]*)\"") file(STRINGS "${GSS_INCLUDE_DIRS}/gss.h" _version_str REGEX "${_version_regex}") string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}") set(GSS_VERSION "${_version_str}") unset(_version_regex) unset(_version_str) endif() endif() endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(GSS REQUIRED_VARS GSS_FLAVOUR GSS_LIBRARIES VERSION_VAR GSS_VERSION FAIL_MESSAGE "Could NOT find GSS, try to set the path to GSS root folder in the system variable GSS_ROOT_DIR" ) mark_as_advanced( _GSS_CFLAGS _GSS_FOUND _GSS_INCLUDE_DIRS _GSS_LIBRARIES _GSS_LIBRARY_DIRS _GSS_MODULE_NAME _GSS_PREFIX _GSS_VERSION ) curl-8.14.1/CMake/FindLDAP.cmake0000644000000000000000000001046215017756261014260 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Find the ldap library # # Input variables: # # - `LDAP_INCLUDE_DIR`: The ldap include directory. # - `LDAP_LIBRARY`: Path to `ldap` library. # - `LDAP_LBER_LIBRARY`: Path to `lber` library. # # Result variables: # # - `LDAP_FOUND`: System has ldap. # - `LDAP_INCLUDE_DIRS`: The ldap include directories. # - `LDAP_LIBRARIES`: The ldap library names. # - `LDAP_LIBRARY_DIRS`: The ldap library directories. # - `LDAP_PC_REQUIRES`: The ldap pkg-config packages. # - `LDAP_CFLAGS`: Required compiler flags. # - `LDAP_VERSION`: Version of ldap. set(LDAP_PC_REQUIRES "ldap" "lber") if(CURL_USE_PKGCONFIG AND NOT DEFINED LDAP_INCLUDE_DIR AND NOT DEFINED LDAP_LIBRARY AND NOT DEFINED LDAP_LBER_LIBRARY) find_package(PkgConfig QUIET) pkg_check_modules(LDAP ${LDAP_PC_REQUIRES}) endif() if(LDAP_FOUND) set(LDAP_VERSION "${LDAP_ldap_VERSION}") string(REPLACE ";" " " LDAP_CFLAGS "${LDAP_CFLAGS}") message(STATUS "Found LDAP (via pkg-config): ${LDAP_INCLUDE_DIRS} (found version \"${LDAP_VERSION}\")") else() set(LDAP_PC_REQUIRES "") # Depend on pkg-config only when found via pkg-config # On Apple the SDK LDAP gets picked up from # 'MacOSX.sdk/System/Library/Frameworks/LDAP.framework/Headers', which contains # ldap.h and lber.h both being stubs to include and . # This causes an infinite inclusion loop in compile. Also do this for libraries # to avoid picking up the 'ldap.framework' with a full path. set(_save_cmake_system_framework_path ${CMAKE_SYSTEM_FRAMEWORK_PATH}) set(CMAKE_SYSTEM_FRAMEWORK_PATH "") find_path(LDAP_INCLUDE_DIR NAMES "ldap.h") find_library(LDAP_LIBRARY NAMES "ldap") find_library(LDAP_LBER_LIBRARY NAMES "lber") set(CMAKE_SYSTEM_FRAMEWORK_PATH ${_save_cmake_system_framework_path}) unset(LDAP_VERSION CACHE) if(LDAP_INCLUDE_DIR AND EXISTS "${LDAP_INCLUDE_DIR}/ldap_features.h") set(_version_regex1 "#[\t ]*define[\t ]+LDAP_VENDOR_VERSION_MAJOR[\t ]+([0-9]+).*") set(_version_regex2 "#[\t ]*define[\t ]+LDAP_VENDOR_VERSION_MINOR[\t ]+([0-9]+).*") set(_version_regex3 "#[\t ]*define[\t ]+LDAP_VENDOR_VERSION_PATCH[\t ]+([0-9]+).*") file(STRINGS "${LDAP_INCLUDE_DIR}/ldap_features.h" _version_str1 REGEX "${_version_regex1}") file(STRINGS "${LDAP_INCLUDE_DIR}/ldap_features.h" _version_str2 REGEX "${_version_regex2}") file(STRINGS "${LDAP_INCLUDE_DIR}/ldap_features.h" _version_str3 REGEX "${_version_regex3}") string(REGEX REPLACE "${_version_regex1}" "\\1" _version_str1 "${_version_str1}") string(REGEX REPLACE "${_version_regex2}" "\\1" _version_str2 "${_version_str2}") string(REGEX REPLACE "${_version_regex3}" "\\1" _version_str3 "${_version_str3}") set(LDAP_VERSION "${_version_str1}.${_version_str2}.${_version_str3}") unset(_version_regex1) unset(_version_regex2) unset(_version_regex3) unset(_version_str1) unset(_version_str2) unset(_version_str3) endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(LDAP REQUIRED_VARS LDAP_INCLUDE_DIR LDAP_LIBRARY LDAP_LBER_LIBRARY VERSION_VAR LDAP_VERSION ) if(LDAP_FOUND) set(LDAP_INCLUDE_DIRS ${LDAP_INCLUDE_DIR}) set(LDAP_LIBRARIES ${LDAP_LIBRARY} ${LDAP_LBER_LIBRARY}) endif() mark_as_advanced(LDAP_INCLUDE_DIR LDAP_LIBRARY LDAP_LBER_LIBRARY) endif() curl-8.14.1/CMake/FindLibgsasl.cmake0000644000000000000000000000600715017756261015300 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Find the libgsasl library # # Input variables: # # - `LIBGSASL_INCLUDE_DIR`: The libgsasl include directory. # - `LIBGSASL_LIBRARY`: Path to `libgsasl` library. # # Result variables: # # - `LIBGSASL_FOUND`: System has libgsasl. # - `LIBGSASL_INCLUDE_DIRS`: The libgsasl include directories. # - `LIBGSASL_LIBRARIES`: The libgsasl library names. # - `LIBGSASL_LIBRARY_DIRS`: The libgsasl library directories. # - `LIBGSASL_PC_REQUIRES`: The libgsasl pkg-config packages. # - `LIBGSASL_CFLAGS`: Required compiler flags. # - `LIBGSASL_VERSION`: Version of libgsasl. set(LIBGSASL_PC_REQUIRES "libgsasl") if(CURL_USE_PKGCONFIG AND NOT DEFINED LIBGSASL_INCLUDE_DIR AND NOT DEFINED LIBGSASL_LIBRARY) find_package(PkgConfig QUIET) pkg_check_modules(LIBGSASL ${LIBGSASL_PC_REQUIRES}) endif() if(LIBGSASL_FOUND) set(Libgsasl_FOUND TRUE) string(REPLACE ";" " " LIBGSASL_CFLAGS "${LIBGSASL_CFLAGS}") message(STATUS "Found Libgsasl (via pkg-config): ${LIBGSASL_INCLUDE_DIRS} (found version \"${LIBGSASL_VERSION}\")") else() find_path(LIBGSASL_INCLUDE_DIR NAMES "gsasl.h") find_library(LIBGSASL_LIBRARY NAMES "gsasl" "libgsasl") unset(LIBGSASL_VERSION CACHE) if(LIBGSASL_INCLUDE_DIR AND EXISTS "${LIBGSASL_INCLUDE_DIR}/gsasl-version.h") set(_version_regex "#[\t ]*define[\t ]+GSASL_VERSION[\t ]+\"([^\"]*)\"") file(STRINGS "${LIBGSASL_INCLUDE_DIR}/gsasl-version.h" _version_str REGEX "${_version_regex}") string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}") set(LIBGSASL_VERSION "${_version_str}") unset(_version_regex) unset(_version_str) endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Libgsasl REQUIRED_VARS LIBGSASL_INCLUDE_DIR LIBGSASL_LIBRARY VERSION_VAR LIBGSASL_VERSION ) if(LIBGSASL_FOUND) set(LIBGSASL_INCLUDE_DIRS ${LIBGSASL_INCLUDE_DIR}) set(LIBGSASL_LIBRARIES ${LIBGSASL_LIBRARY}) endif() mark_as_advanced(LIBGSASL_INCLUDE_DIR LIBGSASL_LIBRARY) endif() curl-8.14.1/CMake/FindLibidn2.cmake0000644000000000000000000000567615017756261015036 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Find the libidn2 library # # Input variables: # # - `LIBIDN2_INCLUDE_DIR`: The libidn2 include directory. # - `LIBIDN2_LIBRARY`: Path to `libidn2` library. # # Result variables: # # - `LIBIDN2_FOUND`: System has libidn2. # - `LIBIDN2_INCLUDE_DIRS`: The libidn2 include directories. # - `LIBIDN2_LIBRARIES`: The libidn2 library names. # - `LIBIDN2_LIBRARY_DIRS`: The libidn2 library directories. # - `LIBIDN2_PC_REQUIRES`: The libidn2 pkg-config packages. # - `LIBIDN2_CFLAGS`: Required compiler flags. # - `LIBIDN2_VERSION`: Version of libidn2. set(LIBIDN2_PC_REQUIRES "libidn2") if(CURL_USE_PKGCONFIG AND NOT DEFINED LIBIDN2_INCLUDE_DIR AND NOT DEFINED LIBIDN2_LIBRARY) find_package(PkgConfig QUIET) pkg_check_modules(LIBIDN2 ${LIBIDN2_PC_REQUIRES}) endif() if(LIBIDN2_FOUND) set(Libidn2_FOUND TRUE) string(REPLACE ";" " " LIBIDN2_CFLAGS "${LIBIDN2_CFLAGS}") message(STATUS "Found Libidn2 (via pkg-config): ${LIBIDN2_INCLUDE_DIRS} (found version \"${LIBIDN2_VERSION}\")") else() find_path(LIBIDN2_INCLUDE_DIR NAMES "idn2.h") find_library(LIBIDN2_LIBRARY NAMES "idn2" "libidn2") unset(LIBIDN2_VERSION CACHE) if(LIBIDN2_INCLUDE_DIR AND EXISTS "${LIBIDN2_INCLUDE_DIR}/idn2.h") set(_version_regex "#[\t ]*define[\t ]+IDN2_VERSION[\t ]+\"([^\"]*)\"") file(STRINGS "${LIBIDN2_INCLUDE_DIR}/idn2.h" _version_str REGEX "${_version_regex}") string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}") set(LIBIDN2_VERSION "${_version_str}") unset(_version_regex) unset(_version_str) endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Libidn2 REQUIRED_VARS LIBIDN2_INCLUDE_DIR LIBIDN2_LIBRARY VERSION_VAR LIBIDN2_VERSION ) if(LIBIDN2_FOUND) set(LIBIDN2_INCLUDE_DIRS ${LIBIDN2_INCLUDE_DIR}) set(LIBIDN2_LIBRARIES ${LIBIDN2_LIBRARY}) endif() mark_as_advanced(LIBIDN2_INCLUDE_DIR LIBIDN2_LIBRARY) endif() curl-8.14.1/CMake/FindLibpsl.cmake0000644000000000000000000000565015017756261014770 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Find the libpsl library # # Input variables: # # - `LIBPSL_INCLUDE_DIR`: The libpsl include directory. # - `LIBPSL_LIBRARY`: Path to `libpsl` library. # # Result variables: # # - `LIBPSL_FOUND`: System has libpsl. # - `LIBPSL_INCLUDE_DIRS`: The libpsl include directories. # - `LIBPSL_LIBRARIES`: The libpsl library names. # - `LIBPSL_LIBRARY_DIRS`: The libpsl library directories. # - `LIBPSL_PC_REQUIRES`: The libpsl pkg-config packages. # - `LIBPSL_CFLAGS`: Required compiler flags. # - `LIBPSL_VERSION`: Version of libpsl. set(LIBPSL_PC_REQUIRES "libpsl") if(CURL_USE_PKGCONFIG AND NOT DEFINED LIBPSL_INCLUDE_DIR AND NOT DEFINED LIBPSL_LIBRARY) find_package(PkgConfig QUIET) pkg_check_modules(LIBPSL ${LIBPSL_PC_REQUIRES}) endif() if(LIBPSL_FOUND AND LIBPSL_INCLUDE_DIRS) set(Libpsl_FOUND TRUE) string(REPLACE ";" " " LIBPSL_CFLAGS "${LIBPSL_CFLAGS}") message(STATUS "Found Libpsl (via pkg-config): ${LIBPSL_INCLUDE_DIRS} (found version \"${LIBPSL_VERSION}\")") else() find_path(LIBPSL_INCLUDE_DIR NAMES "libpsl.h") find_library(LIBPSL_LIBRARY NAMES "psl" "libpsl") unset(LIBPSL_VERSION CACHE) if(LIBPSL_INCLUDE_DIR AND EXISTS "${LIBPSL_INCLUDE_DIR}/libpsl.h") set(_version_regex "#[\t ]*define[\t ]+PSL_VERSION[\t ]+\"([^\"]*)\"") file(STRINGS "${LIBPSL_INCLUDE_DIR}/libpsl.h" _version_str REGEX "${_version_regex}") string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}") set(LIBPSL_VERSION "${_version_str}") unset(_version_regex) unset(_version_str) endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Libpsl REQUIRED_VARS LIBPSL_INCLUDE_DIR LIBPSL_LIBRARY VERSION_VAR LIBPSL_VERSION ) if(LIBPSL_FOUND) set(LIBPSL_INCLUDE_DIRS ${LIBPSL_INCLUDE_DIR}) set(LIBPSL_LIBRARIES ${LIBPSL_LIBRARY}) endif() mark_as_advanced(LIBPSL_INCLUDE_DIR LIBPSL_LIBRARY) endif() curl-8.14.1/CMake/FindLibrtmp.cmake0000644000000000000000000000744615017756261015161 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Find the librtmp library # # Input variables: # # - `LIBRTMP_INCLUDE_DIR`: The librtmp include directory. # - `LIBRTMP_LIBRARY`: Path to `librtmp` library. # # Result variables: # # - `LIBRTMP_FOUND`: System has librtmp. # - `LIBRTMP_INCLUDE_DIRS`: The librtmp include directories. # - `LIBRTMP_LIBRARIES`: The librtmp library names. # - `LIBRTMP_LIBRARY_DIRS`: The librtmp library directories. # - `LIBRTMP_PC_REQUIRES`: The librtmp pkg-config packages. # - `LIBRTMP_CFLAGS`: Required compiler flags. # - `LIBRTMP_VERSION`: Version of librtmp. set(LIBRTMP_PC_REQUIRES "librtmp") if(CURL_USE_PKGCONFIG AND NOT DEFINED LIBRTMP_INCLUDE_DIR AND NOT DEFINED LIBRTMP_LIBRARY) find_package(PkgConfig QUIET) pkg_check_modules(LIBRTMP ${LIBRTMP_PC_REQUIRES}) endif() if(LIBRTMP_FOUND AND LIBRTMP_INCLUDE_DIRS) set(Librtmp_FOUND TRUE) string(REPLACE ";" " " LIBRTMP_CFLAGS "${LIBRTMP_CFLAGS}") message(STATUS "Found Librtmp (via pkg-config): ${LIBRTMP_INCLUDE_DIRS} (found version \"${LIBRTMP_VERSION}\")") else() find_path(LIBRTMP_INCLUDE_DIR NAMES "librtmp/rtmp.h") find_library(LIBRTMP_LIBRARY NAMES "rtmp") unset(LIBRTMP_VERSION CACHE) if(LIBRTMP_INCLUDE_DIR AND EXISTS "${LIBRTMP_INCLUDE_DIR}/librtmp/rtmp.h") set(_version_regex "#[\t ]*define[\t ]+RTMP_LIB_VERSION[\t ]+0x([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F]).*") file(STRINGS "${LIBRTMP_INCLUDE_DIR}/librtmp/rtmp.h" _version_str REGEX "${_version_regex}") string(REGEX REPLACE "${_version_regex}" "\\1" _version_str1 "${_version_str}") string(REGEX REPLACE "${_version_regex}" "\\2" _version_str2 "${_version_str}") if(CMAKE_VERSION VERSION_LESS 3.13) # No support for hex version numbers, just strip leading zeroes string(REGEX REPLACE "^0" "" _version_str1 "${_version_str1}") string(REGEX REPLACE "^0" "" _version_str2 "${_version_str2}") else() math(EXPR _version_str1 "0x${_version_str1}" OUTPUT_FORMAT DECIMAL) math(EXPR _version_str2 "0x${_version_str2}" OUTPUT_FORMAT DECIMAL) endif() set(LIBRTMP_VERSION "${_version_str1}.${_version_str2}") unset(_version_regex) unset(_version_str1) unset(_version_str2) endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Librtmp REQUIRED_VARS LIBRTMP_INCLUDE_DIR LIBRTMP_LIBRARY VERSION_VAR LIBRTMP_VERSION ) if(LIBRTMP_FOUND) set(LIBRTMP_INCLUDE_DIRS ${LIBRTMP_INCLUDE_DIR}) set(LIBRTMP_LIBRARIES ${LIBRTMP_LIBRARY}) endif() mark_as_advanced(LIBRTMP_INCLUDE_DIR LIBRTMP_LIBRARY) # Necessary when linking a static librtmp find_package(OpenSSL) if(OPENSSL_FOUND) list(APPEND LIBRTMP_LIBRARIES OpenSSL::SSL OpenSSL::Crypto) endif() endif() if(LIBRTMP_FOUND AND WIN32) list(APPEND LIBRTMP_LIBRARIES "winmm") endif() curl-8.14.1/CMake/FindLibssh.cmake0000644000000000000000000000733215017756261014766 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Find the libssh library # # Input variables: # # - `LIBSSH_INCLUDE_DIR`: The libssh include directory. # - `LIBSSH_LIBRARY`: Path to libssh library. # # Result variables: # # - `LIBSSH_FOUND`: System has libssh. # - `LIBSSH_INCLUDE_DIRS`: The libssh include directories. # - `LIBSSH_LIBRARIES`: The libssh library names. # - `LIBSSH_LIBRARY_DIRS`: The libssh library directories. # - `LIBSSH_PC_REQUIRES`: The libssh pkg-config packages. # - `LIBSSH_CFLAGS`: Required compiler flags. # - `LIBSSH_VERSION`: Version of libssh. set(LIBSSH_PC_REQUIRES "libssh") if(CURL_USE_PKGCONFIG AND NOT DEFINED LIBSSH_INCLUDE_DIR AND NOT DEFINED LIBSSH_LIBRARY) find_package(PkgConfig QUIET) pkg_check_modules(LIBSSH ${LIBSSH_PC_REQUIRES}) endif() if(LIBSSH_FOUND) set(Libssh_FOUND TRUE) string(REPLACE ";" " " LIBSSH_CFLAGS "${LIBSSH_CFLAGS}") message(STATUS "Found Libssh (via pkg-config): ${LIBSSH_INCLUDE_DIRS} (found version \"${LIBSSH_VERSION}\")") else() find_path(LIBSSH_INCLUDE_DIR NAMES "libssh/libssh.h") find_library(LIBSSH_LIBRARY NAMES "ssh" "libssh") unset(LIBSSH_VERSION CACHE) if(LIBSSH_INCLUDE_DIR AND EXISTS "${LIBSSH_INCLUDE_DIR}/libssh/libssh_version.h") set(_version_regex1 "#[\t ]*define[\t ]+LIBSSH_VERSION_MAJOR[\t ]+([0-9]+).*") set(_version_regex2 "#[\t ]*define[\t ]+LIBSSH_VERSION_MINOR[\t ]+([0-9]+).*") set(_version_regex3 "#[\t ]*define[\t ]+LIBSSH_VERSION_MICRO[\t ]+([0-9]+).*") file(STRINGS "${LIBSSH_INCLUDE_DIR}/libssh/libssh_version.h" _version_str1 REGEX "${_version_regex1}") file(STRINGS "${LIBSSH_INCLUDE_DIR}/libssh/libssh_version.h" _version_str2 REGEX "${_version_regex2}") file(STRINGS "${LIBSSH_INCLUDE_DIR}/libssh/libssh_version.h" _version_str3 REGEX "${_version_regex3}") string(REGEX REPLACE "${_version_regex1}" "\\1" _version_str1 "${_version_str1}") string(REGEX REPLACE "${_version_regex2}" "\\1" _version_str2 "${_version_str2}") string(REGEX REPLACE "${_version_regex3}" "\\1" _version_str3 "${_version_str3}") set(LIBSSH_VERSION "${_version_str1}.${_version_str2}.${_version_str3}") unset(_version_regex1) unset(_version_regex2) unset(_version_regex3) unset(_version_str1) unset(_version_str2) unset(_version_str3) endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Libssh REQUIRED_VARS LIBSSH_INCLUDE_DIR LIBSSH_LIBRARY VERSION_VAR LIBSSH_VERSION ) if(LIBSSH_FOUND) set(LIBSSH_INCLUDE_DIRS ${LIBSSH_INCLUDE_DIR}) set(LIBSSH_LIBRARIES ${LIBSSH_LIBRARY}) endif() mark_as_advanced(LIBSSH_INCLUDE_DIR LIBSSH_LIBRARY) endif() if(LIBSSH_FOUND AND WIN32) list(APPEND LIBSSH_LIBRARIES "iphlpapi") # for if_nametoindex endif() curl-8.14.1/CMake/FindLibssh2.cmake0000644000000000000000000000574315017756261015054 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Find the libssh2 library # # Input variables: # # - `LIBSSH2_INCLUDE_DIR`: The libssh2 include directory. # - `LIBSSH2_LIBRARY`: Path to `libssh2` library. # # Result variables: # # - `LIBSSH2_FOUND`: System has libssh2. # - `LIBSSH2_INCLUDE_DIRS`: The libssh2 include directories. # - `LIBSSH2_LIBRARIES`: The libssh2 library names. # - `LIBSSH2_LIBRARY_DIRS`: The libssh2 library directories. # - `LIBSSH2_PC_REQUIRES`: The libssh2 pkg-config packages. # - `LIBSSH2_CFLAGS`: Required compiler flags. # - `LIBSSH2_VERSION`: Version of libssh2. set(LIBSSH2_PC_REQUIRES "libssh2") if(CURL_USE_PKGCONFIG AND NOT DEFINED LIBSSH2_INCLUDE_DIR AND NOT DEFINED LIBSSH2_LIBRARY) find_package(PkgConfig QUIET) pkg_check_modules(LIBSSH2 ${LIBSSH2_PC_REQUIRES}) endif() if(LIBSSH2_FOUND AND LIBSSH2_INCLUDE_DIRS) set(Libssh2_FOUND TRUE) string(REPLACE ";" " " LIBSSH2_CFLAGS "${LIBSSH2_CFLAGS}") message(STATUS "Found Libssh2 (via pkg-config): ${LIBSSH2_INCLUDE_DIRS} (found version \"${LIBSSH2_VERSION}\")") else() find_path(LIBSSH2_INCLUDE_DIR NAMES "libssh2.h") find_library(LIBSSH2_LIBRARY NAMES "ssh2" "libssh2") unset(LIBSSH2_VERSION CACHE) if(LIBSSH2_INCLUDE_DIR AND EXISTS "${LIBSSH2_INCLUDE_DIR}/libssh2.h") set(_version_regex "#[\t ]*define[\t ]+LIBSSH2_VERSION[\t ]+\"([^\"]*)\"") file(STRINGS "${LIBSSH2_INCLUDE_DIR}/libssh2.h" _version_str REGEX "${_version_regex}") string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}") set(LIBSSH2_VERSION "${_version_str}") unset(_version_regex) unset(_version_str) endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Libssh2 REQUIRED_VARS LIBSSH2_INCLUDE_DIR LIBSSH2_LIBRARY VERSION_VAR LIBSSH2_VERSION ) if(LIBSSH2_FOUND) set(LIBSSH2_INCLUDE_DIRS ${LIBSSH2_INCLUDE_DIR}) set(LIBSSH2_LIBRARIES ${LIBSSH2_LIBRARY}) endif() mark_as_advanced(LIBSSH2_INCLUDE_DIR LIBSSH2_LIBRARY) endif() curl-8.14.1/CMake/FindLibuv.cmake0000644000000000000000000000677715017756261014637 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Find the libuv library # # Input variables: # # - `LIBUV_INCLUDE_DIR`: The libuv include directory. # - `LIBUV_LIBRARY`: Path to `libuv` library. # # Result variables: # # - `LIBUV_FOUND`: System has libuv. # - `LIBUV_INCLUDE_DIRS`: The libuv include directories. # - `LIBUV_LIBRARIES`: The libuv library names. # - `LIBUV_LIBRARY_DIRS`: The libuv library directories. # - `LIBUV_PC_REQUIRES`: The libuv pkg-config packages. # - `LIBUV_CFLAGS`: Required compiler flags. # - `LIBUV_VERSION`: Version of libuv. set(LIBUV_PC_REQUIRES "libuv") if(CURL_USE_PKGCONFIG AND NOT DEFINED LIBUV_INCLUDE_DIR AND NOT DEFINED LIBUV_LIBRARY) find_package(PkgConfig QUIET) pkg_check_modules(LIBUV ${LIBUV_PC_REQUIRES}) endif() if(LIBUV_FOUND) set(Libuv_FOUND TRUE) string(REPLACE ";" " " LIBUV_CFLAGS "${LIBUV_CFLAGS}") message(STATUS "Found Libuv (via pkg-config): ${LIBUV_INCLUDE_DIRS} (found version \"${LIBUV_VERSION}\")") else() find_path(LIBUV_INCLUDE_DIR NAMES "uv.h") find_library(LIBUV_LIBRARY NAMES "uv" "libuv") unset(LIBUV_VERSION CACHE) if(LIBUV_INCLUDE_DIR AND EXISTS "${LIBUV_INCLUDE_DIR}/uv/version.h") set(_version_regex1 "#[\t ]*define[\t ]+UV_VERSION_MAJOR[\t ]+([0-9]+).*") set(_version_regex2 "#[\t ]*define[\t ]+UV_VERSION_MINOR[\t ]+([0-9]+).*") set(_version_regex3 "#[\t ]*define[\t ]+UV_VERSION_PATCH[\t ]+([0-9]+).*") file(STRINGS "${LIBUV_INCLUDE_DIR}/uv/version.h" _version_str1 REGEX "${_version_regex1}") file(STRINGS "${LIBUV_INCLUDE_DIR}/uv/version.h" _version_str2 REGEX "${_version_regex2}") file(STRINGS "${LIBUV_INCLUDE_DIR}/uv/version.h" _version_str3 REGEX "${_version_regex3}") string(REGEX REPLACE "${_version_regex1}" "\\1" _version_str1 "${_version_str1}") string(REGEX REPLACE "${_version_regex2}" "\\1" _version_str2 "${_version_str2}") string(REGEX REPLACE "${_version_regex3}" "\\1" _version_str3 "${_version_str3}") set(LIBUV_VERSION "${_version_str1}.${_version_str2}.${_version_str3}") unset(_version_regex1) unset(_version_regex2) unset(_version_regex3) unset(_version_str1) unset(_version_str2) unset(_version_str3) endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Libuv REQUIRED_VARS LIBUV_INCLUDE_DIR LIBUV_LIBRARY VERSION_VAR LIBUV_VERSION ) if(LIBUV_FOUND) set(LIBUV_INCLUDE_DIRS ${LIBUV_INCLUDE_DIR}) set(LIBUV_LIBRARIES ${LIBUV_LIBRARY}) endif() mark_as_advanced(LIBUV_INCLUDE_DIR LIBUV_LIBRARY) endif() curl-8.14.1/CMake/FindMSH3.cmake0000644000000000000000000000461015017756261014250 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Find the msh3 library # # Input variables: # # - `MSH3_INCLUDE_DIR`: The msh3 include directory. # - `MSH3_LIBRARY`: Path to `msh3` library. # # Result variables: # # - `MSH3_FOUND`: System has msh3. # - `MSH3_INCLUDE_DIRS`: The msh3 include directories. # - `MSH3_LIBRARIES`: The msh3 library names. # - `MSH3_LIBRARY_DIRS`: The msh3 library directories. # - `MSH3_PC_REQUIRES`: The msh3 pkg-config packages. # - `MSH3_CFLAGS`: Required compiler flags. # - `MSH3_VERSION`: Version of msh3. set(MSH3_PC_REQUIRES "libmsh3") if(CURL_USE_PKGCONFIG AND NOT DEFINED MSH3_INCLUDE_DIR AND NOT DEFINED MSH3_LIBRARY) find_package(PkgConfig QUIET) pkg_check_modules(MSH3 ${MSH3_PC_REQUIRES}) endif() if(MSH3_FOUND) string(REPLACE ";" " " MSH3_CFLAGS "${MSH3_CFLAGS}") message(STATUS "Found MSH3 (via pkg-config): ${MSH3_INCLUDE_DIRS} (found version \"${MSH3_VERSION}\")") else() set(MSH3_PC_REQUIRES "") # Depend on pkg-config only when found via pkg-config find_path(MSH3_INCLUDE_DIR NAMES "msh3.h") find_library(MSH3_LIBRARY NAMES "msh3") include(FindPackageHandleStandardArgs) find_package_handle_standard_args(MSH3 REQUIRED_VARS MSH3_INCLUDE_DIR MSH3_LIBRARY ) if(MSH3_FOUND) set(MSH3_INCLUDE_DIRS ${MSH3_INCLUDE_DIR}) set(MSH3_LIBRARIES ${MSH3_LIBRARY}) endif() mark_as_advanced(MSH3_INCLUDE_DIR MSH3_LIBRARY) endif() curl-8.14.1/CMake/FindMbedTLS.cmake0000644000000000000000000001023015017756261014763 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Find the mbedTLS library # # Input variables: # # - `MBEDTLS_INCLUDE_DIR`: The mbedTLS include directory. # - `MBEDTLS_LIBRARY`: Path to `mbedtls` library. # - `MBEDX509_LIBRARY`: Path to `mbedx509` library. # - `MBEDCRYPTO_LIBRARY`: Path to `mbedcrypto` library. # # Result variables: # # - `MBEDTLS_FOUND`: System has mbedTLS. # - `MBEDTLS_INCLUDE_DIRS`: The mbedTLS include directories. # - `MBEDTLS_LIBRARIES`: The mbedTLS library names. # - `MBEDTLS_LIBRARY_DIRS`: The mbedTLS library directories. # - `MBEDTLS_PC_REQUIRES`: The mbedTLS pkg-config packages. # - `MBEDTLS_CFLAGS`: Required compiler flags. # - `MBEDTLS_VERSION`: Version of mbedTLS. if(DEFINED MBEDTLS_INCLUDE_DIRS AND NOT DEFINED MBEDTLS_INCLUDE_DIR) message(WARNING "MBEDTLS_INCLUDE_DIRS is deprecated, use MBEDTLS_INCLUDE_DIR instead.") set(MBEDTLS_INCLUDE_DIR "${MBEDTLS_INCLUDE_DIRS}") unset(MBEDTLS_INCLUDE_DIRS) endif() set(MBEDTLS_PC_REQUIRES "mbedtls" "mbedx509" "mbedcrypto") if(CURL_USE_PKGCONFIG AND NOT DEFINED MBEDTLS_INCLUDE_DIR AND NOT DEFINED MBEDTLS_LIBRARY AND NOT DEFINED MBEDX509_LIBRARY AND NOT DEFINED MBEDCRYPTO_LIBRARY) find_package(PkgConfig QUIET) pkg_check_modules(MBEDTLS ${MBEDTLS_PC_REQUIRES}) endif() if(MBEDTLS_FOUND) set(MbedTLS_FOUND TRUE) set(MBEDTLS_VERSION "${MBEDTLS_mbedtls_VERSION}") string(REPLACE ";" " " MBEDTLS_CFLAGS "${MBEDTLS_CFLAGS}") message(STATUS "Found MbedTLS (via pkg-config): ${MBEDTLS_INCLUDE_DIRS} (found version \"${MBEDTLS_VERSION}\")") else() set(MBEDTLS_PC_REQUIRES "") # Depend on pkg-config only when found via pkg-config find_path(MBEDTLS_INCLUDE_DIR NAMES "mbedtls/ssl.h") find_library(MBEDTLS_LIBRARY NAMES "mbedtls" "libmbedtls") find_library(MBEDX509_LIBRARY NAMES "mbedx509" "libmbedx509") find_library(MBEDCRYPTO_LIBRARY NAMES "mbedcrypto" "libmbedcrypto") unset(MBEDTLS_VERSION CACHE) if(MBEDTLS_INCLUDE_DIR) if(EXISTS "${MBEDTLS_INCLUDE_DIR}/mbedtls/build_info.h") # 3.x set(_version_header "${MBEDTLS_INCLUDE_DIR}/mbedtls/build_info.h") elseif(EXISTS "${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h") # 2.x set(_version_header "${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h") else() unset(_version_header) endif() if(_version_header) set(_version_regex "#[\t ]*define[\t ]+MBEDTLS_VERSION_STRING[\t ]+\"([0-9.]+)\"") file(STRINGS "${_version_header}" _version_str REGEX "${_version_regex}") string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}") set(MBEDTLS_VERSION "${_version_str}") unset(_version_regex) unset(_version_str) unset(_version_header) endif() endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(MbedTLS REQUIRED_VARS MBEDTLS_INCLUDE_DIR MBEDTLS_LIBRARY MBEDX509_LIBRARY MBEDCRYPTO_LIBRARY VERSION_VAR MBEDTLS_VERSION ) if(MBEDTLS_FOUND) set(MBEDTLS_INCLUDE_DIRS ${MBEDTLS_INCLUDE_DIR}) set(MBEDTLS_LIBRARIES ${MBEDTLS_LIBRARY} ${MBEDX509_LIBRARY} ${MBEDCRYPTO_LIBRARY}) endif() mark_as_advanced(MBEDTLS_INCLUDE_DIR MBEDTLS_LIBRARY MBEDX509_LIBRARY MBEDCRYPTO_LIBRARY) endif() curl-8.14.1/CMake/FindNGHTTP2.cmake0000644000000000000000000000573315017756261014633 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Find the nghttp2 library # # Input variables: # # - `NGHTTP2_INCLUDE_DIR`: The nghttp2 include directory. # - `NGHTTP2_LIBRARY`: Path to `nghttp2` library. # # Result variables: # # - `NGHTTP2_FOUND`: System has nghttp2. # - `NGHTTP2_INCLUDE_DIRS`: The nghttp2 include directories. # - `NGHTTP2_LIBRARIES`: The nghttp2 library names. # - `NGHTTP2_LIBRARY_DIRS`: The nghttp2 library directories. # - `NGHTTP2_PC_REQUIRES`: The nghttp2 pkg-config packages. # - `NGHTTP2_CFLAGS`: Required compiler flags. # - `NGHTTP2_VERSION`: Version of nghttp2. set(NGHTTP2_PC_REQUIRES "libnghttp2") if(CURL_USE_PKGCONFIG AND NOT DEFINED NGHTTP2_INCLUDE_DIR AND NOT DEFINED NGHTTP2_LIBRARY) find_package(PkgConfig QUIET) pkg_check_modules(NGHTTP2 ${NGHTTP2_PC_REQUIRES}) endif() if(NGHTTP2_FOUND) string(REPLACE ";" " " NGHTTP2_CFLAGS "${NGHTTP2_CFLAGS}") message(STATUS "Found NGHTTP2 (via pkg-config): ${NGHTTP2_INCLUDE_DIRS} (found version \"${NGHTTP2_VERSION}\")") else() find_path(NGHTTP2_INCLUDE_DIR NAMES "nghttp2/nghttp2.h") find_library(NGHTTP2_LIBRARY NAMES "nghttp2" "nghttp2_static") unset(NGHTTP2_VERSION CACHE) if(NGHTTP2_INCLUDE_DIR AND EXISTS "${NGHTTP2_INCLUDE_DIR}/nghttp2/nghttp2ver.h") set(_version_regex "#[\t ]*define[\t ]+NGHTTP2_VERSION[\t ]+\"([^\"]*)\"") file(STRINGS "${NGHTTP2_INCLUDE_DIR}/nghttp2/nghttp2ver.h" _version_str REGEX "${_version_regex}") string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}") set(NGHTTP2_VERSION "${_version_str}") unset(_version_regex) unset(_version_str) endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(NGHTTP2 REQUIRED_VARS NGHTTP2_INCLUDE_DIR NGHTTP2_LIBRARY VERSION_VAR NGHTTP2_VERSION ) if(NGHTTP2_FOUND) set(NGHTTP2_INCLUDE_DIRS ${NGHTTP2_INCLUDE_DIR}) set(NGHTTP2_LIBRARIES ${NGHTTP2_LIBRARY}) endif() mark_as_advanced(NGHTTP2_INCLUDE_DIR NGHTTP2_LIBRARY) endif() curl-8.14.1/CMake/FindNGHTTP3.cmake0000644000000000000000000000570415017756261014632 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Find the nghttp3 library # # Input variables: # # - `NGHTTP3_INCLUDE_DIR`: The nghttp3 include directory. # - `NGHTTP3_LIBRARY`: Path to `nghttp3` library. # # Result variables: # # - `NGHTTP3_FOUND`: System has nghttp3. # - `NGHTTP3_INCLUDE_DIRS`: The nghttp3 include directories. # - `NGHTTP3_LIBRARIES`: The nghttp3 library names. # - `NGHTTP3_LIBRARY_DIRS`: The nghttp3 library directories. # - `NGHTTP3_PC_REQUIRES`: The nghttp3 pkg-config packages. # - `NGHTTP3_CFLAGS`: Required compiler flags. # - `NGHTTP3_VERSION`: Version of nghttp3. set(NGHTTP3_PC_REQUIRES "libnghttp3") if(CURL_USE_PKGCONFIG AND NOT DEFINED NGHTTP3_INCLUDE_DIR AND NOT DEFINED NGHTTP3_LIBRARY) find_package(PkgConfig QUIET) pkg_check_modules(NGHTTP3 ${NGHTTP3_PC_REQUIRES}) endif() if(NGHTTP3_FOUND) string(REPLACE ";" " " NGHTTP3_CFLAGS "${NGHTTP3_CFLAGS}") message(STATUS "Found NGHTTP3 (via pkg-config): ${NGHTTP3_INCLUDE_DIRS} (found version \"${NGHTTP3_VERSION}\")") else() find_path(NGHTTP3_INCLUDE_DIR NAMES "nghttp3/nghttp3.h") find_library(NGHTTP3_LIBRARY NAMES "nghttp3") unset(NGHTTP3_VERSION CACHE) if(NGHTTP3_INCLUDE_DIR AND EXISTS "${NGHTTP3_INCLUDE_DIR}/nghttp3/version.h") set(_version_regex "#[\t ]*define[\t ]+NGHTTP3_VERSION[\t ]+\"([^\"]*)\"") file(STRINGS "${NGHTTP3_INCLUDE_DIR}/nghttp3/version.h" _version_str REGEX "${_version_regex}") string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}") set(NGHTTP3_VERSION "${_version_str}") unset(_version_regex) unset(_version_str) endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(NGHTTP3 REQUIRED_VARS NGHTTP3_INCLUDE_DIR NGHTTP3_LIBRARY VERSION_VAR NGHTTP3_VERSION ) if(NGHTTP3_FOUND) set(NGHTTP3_INCLUDE_DIRS ${NGHTTP3_INCLUDE_DIR}) set(NGHTTP3_LIBRARIES ${NGHTTP3_LIBRARY}) endif() mark_as_advanced(NGHTTP3_INCLUDE_DIR NGHTTP3_LIBRARY) endif() curl-8.14.1/CMake/FindNGTCP2.cmake0000644000000000000000000001075515017756261014502 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Find the ngtcp2 library # # This module accepts optional COMPONENTS to control the crypto library (these are # mutually exclusive): # # - quictls: Use `libngtcp2_crypto_quictls`. (choose this for LibreSSL) # - BoringSSL: Use `libngtcp2_crypto_boringssl`. (choose this for AWS-LC) # - wolfSSL: Use `libngtcp2_crypto_wolfssl`. # - GnuTLS: Use `libngtcp2_crypto_gnutls`. # - ossl: Use `libngtcp2_crypto_ossl`. # # Input variables: # # - `NGTCP2_INCLUDE_DIR`: The ngtcp2 include directory. # - `NGTCP2_LIBRARY`: Path to `ngtcp2` library. # # Result variables: # # - `NGTCP2_FOUND`: System has ngtcp2. # - `NGTCP2_INCLUDE_DIRS`: The ngtcp2 include directories. # - `NGTCP2_LIBRARIES`: The ngtcp2 library names. # - `NGTCP2_LIBRARY_DIRS`: The ngtcp2 library directories. # - `NGTCP2_PC_REQUIRES`: The ngtcp2 pkg-config packages. # - `NGTCP2_CFLAGS`: Required compiler flags. # - `NGTCP2_VERSION`: Version of ngtcp2. if(NGTCP2_FIND_COMPONENTS) set(_ngtcp2_crypto_backend "") foreach(_component IN LISTS NGTCP2_FIND_COMPONENTS) if(_component MATCHES "^(BoringSSL|quictls|wolfSSL|GnuTLS|ossl)") 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_lower) string(TOUPPER "ngtcp2_crypto_${_ngtcp2_crypto_backend}" _crypto_library_upper) endif() endif() set(NGTCP2_PC_REQUIRES "libngtcp2") if(_ngtcp2_crypto_backend) list(APPEND NGTCP2_PC_REQUIRES "lib${_crypto_library_lower}") endif() if(CURL_USE_PKGCONFIG AND NOT DEFINED NGTCP2_INCLUDE_DIR AND NOT DEFINED NGTCP2_LIBRARY) find_package(PkgConfig QUIET) pkg_check_modules(NGTCP2 ${NGTCP2_PC_REQUIRES}) endif() if(NGTCP2_FOUND) set(NGTCP2_VERSION "${NGTCP2_libngtcp2_VERSION}") string(REPLACE ";" " " NGTCP2_CFLAGS "${NGTCP2_CFLAGS}") message(STATUS "Found NGTCP2 (via pkg-config): ${NGTCP2_INCLUDE_DIRS} (found version \"${NGTCP2_VERSION}\")") else() find_path(NGTCP2_INCLUDE_DIR NAMES "ngtcp2/ngtcp2.h") find_library(NGTCP2_LIBRARY NAMES "ngtcp2") unset(NGTCP2_VERSION CACHE) if(NGTCP2_INCLUDE_DIR AND EXISTS "${NGTCP2_INCLUDE_DIR}/ngtcp2/version.h") set(_version_regex "#[\t ]*define[\t ]+NGTCP2_VERSION[\t ]+\"([^\"]*)\"") file(STRINGS "${NGTCP2_INCLUDE_DIR}/ngtcp2/version.h" _version_str REGEX "${_version_regex}") string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}") set(NGTCP2_VERSION "${_version_str}") unset(_version_regex) unset(_version_str) endif() if(_ngtcp2_crypto_backend) get_filename_component(_ngtcp2_library_dir "${NGTCP2_LIBRARY}" DIRECTORY) find_library(${_crypto_library_upper}_LIBRARY NAMES ${_crypto_library_lower} HINTS ${_ngtcp2_library_dir}) if(${_crypto_library_upper}_LIBRARY) set(NGTCP2_${_ngtcp2_crypto_backend}_FOUND TRUE) set(NGTCP2_CRYPTO_LIBRARY ${${_crypto_library_upper}_LIBRARY}) endif() endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(NGTCP2 REQUIRED_VARS NGTCP2_INCLUDE_DIR NGTCP2_LIBRARY VERSION_VAR NGTCP2_VERSION HANDLE_COMPONENTS ) if(NGTCP2_FOUND) set(NGTCP2_INCLUDE_DIRS ${NGTCP2_INCLUDE_DIR}) set(NGTCP2_LIBRARIES ${NGTCP2_LIBRARY} ${NGTCP2_CRYPTO_LIBRARY}) endif() mark_as_advanced(NGTCP2_INCLUDE_DIR NGTCP2_LIBRARY NGTCP2_CRYPTO_LIBRARY) endif() curl-8.14.1/CMake/FindNettle.cmake0000644000000000000000000000640115017756261014771 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Find the nettle library # # Input variables: # # - `NETTLE_INCLUDE_DIR`: The nettle include directory. # - `NETTLE_LIBRARY`: Path to `nettle` library. # # Result variables: # # - `NETTLE_FOUND`: System has nettle. # - `NETTLE_INCLUDE_DIRS`: The nettle include directories. # - `NETTLE_LIBRARIES`: The nettle library names. # - `NETTLE_LIBRARY_DIRS`: The nettle library directories. # - `NETTLE_PC_REQUIRES`: The nettle pkg-config packages. # - `NETTLE_CFLAGS`: Required compiler flags. # - `NETTLE_VERSION`: Version of nettle. set(NETTLE_PC_REQUIRES "nettle") if(CURL_USE_PKGCONFIG AND NOT DEFINED NETTLE_INCLUDE_DIR AND NOT DEFINED NETTLE_LIBRARY) find_package(PkgConfig QUIET) pkg_check_modules(NETTLE ${NETTLE_PC_REQUIRES}) endif() if(NETTLE_FOUND) set(Nettle_FOUND TRUE) string(REPLACE ";" " " NETTLE_CFLAGS "${NETTLE_CFLAGS}") message(STATUS "Found Nettle (via pkg-config): ${NETTLE_INCLUDE_DIRS} (found version \"${NETTLE_VERSION}\")") else() find_path(NETTLE_INCLUDE_DIR NAMES "nettle/sha2.h") find_library(NETTLE_LIBRARY NAMES "nettle") unset(NETTLE_VERSION CACHE) if(NETTLE_INCLUDE_DIR AND EXISTS "${NETTLE_INCLUDE_DIR}/nettle/version.h") set(_version_regex1 "#[\t ]*define[ \t]+NETTLE_VERSION_MAJOR[ \t]+([0-9]+).*") set(_version_regex2 "#[\t ]*define[ \t]+NETTLE_VERSION_MINOR[ \t]+([0-9]+).*") file(STRINGS "${NETTLE_INCLUDE_DIR}/nettle/version.h" _version_str1 REGEX "${_version_regex1}") file(STRINGS "${NETTLE_INCLUDE_DIR}/nettle/version.h" _version_str2 REGEX "${_version_regex2}") string(REGEX REPLACE "${_version_regex1}" "\\1" _version_str1 "${_version_str1}") string(REGEX REPLACE "${_version_regex2}" "\\1" _version_str2 "${_version_str2}") set(NETTLE_VERSION "${_version_str1}.${_version_str2}") unset(_version_regex1) unset(_version_regex2) unset(_version_str1) unset(_version_str2) endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Nettle REQUIRED_VARS NETTLE_INCLUDE_DIR NETTLE_LIBRARY VERSION_VAR NETTLE_VERSION ) if(NETTLE_FOUND) set(NETTLE_INCLUDE_DIRS ${NETTLE_INCLUDE_DIR}) set(NETTLE_LIBRARIES ${NETTLE_LIBRARY}) endif() mark_as_advanced(NETTLE_INCLUDE_DIR NETTLE_LIBRARY) endif() curl-8.14.1/CMake/FindQuiche.cmake0000644000000000000000000000464315017756261014762 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Find the quiche library # # Input variables: # # - `QUICHE_INCLUDE_DIR`: The quiche include directory. # - `QUICHE_LIBRARY`: Path to `quiche` library. # # Result variables: # # - `QUICHE_FOUND`: System has quiche. # - `QUICHE_INCLUDE_DIRS`: The quiche include directories. # - `QUICHE_LIBRARIES`: The quiche library names. # - `QUICHE_LIBRARY_DIRS`: The quiche library directories. # - `QUICHE_PC_REQUIRES`: The quiche pkg-config packages. # - `QUICHE_CFLAGS`: Required compiler flags. # - `QUICHE_VERSION`: Version of quiche. set(QUICHE_PC_REQUIRES "quiche") if(CURL_USE_PKGCONFIG AND NOT DEFINED QUICHE_INCLUDE_DIR AND NOT DEFINED QUICHE_LIBRARY) find_package(PkgConfig QUIET) pkg_check_modules(QUICHE ${QUICHE_PC_REQUIRES}) endif() if(QUICHE_FOUND) set(Quiche_FOUND TRUE) string(REPLACE ";" " " QUICHE_CFLAGS "${QUICHE_CFLAGS}") message(STATUS "Found Quiche (via pkg-config): ${QUICHE_INCLUDE_DIRS} (found version \"${QUICHE_VERSION}\")") else() find_path(QUICHE_INCLUDE_DIR NAMES "quiche.h") find_library(QUICHE_LIBRARY NAMES "quiche") include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Quiche REQUIRED_VARS QUICHE_INCLUDE_DIR QUICHE_LIBRARY ) if(QUICHE_FOUND) set(QUICHE_INCLUDE_DIRS ${QUICHE_INCLUDE_DIR}) set(QUICHE_LIBRARIES ${QUICHE_LIBRARY}) endif() mark_as_advanced(QUICHE_INCLUDE_DIR QUICHE_LIBRARY) endif() curl-8.14.1/CMake/FindRustls.cmake0000644000000000000000000000706115017756261015035 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Find the Rustls library # # Input variables: # # - `RUSTLS_INCLUDE_DIR`: The Rustls include directory. # - `RUSTLS_LIBRARY`: Path to `rustls` library. # # Result variables: # # - `RUSTLS_FOUND`: System has Rustls. # - `RUSTLS_INCLUDE_DIRS`: The Rustls include directories. # - `RUSTLS_LIBRARIES`: The Rustls library names. # - `RUSTLS_LIBRARY_DIRS`: The Rustls library directories. # - `RUSTLS_PC_REQUIRES`: The Rustls pkg-config packages. # - `RUSTLS_CFLAGS`: Required compiler flags. # - `RUSTLS_VERSION`: Version of Rustls. set(RUSTLS_PC_REQUIRES "rustls") if(CURL_USE_PKGCONFIG AND NOT DEFINED RUSTLS_INCLUDE_DIR AND NOT DEFINED RUSTLS_LIBRARY) find_package(PkgConfig QUIET) pkg_check_modules(RUSTLS ${RUSTLS_PC_REQUIRES}) endif() if(RUSTLS_FOUND) set(Rustls_FOUND TRUE) string(REPLACE ";" " " RUSTLS_CFLAGS "${RUSTLS_CFLAGS}") message(STATUS "Found Rustls (via pkg-config): ${RUSTLS_INCLUDE_DIRS} (found version \"${RUSTLS_VERSION}\")") else() set(RUSTLS_PC_REQUIRES "") # Depend on pkg-config only when found via pkg-config find_path(RUSTLS_INCLUDE_DIR NAMES "rustls.h") find_library(RUSTLS_LIBRARY NAMES "rustls") include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Rustls REQUIRED_VARS RUSTLS_INCLUDE_DIR RUSTLS_LIBRARY ) if(RUSTLS_FOUND) set(RUSTLS_INCLUDE_DIRS ${RUSTLS_INCLUDE_DIR}) set(RUSTLS_LIBRARIES ${RUSTLS_LIBRARY}) endif() mark_as_advanced(RUSTLS_INCLUDE_DIR RUSTLS_LIBRARY) endif() if(RUSTLS_FOUND) if(APPLE) find_library(SECURITY_FRAMEWORK NAMES "Security") mark_as_advanced(SECURITY_FRAMEWORK) if(NOT SECURITY_FRAMEWORK) message(FATAL_ERROR "Security framework not found") endif() list(APPEND RUSTLS_LIBRARIES "-framework Security") find_library(FOUNDATION_FRAMEWORK NAMES "Foundation") mark_as_advanced(FOUNDATION_FRAMEWORK) if(NOT FOUNDATION_FRAMEWORK) message(FATAL_ERROR "Foundation framework not found") endif() list(APPEND RUSTLS_LIBRARIES "-framework Foundation") elseif(NOT WIN32) find_library(PTHREAD_LIBRARY NAMES "pthread") if(PTHREAD_LIBRARY) list(APPEND RUSTLS_LIBRARIES ${PTHREAD_LIBRARY}) endif() mark_as_advanced(PTHREAD_LIBRARY) find_library(DL_LIBRARY NAMES "dl") if(DL_LIBRARY) list(APPEND RUSTLS_LIBRARIES ${DL_LIBRARY}) endif() mark_as_advanced(DL_LIBRARY) find_library(MATH_LIBRARY NAMES "m") if(MATH_LIBRARY) list(APPEND RUSTLS_LIBRARIES ${MATH_LIBRARY}) endif() mark_as_advanced(MATH_LIBRARY) endif() endif() curl-8.14.1/CMake/FindWolfSSH.cmake0000644000000000000000000000447715017756261015036 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Find the wolfSSH library # # Input variables: # # - `WOLFSSH_INCLUDE_DIR`: The wolfSSH include directory. # - `WOLFSSH_LIBRARY`: Path to `wolfssh` library. # # Result variables: # # - `WOLFSSH_FOUND`: System has wolfSSH. # - `WOLFSSH_INCLUDE_DIRS`: The wolfSSH include directories. # - `WOLFSSH_LIBRARIES`: The wolfSSH library names. # - `WOLFSSH_VERSION`: Version of wolfSSH. find_path(WOLFSSH_INCLUDE_DIR NAMES "wolfssh/ssh.h") find_library(WOLFSSH_LIBRARY NAMES "wolfssh" "libwolfssh") unset(WOLFSSH_VERSION CACHE) if(WOLFSSH_INCLUDE_DIR AND EXISTS "${WOLFSSH_INCLUDE_DIR}/wolfssh/version.h") set(_version_regex "#[\t ]*define[\t ]+LIBWOLFSSH_VERSION_STRING[\t ]+\"([^\"]*)\"") file(STRINGS "${WOLFSSH_INCLUDE_DIR}/wolfssh/version.h" _version_str REGEX "${_version_regex}") string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}") set(WOLFSSH_VERSION "${_version_str}") unset(_version_regex) unset(_version_str) endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(WolfSSH REQUIRED_VARS WOLFSSH_INCLUDE_DIR WOLFSSH_LIBRARY VERSION_VAR WOLFSSH_VERSION ) if(WOLFSSH_FOUND) set(WOLFSSH_INCLUDE_DIRS ${WOLFSSH_INCLUDE_DIR}) set(WOLFSSH_LIBRARIES ${WOLFSSH_LIBRARY}) endif() mark_as_advanced(WOLFSSH_INCLUDE_DIR WOLFSSH_LIBRARY) curl-8.14.1/CMake/FindWolfSSL.cmake0000644000000000000000000000712015017756261015026 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Find the wolfSSL library # # Input variables: # # - `WOLFSSL_INCLUDE_DIR`: The wolfSSL include directory. # - `WOLFSSL_LIBRARY`: Path to `wolfssl` library. # # Result variables: # # - `WOLFSSL_FOUND`: System has wolfSSL. # - `WOLFSSL_INCLUDE_DIRS`: The wolfSSL include directories. # - `WOLFSSL_LIBRARIES`: The wolfSSL library names. # - `WOLFSSL_LIBRARY_DIRS`: The wolfSSL library directories. # - `WOLFSSL_PC_REQUIRES`: The wolfSSL pkg-config packages. # - `WOLFSSL_CFLAGS`: Required compiler flags. # - `WOLFSSL_VERSION`: Version of wolfSSL. if(DEFINED WolfSSL_INCLUDE_DIR AND NOT DEFINED WOLFSSL_INCLUDE_DIR) message(WARNING "WolfSSL_INCLUDE_DIR is deprecated, use WOLFSSL_INCLUDE_DIR instead.") set(WOLFSSL_INCLUDE_DIR "${WolfSSL_INCLUDE_DIR}") endif() if(DEFINED WolfSSL_LIBRARY AND NOT DEFINED WOLFSSL_LIBRARY) message(WARNING "WolfSSL_LIBRARY is deprecated, use WOLFSSL_LIBRARY instead.") set(WOLFSSL_LIBRARY "${WolfSSL_LIBRARY}") endif() set(WOLFSSL_PC_REQUIRES "wolfssl") if(CURL_USE_PKGCONFIG AND NOT DEFINED WOLFSSL_INCLUDE_DIR AND NOT DEFINED WOLFSSL_LIBRARY) find_package(PkgConfig QUIET) pkg_check_modules(WOLFSSL ${WOLFSSL_PC_REQUIRES}) endif() if(WOLFSSL_FOUND) set(WolfSSL_FOUND TRUE) string(REPLACE ";" " " WOLFSSL_CFLAGS "${WOLFSSL_CFLAGS}") message(STATUS "Found WolfSSL (via pkg-config): ${WOLFSSL_INCLUDE_DIRS} (found version \"${WOLFSSL_VERSION}\")") else() find_path(WOLFSSL_INCLUDE_DIR NAMES "wolfssl/ssl.h") find_library(WOLFSSL_LIBRARY NAMES "wolfssl") unset(WOLFSSL_VERSION CACHE) if(WOLFSSL_INCLUDE_DIR AND EXISTS "${WOLFSSL_INCLUDE_DIR}/wolfssl/version.h") set(_version_regex "#[\t ]*define[\t ]+LIBWOLFSSL_VERSION_STRING[\t ]+\"([^\"]*)\"") file(STRINGS "${WOLFSSL_INCLUDE_DIR}/wolfssl/version.h" _version_str REGEX "${_version_regex}") string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}") set(WOLFSSL_VERSION "${_version_str}") unset(_version_regex) unset(_version_str) endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(WolfSSL REQUIRED_VARS WOLFSSL_INCLUDE_DIR WOLFSSL_LIBRARY VERSION_VAR WOLFSSL_VERSION ) if(WOLFSSL_FOUND) set(WOLFSSL_INCLUDE_DIRS ${WOLFSSL_INCLUDE_DIR}) set(WOLFSSL_LIBRARIES ${WOLFSSL_LIBRARY}) endif() mark_as_advanced(WOLFSSL_INCLUDE_DIR WOLFSSL_LIBRARY) endif() if(WOLFSSL_FOUND AND NOT WIN32) find_library(MATH_LIBRARY NAMES "m") if(MATH_LIBRARY) list(APPEND WOLFSSL_LIBRARIES ${MATH_LIBRARY}) # for log and pow endif() mark_as_advanced(MATH_LIBRARY) endif() curl-8.14.1/CMake/FindZstd.cmake0000644000000000000000000000746215017756261014472 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Find the zstd library # # Input variables: # # - `ZSTD_INCLUDE_DIR`: The zstd include directory. # - `ZSTD_LIBRARY`: Path to `zstd` library. # # Result variables: # # - `ZSTD_FOUND`: System has zstd. # - `ZSTD_INCLUDE_DIRS`: The zstd include directories. # - `ZSTD_LIBRARIES`: The zstd library names. # - `ZSTD_LIBRARY_DIRS`: The zstd library directories. # - `ZSTD_PC_REQUIRES`: The zstd pkg-config packages. # - `ZSTD_CFLAGS`: Required compiler flags. # - `ZSTD_VERSION`: Version of zstd. if(DEFINED Zstd_INCLUDE_DIR AND NOT DEFINED ZSTD_INCLUDE_DIR) message(WARNING "Zstd_INCLUDE_DIR is deprecated, use ZSTD_INCLUDE_DIR instead.") set(ZSTD_INCLUDE_DIR "${Zstd_INCLUDE_DIR}") endif() if(DEFINED Zstd_LIBRARY AND NOT DEFINED ZSTD_LIBRARY) message(WARNING "Zstd_LIBRARY is deprecated, use ZSTD_LIBRARY instead.") set(ZSTD_LIBRARY "${Zstd_LIBRARY}") endif() set(ZSTD_PC_REQUIRES "libzstd") if(CURL_USE_PKGCONFIG AND NOT DEFINED ZSTD_INCLUDE_DIR AND NOT DEFINED ZSTD_LIBRARY) find_package(PkgConfig QUIET) pkg_check_modules(ZSTD ${ZSTD_PC_REQUIRES}) endif() if(ZSTD_FOUND) set(Zstd_FOUND TRUE) string(REPLACE ";" " " ZSTD_CFLAGS "${ZSTD_CFLAGS}") message(STATUS "Found Zstd (via pkg-config): ${ZSTD_INCLUDE_DIRS} (found version \"${ZSTD_VERSION}\")") else() find_path(ZSTD_INCLUDE_DIR NAMES "zstd.h") find_library(ZSTD_LIBRARY NAMES "zstd") unset(ZSTD_VERSION CACHE) if(ZSTD_INCLUDE_DIR AND EXISTS "${ZSTD_INCLUDE_DIR}/zstd.h") set(_version_regex1 "#[\t ]*define[ \t]+ZSTD_VERSION_MAJOR[ \t]+([0-9]+).*") set(_version_regex2 "#[\t ]*define[ \t]+ZSTD_VERSION_MINOR[ \t]+([0-9]+).*") set(_version_regex3 "#[\t ]*define[ \t]+ZSTD_VERSION_RELEASE[ \t]+([0-9]+).*") file(STRINGS "${ZSTD_INCLUDE_DIR}/zstd.h" _version_str1 REGEX "${_version_regex1}") file(STRINGS "${ZSTD_INCLUDE_DIR}/zstd.h" _version_str2 REGEX "${_version_regex2}") file(STRINGS "${ZSTD_INCLUDE_DIR}/zstd.h" _version_str3 REGEX "${_version_regex3}") string(REGEX REPLACE "${_version_regex1}" "\\1" _version_str1 "${_version_str1}") string(REGEX REPLACE "${_version_regex2}" "\\1" _version_str2 "${_version_str2}") string(REGEX REPLACE "${_version_regex3}" "\\1" _version_str3 "${_version_str3}") set(ZSTD_VERSION "${_version_str1}.${_version_str2}.${_version_str3}") unset(_version_regex1) unset(_version_regex2) unset(_version_regex3) unset(_version_str1) unset(_version_str2) unset(_version_str3) endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Zstd REQUIRED_VARS ZSTD_INCLUDE_DIR ZSTD_LIBRARY VERSION_VAR ZSTD_VERSION ) if(ZSTD_FOUND) set(ZSTD_INCLUDE_DIRS ${ZSTD_INCLUDE_DIR}) set(ZSTD_LIBRARIES ${ZSTD_LIBRARY}) endif() mark_as_advanced(ZSTD_INCLUDE_DIR ZSTD_LIBRARY) endif() curl-8.14.1/CMake/Macros.cmake0000644000000000000000000000730015017756261014160 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # File defines convenience macros for available feature testing # 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_curl _file _variable) check_include_files("${CURL_INCLUDES};${_file}" ${_variable}) if(${_variable}) list(APPEND CURL_INCLUDES ${_file}) endif() endmacro() set(CURL_TEST_DEFINES "") # Initialize global variable # For other curl specific tests, use this macro. # Return result in variable: CURL_TEST_OUTPUT macro(curl_internal_test _curl_test) if(NOT DEFINED "${_curl_test}") string(REPLACE ";" " " _cmake_required_definitions "${CMAKE_REQUIRED_DEFINITIONS}") set(_curl_test_add_libraries "") if(CMAKE_REQUIRED_LIBRARIES) set(_curl_test_add_libraries "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}") endif() message(STATUS "Performing Test ${_curl_test}") try_compile(${_curl_test} ${PROJECT_BINARY_DIR} "${CMAKE_CURRENT_SOURCE_DIR}/CMake/CurlTests.c" CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=-D${_curl_test} ${CURL_TEST_DEFINES} ${CMAKE_REQUIRED_FLAGS} ${_cmake_required_definitions}" "${_curl_test_add_libraries}" OUTPUT_VARIABLE CURL_TEST_OUTPUT) if(${_curl_test}) set(${_curl_test} 1 CACHE INTERNAL "Curl test") message(STATUS "Performing Test ${_curl_test} - Success") else() set(${_curl_test} "" CACHE INTERNAL "Curl test") message(STATUS "Performing Test ${_curl_test} - Failed") endif() endif() endmacro() macro(curl_dependency_option _option_name _find_name _desc_name) set(${_option_name} "AUTO" CACHE STRING "Build curl with ${_desc_name} support (AUTO, ON or OFF)") set_property(CACHE ${_option_name} PROPERTY STRINGS "AUTO" "ON" "OFF") if(${_option_name} STREQUAL "AUTO") find_package(${_find_name}) elseif(${_option_name}) find_package(${_find_name} REQUIRED) endif() endmacro() # Convert the passed paths to libpath linker options and add them to CMAKE_REQUIRED_*. macro(curl_required_libpaths _libpaths_arg) if(CMAKE_VERSION VERSION_LESS 3.31) set(_libpaths "${_libpaths_arg}") foreach(_libpath IN LISTS _libpaths) list(APPEND CMAKE_REQUIRED_LINK_OPTIONS "${CMAKE_LIBRARY_PATH_FLAG}${_libpath}") endforeach() else() list(APPEND CMAKE_REQUIRED_LINK_DIRECTORIES "${_libpaths_arg}") endif() endmacro() # Pre-fill variables set by a check_type_size() call. macro(curl_prefill_type_size _type _size) set(HAVE_SIZEOF_${_type} TRUE) set(SIZEOF_${_type} ${_size}) set(SIZEOF_${_type}_CODE "#define SIZEOF_${_type} ${_size}") endmacro() curl-8.14.1/CMake/OtherTests.cmake0000644000000000000000000001150215017756261015037 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### include(CheckCSourceCompiles) include(CheckCSourceRuns) include(CheckTypeSize) macro(curl_add_header_include _check _header) if(${_check}) set(_source_epilogue "${_source_epilogue} #include <${_header}>") endif() endmacro() set(_cmake_try_compile_target_type_save ${CMAKE_TRY_COMPILE_TARGET_TYPE}) set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY") if(NOT DEFINED HAVE_STRUCT_SOCKADDR_STORAGE) cmake_push_check_state() set(CMAKE_EXTRA_INCLUDE_FILES "") if(WIN32) set(CMAKE_EXTRA_INCLUDE_FILES "winsock2.h") list(APPEND CMAKE_REQUIRED_LIBRARIES "ws2_32") elseif(HAVE_SYS_SOCKET_H) set(CMAKE_EXTRA_INCLUDE_FILES "sys/socket.h") endif() check_type_size("struct sockaddr_storage" SIZEOF_STRUCT_SOCKADDR_STORAGE) set(HAVE_STRUCT_SOCKADDR_STORAGE ${HAVE_SIZEOF_STRUCT_SOCKADDR_STORAGE}) cmake_pop_check_state() endif() if(NOT WIN32) set(_source_epilogue "#undef inline") curl_add_header_include(HAVE_SYS_TYPES_H "sys/types.h") curl_add_header_include(HAVE_SYS_SOCKET_H "sys/socket.h") check_c_source_compiles("${_source_epilogue} int main(void) { int flag = MSG_NOSIGNAL; (void)flag; return 0; }" HAVE_MSG_NOSIGNAL) endif() set(_source_epilogue "#undef inline") curl_add_header_include(HAVE_SYS_TIME_H "sys/time.h") check_c_source_compiles("${_source_epilogue} #ifdef _MSC_VER #include #endif #include int main(void) { struct timeval ts; ts.tv_sec = 0; ts.tv_usec = 0; (void)ts; return 0; }" HAVE_STRUCT_TIMEVAL) set(CMAKE_TRY_COMPILE_TARGET_TYPE ${_cmake_try_compile_target_type_save}) unset(_cmake_try_compile_target_type_save) # Detect HAVE_GETADDRINFO_THREADSAFE if(WIN32) set(HAVE_GETADDRINFO_THREADSAFE ${HAVE_GETADDRINFO}) elseif(NOT HAVE_GETADDRINFO) set(HAVE_GETADDRINFO_THREADSAFE FALSE) elseif(APPLE OR CMAKE_SYSTEM_NAME STREQUAL "AIX" OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "HP-UX" OR CMAKE_SYSTEM_NAME STREQUAL "MidnightBSD" OR CMAKE_SYSTEM_NAME STREQUAL "NetBSD" OR CMAKE_SYSTEM_NAME STREQUAL "SunOS") set(HAVE_GETADDRINFO_THREADSAFE TRUE) elseif(BSD OR CMAKE_SYSTEM_NAME MATCHES "BSD") set(HAVE_GETADDRINFO_THREADSAFE FALSE) endif() if(NOT DEFINED HAVE_GETADDRINFO_THREADSAFE) set(_source_epilogue "#undef inline") curl_add_header_include(HAVE_SYS_SOCKET_H "sys/socket.h") curl_add_header_include(HAVE_SYS_TIME_H "sys/time.h") curl_add_header_include(HAVE_NETDB_H "netdb.h") check_c_source_compiles("${_source_epilogue} int main(void) { #ifndef h_errno #error force compilation error #endif return 0; }" HAVE_H_ERRNO) if(NOT HAVE_H_ERRNO) check_c_source_compiles("${_source_epilogue} int main(void) { h_errno = 2; return h_errno != 0 ? 1 : 0; }" HAVE_H_ERRNO_ASSIGNABLE) if(NOT HAVE_H_ERRNO_ASSIGNABLE) check_c_source_compiles("${_source_epilogue} int main(void) { #if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200809L) #elif defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 700) #else #error force compilation error #endif return 0; }" HAVE_H_ERRNO_SBS_ISSUE_7) endif() endif() if(HAVE_H_ERRNO OR HAVE_H_ERRNO_ASSIGNABLE OR HAVE_H_ERRNO_SBS_ISSUE_7) set(HAVE_GETADDRINFO_THREADSAFE TRUE) endif() endif() if(NOT WIN32 AND NOT DEFINED HAVE_CLOCK_GETTIME_MONOTONIC_RAW) set(_source_epilogue "#undef inline") curl_add_header_include(HAVE_SYS_TYPES_H "sys/types.h") curl_add_header_include(HAVE_SYS_TIME_H "sys/time.h") check_c_source_compiles("${_source_epilogue} #include int main(void) { struct timespec ts; (void)clock_gettime(CLOCK_MONOTONIC_RAW, &ts); return 0; }" HAVE_CLOCK_GETTIME_MONOTONIC_RAW) endif() unset(_source_epilogue) curl-8.14.1/CMake/PickyWarnings.cmake0000644000000000000000000004214315017756261015530 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### include(CheckCCompilerFlag) set(_picky "") set(_picky_nocheck "") # not to pass to feature checks if(CURL_WERROR) if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.24) set(CMAKE_COMPILE_WARNING_AS_ERROR ON) else() if(MSVC) list(APPEND _picky_nocheck "-WX") else() # llvm/clang and gcc style options list(APPEND _picky_nocheck "-Werror") endif() endif() if((CMAKE_C_COMPILER_ID STREQUAL "GNU" AND NOT DOS AND # Watt-32 headers use the '#include_next' GCC extension CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 5.0) OR CMAKE_C_COMPILER_ID MATCHES "Clang") list(APPEND _picky_nocheck "-pedantic-errors") endif() endif() if(APPLE AND (CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 3.6) OR (CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 6.3)) list(APPEND _picky "-Werror=partial-availability") # clang 3.6 appleclang 6.3 endif() if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang") list(APPEND _picky "-Werror-implicit-function-declaration") # clang 1.0 gcc 2.95 endif() if(MSVC) list(APPEND _picky "-W4") # Use the highest warning level for Visual Studio. elseif(BORLAND) list(APPEND _picky "-w-") # Disable warnings on Borland to avoid changing 3rd party code. endif() if(PICKY_COMPILER) if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang") # https://clang.llvm.org/docs/DiagnosticsReference.html # https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html # _picky_enable = Options we want to enable as-is. # _picky_detect = Options we want to test first and enable if available. # Prefer the -Wextra alias with clang. if(CMAKE_C_COMPILER_ID MATCHES "Clang") set(_picky_enable "-Wextra") else() set(_picky_enable "-W") endif() list(APPEND _picky_enable -Wall -pedantic ) # ---------------------------------- # Add new options here, if in doubt: # ---------------------------------- set(_picky_detect ) # Assume these options always exist with both clang and gcc. # Require clang 3.0 / gcc 2.95 or later. list(APPEND _picky_enable -Wbad-function-cast # clang 2.7 gcc 2.95 -Wconversion # clang 2.7 gcc 2.95 -Wmissing-declarations # clang 1.0 gcc 2.7 -Wmissing-prototypes # clang 1.0 gcc 1.0 -Wnested-externs # clang 1.0 gcc 2.7 -Wno-long-long # clang 1.0 gcc 2.95 -Wno-multichar # clang 1.0 gcc 2.95 -Wpointer-arith # clang 1.0 gcc 1.4 -Wshadow # clang 1.0 gcc 2.95 -Wsign-compare # clang 1.0 gcc 2.95 -Wundef # clang 1.0 gcc 2.95 -Wunused # clang 1.1 gcc 2.95 -Wwrite-strings # clang 1.0 gcc 1.4 ) # Always enable with clang, version dependent with gcc set(_picky_common_old -Waddress # clang 2.7 gcc 4.3 -Wattributes # clang 2.7 gcc 4.1 -Wcast-align # clang 1.0 gcc 4.2 -Wcast-qual # clang 3.0 gcc 3.4.6 -Wdeclaration-after-statement # clang 1.0 gcc 3.4 -Wdiv-by-zero # clang 2.7 gcc 4.1 -Wempty-body # clang 2.7 gcc 4.3 -Wendif-labels # clang 1.0 gcc 3.3 -Wfloat-equal # clang 1.0 gcc 2.96 (3.0) -Wformat-security # clang 2.7 gcc 4.1 -Wignored-qualifiers # clang 2.8 gcc 4.3 -Wmissing-field-initializers # clang 2.7 gcc 4.1 -Wmissing-noreturn # clang 2.7 gcc 4.1 -Wno-format-nonliteral # clang 1.0 gcc 2.96 (3.0) -Wno-sign-conversion # clang 2.9 gcc 4.3 -Wno-system-headers # clang 1.0 gcc 3.0 # -Wpadded # clang 2.9 gcc 4.1 # Not used: We cannot change public structs -Wold-style-definition # clang 2.7 gcc 3.4 -Wredundant-decls # clang 2.7 gcc 4.1 -Wstrict-prototypes # clang 1.0 gcc 3.3 # -Wswitch-enum # clang 2.7 gcc 4.1 # Not used: It basically disallows default case -Wtype-limits # clang 2.7 gcc 4.3 -Wunreachable-code # clang 2.7 gcc 4.1 # -Wunused-macros # clang 2.7 gcc 4.1 # Not practical # -Wno-error=unused-macros # clang 2.7 gcc 4.1 -Wunused-parameter # clang 2.7 gcc 4.1 -Wvla # clang 2.8 gcc 4.3 ) if(CMAKE_C_COMPILER_ID MATCHES "Clang") list(APPEND _picky_enable ${_picky_common_old} -Wshift-sign-overflow # clang 2.9 -Wshorten-64-to-32 # clang 1.0 -Wformat=2 # clang 3.0 gcc 4.8 ) if(NOT MSVC) list(APPEND _picky_enable -Wlanguage-extension-token # clang 3.0 ) endif() # Enable based on compiler version if((CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 3.6) OR (CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 6.3)) list(APPEND _picky_enable -Wdouble-promotion # clang 3.6 gcc 4.6 appleclang 6.3 -Wenum-conversion # clang 3.2 gcc 10.0 appleclang 4.6 g++ 11.0 -Wheader-guard # clang 3.4 appleclang 5.1 -Wpragmas # clang 3.5 gcc 4.1 appleclang 6.0 -Wsometimes-uninitialized # clang 3.2 appleclang 4.6 # -Wunreachable-code-break # clang 3.5 appleclang 6.0 # Not used: Silent in "unity" builds -Wunused-const-variable # clang 3.4 gcc 6.0 appleclang 5.1 ) endif() if((CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 3.9) OR (CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 8.3)) list(APPEND _picky_enable -Wcomma # clang 3.9 appleclang 8.3 -Wmissing-variable-declarations # clang 3.2 appleclang 4.6 ) endif() if((CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 7.0) OR (CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 10.3)) list(APPEND _picky_enable -Wassign-enum # clang 7.0 appleclang 10.3 -Wextra-semi-stmt # clang 7.0 appleclang 10.3 ) endif() if((CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0) OR (CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12.4)) list(APPEND _picky_enable -Wimplicit-fallthrough # clang 4.0 gcc 7.0 appleclang 12.4 # We do silencing for clang 10.0 and above only -Wxor-used-as-pow # clang 10.0 gcc 13.0 ) endif() else() # gcc # Enable based on compiler version if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 4.3) list(APPEND _picky_enable ${_picky_common_old} -Wclobbered # gcc 4.3 -Wmissing-parameter-type # gcc 4.3 -Wold-style-declaration # gcc 4.3 -Wpragmas # clang 3.5 gcc 4.1 appleclang 6.0 -Wstrict-aliasing=3 # gcc 4.0 -ftree-vrp # gcc 4.3 (required for -Warray-bounds, included in -Wall) ) endif() if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 4.5) list(APPEND _picky_enable -Wjump-misses-init # gcc 4.5 ) if(MINGW) list(APPEND _picky_enable -Wno-pedantic-ms-format # gcc 4.5 (MinGW-only) ) endif() endif() if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 4.8) list(APPEND _picky_enable -Wdouble-promotion # clang 3.6 gcc 4.6 appleclang 6.3 -Wformat=2 # clang 3.0 gcc 4.8 -Wtrampolines # gcc 4.6 ) endif() if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 5.0) list(APPEND _picky_enable -Warray-bounds=2 # clang 3.0 gcc 5.0 (clang default: -Warray-bounds) ) endif() if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 6.0) list(APPEND _picky_enable -Wduplicated-cond # gcc 6.0 -Wnull-dereference # clang 3.0 gcc 6.0 (clang default) -fdelete-null-pointer-checks -Wshift-negative-value # clang 3.7 gcc 6.0 (clang default) -Wshift-overflow=2 # clang 3.0 gcc 6.0 (clang default: -Wshift-overflow) -Wunused-const-variable # clang 3.4 gcc 6.0 appleclang 5.1 ) endif() if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 7.0) list(APPEND _picky_enable -Walloc-zero # gcc 7.0 -Wduplicated-branches # gcc 7.0 -Wformat-truncation=2 # gcc 7.0 -Wimplicit-fallthrough # clang 4.0 gcc 7.0 -Wrestrict # gcc 7.0 ) endif() if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0) list(APPEND _picky_enable -Warith-conversion # gcc 10.0 -Wenum-conversion # clang 3.2 gcc 10.0 appleclang 4.6 g++ 11.0 ) endif() if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 13.0) list(APPEND _picky_enable -Warray-compare # clang 20.0 gcc 12.0 -Wenum-int-mismatch # gcc 13.0 -Wxor-used-as-pow # clang 10.0 gcc 13.0 ) endif() if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 15.0) list(APPEND _picky_enable -Wleading-whitespace=spaces # gcc 15.0 -Wtrailing-whitespace=any # gcc 15.0 -Wunterminated-string-initialization # gcc 15.0 ) endif() endif() # set(_picky_skipped "") foreach(_ccopt IN LISTS _picky_enable) string(REGEX MATCH "-W([a-z0-9-]+)" _ccmatch "${_ccopt}") if(_ccmatch AND CMAKE_C_FLAGS MATCHES "-Wno-${CMAKE_MATCH_1}" AND NOT _ccopt STREQUAL "-Wall" AND NOT _ccopt MATCHES "^-Wno-") string(APPEND _picky_skipped " ${_ccopt}") else() list(APPEND _picky "${_ccopt}") endif() endforeach() if(_picky_skipped) message(STATUS "Picky compiler options skipped due to CMAKE_C_FLAGS override:${_picky_skipped}") endif() foreach(_ccopt IN LISTS _picky_detect) # Use a unique variable name 1. for meaningful log output 2. to have a fresh, undefined variable for each detection string(MAKE_C_IDENTIFIER "OPT${_ccopt}" _optvarname) # GCC only warns about unknown -Wno- options if there are also other diagnostic messages, # so test for the positive form instead string(REPLACE "-Wno-" "-W" _ccopt_on "${_ccopt}") check_c_compiler_flag(${_ccopt_on} ${_optvarname}) if(${_optvarname}) list(APPEND _picky "${_ccopt}") endif() endforeach() if(CMAKE_C_COMPILER_ID STREQUAL "GNU") if(CMAKE_C_COMPILER_VERSION VERSION_LESS 4.5) # Avoid false positives list(APPEND _picky "-Wno-shadow") list(APPEND _picky "-Wno-unreachable-code") endif() if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 4.2 AND CMAKE_C_COMPILER_VERSION VERSION_LESS 4.6) # GCC <4.6 do not support #pragma to suppress warnings locally. Disable them globally instead. list(APPEND _picky "-Wno-overlength-strings") endif() if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 4.0 AND CMAKE_C_COMPILER_VERSION VERSION_LESS 4.7) list(APPEND _picky "-Wno-missing-field-initializers") # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36750 endif() if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 4.3 AND CMAKE_C_COMPILER_VERSION VERSION_LESS 4.8) list(APPEND _picky "-Wno-type-limits") # Avoid false positives endif() if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 5.1 AND CMAKE_C_COMPILER_VERSION VERSION_LESS 5.5) list(APPEND _picky "-Wno-conversion") # Avoid false positives endif() endif() elseif(MSVC AND MSVC_VERSION LESS_EQUAL 1943) # Skip for untested/unreleased newer versions list(APPEND _picky "-Wall") list(APPEND _picky "-wd4061") # enumerator 'A' in switch of enum 'B' is not explicitly handled by a case label list(APPEND _picky "-wd4191") # 'type cast': unsafe conversion from 'FARPROC' to 'void (__cdecl *)(void)' list(APPEND _picky "-wd4255") # no function prototype given: converting '()' to '(void)' (in winuser.h) list(APPEND _picky "-wd4464") # relative include path contains '..' list(APPEND _picky "-wd4548") # expression before comma has no effect; expected expression with side-effect (in FD_SET()) list(APPEND _picky "-wd4574") # 'M' is defined to be '0': did you mean to use '#if M'? (in ws2tcpip.h) list(APPEND _picky "-wd4668") # 'M' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif' (in winbase.h) list(APPEND _picky "-wd4710") # 'snprintf': function not inlined list(APPEND _picky "-wd4711") # function 'A' selected for automatic inline expansion list(APPEND _picky "-wd4746") # volatile access of '' is subject to /volatile: setting; # consider using __iso_volatile_load/store intrinsic functions (ARM64) list(APPEND _picky "-wd4774") # 'snprintf': format string expected in argument 3 is not a string literal list(APPEND _picky "-wd4820") # 'A': 'N' bytes padding added after data member 'B' if(MSVC_VERSION GREATER_EQUAL 1900) list(APPEND _picky "-wd5045") # Compiler will insert Spectre mitigation for memory load if /Qspectre switch specified endif() endif() endif() # clang-cl if(CMAKE_C_COMPILER_ID STREQUAL "Clang" AND MSVC) list(APPEND _picky "-Wno-language-extension-token") # Allow __int64 foreach(_wlist IN ITEMS _picky_nocheck _picky) set(_picky_tmp "") foreach(_ccopt IN LISTS "${_wlist}") # Prefix -Wall, otherwise clang-cl interprets it as an MSVC option and translates it to -Weverything if(_ccopt MATCHES "^-W" AND NOT _ccopt STREQUAL "-Wall") list(APPEND _picky_tmp ${_ccopt}) else() list(APPEND _picky_tmp "-clang:${_ccopt}") endif() endforeach() set("${_wlist}" ${_picky_tmp}) endforeach() endif() if(_picky_nocheck OR _picky) set(_picky_tmp "${_picky_nocheck}" "${_picky}") string(REPLACE ";" " " _picky_tmp "${_picky_tmp}") string(STRIP "${_picky_tmp}" _picky_tmp) message(STATUS "Picky compiler options: ${_picky_tmp}") set_property(DIRECTORY APPEND PROPERTY COMPILE_OPTIONS "${_picky_nocheck}" "${_picky}") # Apply to all feature checks string(REPLACE ";" " " _picky_tmp "${_picky}") string(APPEND CMAKE_REQUIRED_FLAGS " ${_picky_tmp}") unset(_picky) unset(_picky_tmp) endif() curl-8.14.1/CMake/Utilities.cmake0000644000000000000000000000361715017756261014716 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # File containing various utilities # Return number of arguments that evaluate to true function(curl_count_true _output_count_var) set(_list_len 0) foreach(_option_var IN LISTS ARGN) if(${_option_var}) math(EXPR _list_len "${_list_len} + 1") endif() endforeach() set(${_output_count_var} ${_list_len} PARENT_SCOPE) endfunction() # Dump all defined variables with their values function(curl_dumpvars) message("::group::CMake Variable Dump") get_cmake_property(_vars VARIABLES) foreach(_var IN ITEMS ${_vars}) get_property(_var_type CACHE ${_var} PROPERTY TYPE) get_property(_var_advanced CACHE ${_var} PROPERTY ADVANCED) if(_var_type) set(_var_type ":${_var_type}") endif() if(_var_advanced) set(_var_advanced " [adv]") endif() message("${_var}${_var_type}${_var_advanced} = '${${_var}}'") endforeach() message("::endgroup::") endfunction() curl-8.14.1/CMake/cmake_uninstall.cmake.in0000644000000000000000000000370115017756261016513 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### 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() 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}") foreach(_file ${_files}) message(STATUS "Uninstalling $ENV{DESTDIR}${_file}") if(IS_SYMLINK "$ENV{DESTDIR}${_file}" OR EXISTS "$ENV{DESTDIR}${_file}") execute_process( COMMAND "@CMAKE_COMMAND@" -E remove "$ENV{DESTDIR}${_file}" RESULT_VARIABLE rm_retval OUTPUT_QUIET ERROR_QUIET ) if(NOT "${rm_retval}" STREQUAL 0) message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${_file}") endif() else() message(STATUS "File $ENV{DESTDIR}${_file} does not exist.") endif() endforeach() curl-8.14.1/CMake/curl-config.cmake.in0000644000000000000000000000516715017756261015562 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### @PACKAGE_INIT@ include(CMakeFindDependencyMacro) if("@USE_OPENSSL@") if("@OPENSSL_VERSION_MAJOR@") find_dependency(OpenSSL "@OPENSSL_VERSION_MAJOR@") else() find_dependency(OpenSSL) endif() endif() if("@HAVE_LIBZ@") find_dependency(ZLIB "@ZLIB_VERSION_MAJOR@") endif() include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake") # Alias for either shared or static library if(NOT TARGET @PROJECT_NAME@::@LIB_NAME@) if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.11 AND CMAKE_VERSION VERSION_LESS 3.18) set_target_properties(@PROJECT_NAME@::@LIB_SELECTED@ PROPERTIES IMPORTED_GLOBAL TRUE) endif() add_library(@PROJECT_NAME@::@LIB_NAME@ ALIAS @PROJECT_NAME@::@LIB_SELECTED@) endif() # For compatibility with CMake's FindCURL.cmake set(CURL_VERSION_STRING "@CURLVERSION@") set(CURL_LIBRARIES @PROJECT_NAME@::@LIB_NAME@) set_and_check(CURL_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@") set(CURL_SUPPORTED_PROTOCOLS "@CURL_SUPPORTED_PROTOCOLS_LIST@") set(CURL_SUPPORTED_FEATURES "@CURL_SUPPORTED_FEATURES_LIST@") foreach(_item IN LISTS CURL_SUPPORTED_PROTOCOLS CURL_SUPPORTED_FEATURES) set(CURL_SUPPORTS_${_item} TRUE) endforeach() set(_missing_req "") foreach(_item IN LISTS CURL_FIND_COMPONENTS) if(CURL_SUPPORTS_${_item}) set(CURL_${_item}_FOUND TRUE) elseif(CURL_FIND_REQUIRED_${_item}) list(APPEND _missing_req ${_item}) endif() endforeach() if(_missing_req) string(REPLACE ";" " " _missing_req "${_missing_req}") if(CURL_FIND_REQUIRED) message(FATAL_ERROR "CURL: missing required components: ${_missing_req}") endif() unset(_missing_req) endif() check_required_components("@PROJECT_NAME@") curl-8.14.1/CMake/unix-cache.cmake0000644000000000000000000001762715017756261014775 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Based on CI runs for Cygwin/MSYS2, Linux, macOS, FreeBSD, NetBSD, OpenBSD if(NOT UNIX) message(FATAL_ERROR "This file should be included on Unix platforms only") endif() if(APPLE OR CYGWIN) set(HAVE_ACCEPT4 0) elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "NetBSD" OR CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") set(HAVE_ACCEPT4 1) endif() set(HAVE_ALARM 1) if(ANDROID) set(HAVE_ARC4RANDOM 1) else() set(HAVE_ARC4RANDOM 0) endif() set(HAVE_ARPA_INET_H 1) set(HAVE_ATOMIC 1) set(HAVE_BASENAME 1) set(HAVE_BOOL_T 1) if(NOT APPLE) set(HAVE_CLOCK_GETTIME_MONOTONIC 1) if(CMAKE_SYSTEM_NAME STREQUAL "Linux") set(HAVE_CLOCK_GETTIME_MONOTONIC_RAW 1) else() set(HAVE_CLOCK_GETTIME_MONOTONIC_RAW 0) endif() endif() set(HAVE_CLOSESOCKET 0) set(HAVE_DECL_FSEEKO 1) set(HAVE_DIRENT_H 1) if(APPLE OR CYGWIN OR CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") set(HAVE_EVENTFD 0) elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "NetBSD") set(HAVE_EVENTFD 1) endif() set(HAVE_FCNTL 1) set(HAVE_FCNTL_H 1) set(HAVE_FCNTL_O_NONBLOCK 1) set(HAVE_FILE_OFFSET_BITS 1) set(HAVE_FNMATCH 1) set(HAVE_FREEADDRINFO 1) set(HAVE_FSEEKO 1) if(APPLE) set(HAVE_FSETXATTR 1) set(HAVE_FSETXATTR_5 0) set(HAVE_FSETXATTR_6 1) elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") set(HAVE_FSETXATTR 0) set(HAVE_FSETXATTR_5 0) set(HAVE_FSETXATTR_6 0) elseif(CYGWIN OR CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "NetBSD") set(HAVE_FSETXATTR 1) set(HAVE_FSETXATTR_5 1) set(HAVE_FSETXATTR_6 0) endif() set(HAVE_FTRUNCATE 1) set(HAVE_GETADDRINFO 1) if(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") set(HAVE_GETADDRINFO_THREADSAFE 0) elseif(CYGWIN OR CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "NetBSD") set(HAVE_GETADDRINFO_THREADSAFE 1) endif() set(HAVE_GETEUID 1) if(APPLE OR CYGWIN OR CMAKE_SYSTEM_NAME STREQUAL "NetBSD" OR CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") set(HAVE_GETHOSTBYNAME_R 0) elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") set(HAVE_GETHOSTBYNAME_R 1) endif() set(HAVE_GETHOSTBYNAME_R_3 0) set(HAVE_GETHOSTBYNAME_R_3_REENTRANT 0) set(HAVE_GETHOSTBYNAME_R_5 0) set(HAVE_GETHOSTBYNAME_R_5_REENTRANT 0) if(CMAKE_SYSTEM_NAME STREQUAL "Linux") set(HAVE_GETHOSTBYNAME_R_6 1) set(HAVE_GETHOSTBYNAME_R_6_REENTRANT 1) else() set(HAVE_GETHOSTBYNAME_R_6 0) set(HAVE_GETHOSTBYNAME_R_6_REENTRANT 0) endif() set(HAVE_GETHOSTNAME 1) if(NOT ANDROID OR ANDROID_PLATFORM_LEVEL GREATER_EQUAL 24) set(HAVE_GETIFADDRS 1) else() set(HAVE_GETIFADDRS 0) endif() if(APPLE OR CYGWIN OR CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") set(HAVE_GETPASS_R 0) elseif(CMAKE_SYSTEM_NAME STREQUAL "NetBSD") set(HAVE_GETPASS_R 1) endif() set(HAVE_GETPEERNAME 1) set(HAVE_GETPPID 1) set(HAVE_GETPWUID 1) set(HAVE_GETPWUID_R 1) set(HAVE_GETRLIMIT 1) set(HAVE_GETSOCKNAME 1) set(HAVE_GETTIMEOFDAY 1) if(CMAKE_SYSTEM_NAME STREQUAL "Linux") set(HAVE_GLIBC_STRERROR_R 1) else() set(HAVE_GLIBC_STRERROR_R 0) endif() set(HAVE_GMTIME_R 1) set(HAVE_IFADDRS_H 1) set(HAVE_IF_NAMETOINDEX 1) set(HAVE_INET_NTOP 1) set(HAVE_INET_PTON 1) set(HAVE_IOCTLSOCKET 0) set(HAVE_IOCTLSOCKET_CAMEL 0) set(HAVE_IOCTLSOCKET_CAMEL_FIONBIO 0) set(HAVE_IOCTLSOCKET_FIONBIO 0) set(HAVE_IOCTL_FIONBIO 1) set(HAVE_IOCTL_SIOCGIFADDR 1) if(CYGWIN) set(HAVE_IO_H 1) else() set(HAVE_IO_H 0) endif() set(HAVE_LIBGEN_H 1) if(CMAKE_SYSTEM_NAME STREQUAL "Linux") set(HAVE_LINUX_TCP_H 1) else() set(HAVE_LINUX_TCP_H 0) endif() set(HAVE_LOCALE_H 1) set(HAVE_LONGLONG 1) if(APPLE) set(HAVE_MACH_ABSOLUTE_TIME 1) endif() if(APPLE OR CYGWIN) set(HAVE_MEMRCHR 0) else() set(HAVE_MEMRCHR 1) endif() set(HAVE_MSG_NOSIGNAL 1) set(HAVE_NETDB_H 1) if(ANDROID) set(HAVE_NETINET_IN6_H 1) else() set(HAVE_NETINET_IN6_H 0) endif() set(HAVE_NETINET_IN_H 1) set(HAVE_NETINET_TCP_H 1) set(HAVE_NETINET_UDP_H 1) set(HAVE_NET_IF_H 1) set(HAVE_OPENDIR 1) set(HAVE_PIPE 1) if(APPLE OR CYGWIN) set(HAVE_PIPE2 0) elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "NetBSD" OR CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") set(HAVE_PIPE2 1) endif() set(HAVE_POLL 1) set(HAVE_POLL_H 1) if(CMAKE_SYSTEM_NAME STREQUAL "Linux") set(HAVE_POSIX_STRERROR_R 0) else() set(HAVE_POSIX_STRERROR_R 1) endif() set(HAVE_PWD_H 1) set(HAVE_REALPATH 1) set(HAVE_RECV 1) set(HAVE_SA_FAMILY_T 1) set(HAVE_SCHED_YIELD 1) set(HAVE_SELECT 1) set(HAVE_SEND 1) if(APPLE OR CYGWIN) set(HAVE_SENDMMSG 0) else() set(HAVE_SENDMMSG 1) endif() set(HAVE_SENDMSG 1) set(HAVE_SETLOCALE 1) if(CYGWIN OR CMAKE_SYSTEM_NAME STREQUAL "Linux") set(HAVE_SETMODE 0) else() set(HAVE_SETMODE 1) endif() set(HAVE_SETRLIMIT 1) set(HAVE_SETSOCKOPT_SO_NONBLOCK 0) set(HAVE_SIGACTION 1) set(HAVE_SIGINTERRUPT 1) set(HAVE_SIGNAL 1) set(HAVE_SIGSETJMP 1) set(HAVE_SNPRINTF 1) set(HAVE_SOCKADDR_IN6_SIN6_ADDR 1) set(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1) set(HAVE_SOCKET 1) set(HAVE_SOCKETPAIR 1) set(HAVE_STDATOMIC_H 1) set(HAVE_STDBOOL_H 1) set(HAVE_STDDEF_H 1) set(HAVE_STDINT_H 1) set(HAVE_STRCASECMP 1) set(HAVE_STRCMPI 0) set(HAVE_STRDUP 1) set(HAVE_STRERROR_R 1) set(HAVE_STRICMP 0) set(HAVE_STRINGS_H 1) if(_CURL_OLD_LINUX) set(HAVE_STROPTS_H 1) else() set(HAVE_STROPTS_H 0) # glibc 2.30 or newer. https://sourceware.org/legacy-ml/libc-alpha/2019-08/msg00029.html endif() set(HAVE_STRUCT_SOCKADDR_STORAGE 1) set(HAVE_STRUCT_TIMEVAL 1) if(ANDROID OR CMAKE_SYSTEM_NAME STREQUAL "iOS") set(HAVE_SUSECONDS_T 1) endif() if(APPLE OR CYGWIN OR CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") set(HAVE_SYS_EVENTFD_H 0) elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "NetBSD") set(HAVE_SYS_EVENTFD_H 1) endif() if(CYGWIN OR CMAKE_SYSTEM_NAME STREQUAL "Linux") set(HAVE_SYS_FILIO_H 0) else() set(HAVE_SYS_FILIO_H 1) endif() set(HAVE_SYS_IOCTL_H 1) set(HAVE_SYS_PARAM_H 1) set(HAVE_SYS_POLL_H 1) set(HAVE_SYS_RESOURCE_H 1) set(HAVE_SYS_SELECT_H 1) set(HAVE_SYS_SOCKET_H 1) if(CYGWIN OR CMAKE_SYSTEM_NAME STREQUAL "Linux") set(HAVE_SYS_SOCKIO_H 0) else() set(HAVE_SYS_SOCKIO_H 1) endif() set(HAVE_SYS_STAT_H 1) set(HAVE_SYS_TIME_H 1) set(HAVE_SYS_TYPES_H 1) set(HAVE_SYS_UN_H 1) if(CYGWIN) set(HAVE_SYS_UTIME_H 1) else() set(HAVE_SYS_UTIME_H 0) endif() set(HAVE_TERMIOS_H 1) if(CYGWIN OR CMAKE_SYSTEM_NAME STREQUAL "Linux") set(HAVE_TERMIO_H 1) else() set(HAVE_TERMIO_H 0) endif() set(HAVE_TIME_T_UNSIGNED 0) set(HAVE_UNISTD_H 1) set(HAVE_UTIME 1) set(HAVE_UTIMES 1) set(HAVE_UTIME_H 1) set(HAVE_WRITABLE_ARGV 1) if(CYGWIN) set(HAVE__SETMODE 1) endif() set(STDC_HEADERS 1) set(USE_UNIX_SOCKETS 1) curl-8.14.1/CMake/win32-cache.cmake0000644000000000000000000001562615017756261014751 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### if(NOT WIN32) message(FATAL_ERROR "This file should be included on Windows platform only") endif() if(MINGW) set(HAVE_BASENAME 1) set(HAVE_BOOL_T 1) # = HAVE_STDBOOL_H set(HAVE_DIRENT_H 1) set(HAVE_FTRUNCATE 1) set(HAVE_GETTIMEOFDAY 1) set(HAVE_LIBGEN_H 1) set(HAVE_OPENDIR 1) set(HAVE_SNPRINTF 1) set(HAVE_STDBOOL_H 1) set(HAVE_STDDEF_H 1) # detected by CMake internally in check_type_size() set(HAVE_STDINT_H 1) # detected by CMake internally in check_type_size() set(HAVE_STRINGS_H 1) # wrapper to string.h set(HAVE_SYS_PARAM_H 1) set(HAVE_SYS_TIME_H 1) set(HAVE_UNISTD_H 1) set(HAVE_UTIME_H 1) # wrapper to sys/utime.h else() set(HAVE_DIRENT_H 0) set(HAVE_FTRUNCATE 0) set(HAVE_GETTIMEOFDAY 0) set(HAVE_LIBGEN_H 0) set(HAVE_OPENDIR 0) set(HAVE_STRINGS_H 0) set(HAVE_SYS_PARAM_H 0) set(HAVE_SYS_TIME_H 0) set(HAVE_UTIME_H 0) if(MSVC) set(HAVE_UNISTD_H 0) set(HAVE_STDDEF_H 1) # detected by CMake internally in check_type_size() if(MSVC_VERSION GREATER_EQUAL 1600) set(HAVE_STDINT_H 1) # detected by CMake internally in check_type_size() else() set(HAVE_STDINT_H 0) # detected by CMake internally in check_type_size() endif() if(MSVC_VERSION GREATER_EQUAL 1800) set(HAVE_STDBOOL_H 1) else() set(HAVE_STDBOOL_H 0) endif() set(HAVE_BOOL_T "${HAVE_STDBOOL_H}") if(MSVC_VERSION GREATER_EQUAL 1900) set(HAVE_SNPRINTF 1) else() set(HAVE_SNPRINTF 0) endif() set(HAVE_BASENAME 0) endif() endif() if((CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 4.9) OR (CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 3.6)) # MinGW or clang-cl set(HAVE_STDATOMIC_H 1) set(HAVE_ATOMIC 1) else() set(HAVE_STDATOMIC_H 0) set(HAVE_ATOMIC 0) endif() set(HAVE_ACCEPT4 0) set(HAVE_ALARM 0) set(HAVE_ARC4RANDOM 0) set(HAVE_ARPA_INET_H 0) set(HAVE_CLOSESOCKET 1) set(HAVE_EVENTFD 0) set(HAVE_FCNTL 0) set(HAVE_FCNTL_H 1) set(HAVE_FCNTL_O_NONBLOCK 0) set(HAVE_FNMATCH 0) set(HAVE_FREEADDRINFO 1) # Available in Windows XP and newer set(HAVE_FSETXATTR 0) set(HAVE_GETADDRINFO 1) # Available in Windows XP and newer set(HAVE_GETEUID 0) set(HAVE_GETHOSTBYNAME_R 0) set(HAVE_GETHOSTBYNAME_R_3 0) set(HAVE_GETHOSTBYNAME_R_3_REENTRANT 0) set(HAVE_GETHOSTBYNAME_R_5 0) set(HAVE_GETHOSTBYNAME_R_5_REENTRANT 0) set(HAVE_GETHOSTBYNAME_R_6 0) set(HAVE_GETHOSTBYNAME_R_6_REENTRANT 0) set(HAVE_GETHOSTNAME 1) set(HAVE_GETIFADDRS 0) set(HAVE_GETPASS_R 0) set(HAVE_GETPEERNAME 1) set(HAVE_GETPPID 0) set(HAVE_GETPWUID 0) set(HAVE_GETPWUID_R 0) set(HAVE_GETRLIMIT 0) set(HAVE_GETSOCKNAME 1) set(HAVE_GLIBC_STRERROR_R 0) set(HAVE_GMTIME_R 0) set(HAVE_IFADDRS_H 0) set(HAVE_IF_NAMETOINDEX 0) set(HAVE_INET_NTOP 0) set(HAVE_INET_PTON 0) set(HAVE_IOCTLSOCKET 1) set(HAVE_IOCTLSOCKET_CAMEL 0) set(HAVE_IOCTLSOCKET_CAMEL_FIONBIO 0) set(HAVE_IOCTLSOCKET_FIONBIO 1) set(HAVE_IOCTL_FIONBIO 0) set(HAVE_IOCTL_SIOCGIFADDR 0) set(HAVE_IO_H 1) set(HAVE_LINUX_TCP_H 0) set(HAVE_LOCALE_H 1) set(HAVE_MEMRCHR 0) set(HAVE_MSG_NOSIGNAL 0) set(HAVE_NETDB_H 0) set(HAVE_NETINET_IN6_H 0) set(HAVE_NETINET_IN_H 0) set(HAVE_NETINET_TCP_H 0) set(HAVE_NETINET_UDP_H 0) set(HAVE_NET_IF_H 0) set(HAVE_PIPE 0) set(HAVE_PIPE2 0) set(HAVE_POLL 0) set(HAVE_POLL_H 0) set(HAVE_POSIX_STRERROR_R 0) set(HAVE_PWD_H 0) set(HAVE_RECV 1) set(HAVE_SELECT 1) set(HAVE_SEND 1) set(HAVE_SENDMMSG 0) set(HAVE_SENDMSG 0) set(HAVE_SETLOCALE 1) set(HAVE_SETMODE 1) set(HAVE_SETRLIMIT 0) set(HAVE_SETSOCKOPT_SO_NONBLOCK 0) set(HAVE_SIGACTION 0) set(HAVE_SIGINTERRUPT 0) set(HAVE_SIGNAL 1) set(HAVE_SIGSETJMP 0) set(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1) set(HAVE_SOCKET 1) set(HAVE_SOCKETPAIR 0) set(HAVE_STRDUP 1) set(HAVE_STRERROR_R 0) set(HAVE_STROPTS_H 0) set(HAVE_STRUCT_SOCKADDR_STORAGE 1) set(HAVE_STRUCT_TIMEVAL 1) set(HAVE_SYS_EVENTFD_H 0) set(HAVE_SYS_FILIO_H 0) set(HAVE_SYS_IOCTL_H 0) set(HAVE_SYS_POLL_H 0) set(HAVE_SYS_RESOURCE_H 0) set(HAVE_SYS_SELECT_H 0) set(HAVE_SYS_SOCKET_H 0) set(HAVE_SYS_SOCKIO_H 0) set(HAVE_SYS_STAT_H 1) set(HAVE_SYS_TYPES_H 1) set(HAVE_SYS_UN_H 0) set(HAVE_SYS_UTIME_H 1) set(HAVE_TERMIOS_H 0) set(HAVE_TERMIO_H 0) set(HAVE_TIME_T_UNSIGNED 0) set(HAVE_UTIME 1) set(HAVE_UTIMES 0) set(HAVE__SETMODE 1) set(STDC_HEADERS 1) # Types and sizes set(HAVE_SIZEOF_SA_FAMILY_T 0) set(HAVE_SIZEOF_SUSECONDS_T 0) if(MINGW OR MSVC) curl_prefill_type_size("INT" 4) curl_prefill_type_size("LONG" 4) curl_prefill_type_size("LONG_LONG" 8) curl_prefill_type_size("__INT64" 8) curl_prefill_type_size("CURL_OFF_T" 8) # CURL_SOCKET_T, SIZE_T: 8 for _WIN64, 4 otherwise # TIME_T: 8 for _WIN64 or UCRT or MSVC and not Windows CE, 4 otherwise # Also 4 for non-UCRT 32-bit when _USE_32BIT_TIME_T is set. # mingw-w64 sets _USE_32BIT_TIME_T unless __MINGW_USE_VC2005_COMPAT is explicit defined. if(MSVC) set(HAVE_SIZEOF_SSIZE_T 0) set(HAVE_FILE_OFFSET_BITS 0) curl_prefill_type_size("OFF_T" 4) curl_prefill_type_size("ADDRESS_FAMILY" 2) else() # SSIZE_T: 8 for _WIN64, 4 otherwise if(MINGW64_VERSION) if(MINGW64_VERSION VERSION_GREATER_EQUAL 3.0) set(HAVE_FILE_OFFSET_BITS 1) curl_prefill_type_size("OFF_T" 8) endif() if(MINGW64_VERSION VERSION_GREATER_EQUAL 2.0) curl_prefill_type_size("ADDRESS_FAMILY" 2) else() set(HAVE_SIZEOF_ADDRESS_FAMILY 0) endif() endif() endif() endif() # Windows CE exceptions if(WINCE) set(HAVE_FREEADDRINFO 0) set(HAVE_GETADDRINFO 0) set(HAVE_LOCALE_H 0) set(HAVE_SETLOCALE 0) set(HAVE_SETMODE 0) set(HAVE_SIGNAL 0) set(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 0) curl_prefill_type_size("CURL_SOCKET_T" 4) curl_prefill_type_size("TIME_T" 4) curl_prefill_type_size("SIZE_T" 4) if(MINGW32CE) set(HAVE_STRTOK_R 0) set(HAVE__SETMODE 0) set(HAVE_FILE_OFFSET_BITS 0) set(HAVE_SIZEOF_ADDRESS_FAMILY 0) curl_prefill_type_size("SSIZE_T" 4) curl_prefill_type_size("OFF_T" 4) endif() endif() curl-8.14.1/CMakeLists.txt0000644000000000000000000026611515017756261013525 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # by Tetetest and Sukender (Benoit Neil) cmake_minimum_required(VERSION 3.7...3.16 FATAL_ERROR) message(STATUS "Using CMake version ${CMAKE_VERSION}") # Collect command-line arguments for buildinfo.txt. # Must reside at the top of the script to work as expected. set(_cmake_args "") if(NOT "$ENV{CURL_BUILDINFO}$ENV{CURL_CI}$ENV{CI}" STREQUAL "") get_cmake_property(_cache_vars CACHE_VARIABLES) foreach(_cache_var IN ITEMS ${_cache_vars}) get_property(_cache_var_helpstring CACHE ${_cache_var} PROPERTY HELPSTRING) if(_cache_var_helpstring STREQUAL "No help, variable specified on the command line.") get_property(_cache_var_type CACHE ${_cache_var} PROPERTY TYPE) get_property(_cache_var_value CACHE ${_cache_var} PROPERTY VALUE) if(_cache_var_type STREQUAL "UNINITIALIZED") set(_cache_var_type) else() set(_cache_var_type ":${_cache_var_type}") endif() string(APPEND _cmake_args " -D${_cache_var}${_cache_var_type}=\"${_cache_var_value}\"") endif() endforeach() endif() set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH}) include(Utilities) include(Macros) include(CMakeDependentOption) include(CheckCCompilerFlag) file(STRINGS "${CMAKE_CURRENT_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]+" _curl_version_num ${_curl_version_h_contents}) string(REGEX REPLACE "[^0]+0x" "" _curl_version_num ${_curl_version_num}) unset(_curl_version_h_contents) message(STATUS "curl version=[${_curl_version}]") string(REGEX REPLACE "([0-9]+\.[0-9]+\.[0-9]+).+" "\\1" _curl_version_sem "${_curl_version}") project(CURL VERSION "${_curl_version_sem}" LANGUAGES C) # CMake does not recognize some targets accurately. Touch up configuration manually as a workaround. if(WINDOWS_STORE AND MINGW) # mingw UWP build # CMake (as of v3.31.2) gets confused and applies the MSVC rc.exe command-line # template to windres. Reset it to the windres template via 'Modules/Platform/Windows-windres.cmake': set(CMAKE_RC_COMPILE_OBJECT " -O coff ") elseif(WIN32 AND WINCE AND CMAKE_C_COMPILER_ID STREQUAL "GNU") # mingw32ce build if(NOT MINGW32CE_LIBRARY_DIR) message(FATAL_ERROR "Set MINGW32CE_LIBRARY_DIR variable to the mingw32ce platform library directory.") endif() set(MINGW 1) set(MINGW32CE 1) # Build implib with libcurl DLL. Copied from CMake's 'Modules/Platform/Windows-GNU.cmake'. set(CMAKE_C_CREATE_SHARED_LIBRARY " ") string(APPEND CMAKE_C_CREATE_SHARED_LIBRARY " -o -Wl,--out-implib,") string(APPEND CMAKE_C_CREATE_SHARED_LIBRARY " ${CMAKE_GNULD_IMAGE_VERSION} ") # Build resources. Copied from CMake's 'Modules/Platform/Windows-windres.cmake'. set(CMAKE_RC_COMPILE_OBJECT " -O coff ") enable_language(RC) # To compile long long integer literals set_property(DIRECTORY APPEND PROPERTY COMPILE_OPTIONS "-std=gnu99") string(APPEND CMAKE_REQUIRED_FLAGS " -std=gnu99") set(CMAKE_C_COMPILE_OPTIONS_PIC "") # CMake sets it to '-fPIC', confusing the toolchain and breaking builds. Zap it. set(CMAKE_STATIC_LIBRARY_PREFIX "lib") set(CMAKE_STATIC_LIBRARY_SUFFIX ".a") set(CMAKE_SHARED_LIBRARY_PREFIX "lib") set(CMAKE_SHARED_LIBRARY_SUFFIX ".dll") set(CMAKE_IMPORT_LIBRARY_PREFIX "lib") set(CMAKE_IMPORT_LIBRARY_SUFFIX ".dll.a") set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "") set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".a" ".lib") elseif(DOS AND CMAKE_C_COMPILER_ID STREQUAL "GNU") # DJGPP set(CMAKE_STATIC_LIBRARY_PREFIX "lib") set(CMAKE_STATIC_LIBRARY_SUFFIX ".a") set(CMAKE_FIND_LIBRARY_PREFIXES "lib") set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") endif() # Fill platform level variable when using CMake's built-in Android configuration if(ANDROID AND NOT DEFINED ANDROID_PLATFORM_LEVEL AND NOT CMAKE_SYSTEM_VERSION EQUAL 1) set(ANDROID_PLATFORM_LEVEL "${CMAKE_SYSTEM_VERSION}") endif() set(_target_flags "") if(APPLE) string(APPEND _target_flags " APPLE") endif() if(UNIX) string(APPEND _target_flags " UNIX") endif() if(BSD) string(APPEND _target_flags " BSD") endif() if(ANDROID) string(APPEND _target_flags " ANDROID-${ANDROID_PLATFORM_LEVEL}") endif() if(WIN32) string(APPEND _target_flags " WIN32") endif() if(WINCE) string(APPEND _target_flags " WINCE") endif() if(WINDOWS_STORE) string(APPEND _target_flags " UWP") endif() if(CYGWIN) string(APPEND _target_flags " CYGWIN") endif() if(DOS) string(APPEND _target_flags " DOS") endif() if(AMIGA) string(APPEND _target_flags " AMIGA") endif() if(CMAKE_C_COMPILER_ID STREQUAL "GNU") string(APPEND _target_flags " GCC") endif() if(MINGW) string(APPEND _target_flags " MINGW") endif() if(MSVC) string(APPEND _target_flags " MSVC-${MSVC_VERSION}") endif() if(VCPKG_TOOLCHAIN) string(APPEND _target_flags " VCPKG") endif() if(CMAKE_CROSSCOMPILING) string(APPEND _target_flags " CROSS") endif() message(STATUS "CMake platform flags:${_target_flags}") if(CMAKE_CROSSCOMPILING) message(STATUS "Cross-compiling: " "${CMAKE_HOST_SYSTEM_NAME}/${CMAKE_HOST_SYSTEM_PROCESSOR} -> " "${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR}") endif() if(CMAKE_C_COMPILER_TARGET) set(CURL_OS "\"${CMAKE_C_COMPILER_TARGET}\"") else() set(CURL_OS "\"${CMAKE_SYSTEM_NAME}\"") endif() set(LIB_NAME "libcurl") set_property(DIRECTORY APPEND PROPERTY INCLUDE_DIRECTORIES "${PROJECT_SOURCE_DIR}/include") if(NOT DEFINED CMAKE_UNITY_BUILD_BATCH_SIZE) set(CMAKE_UNITY_BUILD_BATCH_SIZE 0) endif() # Having CMAKE_TRY_COMPILE_TARGET_TYPE set to STATIC_LIBRARY breaks certain # 'check_function_exists()' detections (possibly more), by detecting # non-existing features. This happens by default when using 'ios.toolchain.cmake'. # Work it around by setting this value to `EXECUTABLE`. if(CMAKE_TRY_COMPILE_TARGET_TYPE STREQUAL "STATIC_LIBRARY") message(STATUS "CMAKE_TRY_COMPILE_TARGET_TYPE was found set to STATIC_LIBRARY. " "Overriding with EXECUTABLE for feature detections to work.") set(_cmake_try_compile_target_type_save ${CMAKE_TRY_COMPILE_TARGET_TYPE}) set(CMAKE_TRY_COMPILE_TARGET_TYPE "EXECUTABLE") endif() option(CURL_WERROR "Turn compiler warnings into errors" OFF) option(PICKY_COMPILER "Enable picky compiler options" ON) option(BUILD_CURL_EXE "Build curl executable" ON) option(BUILD_SHARED_LIBS "Build shared libraries" ON) option(BUILD_STATIC_LIBS "Build static libraries" OFF) option(BUILD_STATIC_CURL "Build curl executable with static libcurl" OFF) option(ENABLE_ARES "Enable c-ares support" OFF) option(CURL_DISABLE_INSTALL "Disable installation targets" OFF) if(WIN32) option(ENABLE_UNICODE "Use the Unicode version of the Windows API functions" OFF) if(WINDOWS_STORE OR WINCE) set(ENABLE_UNICODE ON) endif() if(ENABLE_UNICODE) set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS "UNICODE" "_UNICODE") if(MINGW AND NOT MINGW32CE) set_property(DIRECTORY APPEND PROPERTY COMPILE_OPTIONS "-municode") endif() endif() # Apply to all feature checks list(APPEND CMAKE_REQUIRED_DEFINITIONS "-DWIN32_LEAN_AND_MEAN") if(MSVC) list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_CRT_NONSTDC_NO_DEPRECATE") # for strdup() detection endif() set(CURL_TARGET_WINDOWS_VERSION "" CACHE STRING "Minimum target Windows version as hex string") if(CURL_TARGET_WINDOWS_VERSION) set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS "_WIN32_WINNT=${CURL_TARGET_WINDOWS_VERSION}") list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_WIN32_WINNT=${CURL_TARGET_WINDOWS_VERSION}") # Apply to all feature checks endif() # Detect actual value of _WIN32_WINNT and store as HAVE_WIN32_WINNT curl_internal_test(HAVE_WIN32_WINNT) if(HAVE_WIN32_WINNT) string(REGEX MATCH "_WIN32_WINNT=0x[0-9a-fA-F]+" CURL_TEST_OUTPUT "${CURL_TEST_OUTPUT}") string(REGEX REPLACE "_WIN32_WINNT=" "" CURL_TEST_OUTPUT "${CURL_TEST_OUTPUT}") string(REGEX REPLACE "0x([0-9a-f][0-9a-f][0-9a-f])$" "0x0\\1" CURL_TEST_OUTPUT "${CURL_TEST_OUTPUT}") # pad to 4 digits string(TOLOWER "${CURL_TEST_OUTPUT}" HAVE_WIN32_WINNT) message(STATUS "Found _WIN32_WINNT=${HAVE_WIN32_WINNT}") endif() unset(HAVE_WIN32_WINNT CACHE) # Avoid storing in CMake cache if(MINGW) # Detect __MINGW64_VERSION_MAJOR, __MINGW64_VERSION_MINOR and store as MINGW64_VERSION curl_internal_test(MINGW64_VERSION) if(MINGW64_VERSION) string(REGEX MATCH "MINGW64_VERSION=[0-9]+\.[0-9]+" CURL_TEST_OUTPUT "${CURL_TEST_OUTPUT}") string(REGEX REPLACE "MINGW64_VERSION=" "" MINGW64_VERSION "${CURL_TEST_OUTPUT}") if(MINGW64_VERSION) message(STATUS "Found MINGW64_VERSION=${MINGW64_VERSION}") endif() endif() unset(MINGW64_VERSION CACHE) # Avoid storing in CMake cache endif() elseif(DOS OR AMIGA) set(BUILD_SHARED_LIBS OFF) set(BUILD_STATIC_LIBS ON) endif() option(CURL_LTO "Enable compiler Link Time Optimizations" OFF) if(NOT DOS AND NOT AMIGA) # if c-ares is used, default the threaded resolver to OFF if(ENABLE_ARES) set(_enable_threaded_resolver_default OFF) else() set(_enable_threaded_resolver_default ON) endif() option(ENABLE_THREADED_RESOLVER "Enable threaded DNS lookup" ${_enable_threaded_resolver_default}) endif() include(PickyWarnings) if(CYGWIN OR CMAKE_SYSTEM_NAME STREQUAL "Linux") set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS "_GNU_SOURCE") # Required for accept4(), pipe2(), sendmmsg() list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_GNU_SOURCE") # Apply to all feature checks endif() option(ENABLE_DEBUG "Enable curl debug features (for developing curl itself)" OFF) if(ENABLE_DEBUG) message(WARNING "This curl build is Debug-enabled and insecure, do not use in production.") endif() option(ENABLE_CURLDEBUG "Enable TrackMemory debug feature" ${ENABLE_DEBUG}) option(ENABLE_SERVER_DEBUG "Apply curl debug options to test servers" OFF) set(CURL_DEBUG_MACROS "") if(ENABLE_DEBUG) list(APPEND CURL_DEBUG_MACROS "DEBUGBUILD") endif() if(ENABLE_CURLDEBUG) list(APPEND CURL_DEBUG_MACROS "CURLDEBUG") endif() option(CURL_TEST_BUNDLES "Build tests into single-binary bundles" OFF) option(CURL_CLANG_TIDY "Run the build through clang-tidy" OFF) if(CURL_CLANG_TIDY) # clang-tidy is not looking into #included sources, thus not compatible with # unity builds and test bundles. set(CMAKE_UNITY_BUILD OFF) set(CURL_TEST_BUNDLES OFF) set(_tidy_checks "") list(APPEND _tidy_checks "-clang-analyzer-security.insecureAPI.strcpy") list(APPEND _tidy_checks "-clang-analyzer-optin.performance.Padding") list(APPEND _tidy_checks "-clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling") string(REPLACE ";" "," _tidy_checks "${_tidy_checks}") find_program(CLANG_TIDY NAMES "clang-tidy" REQUIRED) set(CMAKE_C_CLANG_TIDY "${CLANG_TIDY}" "-checks=${_tidy_checks}" "-quiet") unset(_tidy_checks) if(CURL_WERROR) list(APPEND CMAKE_C_CLANG_TIDY "--warnings-as-errors=*") endif() if(CURL_CLANG_TIDYFLAGS) list(APPEND CMAKE_C_CLANG_TIDY ${CURL_CLANG_TIDYFLAGS}) endif() endif() # For debug libs and exes, add "-d" postfix if(NOT DEFINED CMAKE_DEBUG_POSTFIX) set(CMAKE_DEBUG_POSTFIX "-d") endif() set(LIB_STATIC "libcurl_static") set(LIB_SHARED "libcurl_shared") if(NOT BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS) set(BUILD_STATIC_LIBS ON) endif() if(NOT BUILD_STATIC_CURL AND NOT BUILD_SHARED_LIBS) set(BUILD_STATIC_CURL ON) elseif(BUILD_STATIC_CURL AND NOT BUILD_STATIC_LIBS) set(BUILD_STATIC_CURL OFF) endif() # Lib flavour selected for curl tool if(BUILD_STATIC_CURL) set(LIB_SELECTED_FOR_EXE ${LIB_STATIC}) else() set(LIB_SELECTED_FOR_EXE ${LIB_SHARED}) endif() # Lib flavour selected for example and test programs. if(BUILD_SHARED_LIBS) set(LIB_SELECTED ${LIB_SHARED}) else() set(LIB_SELECTED ${LIB_STATIC}) endif() if(WIN32) option(CURL_STATIC_CRT "Build libcurl with static CRT with MSVC (/MT)" OFF) if(CURL_STATIC_CRT AND MSVC) if(MSVC_VERSION GREATER_EQUAL 1900 OR BUILD_STATIC_CURL OR NOT BUILD_CURL_EXE) set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") set_property(DIRECTORY APPEND PROPERTY COMPILE_OPTIONS "$<$:-MT>") set_property(DIRECTORY APPEND PROPERTY COMPILE_OPTIONS "$<$:-MTd>") else() message(WARNING "Static CRT requires UCRT, static libcurl or no curl executable.") endif() endif() endif() # Override to force-disable or force-enable the use of pkg-config. if((UNIX AND NOT ANDROID AND (NOT APPLE OR CMAKE_SYSTEM_NAME MATCHES "Darwin")) OR VCPKG_TOOLCHAIN OR (MINGW AND NOT CMAKE_CROSSCOMPILING)) set(_curl_use_pkgconfig_default ON) else() set(_curl_use_pkgconfig_default OFF) endif() option(CURL_USE_PKGCONFIG "Enable pkg-config to detect dependencies" ${_curl_use_pkgconfig_default}) # Initialize variables collecting dependency libs, paths, pkg-config names. set(CURL_LIBS "") set(CURL_LIBDIRS "") set(LIBCURL_PC_REQUIRES_PRIVATE "") if(ENABLE_ARES) set(USE_ARES 1) find_package(Cares REQUIRED) list(APPEND CURL_LIBS ${CARES_LIBRARIES}) list(APPEND CURL_LIBDIRS ${CARES_LIBRARY_DIRS}) list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${CARES_PC_REQUIRES}) link_directories(${CARES_LIBRARY_DIRS}) if(CARES_CFLAGS) string(APPEND CMAKE_C_FLAGS " ${CARES_CFLAGS}") endif() endif() include(CurlSymbolHiding) option(CURL_ENABLE_EXPORT_TARGET "Enable CMake export target" ON) mark_as_advanced(CURL_ENABLE_EXPORT_TARGET) option(CURL_DISABLE_ALTSVC "Disable alt-svc support" OFF) mark_as_advanced(CURL_DISABLE_ALTSVC) option(CURL_DISABLE_SRP "Disable TLS-SRP support" OFF) mark_as_advanced(CURL_DISABLE_SRP) option(CURL_DISABLE_COOKIES "Disable cookies support" OFF) mark_as_advanced(CURL_DISABLE_COOKIES) option(CURL_DISABLE_BASIC_AUTH "Disable Basic authentication" OFF) mark_as_advanced(CURL_DISABLE_BASIC_AUTH) option(CURL_DISABLE_BEARER_AUTH "Disable Bearer authentication" OFF) mark_as_advanced(CURL_DISABLE_BEARER_AUTH) option(CURL_DISABLE_DIGEST_AUTH "Disable Digest authentication" OFF) mark_as_advanced(CURL_DISABLE_DIGEST_AUTH) option(CURL_DISABLE_KERBEROS_AUTH "Disable Kerberos authentication" OFF) mark_as_advanced(CURL_DISABLE_KERBEROS_AUTH) option(CURL_DISABLE_NEGOTIATE_AUTH "Disable negotiate authentication" OFF) mark_as_advanced(CURL_DISABLE_NEGOTIATE_AUTH) option(CURL_DISABLE_AWS "Disable aws-sigv4" OFF) mark_as_advanced(CURL_DISABLE_AWS) option(CURL_DISABLE_DICT "Disable DICT" OFF) mark_as_advanced(CURL_DISABLE_DICT) option(CURL_DISABLE_DOH "Disable DNS-over-HTTPS" OFF) mark_as_advanced(CURL_DISABLE_DOH) option(CURL_DISABLE_FILE "Disable FILE" OFF) mark_as_advanced(CURL_DISABLE_FILE) option(CURL_DISABLE_FTP "Disable FTP" OFF) mark_as_advanced(CURL_DISABLE_FTP) option(CURL_DISABLE_GETOPTIONS "Disable curl_easy_options API for existing options to curl_easy_setopt" OFF) mark_as_advanced(CURL_DISABLE_GETOPTIONS) option(CURL_DISABLE_GOPHER "Disable Gopher" OFF) mark_as_advanced(CURL_DISABLE_GOPHER) option(CURL_DISABLE_HEADERS_API "Disable headers-api support" OFF) mark_as_advanced(CURL_DISABLE_HEADERS_API) option(CURL_DISABLE_HSTS "Disable HSTS support" OFF) mark_as_advanced(CURL_DISABLE_HSTS) option(CURL_DISABLE_HTTP "Disable HTTP" OFF) mark_as_advanced(CURL_DISABLE_HTTP) option(CURL_DISABLE_HTTP_AUTH "Disable all HTTP authentication methods" OFF) mark_as_advanced(CURL_DISABLE_HTTP_AUTH) option(CURL_DISABLE_IMAP "Disable IMAP" OFF) mark_as_advanced(CURL_DISABLE_IMAP) option(CURL_DISABLE_LDAP "Disable LDAP" OFF) mark_as_advanced(CURL_DISABLE_LDAP) option(CURL_DISABLE_LDAPS "Disable LDAPS" ${CURL_DISABLE_LDAP}) mark_as_advanced(CURL_DISABLE_LDAPS) option(CURL_DISABLE_LIBCURL_OPTION "Disable --libcurl option from the curl tool" OFF) mark_as_advanced(CURL_DISABLE_LIBCURL_OPTION) option(CURL_DISABLE_MIME "Disable MIME support" OFF) mark_as_advanced(CURL_DISABLE_MIME) cmake_dependent_option(CURL_DISABLE_FORM_API "Disable form-api" OFF "NOT CURL_DISABLE_MIME" ON) mark_as_advanced(CURL_DISABLE_FORM_API) option(CURL_DISABLE_MQTT "Disable MQTT" OFF) mark_as_advanced(CURL_DISABLE_MQTT) option(CURL_DISABLE_BINDLOCAL "Disable local binding support" OFF) mark_as_advanced(CURL_DISABLE_BINDLOCAL) option(CURL_DISABLE_NETRC "Disable netrc parser" OFF) mark_as_advanced(CURL_DISABLE_NETRC) option(CURL_DISABLE_NTLM "Disable NTLM support" OFF) mark_as_advanced(CURL_DISABLE_NTLM) option(CURL_DISABLE_PARSEDATE "Disable date parsing" OFF) mark_as_advanced(CURL_DISABLE_PARSEDATE) option(CURL_DISABLE_POP3 "Disable POP3" OFF) mark_as_advanced(CURL_DISABLE_POP3) option(CURL_DISABLE_PROGRESS_METER "Disable built-in progress meter" OFF) mark_as_advanced(CURL_DISABLE_PROGRESS_METER) option(CURL_DISABLE_PROXY "Disable proxy support" OFF) mark_as_advanced(CURL_DISABLE_PROXY) option(CURL_DISABLE_IPFS "Disable IPFS" OFF) mark_as_advanced(CURL_DISABLE_IPFS) option(CURL_DISABLE_RTSP "Disable RTSP" OFF) mark_as_advanced(CURL_DISABLE_RTSP) option(CURL_DISABLE_SHA512_256 "Disable SHA-512/256 hash algorithm" OFF) mark_as_advanced(CURL_DISABLE_SHA512_256) option(CURL_DISABLE_SHUFFLE_DNS "Disable shuffle DNS feature" OFF) mark_as_advanced(CURL_DISABLE_SHUFFLE_DNS) option(CURL_DISABLE_SMB "Disable SMB" OFF) mark_as_advanced(CURL_DISABLE_SMB) option(CURL_DISABLE_SMTP "Disable SMTP" OFF) mark_as_advanced(CURL_DISABLE_SMTP) option(CURL_DISABLE_SOCKETPAIR "Disable use of socketpair for curl_multi_poll" OFF) mark_as_advanced(CURL_DISABLE_SOCKETPAIR) option(CURL_DISABLE_WEBSOCKETS "Disable WebSocket" OFF) mark_as_advanced(CURL_DISABLE_WEBSOCKETS) option(CURL_DISABLE_TELNET "Disable Telnet" OFF) mark_as_advanced(CURL_DISABLE_TELNET) option(CURL_DISABLE_TFTP "Disable TFTP" OFF) mark_as_advanced(CURL_DISABLE_TFTP) option(CURL_DISABLE_VERBOSE_STRINGS "Disable verbose strings" OFF) mark_as_advanced(CURL_DISABLE_VERBOSE_STRINGS) if(CURL_DISABLE_HTTP) set(CURL_DISABLE_IPFS ON) set(CURL_DISABLE_RTSP ON) set(CURL_DISABLE_ALTSVC ON) set(CURL_DISABLE_HSTS ON) endif() # Corresponds to HTTP_ONLY in lib/curl_setup.h option(HTTP_ONLY "Disable 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_MQTT ON) set(CURL_DISABLE_POP3 ON) set(CURL_DISABLE_IPFS ON) set(CURL_DISABLE_RTSP ON) set(CURL_DISABLE_SMB ON) set(CURL_DISABLE_SMTP ON) set(CURL_DISABLE_TELNET ON) set(CURL_DISABLE_TFTP ON) endif() if(WINDOWS_STORE OR WINCE) set(CURL_DISABLE_TELNET ON) # telnet code needs fixing to compile for UWP. endif() find_package(Perl) if(PERL_EXECUTABLE) add_custom_target(curl-ca-bundle COMMENT "Generating a fresh ca-bundle.crt" VERBATIM USES_TERMINAL COMMAND "${PERL_EXECUTABLE}" "${PROJECT_SOURCE_DIR}/scripts/mk-ca-bundle.pl" -b -l -u "lib/ca-bundle.crt" DEPENDS "${PROJECT_SOURCE_DIR}/scripts/mk-ca-bundle.pl" ) add_custom_target(curl-ca-firefox COMMENT "generating a fresh ca-bundle.crt" VERBATIM USES_TERMINAL COMMAND "${PERL_EXECUTABLE}" "${PROJECT_SOURCE_DIR}/scripts/firefox-db2pem.sh" "lib/ca-bundle.crt" DEPENDS "${PROJECT_SOURCE_DIR}/scripts/firefox-db2pem.sh" ) endif() option(BUILD_LIBCURL_DOCS "Build libcurl man pages" ON) option(BUILD_MISC_DOCS "Build misc man pages (e.g. curl-config and mk-ca-bundle)" ON) option(ENABLE_CURL_MANUAL "Build the man page for curl and enable its -M/--manual option" ON) if(ENABLE_CURL_MANUAL OR BUILD_LIBCURL_DOCS) if(PERL_FOUND) set(HAVE_MANUAL_TOOLS ON) endif() if(NOT HAVE_MANUAL_TOOLS) message(WARNING "Perl not found. Will not build manuals.") endif() endif() # If we are on AIX, do the _ALL_SOURCE magic if(CMAKE_SYSTEM_NAME STREQUAL "AIX") set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS "_ALL_SOURCE") endif() # If we are on Haiku, make sure that the network library is brought in. if(CMAKE_SYSTEM_NAME STREQUAL "Haiku") list(APPEND CURL_LIBS "network") elseif(AMIGA) list(APPEND CURL_LIBS "net" "m" "atomic") list(APPEND CMAKE_REQUIRED_LIBRARIES "net" "m" "atomic") endif() # Include all the necessary files for macros include(CMakePushCheckState) include(CheckFunctionExists) include(CheckIncludeFile) include(CheckIncludeFiles) include(CheckLibraryExists) include(CheckSymbolExists) include(CheckTypeSize) include(CheckCSourceCompiles) option(_CURL_PREFILL "Fast-track known feature detection results (Windows, some Apple)" "${WIN32}") if(_CURL_PREFILL) if(WIN32) include("${CMAKE_CURRENT_SOURCE_DIR}/CMake/win32-cache.cmake") elseif(UNIX) include("${CMAKE_CURRENT_SOURCE_DIR}/CMake/unix-cache.cmake") message(STATUS "Pre-filling feature detection results for UNIX") endif() elseif(WIN32) message(STATUS "Pre-filling feature detection results disabled.") elseif(APPLE) set(HAVE_EVENTFD 0) set(HAVE_GETPASS_R 0) set(HAVE_WRITABLE_ARGV 1) set(HAVE_SENDMMSG 0) endif() if(AMIGA) set(HAVE_GETADDRINFO 0) # Breaks the build when detected and used. endif() if(DOS OR AMIGA) set(HAVE_TIME_T_UNSIGNED 1) endif() if(ENABLE_THREADED_RESOLVER) if(WIN32) set(USE_THREADS_WIN32 ON) else() find_package(Threads REQUIRED) set(USE_THREADS_POSIX ${CMAKE_USE_PTHREADS_INIT}) set(HAVE_PTHREAD_H ${CMAKE_USE_PTHREADS_INIT}) list(APPEND CURL_LIBS ${CMAKE_THREAD_LIBS_INIT}) endif() endif() # Check for all needed libraries if(WIN32) if(WINCE) set(_win32_winsock "ws2") else() set(_win32_winsock "ws2_32") endif() set(_win32_crypt32 "crypt32") if(MINGW32CE) # FIXME upstream: must specify the full path to avoid CMake converting "ws2" to "ws2.lib" set(_win32_winsock "${MINGW32CE_LIBRARY_DIR}/lib${_win32_winsock}.a") set(_win32_crypt32 "${MINGW32CE_LIBRARY_DIR}/lib${_win32_crypt32}.a") endif() elseif(DOS) if(WATT_ROOT) set(USE_WATT32 ON) # FIXME upstream: must specify the full path to avoid CMake converting "watt" to "watt.lib" list(APPEND CURL_LIBS "${WATT_ROOT}/lib/libwatt.a") include_directories(SYSTEM "${WATT_ROOT}/inc") list(APPEND CMAKE_REQUIRED_INCLUDES "${WATT_ROOT}/inc") else() message(FATAL_ERROR "Set WATT_ROOT variable to the root installation of Watt-32.") endif() elseif(AMIGA) if(AMISSL_INCLUDE_DIR AND AMISSL_STUBS_LIBRARY AND AMISSL_AUTO_LIBRARY) set(USE_AMISSL ON) list(APPEND CMAKE_REQUIRED_INCLUDES "${AMISSL_INCLUDE_DIR}") list(APPEND CMAKE_REQUIRED_LIBRARIES "${AMISSL_STUBS_LIBRARY}" "${AMISSL_AUTO_LIBRARY}") set(OPENSSL_INCLUDE_DIR "${AMISSL_INCLUDE_DIR}") set(OPENSSL_SSL_LIBRARY "${AMISSL_STUBS_LIBRARY}") set(OPENSSL_CRYPTO_LIBRARY "${AMISSL_AUTO_LIBRARY}") set(CURL_USE_OPENSSL ON) set(CURL_CA_FALLBACK ON CACHE BOOL "") endif() elseif(NOT APPLE) check_library_exists("socket" "connect" "" HAVE_LIBSOCKET) if(HAVE_LIBSOCKET) set(CURL_LIBS "socket" ${CURL_LIBS}) endif() endif() option(ENABLE_IPV6 "Enable IPv6 support" ON) mark_as_advanced(ENABLE_IPV6) if(ENABLE_IPV6) include(CheckStructHasMember) if(WIN32) check_struct_has_member("struct sockaddr_in6" "sin6_scope_id" "winsock2.h;ws2tcpip.h" HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID) else() check_struct_has_member("struct sockaddr_in6" "sin6_scope_id" "netinet/in.h" HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID) check_struct_has_member("struct sockaddr_in6" "sin6_addr" "netinet/in.h" HAVE_SOCKADDR_IN6_SIN6_ADDR) if(NOT HAVE_SOCKADDR_IN6_SIN6_ADDR) if(NOT DOS AND NOT AMIGA) message(WARNING "struct sockaddr_in6 not available, disabling IPv6 support") endif() set(ENABLE_IPV6 OFF CACHE BOOL "Enable IPv6 support" FORCE) # Force the feature off as we use this name as guard macro endif() if(APPLE AND NOT ENABLE_ARES) set(_use_core_foundation_and_core_services ON) find_library(SYSTEMCONFIGURATION_FRAMEWORK NAMES "SystemConfiguration") mark_as_advanced(SYSTEMCONFIGURATION_FRAMEWORK) if(NOT SYSTEMCONFIGURATION_FRAMEWORK) message(FATAL_ERROR "SystemConfiguration framework not found") endif() list(APPEND CURL_LIBS "-framework SystemConfiguration") endif() endif() endif() if(ENABLE_IPV6 AND NOT WINCE) set(USE_IPV6 ON) endif() # Check SSL libraries option(CURL_ENABLE_SSL "Enable SSL support" ON) if(CURL_DEFAULT_SSL_BACKEND) set(_valid_default_ssl_backend FALSE) endif() if(APPLE) cmake_dependent_option(CURL_USE_SECTRANSP "Enable Apple OS native SSL/TLS (Secure Transport)" OFF CURL_ENABLE_SSL OFF) endif() if(WIN32) cmake_dependent_option(CURL_USE_SCHANNEL "Enable Windows native SSL/TLS (Schannel)" OFF CURL_ENABLE_SSL OFF) option(CURL_WINDOWS_SSPI "Enable SSPI on Windows" ${CURL_USE_SCHANNEL}) endif() cmake_dependent_option(CURL_USE_MBEDTLS "Enable mbedTLS for SSL/TLS" OFF CURL_ENABLE_SSL OFF) cmake_dependent_option(CURL_USE_BEARSSL "Enable BearSSL for SSL/TLS" OFF CURL_ENABLE_SSL OFF) cmake_dependent_option(CURL_USE_WOLFSSL "Enable wolfSSL for SSL/TLS" OFF CURL_ENABLE_SSL OFF) cmake_dependent_option(CURL_USE_GNUTLS "Enable GnuTLS for SSL/TLS" OFF CURL_ENABLE_SSL OFF) cmake_dependent_option(CURL_USE_RUSTLS "Enable Rustls for SSL/TLS" OFF CURL_ENABLE_SSL OFF) if(WIN32 OR CURL_USE_SECTRANSP OR CURL_USE_SCHANNEL OR CURL_USE_MBEDTLS OR CURL_USE_BEARSSL OR CURL_USE_WOLFSSL OR CURL_USE_GNUTLS OR CURL_USE_RUSTLS) set(_openssl_default OFF) else() set(_openssl_default ON) endif() cmake_dependent_option(CURL_USE_OPENSSL "Enable OpenSSL for SSL/TLS" ${_openssl_default} CURL_ENABLE_SSL OFF) option(USE_OPENSSL_QUIC "Use OpenSSL and nghttp3 libraries for HTTP/3 support" OFF) if(USE_OPENSSL_QUIC AND NOT CURL_USE_OPENSSL) message(WARNING "OpenSSL QUIC has been requested, but without enabling OpenSSL. Will not enable QUIC.") set(USE_OPENSSL_QUIC OFF) endif() option(CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG "Disable automatic loading of OpenSSL configuration" OFF) curl_count_true(_enabled_ssl_options_count CURL_USE_SCHANNEL CURL_USE_SECTRANSP CURL_USE_OPENSSL CURL_USE_MBEDTLS CURL_USE_BEARSSL CURL_USE_WOLFSSL CURL_USE_GNUTLS CURL_USE_RUSTLS ) if(_enabled_ssl_options_count GREATER 1) set(CURL_WITH_MULTI_SSL ON) elseif(_enabled_ssl_options_count EQUAL 0) set(CURL_DISABLE_HSTS ON) endif() if(CURL_USE_SCHANNEL) set(_ssl_enabled ON) set(USE_SCHANNEL ON) # Windows native SSL/TLS support set(USE_WINDOWS_SSPI ON) # CURL_USE_SCHANNEL requires CURL_WINDOWS_SSPI if(CURL_DEFAULT_SSL_BACKEND AND CURL_DEFAULT_SSL_BACKEND STREQUAL "schannel") set(_valid_default_ssl_backend TRUE) endif() endif() if(CURL_WINDOWS_SSPI) set(USE_WINDOWS_SSPI ON) endif() if(CURL_USE_SECTRANSP) set(_use_core_foundation_and_core_services ON) find_library(SECURITY_FRAMEWORK NAMES "Security") mark_as_advanced(SECURITY_FRAMEWORK) if(NOT SECURITY_FRAMEWORK) message(FATAL_ERROR "Security framework not found") endif() list(APPEND CURL_LIBS "-framework Security") set(_ssl_enabled ON) set(USE_SECTRANSP ON) if(CURL_DEFAULT_SSL_BACKEND AND CURL_DEFAULT_SSL_BACKEND STREQUAL "secure-transport") set(_valid_default_ssl_backend TRUE) endif() message(WARNING "Secure Transport does not support TLS 1.3.") endif() if(_use_core_foundation_and_core_services) find_library(COREFOUNDATION_FRAMEWORK NAMES "CoreFoundation") mark_as_advanced(COREFOUNDATION_FRAMEWORK) if(NOT COREFOUNDATION_FRAMEWORK) message(FATAL_ERROR "CoreFoundation framework not found") endif() list(APPEND CURL_LIBS "-framework CoreFoundation") find_library(CORESERVICES_FRAMEWORK NAMES "CoreServices") mark_as_advanced(CORESERVICES_FRAMEWORK) if(NOT CORESERVICES_FRAMEWORK) message(FATAL_ERROR "CoreServices framework not found") endif() list(APPEND CURL_LIBS "-framework CoreServices") endif() if(CURL_USE_OPENSSL) find_package(OpenSSL REQUIRED) set(_ssl_enabled ON) set(USE_OPENSSL ON) # Depend on OpenSSL via imported targets. This allows our dependents to # get our dependencies transitively. list(APPEND CURL_LIBS OpenSSL::SSL OpenSSL::Crypto) list(APPEND LIBCURL_PC_REQUIRES_PRIVATE "openssl") if(CURL_DEFAULT_SSL_BACKEND AND CURL_DEFAULT_SSL_BACKEND STREQUAL "openssl") set(_valid_default_ssl_backend TRUE) endif() set(_curl_ca_bundle_supported TRUE) cmake_push_check_state() list(APPEND CMAKE_REQUIRED_LIBRARIES OpenSSL::SSL OpenSSL::Crypto) if(NOT DEFINED HAVE_BORINGSSL) check_symbol_exists("OPENSSL_IS_BORINGSSL" "openssl/base.h" HAVE_BORINGSSL) endif() if(NOT DEFINED HAVE_AWSLC) check_symbol_exists("OPENSSL_IS_AWSLC" "openssl/base.h" HAVE_AWSLC) endif() if(NOT DEFINED HAVE_LIBRESSL) check_symbol_exists("LIBRESSL_VERSION_NUMBER" "openssl/opensslv.h" HAVE_LIBRESSL) endif() cmake_pop_check_state() if(HAVE_BORINGSSL OR HAVE_AWSLC) if(OPENSSL_USE_STATIC_LIBS AND CMAKE_C_COMPILER_ID MATCHES "Clang") list(APPEND CURL_LIBS "stdc++") list(APPEND CMAKE_REQUIRED_LIBRARIES "stdc++") endif() endif() if(HAVE_BORINGSSL) set(_openssl "BoringSSL") elseif(HAVE_AWSLC) set(_openssl "AWS-LC") elseif(HAVE_LIBRESSL) set(_openssl "LibreSSL") elseif(USE_AMISSL) set(_openssl "AmiSSL") else() set(_openssl "OpenSSL") endif() endif() if(CURL_USE_MBEDTLS) find_package(MbedTLS REQUIRED) set(_ssl_enabled ON) set(USE_MBEDTLS ON) list(APPEND CURL_LIBS ${MBEDTLS_LIBRARIES}) list(APPEND CURL_LIBDIRS ${MBEDTLS_LIBRARY_DIRS}) list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${MBEDTLS_PC_REQUIRES}) include_directories(SYSTEM ${MBEDTLS_INCLUDE_DIRS}) link_directories(${MBEDTLS_LIBRARY_DIRS}) if(MBEDTLS_CFLAGS) string(APPEND CMAKE_C_FLAGS " ${MBEDTLS_CFLAGS}") endif() if(CURL_DEFAULT_SSL_BACKEND AND CURL_DEFAULT_SSL_BACKEND STREQUAL "mbedtls") set(_valid_default_ssl_backend TRUE) endif() set(_curl_ca_bundle_supported TRUE) endif() if(CURL_USE_BEARSSL) find_package(BearSSL REQUIRED) set(_ssl_enabled ON) set(USE_BEARSSL ON) list(APPEND CURL_LIBS ${BEARSSL_LIBRARIES}) include_directories(SYSTEM ${BEARSSL_INCLUDE_DIRS}) if(CURL_DEFAULT_SSL_BACKEND AND CURL_DEFAULT_SSL_BACKEND STREQUAL "bearssl") set(_valid_default_ssl_backend TRUE) endif() set(_curl_ca_bundle_supported TRUE) message(WARNING "BearSSL does not support TLS 1.3.") endif() if(CURL_USE_WOLFSSL) find_package(WolfSSL REQUIRED) set(_ssl_enabled ON) set(USE_WOLFSSL ON) list(APPEND CURL_LIBS ${WOLFSSL_LIBRARIES}) list(APPEND CURL_LIBDIRS ${WOLFSSL_LIBRARY_DIRS}) list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${WOLFSSL_PC_REQUIRES}) include_directories(SYSTEM ${WOLFSSL_INCLUDE_DIRS}) link_directories(${WOLFSSL_LIBRARY_DIRS}) if(WOLFSSL_CFLAGS) string(APPEND CMAKE_C_FLAGS " ${WOLFSSL_CFLAGS}") endif() if(CURL_DEFAULT_SSL_BACKEND AND CURL_DEFAULT_SSL_BACKEND STREQUAL "wolfssl") set(_valid_default_ssl_backend TRUE) endif() set(_curl_ca_bundle_supported TRUE) endif() if(CURL_USE_GNUTLS) if(CURL_USE_PKGCONFIG) find_package(PkgConfig QUIET) pkg_check_modules(GNUTLS "gnutls") if(GNUTLS_FOUND) set(GNUTLS_LIBRARIES ${GNUTLS_LINK_LIBRARIES}) string(REPLACE ";" " " GNUTLS_CFLAGS "${GNUTLS_CFLAGS}") if(GNUTLS_CFLAGS) string(APPEND CMAKE_C_FLAGS " ${GNUTLS_CFLAGS}") endif() endif() endif() if(NOT GNUTLS_FOUND) find_package(GnuTLS REQUIRED) endif() find_package(Nettle REQUIRED) set(_ssl_enabled ON) set(USE_GNUTLS ON) list(APPEND CURL_LIBS ${GNUTLS_LIBRARIES} ${NETTLE_LIBRARIES}) list(APPEND CURL_LIBDIRS ${GNUTLS_LIBRARY_DIRS} ${NETTLE_LIBRARY_DIRS}) list(APPEND LIBCURL_PC_REQUIRES_PRIVATE "gnutls" ${NETTLE_PC_REQUIRES}) include_directories(SYSTEM ${GNUTLS_INCLUDE_DIRS} ${NETTLE_INCLUDE_DIRS}) link_directories(${NETTLE_LIBRARY_DIRS}) if(NETTLE_CFLAGS) string(APPEND CMAKE_C_FLAGS " ${NETTLE_CFLAGS}") endif() if(CURL_DEFAULT_SSL_BACKEND AND CURL_DEFAULT_SSL_BACKEND STREQUAL "gnutls") set(_valid_default_ssl_backend TRUE) endif() set(_curl_ca_bundle_supported TRUE) if(NOT DEFINED HAVE_GNUTLS_SRP AND NOT CURL_DISABLE_SRP) cmake_push_check_state() list(APPEND CMAKE_REQUIRED_INCLUDES "${GNUTLS_INCLUDE_DIRS}") list(APPEND CMAKE_REQUIRED_LIBRARIES "${GNUTLS_LIBRARIES}") check_symbol_exists("gnutls_srp_verifier" "gnutls/gnutls.h" HAVE_GNUTLS_SRP) cmake_pop_check_state() endif() endif() if(CURL_USE_RUSTLS) find_package(Rustls REQUIRED) set(_ssl_enabled ON) set(USE_RUSTLS ON) list(APPEND CURL_LIBS ${RUSTLS_LIBRARIES}) list(APPEND CURL_LIBDIRS ${RUSTLS_LIBRARY_DIRS}) list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${RUSTLS_PC_REQUIRES}) include_directories(SYSTEM ${RUSTLS_INCLUDE_DIRS}) link_directories(${RUSTLS_LIBRARY_DIRS}) if(RUSTLS_CFLAGS) string(APPEND CMAKE_C_FLAGS " ${RUSTLS_CFLAGS}") endif() if(NOT DEFINED HAVE_RUSTLS_SUPPORTED_HPKE) if(RUSTLS_VERSION AND RUSTLS_VERSION VERSION_GREATER_EQUAL 0.15) set(HAVE_RUSTLS_SUPPORTED_HPKE TRUE) elseif(NOT RUSTLS_VERSION) cmake_push_check_state() list(APPEND CMAKE_REQUIRED_INCLUDES "${RUSTLS_INCLUDE_DIRS}") list(APPEND CMAKE_REQUIRED_LIBRARIES "${RUSTLS_LIBRARIES}") curl_required_libpaths("${RUSTLS_LIBRARY_DIRS}") check_symbol_exists("rustls_supported_hpke" "rustls.h" HAVE_RUSTLS_SUPPORTED_HPKE) cmake_pop_check_state() endif() endif() if(NOT HAVE_RUSTLS_SUPPORTED_HPKE) message(FATAL_ERROR "rustls-ffi library does not provide rustls_supported_hpke function. Required version is 0.15 or newer.") endif() if(CURL_DEFAULT_SSL_BACKEND AND CURL_DEFAULT_SSL_BACKEND STREQUAL "rustls") set(_valid_default_ssl_backend TRUE) endif() set(_curl_ca_bundle_supported TRUE) endif() if(CURL_DEFAULT_SSL_BACKEND AND NOT _valid_default_ssl_backend) message(FATAL_ERROR "CURL_DEFAULT_SSL_BACKEND '${CURL_DEFAULT_SSL_BACKEND}' not enabled.") endif() # Keep ZLIB detection after TLS detection, # and before calling curl_openssl_check_exists(). set(HAVE_LIBZ OFF) curl_dependency_option(CURL_ZLIB ZLIB "ZLIB") if(ZLIB_FOUND) set(HAVE_LIBZ ON) # Depend on ZLIB via imported targets. This allows our dependents to # get our dependencies transitively. list(APPEND CURL_LIBS ZLIB::ZLIB) list(APPEND LIBCURL_PC_REQUIRES_PRIVATE "zlib") endif() set(HAVE_BROTLI OFF) curl_dependency_option(CURL_BROTLI Brotli "brotli") if(BROTLI_FOUND) set(HAVE_BROTLI ON) list(APPEND CURL_LIBS ${BROTLI_LIBRARIES}) list(APPEND CURL_LIBDIRS ${BROTLI_LIBRARY_DIRS}) list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${BROTLI_PC_REQUIRES}) include_directories(SYSTEM ${BROTLI_INCLUDE_DIRS}) link_directories(${BROTLI_LIBRARY_DIRS}) if(BROTLI_CFLAGS) string(APPEND CMAKE_C_FLAGS " ${BROTLI_CFLAGS}") endif() endif() set(HAVE_ZSTD OFF) curl_dependency_option(CURL_ZSTD Zstd "zstd") if(ZSTD_FOUND) if(ZSTD_VERSION VERSION_GREATER_EQUAL 1.0.0) set(HAVE_ZSTD ON) list(APPEND CURL_LIBS ${ZSTD_LIBRARIES}) list(APPEND CURL_LIBDIRS ${ZSTD_LIBRARY_DIRS}) list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${ZSTD_PC_REQUIRES}) include_directories(SYSTEM ${ZSTD_INCLUDE_DIRS}) link_directories(${ZSTD_LIBRARY_DIRS}) if(ZSTD_CFLAGS) string(APPEND CMAKE_C_FLAGS " ${ZSTD_CFLAGS}") endif() else() message(WARNING "zstd v1.0.0 or newer is required, disabling zstd support.") endif() endif() # Check function in an OpenSSL-like TLS backend. macro(curl_openssl_check_exists) cmake_push_check_state() if(USE_OPENSSL) list(APPEND CMAKE_REQUIRED_LIBRARIES OpenSSL::SSL OpenSSL::Crypto) list(APPEND CMAKE_REQUIRED_DEFINITIONS "-DOPENSSL_SUPPRESS_DEPRECATED") # for SSL_CTX_set_srp_username deprecated since 3.0.0 if(HAVE_LIBZ) list(APPEND CMAKE_REQUIRED_LIBRARIES ZLIB::ZLIB) endif() if(WIN32 AND NOT WINCE) list(APPEND CMAKE_REQUIRED_LIBRARIES "bcrypt") # for OpenSSL/LibreSSL endif() endif() if(USE_WOLFSSL) list(APPEND CMAKE_REQUIRED_INCLUDES "${WOLFSSL_INCLUDE_DIRS}") list(APPEND CMAKE_REQUIRED_LIBRARIES "${WOLFSSL_LIBRARIES}") curl_required_libpaths("${WOLFSSL_LIBRARY_DIRS}") if(HAVE_LIBZ) list(APPEND CMAKE_REQUIRED_LIBRARIES ZLIB::ZLIB) # Public wolfSSL headers also require zlib headers endif() list(APPEND CMAKE_REQUIRED_DEFINITIONS "-DHAVE_UINTPTR_T") # to pull in stdint.h (as of wolfSSL v5.5.4) endif() if(WIN32) list(APPEND CMAKE_REQUIRED_LIBRARIES "${_win32_winsock}" "${_win32_crypt32}") # for OpenSSL/wolfSSL endif() if(${ARGC} EQUAL 2) check_function_exists(${ARGN}) else() check_symbol_exists(${ARGN}) # Uses CMAKE_REQUIRED_INCLUDES and CMAKE_REQUIRED_DEFINITIONS endif() cmake_pop_check_state() endmacro() # Ensure that OpenSSL (or fork) or wolfSSL actually supports QUICTLS API. macro(curl_openssl_check_quic) if(USE_OPENSSL AND NOT USE_OPENSSL_QUIC) if(OPENSSL_VERSION VERSION_GREATER_EQUAL 3.5.0) if(NOT DEFINED HAVE_SSL_SET_QUIC_TLS_CBS) curl_openssl_check_exists("SSL_set_quic_tls_cbs" HAVE_SSL_SET_QUIC_TLS_CBS) endif() else() if(NOT DEFINED HAVE_SSL_SET_QUIC_USE_LEGACY_CODEPOINT) curl_openssl_check_exists("SSL_set_quic_use_legacy_codepoint" HAVE_SSL_SET_QUIC_USE_LEGACY_CODEPOINT) endif() endif() endif() if(USE_WOLFSSL AND NOT DEFINED HAVE_WOLFSSL_SET_QUIC_USE_LEGACY_CODEPOINT) curl_openssl_check_exists("wolfSSL_set_quic_use_legacy_codepoint" HAVE_WOLFSSL_SET_QUIC_USE_LEGACY_CODEPOINT) endif() if(NOT HAVE_SSL_SET_QUIC_TLS_CBS AND NOT HAVE_SSL_SET_QUIC_USE_LEGACY_CODEPOINT AND NOT HAVE_WOLFSSL_SET_QUIC_USE_LEGACY_CODEPOINT) message(FATAL_ERROR "QUICTLS API support is missing from OpenSSL/fork/wolfSSL. Try setting -DOPENSSL_ROOT_DIR") endif() endmacro() if(USE_WOLFSSL) curl_openssl_check_exists("wolfSSL_get_peer_certificate" HAVE_WOLFSSL_GET_PEER_CERTIFICATE) curl_openssl_check_exists("wolfSSL_UseALPN" HAVE_WOLFSSL_USEALPN) curl_openssl_check_exists("wolfSSL_DES_ecb_encrypt" HAVE_WOLFSSL_DES_ECB_ENCRYPT) curl_openssl_check_exists("wolfSSL_BIO_new" HAVE_WOLFSSL_BIO_NEW) curl_openssl_check_exists("wolfSSL_BIO_set_shutdown" HAVE_WOLFSSL_BIO_SET_SHUTDOWN) endif() if(USE_OPENSSL) if(NOT DEFINED HAVE_SSL_SET0_WBIO) curl_openssl_check_exists("SSL_set0_wbio" HAVE_SSL_SET0_WBIO) endif() if(NOT DEFINED HAVE_OPENSSL_SRP AND NOT CURL_DISABLE_SRP) curl_openssl_check_exists("SSL_CTX_set_srp_username" "openssl/ssl.h" HAVE_OPENSSL_SRP) endif() endif() option(USE_HTTPSRR "Enable HTTPS RR support" OFF) option(USE_ECH "Enable ECH support" OFF) if(USE_ECH) if(USE_OPENSSL OR USE_WOLFSSL OR USE_RUSTLS) # Be sure that the TLS library actually supports ECH. if(USE_WOLFSSL) curl_openssl_check_exists("wolfSSL_CTX_GenerateEchConfig" HAVE_WOLFSSL_CTX_GENERATEECHCONFIG) endif() if(USE_OPENSSL) curl_openssl_check_exists("SSL_set1_ech_config_list" HAVE_SSL_SET1_ECH_CONFIG_LIST) endif() if(HAVE_WOLFSSL_CTX_GENERATEECHCONFIG OR HAVE_SSL_SET1_ECH_CONFIG_LIST OR USE_RUSTLS) set(HAVE_ECH 1) endif() if(NOT HAVE_ECH) message(FATAL_ERROR "ECH support missing in OpenSSL/BoringSSL/AWS-LC/wolfSSL/rustls-ffi") else() message(STATUS "ECH enabled") # ECH wants HTTPSRR set(USE_HTTPSRR ON) message(STATUS "HTTPSRR enabled") endif() else() message(FATAL_ERROR "ECH requires ECH-enabled OpenSSL, BoringSSL, AWS-LC, wolfSSL or rustls-ffi") endif() endif() option(USE_SSLS_EXPORT "Enable SSL session export support" OFF) if(USE_SSLS_EXPORT) if(_ssl_enabled) message(STATUS "SSL export enabled.") else() message(FATAL_ERROR "SSL session export requires SSL enabled") endif() endif() option(USE_NGHTTP2 "Use nghttp2 library" ON) if(USE_NGHTTP2) find_package(NGHTTP2) if(NGHTTP2_FOUND) list(APPEND CURL_LIBS ${NGHTTP2_LIBRARIES}) list(APPEND CURL_LIBDIRS ${NGHTTP2_LIBRARY_DIRS}) list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${NGHTTP2_PC_REQUIRES}) include_directories(SYSTEM ${NGHTTP2_INCLUDE_DIRS}) link_directories(${NGHTTP2_LIBRARY_DIRS}) if(NGHTTP2_CFLAGS) string(APPEND CMAKE_C_FLAGS " ${NGHTTP2_CFLAGS}") endif() else() set(USE_NGHTTP2 OFF) endif() endif() option(USE_NGTCP2 "Use ngtcp2 and nghttp3 libraries for HTTP/3 support" OFF) if(USE_NGTCP2) if(USE_OPENSSL OR USE_WOLFSSL) if(USE_WOLFSSL) find_package(NGTCP2 REQUIRED "wolfSSL") elseif(HAVE_BORINGSSL OR HAVE_AWSLC) find_package(NGTCP2 REQUIRED "BoringSSL") elseif(OPENSSL_VERSION VERSION_GREATER_EQUAL 3.5.0 AND NOT USE_OPENSSL_QUIC) find_package(NGTCP2 REQUIRED "ossl") if(NGTCP2_VERSION VERSION_LESS 1.12.0) message(FATAL_ERROR "ngtcp2 1.12.0 or upper required for OpenSSL") endif() set(OPENSSL_QUIC_API2 1) else() find_package(NGTCP2 REQUIRED "quictls") if(NOT HAVE_LIBRESSL) set(_openssl "quictls") endif() endif() curl_openssl_check_quic() elseif(USE_GNUTLS) find_package(NGTCP2 REQUIRED "GnuTLS") else() message(FATAL_ERROR "ngtcp2 requires a supported TLS-backend") endif() list(APPEND CURL_LIBS ${NGTCP2_LIBRARIES}) list(APPEND CURL_LIBDIRS ${NGTCP2_LIBRARY_DIRS}) list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${NGTCP2_PC_REQUIRES}) include_directories(SYSTEM ${NGTCP2_INCLUDE_DIRS}) link_directories(${NGTCP2_LIBRARY_DIRS}) if(NGTCP2_CFLAGS) string(APPEND CMAKE_C_FLAGS " ${NGTCP2_CFLAGS}") endif() find_package(NGHTTP3 REQUIRED) set(USE_NGHTTP3 ON) list(APPEND CURL_LIBS ${NGHTTP3_LIBRARIES}) list(APPEND CURL_LIBDIRS ${NGHTTP3_LIBRARY_DIRS}) list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${NGHTTP3_PC_REQUIRES}) include_directories(SYSTEM ${NGHTTP3_INCLUDE_DIRS}) link_directories(${NGHTTP3_LIBRARY_DIRS}) if(NGHTTP3_CFLAGS) string(APPEND CMAKE_C_FLAGS " ${NGHTTP3_CFLAGS}") endif() 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) if(NOT HAVE_BORINGSSL) message(FATAL_ERROR "quiche requires BoringSSL") endif() curl_openssl_check_quic() list(APPEND CURL_LIBS ${QUICHE_LIBRARIES}) list(APPEND CURL_LIBDIRS ${QUICHE_LIBRARY_DIRS}) list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${QUICHE_PC_REQUIRES}) include_directories(SYSTEM ${QUICHE_INCLUDE_DIRS}) link_directories(${QUICHE_LIBRARY_DIRS}) if(QUICHE_CFLAGS) string(APPEND CMAKE_C_FLAGS " ${QUICHE_CFLAGS}") endif() if(NOT DEFINED HAVE_QUICHE_CONN_SET_QLOG_FD) cmake_push_check_state() list(APPEND CMAKE_REQUIRED_INCLUDES "${QUICHE_INCLUDE_DIRS}") list(APPEND 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() endif() option(USE_MSH3 "Use msh3/msquic library for HTTP/3 support" OFF) if(USE_MSH3) if(USE_NGTCP2 OR USE_QUICHE) message(FATAL_ERROR "Only one HTTP/3 backend can be selected") endif() if(NOT WIN32) if(NOT USE_OPENSSL) message(FATAL_ERROR "msh3/msquic requires OpenSSL fork with QUIC API") endif() curl_openssl_check_quic() endif() find_package(MSH3 REQUIRED) list(APPEND CURL_LIBS ${MSH3_LIBRARIES}) list(APPEND CURL_LIBDIRS ${MSH3_LIBRARY_DIRS}) list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${MSH3_PC_REQUIRES}) include_directories(SYSTEM ${MSH3_INCLUDE_DIRS}) link_directories(${MSH3_LIBRARY_DIRS}) if(MSH3_CFLAGS) string(APPEND CMAKE_C_FLAGS " ${MSH3_CFLAGS}") endif() endif() if(USE_OPENSSL_QUIC) if(USE_NGTCP2 OR USE_QUICHE OR USE_MSH3) message(FATAL_ERROR "Only one HTTP/3 backend can be selected") endif() find_package(OpenSSL 3.3.0 REQUIRED) find_package(NGHTTP3 REQUIRED) set(USE_NGHTTP3 ON) list(APPEND CURL_LIBS ${NGHTTP3_LIBRARIES}) list(APPEND CURL_LIBDIRS ${NGHTTP3_LIBRARY_DIRS}) list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${NGHTTP3_PC_REQUIRES}) include_directories(SYSTEM ${NGHTTP3_INCLUDE_DIRS}) link_directories(${NGHTTP3_LIBRARY_DIRS}) if(NGHTTP3_CFLAGS) string(APPEND CMAKE_C_FLAGS " ${NGHTTP3_CFLAGS}") endif() endif() if(CURL_WITH_MULTI_SSL AND (USE_NGTCP2 OR USE_QUICHE OR USE_MSH3 OR USE_OPENSSL_QUIC)) message(FATAL_ERROR "MultiSSL cannot be enabled with HTTP/3 and vice versa.") endif() if(NOT CURL_DISABLE_SRP AND (HAVE_GNUTLS_SRP OR HAVE_OPENSSL_SRP)) set(USE_TLS_SRP 1) endif() if(NOT CURL_DISABLE_LDAP) if(WIN32 AND NOT WINDOWS_STORE AND NOT WINCE) option(USE_WIN32_LDAP "Use Windows LDAP implementation" ON) if(USE_WIN32_LDAP) list(APPEND CURL_LIBS "wldap32") if(NOT CURL_DISABLE_LDAPS) set(HAVE_LDAP_SSL ON) endif() endif() endif() # Now that we know, we are not using Windows LDAP... if(NOT USE_WIN32_LDAP) # Check for LDAP cmake_push_check_state() if(USE_OPENSSL) list(APPEND CMAKE_REQUIRED_LIBRARIES OpenSSL::SSL OpenSSL::Crypto) endif() find_package(LDAP) if(LDAP_FOUND) set(HAVE_LBER_H 1) set(CURL_LIBS ${LDAP_LIBRARIES} ${CURL_LIBS}) list(APPEND CURL_LIBDIRS ${LDAP_LIBRARY_DIRS}) if(LDAP_PC_REQUIRES) set(LIBCURL_PC_REQUIRES_PRIVATE ${LDAP_PC_REQUIRES} ${LIBCURL_PC_REQUIRES_PRIVATE}) endif() include_directories(SYSTEM ${LDAP_INCLUDE_DIRS}) link_directories(${LDAP_LIBRARY_DIRS}) if(LDAP_CFLAGS) string(APPEND CMAKE_C_FLAGS " ${LDAP_CFLAGS}") endif() # LDAP feature checks list(APPEND CMAKE_REQUIRED_DEFINITIONS "-DLDAP_DEPRECATED=1") list(APPEND CMAKE_REQUIRED_LIBRARIES "${LDAP_LIBRARIES}") curl_required_libpaths("${LDAP_LIBRARY_DIRS}") check_function_exists("ldap_url_parse" HAVE_LDAP_URL_PARSE) check_function_exists("ldap_init_fd" HAVE_LDAP_INIT_FD) check_include_file("ldap_ssl.h" HAVE_LDAP_SSL_H) if(HAVE_LDAP_INIT_FD) set(USE_OPENLDAP ON) endif() if(NOT CURL_DISABLE_LDAPS) set(HAVE_LDAP_SSL ON) endif() else() message(STATUS "LDAP not found. CURL_DISABLE_LDAP set ON") set(CURL_DISABLE_LDAP ON CACHE BOOL "" FORCE) endif() cmake_pop_check_state() endif() endif() # No ldap, no ldaps. if(CURL_DISABLE_LDAP) if(NOT CURL_DISABLE_LDAPS) message(STATUS "LDAP needs to be enabled to support LDAPS") set(CURL_DISABLE_LDAPS ON CACHE BOOL "" FORCE) endif() endif() if(WIN32) option(USE_WIN32_IDN "Use WinIDN for IDN support" OFF) if(USE_WIN32_IDN) list(APPEND CURL_LIBS "normaliz") endif() else() set(USE_WIN32_IDN OFF) endif() if(APPLE) option(USE_APPLE_IDN "Use Apple built-in IDN support" OFF) if(USE_APPLE_IDN) cmake_push_check_state() list(APPEND CMAKE_REQUIRED_LIBRARIES "icucore") check_symbol_exists("uidna_openUTS46" "unicode/uidna.h" HAVE_APPLE_IDN) cmake_pop_check_state() if(HAVE_APPLE_IDN) list(APPEND CURL_LIBS "icucore" "iconv") else() set(USE_APPLE_IDN OFF) endif() endif() else() set(USE_APPLE_IDN OFF) endif() # Check for libidn2 option(USE_LIBIDN2 "Use libidn2 for IDN support" ON) set(HAVE_IDN2_H OFF) set(HAVE_LIBIDN2 OFF) if(USE_LIBIDN2 AND NOT USE_APPLE_IDN AND NOT USE_WIN32_IDN) find_package(Libidn2) if(LIBIDN2_FOUND) set(CURL_LIBS ${LIBIDN2_LIBRARIES} ${CURL_LIBS}) list(APPEND CURL_LIBDIRS ${LIBIDN2_LIBRARY_DIRS}) set(LIBCURL_PC_REQUIRES_PRIVATE ${LIBIDN2_PC_REQUIRES} ${LIBCURL_PC_REQUIRES_PRIVATE}) include_directories(SYSTEM ${LIBIDN2_INCLUDE_DIRS}) link_directories(${LIBIDN2_LIBRARY_DIRS}) if(LIBIDN2_CFLAGS) string(APPEND CMAKE_C_FLAGS " ${LIBIDN2_CFLAGS}") endif() set(HAVE_IDN2_H 1) set(HAVE_LIBIDN2 1) endif() endif() # libpsl option(CURL_USE_LIBPSL "Use libpsl" ON) mark_as_advanced(CURL_USE_LIBPSL) set(USE_LIBPSL OFF) if(CURL_USE_LIBPSL) find_package(Libpsl REQUIRED) list(APPEND CURL_LIBS ${LIBPSL_LIBRARIES}) list(APPEND CURL_LIBDIRS ${LIBPSL_LIBRARY_DIRS}) list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${LIBPSL_PC_REQUIRES}) include_directories(SYSTEM ${LIBPSL_INCLUDE_DIRS}) link_directories(${LIBPSL_LIBRARY_DIRS}) if(LIBPSL_CFLAGS) string(APPEND CMAKE_C_FLAGS " ${LIBPSL_CFLAGS}") endif() set(USE_LIBPSL ON) endif() # libssh2 option(CURL_USE_LIBSSH2 "Use libssh2" ON) mark_as_advanced(CURL_USE_LIBSSH2) set(USE_LIBSSH2 OFF) if(CURL_USE_LIBSSH2) find_package(Libssh2) if(LIBSSH2_FOUND) set(CURL_LIBS ${LIBSSH2_LIBRARIES} ${CURL_LIBS}) # keep it before TLS-crypto, compression list(APPEND CURL_LIBDIRS ${LIBSSH2_LIBRARY_DIRS}) set(LIBCURL_PC_REQUIRES_PRIVATE ${LIBSSH2_PC_REQUIRES} ${LIBCURL_PC_REQUIRES_PRIVATE}) include_directories(SYSTEM ${LIBSSH2_INCLUDE_DIRS}) link_directories(${LIBSSH2_LIBRARY_DIRS}) if(LIBSSH2_CFLAGS) string(APPEND CMAKE_C_FLAGS " ${LIBSSH2_CFLAGS}") endif() set(USE_LIBSSH2 ON) endif() endif() # libssh option(CURL_USE_LIBSSH "Use libssh" OFF) mark_as_advanced(CURL_USE_LIBSSH) if(NOT USE_LIBSSH2 AND CURL_USE_LIBSSH) find_package(Libssh REQUIRED) set(CURL_LIBS ${LIBSSH_LIBRARIES} ${CURL_LIBS}) # keep it before TLS-crypto, compression list(APPEND CURL_LIBDIRS ${LIBSSH_LIBRARY_DIRS}) set(LIBCURL_PC_REQUIRES_PRIVATE ${LIBSSH_PC_REQUIRES} ${LIBCURL_PC_REQUIRES_PRIVATE}) include_directories(SYSTEM ${LIBSSH_INCLUDE_DIRS}) link_directories(${LIBSSH_LIBRARY_DIRS}) if(LIBSSH_CFLAGS) string(APPEND CMAKE_C_FLAGS " ${LIBSSH_CFLAGS}") endif() set(USE_LIBSSH ON) endif() # wolfSSH option(CURL_USE_WOLFSSH "Use wolfSSH" OFF) mark_as_advanced(CURL_USE_WOLFSSH) set(USE_WOLFSSH OFF) if(NOT USE_LIBSSH2 AND NOT USE_LIBSSH AND CURL_USE_WOLFSSH) if(USE_WOLFSSL) find_package(WolfSSH) if(WOLFSSH_FOUND) set(CURL_LIBS ${WOLFSSH_LIBRARIES} ${CURL_LIBS}) # keep it before TLS-crypto, compression include_directories(SYSTEM ${WOLFSSH_INCLUDE_DIRS}) set(USE_WOLFSSH ON) endif() else() message(WARNING "wolfSSH requires wolfSSL. Skipping.") endif() endif() option(CURL_USE_GSASL "Use libgsasl" OFF) mark_as_advanced(CURL_USE_GSASL) if(CURL_USE_GSASL) find_package(Libgsasl REQUIRED) list(APPEND CURL_LIBS ${LIBGSASL_LIBRARIES}) list(APPEND CURL_LIBDIRS ${LIBGSASL_LIBRARY_DIRS}) list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${LIBGSASL_PC_REQUIRES}) include_directories(SYSTEM ${LIBGSASL_INCLUDE_DIRS}) link_directories(${LIBGSASL_LIBRARY_DIRS}) if(LIBGSASL_CFLAGS) string(APPEND CMAKE_C_FLAGS " ${LIBGSASL_CFLAGS}") endif() set(USE_GSASL ON) endif() option(CURL_USE_GSSAPI "Use GSSAPI implementation" OFF) mark_as_advanced(CURL_USE_GSSAPI) if(CURL_USE_GSSAPI) find_package(GSS) set(HAVE_GSSAPI ${GSS_FOUND}) if(GSS_FOUND) list(APPEND CURL_LIBS ${GSS_LIBRARIES}) list(APPEND CURL_LIBDIRS ${GSS_LIBRARY_DIRS}) list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${GSS_PC_REQUIRES}) include_directories(SYSTEM ${GSS_INCLUDE_DIRS}) link_directories(${GSS_LIBRARY_DIRS}) if(GSS_CFLAGS) string(APPEND CMAKE_C_FLAGS " ${GSS_CFLAGS}") endif() if(GSS_FLAVOUR STREQUAL "GNU") set(HAVE_GSSGNU 1) else() cmake_push_check_state() list(APPEND CMAKE_REQUIRED_INCLUDES "${GSS_INCLUDE_DIRS}") set(_include_list "") check_include_file("gssapi/gssapi.h" HAVE_GSSAPI_GSSAPI_H) if(HAVE_GSSAPI_GSSAPI_H) list(APPEND _include_list "gssapi/gssapi.h") endif() check_include_files("${_include_list};gssapi/gssapi_generic.h" HAVE_GSSAPI_GSSAPI_GENERIC_H) if(GSS_FLAVOUR STREQUAL "MIT") check_include_files("${_include_list};gssapi/gssapi_krb5.h" _have_gssapi_gssapi_krb5_h) if(HAVE_GSSAPI_GSSAPI_GENERIC_H) list(APPEND _include_list "gssapi/gssapi_generic.h") endif() if(_have_gssapi_gssapi_krb5_h) list(APPEND _include_list "gssapi/gssapi_krb5.h") endif() if(NOT DEFINED HAVE_GSS_C_NT_HOSTBASED_SERVICE) string(APPEND CMAKE_REQUIRED_FLAGS " ${GSS_CFLAGS}") list(APPEND CMAKE_REQUIRED_LIBRARIES "${GSS_LIBRARIES}") curl_required_libpaths("${GSS_LIBRARY_DIRS}") check_symbol_exists("GSS_C_NT_HOSTBASED_SERVICE" "${_include_list}" HAVE_GSS_C_NT_HOSTBASED_SERVICE) endif() if(NOT HAVE_GSS_C_NT_HOSTBASED_SERVICE) set(HAVE_OLD_GSSMIT ON) endif() endif() unset(_include_list) cmake_pop_check_state() endif() else() message(WARNING "GSSAPI has been requested, but no supporting libraries found. Skipping.") endif() endif() # libuv option(CURL_USE_LIBUV "Use libuv for event-based tests" OFF) if(CURL_USE_LIBUV) if(NOT ENABLE_DEBUG) message(FATAL_ERROR "Using libuv without debug support enabled is useless") endif() find_package(Libuv REQUIRED) list(APPEND CURL_LIBS ${LIBUV_LIBRARIES}) list(APPEND CURL_LIBDIRS ${LIBUV_LIBRARY_DIRS}) list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${LIBUV_PC_REQUIRES}) include_directories(SYSTEM ${LIBUV_INCLUDE_DIRS}) link_directories(${LIBUV_LIBRARY_DIRS}) if(LIBUV_CFLAGS) string(APPEND CMAKE_C_FLAGS " ${LIBUV_CFLAGS}") endif() set(USE_LIBUV ON) set(HAVE_UV_H ON) endif() option(USE_LIBRTMP "Enable librtmp from rtmpdump" OFF) if(USE_LIBRTMP) find_package(Librtmp REQUIRED) list(APPEND CURL_LIBS ${LIBRTMP_LIBRARIES}) list(APPEND CURL_LIBDIRS ${LIBRTMP_LIBRARY_DIRS}) list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${LIBRTMP_PC_REQUIRES}) include_directories(SYSTEM ${LIBRTMP_INCLUDE_DIRS}) link_directories(${LIBRTMP_LIBRARY_DIRS}) if(LIBRTMP_CFLAGS) string(APPEND CMAKE_C_FLAGS " ${LIBRTMP_CFLAGS}") endif() endif() option(ENABLE_UNIX_SOCKETS "Enable Unix domain sockets support" ON) if(ENABLE_UNIX_SOCKETS AND NOT WINCE) if(WIN32 OR DOS) set(USE_UNIX_SOCKETS ON) else() include(CheckStructHasMember) check_struct_has_member("struct sockaddr_un" "sun_path" "sys/un.h" USE_UNIX_SOCKETS) endif() else() unset(USE_UNIX_SOCKETS CACHE) endif() # # CA handling # if(_curl_ca_bundle_supported) set(CURL_CA_BUNDLE "auto" CACHE STRING "Path to the CA bundle. Set 'none' to disable or 'auto' for auto-detection. Defaults to 'auto'.") set(CURL_CA_FALLBACK OFF CACHE BOOL "Use built-in CA store of TLS backend. Defaults to OFF") set(CURL_CA_PATH "auto" CACHE STRING "Location of default CA path. Set 'none' to disable or 'auto' for auto-detection. Defaults to 'auto'.") set(CURL_CA_EMBED "" CACHE STRING "Path to the CA bundle to embed in the curl tool.") if(CURL_CA_BUNDLE STREQUAL "") 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) elseif(CURL_CA_BUNDLE STREQUAL "auto") unset(CURL_CA_BUNDLE CACHE) if(NOT CMAKE_CROSSCOMPILING AND NOT WIN32) set(_curl_ca_bundle_autodetect TRUE) endif() else() set(CURL_CA_BUNDLE_SET TRUE) endif() mark_as_advanced(CURL_CA_BUNDLE_SET) if(CURL_CA_PATH STREQUAL "") 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) elseif(CURL_CA_PATH STREQUAL "auto") unset(CURL_CA_PATH CACHE) if(NOT CMAKE_CROSSCOMPILING AND NOT WIN32) set(_curl_ca_path_autodetect TRUE) endif() else() set(CURL_CA_PATH_SET TRUE) endif() mark_as_advanced(CURL_CA_PATH_SET) if(CURL_CA_BUNDLE_SET AND _curl_ca_path_autodetect) # Skip auto-detection of unset CA path because CA bundle is set explicitly elseif(CURL_CA_PATH_SET AND _curl_ca_bundle_autodetect) # Skip auto-detection of unset CA bundle because CA path is set explicitly elseif(_curl_ca_bundle_autodetect OR _curl_ca_path_autodetect) # First try auto-detecting a CA bundle, then a CA path if(_curl_ca_bundle_autodetect) foreach(_search_ca_bundle_path IN ITEMS "/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") 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) set(_search_ca_path "/etc/ssl/certs") file(GLOB _curl_ca_files_found "${_search_ca_path}/[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].0") if(_curl_ca_files_found) unset(_curl_ca_files_found) message(STATUS "Found CA path: ${_search_ca_path}") set(CURL_CA_PATH "${_search_ca_path}" 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() set(CURL_CA_EMBED_SET FALSE) if(BUILD_CURL_EXE AND NOT CURL_CA_EMBED STREQUAL "") if(EXISTS "${CURL_CA_EMBED}") set(CURL_CA_EMBED_SET TRUE) message(STATUS "Found CA bundle to embed: ${CURL_CA_EMBED}") else() message(FATAL_ERROR "CA bundle to embed is missing: '${CURL_CA_EMBED}'") endif() endif() endif() if(WIN32) option(CURL_DISABLE_CA_SEARCH "Disable unsafe CA bundle search in PATH on Windows" OFF) option(CURL_CA_SEARCH_SAFE "Enable safe CA bundle search (within the curl tool directory) on Windows" OFF) endif() # Check for header files if(WIN32) list(APPEND CURL_INCLUDES "winsock2.h") list(APPEND CURL_INCLUDES "ws2tcpip.h") if(HAVE_WIN32_WINNT AND HAVE_WIN32_WINNT LESS 0x0501 AND NOT WINCE) # Windows XP is required for freeaddrinfo, getaddrinfo message(FATAL_ERROR "Building for Windows XP or newer is required.") endif() endif() # Detect headers # Use check_include_file_concat_curl() for headers required by subsequent # check_include_file_concat_curl() or check_symbol_exists() detections. # Order for these is significant. check_include_file("sys/eventfd.h" HAVE_SYS_EVENTFD_H) check_include_file("sys/filio.h" HAVE_SYS_FILIO_H) check_include_file("sys/ioctl.h" HAVE_SYS_IOCTL_H) check_include_file("sys/param.h" HAVE_SYS_PARAM_H) check_include_file("sys/poll.h" HAVE_SYS_POLL_H) check_include_file("sys/resource.h" HAVE_SYS_RESOURCE_H) check_include_file_concat_curl("sys/select.h" HAVE_SYS_SELECT_H) check_include_file_concat_curl("sys/socket.h" HAVE_SYS_SOCKET_H) check_include_file("sys/sockio.h" HAVE_SYS_SOCKIO_H) check_include_file("sys/stat.h" HAVE_SYS_STAT_H) check_include_file_concat_curl("sys/time.h" HAVE_SYS_TIME_H) check_include_file_concat_curl("sys/types.h" HAVE_SYS_TYPES_H) check_include_file("sys/un.h" HAVE_SYS_UN_H) check_include_file_concat_curl("sys/utime.h" HAVE_SYS_UTIME_H) # sys/types.h (AmigaOS) check_include_file_concat_curl("arpa/inet.h" HAVE_ARPA_INET_H) check_include_file("dirent.h" HAVE_DIRENT_H) check_include_file("fcntl.h" HAVE_FCNTL_H) check_include_file_concat_curl("ifaddrs.h" HAVE_IFADDRS_H) check_include_file("io.h" HAVE_IO_H) check_include_file_concat_curl("libgen.h" HAVE_LIBGEN_H) check_include_file("linux/tcp.h" HAVE_LINUX_TCP_H) check_include_file("locale.h" HAVE_LOCALE_H) check_include_file_concat_curl("net/if.h" HAVE_NET_IF_H) # sys/select.h (e.g. MS-DOS/Watt-32) check_include_file_concat_curl("netdb.h" HAVE_NETDB_H) check_include_file_concat_curl("netinet/in.h" HAVE_NETINET_IN_H) check_include_file("netinet/in6.h" HAVE_NETINET_IN6_H) check_include_file_concat_curl("netinet/tcp.h" HAVE_NETINET_TCP_H) # sys/types.h (e.g. Cygwin) netinet/in.h check_include_file_concat_curl("netinet/udp.h" HAVE_NETINET_UDP_H) # sys/types.h (e.g. Cygwin) check_include_file("poll.h" HAVE_POLL_H) check_include_file("pwd.h" HAVE_PWD_H) check_include_file("stdatomic.h" HAVE_STDATOMIC_H) check_include_file("stdbool.h" HAVE_STDBOOL_H) check_include_file("stdint.h" HAVE_STDINT_H) check_include_file("strings.h" HAVE_STRINGS_H) check_include_file("stropts.h" HAVE_STROPTS_H) check_include_file("termio.h" HAVE_TERMIO_H) check_include_file("termios.h" HAVE_TERMIOS_H) check_include_file_concat_curl("unistd.h" HAVE_UNISTD_H) check_include_file("utime.h" HAVE_UTIME_H) if(AMIGA) check_include_file_concat_curl("proto/bsdsocket.h" HAVE_PROTO_BSDSOCKET_H) endif() # Pass these detection results to curl_internal_test() for use in CurlTests.c # Add here all feature flags referenced from CurlTests.c foreach(_variable IN ITEMS HAVE_STDATOMIC_H HAVE_STDBOOL_H HAVE_STROPTS_H HAVE_SYS_IOCTL_H HAVE_SYS_SOCKET_H HAVE_SYS_TYPES_H HAVE_UNISTD_H ) if(${_variable}) string(APPEND CURL_TEST_DEFINES " -D${_variable}") endif() endforeach() check_type_size("size_t" SIZEOF_SIZE_T) check_type_size("ssize_t" SIZEOF_SSIZE_T) check_type_size("long long" SIZEOF_LONG_LONG) check_type_size("long" SIZEOF_LONG) check_type_size("int" SIZEOF_INT) check_type_size("__int64" SIZEOF___INT64) check_type_size("time_t" SIZEOF_TIME_T) check_type_size("suseconds_t" SIZEOF_SUSECONDS_T) if(NOT HAVE_SIZEOF_SSIZE_T) if(SIZEOF_LONG EQUAL SIZEOF_SIZE_T) set(ssize_t "long") endif() if(NOT ssize_t AND SIZEOF___INT64 EQUAL SIZEOF_SIZE_T) set(ssize_t "__int64") endif() endif() # off_t is sized later, after the HAVE_FILE_OFFSET_BITS test if(SIZEOF_LONG_LONG) set(HAVE_LONGLONG 1) endif() if(SIZEOF_SUSECONDS_T) set(HAVE_SUSECONDS_T 1) endif() # Check for some functions that are used # Apply to all feature checks if(WIN32) list(APPEND CMAKE_REQUIRED_LIBRARIES "${_win32_winsock}") elseif(HAVE_LIBSOCKET) list(APPEND CMAKE_REQUIRED_LIBRARIES "socket") elseif(DOS) list(APPEND CMAKE_REQUIRED_LIBRARIES "${WATT_ROOT}/lib/libwatt.a") endif() check_function_exists("accept4" HAVE_ACCEPT4) check_function_exists("fnmatch" HAVE_FNMATCH) check_symbol_exists("basename" "${CURL_INCLUDES};string.h" HAVE_BASENAME) # libgen.h unistd.h check_symbol_exists("opendir" "dirent.h" HAVE_OPENDIR) check_function_exists("poll" HAVE_POLL) # poll.h check_symbol_exists("socket" "${CURL_INCLUDES}" HAVE_SOCKET) # winsock2.h sys/socket.h check_symbol_exists("socketpair" "${CURL_INCLUDES}" HAVE_SOCKETPAIR) # sys/socket.h check_symbol_exists("recv" "${CURL_INCLUDES}" HAVE_RECV) # proto/bsdsocket.h sys/types.h sys/socket.h check_symbol_exists("send" "${CURL_INCLUDES}" HAVE_SEND) # proto/bsdsocket.h sys/types.h sys/socket.h check_function_exists("sendmsg" HAVE_SENDMSG) check_function_exists("sendmmsg" HAVE_SENDMMSG) check_symbol_exists("select" "${CURL_INCLUDES}" HAVE_SELECT) # proto/bsdsocket.h sys/select.h sys/socket.h check_symbol_exists("strdup" "string.h" HAVE_STRDUP) check_symbol_exists("memrchr" "string.h" HAVE_MEMRCHR) check_symbol_exists("alarm" "unistd.h" HAVE_ALARM) check_symbol_exists("fcntl" "fcntl.h" HAVE_FCNTL) check_function_exists("getppid" HAVE_GETPPID) check_function_exists("utimes" HAVE_UTIMES) check_function_exists("gettimeofday" HAVE_GETTIMEOFDAY) # sys/time.h check_symbol_exists("closesocket" "${CURL_INCLUDES}" HAVE_CLOSESOCKET) # winsock2.h check_symbol_exists("sigsetjmp" "setjmp.h" HAVE_SIGSETJMP) check_function_exists("getpass_r" HAVE_GETPASS_R) check_function_exists("getpwuid" HAVE_GETPWUID) check_function_exists("getpwuid_r" HAVE_GETPWUID_R) check_function_exists("geteuid" HAVE_GETEUID) check_function_exists("utime" HAVE_UTIME) check_symbol_exists("gmtime_r" "stdlib.h;time.h" HAVE_GMTIME_R) check_symbol_exists("gethostbyname_r" "netdb.h" HAVE_GETHOSTBYNAME_R) check_symbol_exists("gethostname" "${CURL_INCLUDES}" HAVE_GETHOSTNAME) # winsock2.h unistd.h proto/bsdsocket.h check_symbol_exists("signal" "signal.h" HAVE_SIGNAL) check_symbol_exists("strerror_r" "stdlib.h;string.h" HAVE_STRERROR_R) check_symbol_exists("sigaction" "signal.h" HAVE_SIGACTION) check_symbol_exists("siginterrupt" "signal.h" HAVE_SIGINTERRUPT) check_symbol_exists("getaddrinfo" "${CURL_INCLUDES};stdlib.h;string.h" HAVE_GETADDRINFO) # ws2tcpip.h sys/socket.h netdb.h check_symbol_exists("getifaddrs" "${CURL_INCLUDES};stdlib.h" HAVE_GETIFADDRS) # ifaddrs.h check_symbol_exists("freeaddrinfo" "${CURL_INCLUDES}" HAVE_FREEADDRINFO) # ws2tcpip.h sys/socket.h netdb.h check_function_exists("pipe" HAVE_PIPE) check_function_exists("pipe2" HAVE_PIPE2) check_function_exists("eventfd" HAVE_EVENTFD) check_symbol_exists("ftruncate" "unistd.h" HAVE_FTRUNCATE) check_symbol_exists("getpeername" "${CURL_INCLUDES}" HAVE_GETPEERNAME) # winsock2.h unistd.h proto/bsdsocket.h check_symbol_exists("getsockname" "${CURL_INCLUDES}" HAVE_GETSOCKNAME) # winsock2.h unistd.h proto/bsdsocket.h check_function_exists("getrlimit" HAVE_GETRLIMIT) check_function_exists("setlocale" HAVE_SETLOCALE) check_function_exists("setrlimit" HAVE_SETRLIMIT) if(NOT WIN32) check_function_exists("if_nametoindex" HAVE_IF_NAMETOINDEX) # iphlpapi.h (Windows non-UWP), net/if.h check_function_exists("realpath" HAVE_REALPATH) check_function_exists("sched_yield" HAVE_SCHED_YIELD) check_symbol_exists("strcasecmp" "string.h" HAVE_STRCASECMP) check_symbol_exists("stricmp" "string.h" HAVE_STRICMP) check_symbol_exists("strcmpi" "string.h" HAVE_STRCMPI) endif() if(NOT MINGW32CE) # Avoid false detections check_function_exists("setmode" HAVE_SETMODE) if(WIN32 OR CYGWIN) check_function_exists("_setmode" HAVE__SETMODE) endif() endif() if(AMIGA) check_symbol_exists("CloseSocket" "${CURL_INCLUDES}" HAVE_CLOSESOCKET_CAMEL) # sys/socket.h proto/bsdsocket.h endif() if(NOT _ssl_enabled) check_symbol_exists("arc4random" "${CURL_INCLUDES};stdlib.h" HAVE_ARC4RANDOM) endif() if(NOT MSVC) check_function_exists("snprintf" HAVE_SNPRINTF) # to match detection method in ./configure elseif(MSVC_VERSION GREATER_EQUAL 1900) # Earlier MSVC compilers had faulty snprintf implementations check_symbol_exists("snprintf" "stdio.h" HAVE_SNPRINTF) # snprintf may be a compatibility macro, not an exported function endif() if(APPLE) check_function_exists("mach_absolute_time" HAVE_MACH_ABSOLUTE_TIME) endif() if(NOT WIN32) check_symbol_exists("inet_ntop" "${CURL_INCLUDES};stdlib.h;string.h" HAVE_INET_NTOP) # arpa/inet.h netinet/in.h sys/socket.h check_symbol_exists("inet_pton" "${CURL_INCLUDES};stdlib.h;string.h" HAVE_INET_PTON) # arpa/inet.h netinet/in.h sys/socket.h endif() check_symbol_exists("fsetxattr" "sys/xattr.h" HAVE_FSETXATTR) if(HAVE_FSETXATTR) curl_internal_test(HAVE_FSETXATTR_5) curl_internal_test(HAVE_FSETXATTR_6) endif() cmake_push_check_state() if(WIN32) list(APPEND CMAKE_EXTRA_INCLUDE_FILES "winsock2.h") check_type_size("ADDRESS_FAMILY" SIZEOF_ADDRESS_FAMILY) set(HAVE_ADDRESS_FAMILY ${HAVE_SIZEOF_ADDRESS_FAMILY}) elseif(HAVE_SYS_SOCKET_H) list(APPEND 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}) endif() cmake_pop_check_state() # Do curl specific tests foreach(_curl_test IN ITEMS HAVE_FCNTL_O_NONBLOCK HAVE_IOCTLSOCKET HAVE_IOCTLSOCKET_CAMEL HAVE_IOCTLSOCKET_CAMEL_FIONBIO HAVE_IOCTLSOCKET_FIONBIO HAVE_IOCTL_FIONBIO HAVE_IOCTL_SIOCGIFADDR HAVE_SETSOCKOPT_SO_NONBLOCK HAVE_GETHOSTBYNAME_R_3 HAVE_GETHOSTBYNAME_R_5 HAVE_GETHOSTBYNAME_R_6 HAVE_BOOL_T STDC_HEADERS HAVE_ATOMIC ) curl_internal_test(${_curl_test}) endforeach() # Check for reentrant cmake_push_check_state() list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_REENTRANT") foreach(_curl_test IN ITEMS HAVE_GETHOSTBYNAME_R_3 HAVE_GETHOSTBYNAME_R_5 HAVE_GETHOSTBYNAME_R_6) curl_internal_test(${_curl_test}_REENTRANT) if(NOT ${_curl_test} AND ${_curl_test}_REENTRANT) set(NEED_REENTRANT 1) endif() endforeach() cmake_pop_check_state() if(NEED_REENTRANT) foreach(_curl_test IN ITEMS 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() endforeach() endif() cmake_push_check_state() list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_FILE_OFFSET_BITS=64") curl_internal_test(HAVE_FILE_OFFSET_BITS) cmake_pop_check_state() cmake_push_check_state() if(HAVE_FILE_OFFSET_BITS) set(_FILE_OFFSET_BITS 64) list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_FILE_OFFSET_BITS=64") endif() check_type_size("off_t" SIZEOF_OFF_T) if(NOT WIN32) # fseeko may not exist with _FILE_OFFSET_BITS=64 but can exist with # _FILE_OFFSET_BITS unset or 32 (e.g. Android ARMv7 with NDK 26b and API level < 24) # so we need to test fseeko after testing for _FILE_OFFSET_BITS check_symbol_exists("fseeko" "${CURL_INCLUDES};stdio.h" HAVE_FSEEKO) if(HAVE_FSEEKO) set(HAVE_DECL_FSEEKO 1) endif() endif() # Include this header to get the type cmake_push_check_state() list(APPEND CMAKE_REQUIRED_INCLUDES "${PROJECT_SOURCE_DIR}/include") list(APPEND CMAKE_EXTRA_INCLUDE_FILES "curl/system.h") check_type_size("curl_off_t" SIZEOF_CURL_OFF_T) list(APPEND CMAKE_EXTRA_INCLUDE_FILES "curl/curl.h") check_type_size("curl_socket_t" SIZEOF_CURL_SOCKET_T) cmake_pop_check_state() # pop curl system headers cmake_pop_check_state() # pop -D_FILE_OFFSET_BITS=64 if(NOT WIN32 AND NOT CMAKE_CROSSCOMPILING) # On non-Windows and not cross-compiling, check for writable argv[] include(CheckCSourceRuns) check_c_source_runs(" int main(int argc, char **argv) { (void)argc; argv[0][0] = ' '; return (argv[0][0] == ' ')?0:1; }" HAVE_WRITABLE_ARGV) endif() if(NOT CMAKE_CROSSCOMPILING) include(CheckCSourceRuns) check_c_source_runs(" #include int main(void) { time_t t = -1; return t < 0; }" HAVE_TIME_T_UNSIGNED) endif() curl_internal_test(HAVE_GLIBC_STRERROR_R) curl_internal_test(HAVE_POSIX_STRERROR_R) if(NOT WIN32) curl_internal_test(HAVE_CLOCK_GETTIME_MONOTONIC) # Check clock_gettime(CLOCK_MONOTONIC, x) support endif() if(APPLE) curl_internal_test(HAVE_BUILTIN_AVAILABLE) # Check compiler support of __builtin_available() endif() # Some other minor tests if(_cmake_try_compile_target_type_save) set(CMAKE_TRY_COMPILE_TARGET_TYPE ${_cmake_try_compile_target_type_save}) unset(_cmake_try_compile_target_type_save) endif() include(CMake/OtherTests.cmake) set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS "HAVE_CONFIG_H") if(WIN32) list(APPEND CURL_LIBS "${_win32_winsock}") if(NOT WINCE) list(APPEND CURL_LIBS "bcrypt") endif() if(NOT WINCE) set(USE_WIN32_LARGE_FILES ON) endif() # We use crypto functions that are not available for UWP apps if(NOT WINDOWS_STORE) set(USE_WIN32_CRYPTO ON) endif() # Link required libraries for USE_WIN32_CRYPTO or USE_SCHANNEL if(USE_WIN32_CRYPTO OR USE_SCHANNEL) if(NOT WINCE) list(APPEND CURL_LIBS "advapi32") endif() list(APPEND CURL_LIBS "${_win32_crypt32}") endif() endif() if(CMAKE_C_COMPILER_ID STREQUAL "MSVC") # MSVC but exclude clang-cl set_property(DIRECTORY APPEND PROPERTY COMPILE_OPTIONS "-MP") # Parallel compilation endif() if(CURL_LTO) if(CMAKE_VERSION VERSION_LESS 3.9) message(FATAL_ERROR "LTO has been requested, 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 _lto_error LANGUAGES C) if(CURL_HAS_LTO) message(STATUS "LTO supported and enabled") else() message(FATAL_ERROR "LTO has been requested, but the compiler does not support it\n${_lto_error}") endif() endif() # Ugly (but functional) way to include "Makefile.inc" by transforming it # (= regenerate it). function(curl_transform_makefile_inc _input_file _output_file) file(READ ${_input_file} _makefile_inc_text) string(REPLACE "$(top_srcdir)" "\${PROJECT_SOURCE_DIR}" _makefile_inc_text ${_makefile_inc_text}) string(REPLACE "$(top_builddir)" "\${PROJECT_BINARY_DIR}" _makefile_inc_text ${_makefile_inc_text}) string(REGEX REPLACE "\\\\\n" "!^!^!" _makefile_inc_text ${_makefile_inc_text}) string(REGEX REPLACE "([a-zA-Z_][a-zA-Z0-9_]*)[\t ]*=[\t ]*([^\n]*)" "set(\\1 \\2)" _makefile_inc_text ${_makefile_inc_text}) string(REPLACE "!^!^!" "\n" _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. string(REGEX REPLACE "@([a-zA-Z_][a-zA-Z0-9_]*)@" "\${\\1}" _makefile_inc_text ${_makefile_inc_text}) file(WRITE ${_output_file} ${_makefile_inc_text}) set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${_input_file}") endfunction() include(GNUInstallDirs) set(_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") option(BUILD_TESTING "Build tests" ON) if(BUILD_TESTING AND PERL_FOUND) set(CURL_BUILD_TESTING ON) else() set(CURL_BUILD_TESTING OFF) endif() if(HAVE_MANUAL_TOOLS) set(CURL_MANPAGE "${PROJECT_BINARY_DIR}/docs/cmdline-opts/curl.1") set(CURL_ASCIIPAGE "${PROJECT_BINARY_DIR}/docs/cmdline-opts/curl.txt") add_subdirectory(docs) endif() add_subdirectory(scripts) # for shell completions list(REMOVE_DUPLICATES CURL_LIBDIRS) add_subdirectory(lib) if(BUILD_CURL_EXE) add_subdirectory(src) endif() option(BUILD_EXAMPLES "Build libcurl examples" ON) if(BUILD_EXAMPLES) add_subdirectory(docs/examples) endif() if(CURL_BUILD_TESTING) add_subdirectory(tests) endif() # Helper to populate a list (_items) with a label when conditions # (the remaining args) are satisfied macro(curl_add_if _label) # Needs to be a macro to allow this indirection if(${ARGN}) set(_items ${_items} "${_label}") endif() endmacro() # NTLM support requires crypto functions from various SSL libs. # These conditions must match those in lib/curl_setup.h. if(NOT CURL_DISABLE_NTLM AND (USE_OPENSSL OR USE_MBEDTLS OR USE_GNUTLS OR USE_SECTRANSP OR USE_WIN32_CRYPTO OR (USE_WOLFSSL AND HAVE_WOLFSSL_DES_ECB_ENCRYPT))) set(_use_curl_ntlm_core ON) endif() # Clear list and try to detect available protocols set(_items "") curl_add_if("HTTP" NOT CURL_DISABLE_HTTP) curl_add_if("HTTPS" NOT CURL_DISABLE_HTTP AND _ssl_enabled) curl_add_if("FTP" NOT CURL_DISABLE_FTP) curl_add_if("FTPS" NOT CURL_DISABLE_FTP AND _ssl_enabled) curl_add_if("FILE" NOT CURL_DISABLE_FILE) curl_add_if("TELNET" NOT CURL_DISABLE_TELNET) curl_add_if("LDAP" NOT CURL_DISABLE_LDAP) # CURL_DISABLE_LDAP implies CURL_DISABLE_LDAPS curl_add_if("LDAPS" NOT CURL_DISABLE_LDAPS AND ((USE_OPENLDAP AND _ssl_enabled) OR (NOT USE_OPENLDAP AND HAVE_LDAP_SSL))) curl_add_if("DICT" NOT CURL_DISABLE_DICT) curl_add_if("TFTP" NOT CURL_DISABLE_TFTP) curl_add_if("GOPHER" NOT CURL_DISABLE_GOPHER) curl_add_if("GOPHERS" NOT CURL_DISABLE_GOPHER AND _ssl_enabled) curl_add_if("POP3" NOT CURL_DISABLE_POP3) curl_add_if("POP3S" NOT CURL_DISABLE_POP3 AND _ssl_enabled) curl_add_if("IMAP" NOT CURL_DISABLE_IMAP) curl_add_if("IMAPS" NOT CURL_DISABLE_IMAP AND _ssl_enabled) curl_add_if("SMB" NOT CURL_DISABLE_SMB AND _use_curl_ntlm_core AND (SIZEOF_CURL_OFF_T GREATER 4)) curl_add_if("SMBS" NOT CURL_DISABLE_SMB AND _ssl_enabled AND _use_curl_ntlm_core AND (SIZEOF_CURL_OFF_T GREATER 4)) curl_add_if("SMTP" NOT CURL_DISABLE_SMTP) curl_add_if("SMTPS" NOT CURL_DISABLE_SMTP AND _ssl_enabled) curl_add_if("SCP" USE_LIBSSH2 OR USE_LIBSSH OR USE_WOLFSSH) curl_add_if("SFTP" USE_LIBSSH2 OR USE_LIBSSH OR USE_WOLFSSH) curl_add_if("IPFS" NOT CURL_DISABLE_IPFS) curl_add_if("IPNS" NOT CURL_DISABLE_IPFS) curl_add_if("RTSP" NOT CURL_DISABLE_RTSP) curl_add_if("RTMP" USE_LIBRTMP) curl_add_if("MQTT" NOT CURL_DISABLE_MQTT) curl_add_if("WS" NOT CURL_DISABLE_WEBSOCKETS) curl_add_if("WSS" NOT CURL_DISABLE_WEBSOCKETS AND _ssl_enabled) if(_items) list(SORT _items) endif() set(CURL_SUPPORTED_PROTOCOLS_LIST "${_items}") string(REPLACE ";" " " SUPPORT_PROTOCOLS "${_items}") string(TOLOWER "${SUPPORT_PROTOCOLS}" _support_protocols_lower) message(STATUS "Protocols: ${_support_protocols_lower}") # Clear list and try to detect available features set(_items "") curl_add_if("SSL" _ssl_enabled) curl_add_if("IPv6" USE_IPV6) curl_add_if("UnixSockets" USE_UNIX_SOCKETS) curl_add_if("libz" HAVE_LIBZ) curl_add_if("brotli" HAVE_BROTLI) curl_add_if("gsasl" USE_GSASL) curl_add_if("zstd" HAVE_ZSTD) curl_add_if("AsynchDNS" USE_ARES OR USE_THREADS_POSIX OR USE_THREADS_WIN32) curl_add_if("asyn-rr" USE_ARES AND ENABLE_THREADED_RESOLVER AND USE_HTTPSRR) curl_add_if("IDN" (HAVE_LIBIDN2 AND HAVE_IDN2_H) OR USE_WIN32_IDN OR USE_APPLE_IDN) curl_add_if("Largefile" (SIZEOF_CURL_OFF_T GREATER 4) AND ((SIZEOF_OFF_T GREATER 4) OR USE_WIN32_LARGE_FILES)) curl_add_if("SSPI" USE_WINDOWS_SSPI) curl_add_if("GSS-API" HAVE_GSSAPI) curl_add_if("alt-svc" NOT CURL_DISABLE_ALTSVC) curl_add_if("HSTS" NOT CURL_DISABLE_HSTS) curl_add_if("SPNEGO" NOT CURL_DISABLE_NEGOTIATE_AUTH AND (HAVE_GSSAPI OR USE_WINDOWS_SSPI)) curl_add_if("Kerberos" NOT CURL_DISABLE_KERBEROS_AUTH AND (HAVE_GSSAPI OR USE_WINDOWS_SSPI)) curl_add_if("NTLM" NOT CURL_DISABLE_NTLM AND (_use_curl_ntlm_core OR USE_WINDOWS_SSPI)) curl_add_if("TLS-SRP" USE_TLS_SRP) curl_add_if("HTTP2" USE_NGHTTP2) curl_add_if("HTTP3" USE_NGTCP2 OR USE_QUICHE OR USE_MSH3 OR USE_OPENSSL_QUIC) curl_add_if("MultiSSL" CURL_WITH_MULTI_SSL) curl_add_if("HTTPS-proxy" NOT CURL_DISABLE_PROXY AND _ssl_enabled AND (USE_OPENSSL OR USE_GNUTLS OR USE_SCHANNEL OR USE_RUSTLS OR USE_BEARSSL OR USE_MBEDTLS OR USE_SECTRANSP OR (USE_WOLFSSL AND HAVE_WOLFSSL_BIO_NEW))) curl_add_if("Unicode" ENABLE_UNICODE) curl_add_if("threadsafe" HAVE_ATOMIC OR (USE_THREADS_POSIX AND HAVE_PTHREAD_H) OR (WIN32 AND HAVE_WIN32_WINNT GREATER_EQUAL 0x0600)) curl_add_if("Debug" ENABLE_DEBUG) curl_add_if("TrackMemory" ENABLE_CURLDEBUG) curl_add_if("ECH" _ssl_enabled AND HAVE_ECH) curl_add_if("HTTPSRR" _ssl_enabled AND USE_HTTPSRR) curl_add_if("PSL" USE_LIBPSL) curl_add_if("CAcert" CURL_CA_EMBED_SET) curl_add_if("SSLS-EXPORT" _ssl_enabled AND USE_SSLS_EXPORT) if(_items) if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.13) list(SORT _items CASE INSENSITIVE) else() list(SORT _items) endif() endif() set(CURL_SUPPORTED_FEATURES_LIST "${_items}") string(REPLACE ";" " " SUPPORT_FEATURES "${_items}") message(STATUS "Features: ${SUPPORT_FEATURES}") # Clear list and collect SSL backends set(_items "") curl_add_if("Schannel" _ssl_enabled AND USE_SCHANNEL) curl_add_if("${_openssl}" _ssl_enabled AND USE_OPENSSL AND OPENSSL_VERSION VERSION_LESS 3.0.0) curl_add_if("${_openssl} v3+" _ssl_enabled AND USE_OPENSSL AND OPENSSL_VERSION VERSION_GREATER_EQUAL 3.0.0) curl_add_if("Secure Transport" _ssl_enabled AND USE_SECTRANSP) curl_add_if("mbedTLS" _ssl_enabled AND USE_MBEDTLS) curl_add_if("BearSSL" _ssl_enabled AND USE_BEARSSL) curl_add_if("wolfSSL" _ssl_enabled AND USE_WOLFSSL) curl_add_if("GnuTLS" _ssl_enabled AND USE_GNUTLS) curl_add_if("rustls" _ssl_enabled AND USE_RUSTLS) if(_items) if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.13) list(SORT _items CASE INSENSITIVE) else() list(SORT _items) endif() endif() string(REPLACE ";" " " SSL_BACKENDS "${_items}") message(STATUS "Enabled SSL backends: ${SSL_BACKENDS}") if(CURL_DEFAULT_SSL_BACKEND) message(STATUS "Default SSL backend: ${CURL_DEFAULT_SSL_BACKEND}") endif() if(NOT CURL_DISABLE_INSTALL) # curl-config needs the following options to be set. set(CC "${CMAKE_C_COMPILER}") set(CONFIGURE_OPTIONS "") set(CURLVERSION "${_curl_version}") set(VERSIONNUM "${_curl_version_num}") set(prefix "${CMAKE_INSTALL_PREFIX}") set(exec_prefix "\${prefix}") if(IS_ABSOLUTE ${CMAKE_INSTALL_INCLUDEDIR}) set(includedir "${CMAKE_INSTALL_INCLUDEDIR}") else() set(includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}") endif() if(IS_ABSOLUTE ${CMAKE_INSTALL_LIBDIR}) set(libdir "${CMAKE_INSTALL_LIBDIR}") else() set(libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}") endif() # "a" (Linux) or "lib" (Windows) string(REPLACE "." "" libext "${CMAKE_STATIC_LIBRARY_SUFFIX}") set(_ldflags "") set(LIBCURL_PC_LIBS_PRIVATE "") # Filter CMAKE_SHARED_LINKER_FLAGS for libs and libpaths string(STRIP "${CMAKE_SHARED_LINKER_FLAGS}" _custom_ldflags) string(REGEX REPLACE " +-([^ \\t;]*)" ";-\\1" _custom_ldflags "${_custom_ldflags}") set(_custom_libs "") set(_custom_libdirs "") foreach(_flag IN LISTS _custom_ldflags) if(_flag MATCHES "^-l") string(REGEX REPLACE "^-l" "" _flag "${_flag}") list(APPEND _custom_libs "${_flag}") elseif(_flag MATCHES "^-framework|^-F") list(APPEND _custom_libs "${_flag}") elseif(_flag MATCHES "^-L") string(REGEX REPLACE "^-L" "" _flag "${_flag}") list(APPEND _custom_libdirs "${_flag}") elseif(_flag MATCHES "^--library-path=") string(REGEX REPLACE "^--library-path=" "" _flag "${_flag}") list(APPEND _custom_libdirs "${_flag}") endif() endforeach() # Avoid getting unnecessary -L options for known system directories. set(_sys_libdirs "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") foreach(_libdir IN LISTS CMAKE_SYSTEM_PREFIX_PATH) if(_libdir MATCHES "/$") string(APPEND _libdir "lib") else() string(APPEND _libdir "/lib") endif() if(IS_DIRECTORY "${_libdir}") list(APPEND _sys_libdirs "${_libdir}") endif() if(DEFINED CMAKE_LIBRARY_ARCHITECTURE) string(APPEND _libdir "/${CMAKE_LIBRARY_ARCHITECTURE}") if(IS_DIRECTORY "${_libdir}") list(APPEND _sys_libdirs "${_libdir}") endif() endif() endforeach() foreach(_libdir IN LISTS _custom_libdirs CURL_LIBDIRS) if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.20) cmake_path(SET _libdir NORMALIZE "${_libdir}") endif() list(FIND _sys_libdirs "${_libdir}" _libdir_index) if(_libdir_index LESS 0) list(APPEND _ldflags "-L${_libdir}") endif() endforeach() set(_implicit_libs "") if(NOT MINGW AND NOT UNIX) set(_implicit_libs "${CMAKE_C_IMPLICIT_LINK_LIBRARIES}") endif() foreach(_lib IN LISTS _implicit_libs _custom_libs CURL_LIBS) if(TARGET "${_lib}") set(_libname "${_lib}") get_target_property(_imported "${_libname}" IMPORTED) if(NOT _imported) # Reading the LOCATION property on non-imported target will error out. # Assume the user will not 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 "^-") # '-framework ' list(APPEND _ldflags "${_lib}") elseif(_lib MATCHES "/") # This gets a bit more complex, because we want to specify the # directory separately, and only once per directory get_filename_component(_libdir ${_lib} DIRECTORY) get_filename_component(_libname ${_lib} NAME_WE) if(_libname MATCHES "^lib") if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.20) cmake_path(SET _libdir NORMALIZE "${_libdir}") endif() list(FIND _sys_libdirs "${_libdir}" _libdir_index) if(_libdir_index LESS 0) list(APPEND _ldflags "-L${_libdir}") endif() string(REGEX REPLACE "^lib" "" _libname "${_libname}") list(APPEND LIBCURL_PC_LIBS_PRIVATE "-l${_libname}") else() list(APPEND LIBCURL_PC_LIBS_PRIVATE "${_lib}") endif() else() list(APPEND LIBCURL_PC_LIBS_PRIVATE "-l${_lib}") endif() endforeach() if(LIBCURL_PC_REQUIRES_PRIVATE) string(REPLACE ";" "," LIBCURL_PC_REQUIRES_PRIVATE "${LIBCURL_PC_REQUIRES_PRIVATE}") endif() if(LIBCURL_PC_LIBS_PRIVATE) string(REPLACE ";" " " LIBCURL_PC_LIBS_PRIVATE "${LIBCURL_PC_LIBS_PRIVATE}") endif() if(_ldflags) list(REMOVE_DUPLICATES _ldflags) string(REPLACE ";" " " _ldflags "${_ldflags}") set(LIBCURL_PC_LDFLAGS_PRIVATE "${_ldflags}") string(STRIP "${LIBCURL_PC_LDFLAGS_PRIVATE}" LIBCURL_PC_LDFLAGS_PRIVATE) else() set(LIBCURL_PC_LDFLAGS_PRIVATE "") endif() set(LIBCURL_PC_CFLAGS_PRIVATE "-DCURL_STATICLIB") # Merge pkg-config private fields into public ones when static-only if(BUILD_SHARED_LIBS) set(ENABLE_SHARED "yes") set(LIBCURL_PC_REQUIRES "") set(LIBCURL_PC_LIBS "") set(LIBCURL_PC_CFLAGS "") else() set(ENABLE_SHARED "no") set(LIBCURL_PC_REQUIRES "${LIBCURL_PC_REQUIRES_PRIVATE}") set(LIBCURL_PC_LIBS "${LIBCURL_PC_LIBS_PRIVATE}") set(LIBCURL_PC_CFLAGS "${LIBCURL_PC_CFLAGS_PRIVATE}") endif() if(BUILD_STATIC_LIBS) set(ENABLE_STATIC "yes") else() set(ENABLE_STATIC "no") endif() # Generate a "curl-config" matching this config. # Consumed variables: # CC # CONFIGURE_OPTIONS # CURLVERSION # CURL_CA_BUNDLE # ENABLE_SHARED # ENABLE_STATIC # exec_prefix # includedir # LIBCURL_PC_CFLAGS # LIBCURL_PC_LDFLAGS_PRIVATE # LIBCURL_PC_LIBS_PRIVATE # libdir # libext # prefix # SSL_BACKENDS # SUPPORT_FEATURES # SUPPORT_PROTOCOLS # VERSIONNUM configure_file( "${PROJECT_SOURCE_DIR}/curl-config.in" "${PROJECT_BINARY_DIR}/curl-config" @ONLY) install(FILES "${PROJECT_BINARY_DIR}/curl-config" DESTINATION ${CMAKE_INSTALL_BINDIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) # Generate a pkg-config file matching this config. # Consumed variables: # CURLVERSION # exec_prefix # includedir # LIBCURL_PC_CFLAGS # LIBCURL_PC_CFLAGS_PRIVATE # LIBCURL_PC_LDFLAGS_PRIVATE # LIBCURL_PC_LIBS # LIBCURL_PC_LIBS_PRIVATE # LIBCURL_PC_REQUIRES # LIBCURL_PC_REQUIRES_PRIVATE # libdir # prefix # SUPPORT_FEATURES # SUPPORT_PROTOCOLS # Documentation: # https://people.freedesktop.org/~dbn/pkg-config-guide.html # https://manpages.debian.org/unstable/pkgconf/pkg-config.1.en.html # https://manpages.debian.org/unstable/pkg-config/pkg-config.1.en.html # https://www.msys2.org/docs/pkgconfig/ configure_file( "${PROJECT_SOURCE_DIR}/libcurl.pc.in" "${PROJECT_BINARY_DIR}/libcurl.pc" @ONLY) install(FILES "${PROJECT_BINARY_DIR}/libcurl.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") # Install headers install(DIRECTORY "${PROJECT_SOURCE_DIR}/include/curl" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} FILES_MATCHING PATTERN "*.h") include(CMakePackageConfigHelpers) write_basic_package_version_file( "${_version_config}" VERSION ${_curl_version} COMPATIBILITY SameMajorVersion) file(READ "${_version_config}" _generated_version_config) file(WRITE "${_version_config}" " if(NOT PACKAGE_FIND_VERSION_RANGE AND PACKAGE_FIND_VERSION_MAJOR STREQUAL \"7\") # Version 8 satisfies version 7... requirements set(PACKAGE_FIND_VERSION_MAJOR 8) set(PACKAGE_FIND_VERSION_COUNT 1) endif() ${_generated_version_config}") # Consumed custom variables: # CURLVERSION # LIB_NAME # LIB_SELECTED # TARGETS_EXPORT_NAME # USE_OPENSSL OPENSSL_VERSION_MAJOR # HAVE_LIBZ ZLIB_VERSION_MAJOR # CURL_SUPPORTED_FEATURES_LIST # CURL_SUPPORTED_PROTOCOLS_LIST configure_package_config_file("CMake/curl-config.cmake.in" "${_project_config}" INSTALL_DESTINATION ${_install_cmake_dir} PATH_VARS CMAKE_INSTALL_INCLUDEDIR) if(CURL_ENABLE_EXPORT_TARGET) install(EXPORT "${TARGETS_EXPORT_NAME}" NAMESPACE "${PROJECT_NAME}::" DESTINATION ${_install_cmake_dir}) endif() install(FILES ${_version_config} ${_project_config} DESTINATION ${_install_cmake_dir}) if(NOT TARGET curl_uninstall) configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/CMake/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/CMake/cmake_uninstall.cmake" @ONLY) add_custom_target(curl_uninstall COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/CMake/cmake_uninstall.cmake") endif() install(FILES "${PROJECT_SOURCE_DIR}/scripts/wcurl" DESTINATION ${CMAKE_INSTALL_BINDIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) # The `-DEV` part is important string(REGEX REPLACE "([0-9]+\.[0-9]+)\.([0-9]+.*)" "\\2" CPACK_PACKAGE_VERSION_PATCH "${_curl_version}") set(CPACK_GENERATOR "TGZ") include(CPack) endif() # Save build info for test runner to pick up and log set(_cmake_sysroot "") if(CMAKE_OSX_SYSROOT) set(_cmake_sysroot ${CMAKE_OSX_SYSROOT}) elseif(CMAKE_SYSROOT) set(_cmake_sysroot ${CMAKE_SYSROOT}) endif() set(_buildinfo "\ buildinfo.configure.tool: cmake buildinfo.configure.command: ${CMAKE_COMMAND} buildinfo.configure.version: ${CMAKE_VERSION} buildinfo.configure.args:${_cmake_args} buildinfo.configure.generator: ${CMAKE_GENERATOR} buildinfo.configure.make: ${CMAKE_MAKE_PROGRAM} buildinfo.host.cpu: ${CMAKE_HOST_SYSTEM_PROCESSOR} buildinfo.host.os: ${CMAKE_HOST_SYSTEM_NAME} buildinfo.target.cpu: ${CMAKE_SYSTEM_PROCESSOR} buildinfo.target.os: ${CMAKE_SYSTEM_NAME} buildinfo.target.flags:${_target_flags} buildinfo.compiler: ${CMAKE_C_COMPILER_ID} buildinfo.compiler.version: ${CMAKE_C_COMPILER_VERSION} buildinfo.sysroot: ${_cmake_sysroot} ") file(WRITE "${PROJECT_BINARY_DIR}/buildinfo.txt" "# This is a generated file. Do not edit.\n${_buildinfo}") if(NOT "$ENV{CURL_BUILDINFO}$ENV{CURL_CI}$ENV{CI}" STREQUAL "") message(STATUS "\n${_buildinfo}") endif() curl-8.14.1/COPYING0000644000000000000000000000210015017756261011776 0ustar0000000000000000COPYRIGHT AND PERMISSION NOTICE Copyright (c) 1996 - 2025, Daniel Stenberg, , and many contributors, see the THANKS file. All rights reserved. Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. curl-8.14.1/Dockerfile0000644000000000000000000000326015017756261012745 0ustar0000000000000000# Copyright (C) Daniel Stenberg, , et al. # # SPDX-License-Identifier: curl # Self-contained build environment to match the release environment. # # Build and set the timestamp for the date corresponding to the release # # docker build --build-arg SOURCE_DATE_EPOCH=1711526400 --build-arg UID=$(id -u) --build-arg GID=$(id -g) -t curl/curl . # # Then run commands from within the build environment, for example # # docker run --rm -it -u $(id -u):$(id -g) -v $(pwd):/usr/src -w /usr/src curl/curl autoreconf -fi # docker run --rm -it -u $(id -u):$(id -g) -v $(pwd):/usr/src -w /usr/src curl/curl ./configure --without-ssl --without-libpsl # docker run --rm -it -u $(id -u):$(id -g) -v $(pwd):/usr/src -w /usr/src curl/curl make # docker run --rm -it -u $(id -u):$(id -g) -v $(pwd):/usr/src -w /usr/src curl/curl ./scripts/maketgz 8.7.1 # # or get into a shell in the build environment, for example # # docker run --rm -it -u $(id -u):$(id -g) -v $(pwd):/usr/src -w /usr/src curl/curl bash # $ autoreconf -fi # $ ./configure --without-ssl --without-libpsl # $ make # $ ./scripts/maketgz 8.7.1 # To update, get the latest digest e.g. from https://hub.docker.com/_/debian/tags FROM debian:bookworm-slim@sha256:90522eeb7e5923ee2b871c639059537b30521272f10ca86fdbbbb2b75a8c40cd RUN apt-get update -qq && apt-get install -qq -y --no-install-recommends \ build-essential make autoconf automake libtool git perl zip zlib1g-dev gawk && \ rm -rf /var/lib/apt/lists/* ARG UID=1000 GID=1000 RUN groupadd --gid $UID dev && \ useradd --uid $UID --gid dev --shell /bin/bash --create-home dev USER dev:dev ARG SOURCE_DATE_EPOCH ENV SOURCE_DATE_EPOCH=${SOURCE_DATE_EPOCH:-1} curl-8.14.1/Makefile.am0000644000000000000000000001577015017756261013020 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### AUTOMAKE_OPTIONS = foreign ACLOCAL_AMFLAGS = -I m4 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/FindLDAP.cmake \ CMake/FindLibgsasl.cmake \ CMake/FindLibidn2.cmake \ CMake/FindLibpsl.cmake \ CMake/FindLibrtmp.cmake \ CMake/FindLibssh.cmake \ CMake/FindLibssh2.cmake \ CMake/FindLibuv.cmake \ CMake/FindMSH3.cmake \ CMake/FindMbedTLS.cmake \ CMake/FindNGHTTP2.cmake \ CMake/FindNGHTTP3.cmake \ CMake/FindNGTCP2.cmake \ CMake/FindNettle.cmake \ CMake/FindQuiche.cmake \ CMake/FindRustls.cmake \ CMake/FindWolfSSH.cmake \ CMake/FindWolfSSL.cmake \ CMake/FindZstd.cmake \ CMake/Macros.cmake \ CMake/OtherTests.cmake \ CMake/PickyWarnings.cmake \ CMake/Utilities.cmake \ CMake/unix-cache.cmake \ CMake/win32-cache.cmake \ CMakeLists.txt \ tests/cmake/CMakeLists.txt \ tests/cmake/test.c \ tests/cmake/test.sh VC_DIST = projects/README.md \ projects/build-openssl.bat \ projects/checksrc.bat \ projects/generate.bat WINBUILD_DIST = winbuild/README.md \ winbuild/MakefileBuild.vc winbuild/Makefile.vc winbuild/makedebug.bat 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.md COPYING RELEASE-NOTES Dockerfile \ $(CMAKE_DIST) $(VC_DIST) $(WINBUILD_DIST) $(PLAN9_DIST) DISTCLEANFILES = buildinfo.txt bin_SCRIPTS = curl-config SUBDIRS = lib docs src scripts DIST_SUBDIRS = $(SUBDIRS) tests packages include docs pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libcurl.pc dist-hook: rm -rf $(top_builddir)/tests/log find $(distdir) -name "*.dist" -exec rm {} \; (distit=`find $(srcdir) -name "*.dist" | grep -v Makefile`; \ for file in $$distit; do \ strip=`echo $$file | sed -e s/^$(srcdir)// -e s/\.dist//`; \ cp -p $$file $(distdir)$$strip; \ done) check: test examples check-docs if CROSSCOMPILING test-full: test test-nonflaky: test test-torture: test test-event: test test-am: test test-ci: test pytest: test pytest-ci: test test: @echo "NOTICE: we can't run the tests when cross-compiling!" else test: @(cd tests; $(MAKE) all quiet-test) test-full: @(cd tests; $(MAKE) all full-test) test-nonflaky: @(cd tests; $(MAKE) all nonflaky-test) test-torture: @(cd tests; $(MAKE) all torture-test) test-event: @(cd tests; $(MAKE) all event-test) test-am: @(cd tests; $(MAKE) all am-test) test-ci: @(cd tests; $(MAKE) all ci-test) pytest: @(cd tests; $(MAKE) all default-pytest) pytest-ci: @(cd tests; $(MAKE) all ci-pytest) endif examples: @(cd docs/examples; $(MAKE) check) check-docs: @(cd docs/libcurl; $(MAKE) check) # 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 . # We extend the standard install with a custom hook: if BUILD_DOCS install-data-hook: (cd include && $(MAKE) install) (cd docs && $(MAKE) install) (cd docs/libcurl && $(MAKE) install) else install-data-hook: (cd include && $(MAKE) install) (cd docs && $(MAKE) install) endif # 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: $(srcdir)/scripts/mk-ca-bundle.pl @echo "generating a fresh ca-bundle.crt" @perl $(srcdir)/scripts/mk-ca-bundle.pl -b -l -u lib/ca-bundle.crt ca-firefox: $(srcdir)/scripts/firefox-db2pem.sh @echo "generating a fresh ca-bundle.crt" $(srcdir)/scripts/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 packages && $(MAKE) checksrc) tidy: (cd src && $(MAKE) tidy) (cd lib && $(MAKE) tidy) clean-local: (cd tests && $(MAKE) clean) curl-8.14.1/Makefile.in0000644000000000000000000011572115017756261013026 0ustar0000000000000000# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 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) 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. # # SPDX-License-Identifier: curl # ########################################################################### 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/curl-amissl.m4 \ $(top_srcdir)/m4/curl-bearssl.m4 \ $(top_srcdir)/m4/curl-compilers.m4 \ $(top_srcdir)/m4/curl-confopts.m4 \ $(top_srcdir)/m4/curl-functions.m4 \ $(top_srcdir)/m4/curl-gnutls.m4 \ $(top_srcdir)/m4/curl-mbedtls.m4 \ $(top_srcdir)/m4/curl-openssl.m4 \ $(top_srcdir)/m4/curl-override.m4 \ $(top_srcdir)/m4/curl-reentrant.m4 \ $(top_srcdir)/m4/curl-rustls.m4 \ $(top_srcdir)/m4/curl-schannel.m4 \ $(top_srcdir)/m4/curl-sectransp.m4 \ $(top_srcdir)/m4/curl-sysconfig.m4 \ $(top_srcdir)/m4/curl-wolfssl.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-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 distdir-am 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)` am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/curl-config.in \ $(srcdir)/libcurl.pc.in 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 # Exists only to be overridden by the user if desired. AM_DISTCHECK_DVI_TARGET = dvi 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@ APXS = @APXS@ AR = @AR@ AR_FLAGS = @AR_FLAGS@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLANK_AT_MAKETIME = @BLANK_AT_MAKETIME@ CADDY = @CADDY@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@ CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CURLVERSION = @CURLVERSION@ CURL_CA_BUNDLE = @CURL_CA_BUNDLE@ CURL_CA_EMBED = @CURL_CA_EMBED@ CURL_CFLAG_EXTRAS = @CURL_CFLAG_EXTRAS@ CURL_CPP = @CURL_CPP@ CURL_LIBCURL_VERSIONED_SYMBOLS_PREFIX = @CURL_LIBCURL_VERSIONED_SYMBOLS_PREFIX@ CURL_LIBCURL_VERSIONED_SYMBOLS_SONAME = @CURL_LIBCURL_VERSIONED_SYMBOLS_SONAME@ CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@ CYGPATH_W = @CYGPATH_W@ 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@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@ GCOV = @GCOV@ GREP = @GREP@ HAVE_LIBZ = @HAVE_LIBZ@ HTTPD = @HTTPD@ HTTPD_NGHTTPX = @HTTPD_NGHTTPX@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBCURL_PC_CFLAGS = @LIBCURL_PC_CFLAGS@ LIBCURL_PC_CFLAGS_PRIVATE = @LIBCURL_PC_CFLAGS_PRIVATE@ LIBCURL_PC_LDFLAGS_PRIVATE = @LIBCURL_PC_LDFLAGS_PRIVATE@ LIBCURL_PC_LIBS = @LIBCURL_PC_LIBS@ LIBCURL_PC_LIBS_PRIVATE = @LIBCURL_PC_LIBS_PRIVATE@ LIBCURL_PC_REQUIRES = @LIBCURL_PC_REQUIRES@ LIBCURL_PC_REQUIRES_PRIVATE = @LIBCURL_PC_REQUIRES_PRIVATE@ 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@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ 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@ PKGCONFIG = @PKGCONFIG@ RANLIB = @RANLIB@ RC = @RC@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SSL_BACKENDS = @SSL_BACKENDS@ STRIP = @STRIP@ SUPPORT_FEATURES = @SUPPORT_FEATURES@ SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@ TEST_NGHTTPX = @TEST_NGHTTPX@ VERSION = @VERSION@ VERSIONNUM = @VERSIONNUM@ VSFTPD = @VSFTPD@ 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@ 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 = \ 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/FindLDAP.cmake \ CMake/FindLibgsasl.cmake \ CMake/FindLibidn2.cmake \ CMake/FindLibpsl.cmake \ CMake/FindLibrtmp.cmake \ CMake/FindLibssh.cmake \ CMake/FindLibssh2.cmake \ CMake/FindLibuv.cmake \ CMake/FindMSH3.cmake \ CMake/FindMbedTLS.cmake \ CMake/FindNGHTTP2.cmake \ CMake/FindNGHTTP3.cmake \ CMake/FindNGTCP2.cmake \ CMake/FindNettle.cmake \ CMake/FindQuiche.cmake \ CMake/FindRustls.cmake \ CMake/FindWolfSSH.cmake \ CMake/FindWolfSSL.cmake \ CMake/FindZstd.cmake \ CMake/Macros.cmake \ CMake/OtherTests.cmake \ CMake/PickyWarnings.cmake \ CMake/Utilities.cmake \ CMake/unix-cache.cmake \ CMake/win32-cache.cmake \ CMakeLists.txt \ tests/cmake/CMakeLists.txt \ tests/cmake/test.c \ tests/cmake/test.sh VC_DIST = projects/README.md \ projects/build-openssl.bat \ projects/checksrc.bat \ projects/generate.bat WINBUILD_DIST = winbuild/README.md \ winbuild/MakefileBuild.vc winbuild/Makefile.vc winbuild/makedebug.bat 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.md COPYING RELEASE-NOTES Dockerfile \ $(CMAKE_DIST) $(VC_DIST) $(WINBUILD_DIST) $(PLAN9_DIST) DISTCLEANFILES = buildinfo.txt bin_SCRIPTS = curl-config SUBDIRS = lib docs src scripts DIST_SUBDIRS = $(SUBDIRS) tests packages include docs pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libcurl.pc all: all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ esac; $(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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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-zstd: distdir tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst $(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 ;;\ *.tar.zst*) \ zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ 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) $(AM_DISTCHECK_DVI_TARGET) \ && $(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: 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) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) 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: html-recursive 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: pdf-recursive 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 dist-zstd 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 dist-hook: rm -rf $(top_builddir)/tests/log find $(distdir) -name "*.dist" -exec rm {} \; (distit=`find $(srcdir) -name "*.dist" | grep -v Makefile`; \ for file in $$distit; do \ strip=`echo $$file | sed -e s/^$(srcdir)// -e s/\.dist//`; \ cp -p $$file $(distdir)$$strip; \ done) check: test examples check-docs @CROSSCOMPILING_TRUE@test-full: test @CROSSCOMPILING_TRUE@test-nonflaky: test @CROSSCOMPILING_TRUE@test-torture: test @CROSSCOMPILING_TRUE@test-event: test @CROSSCOMPILING_TRUE@test-am: test @CROSSCOMPILING_TRUE@test-ci: test @CROSSCOMPILING_TRUE@pytest: test @CROSSCOMPILING_TRUE@pytest-ci: 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) @CROSSCOMPILING_FALSE@test-ci: @CROSSCOMPILING_FALSE@ @(cd tests; $(MAKE) all ci-test) @CROSSCOMPILING_FALSE@pytest: @CROSSCOMPILING_FALSE@ @(cd tests; $(MAKE) all default-pytest) @CROSSCOMPILING_FALSE@pytest-ci: @CROSSCOMPILING_FALSE@ @(cd tests; $(MAKE) all ci-pytest) examples: @(cd docs/examples; $(MAKE) check) check-docs: @(cd docs/libcurl; $(MAKE) check) # 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 . # We extend the standard install with a custom hook: @BUILD_DOCS_TRUE@install-data-hook: @BUILD_DOCS_TRUE@ (cd include && $(MAKE) install) @BUILD_DOCS_TRUE@ (cd docs && $(MAKE) install) @BUILD_DOCS_TRUE@ (cd docs/libcurl && $(MAKE) install) @BUILD_DOCS_FALSE@install-data-hook: @BUILD_DOCS_FALSE@ (cd include && $(MAKE) install) @BUILD_DOCS_FALSE@ (cd docs && $(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: $(srcdir)/scripts/mk-ca-bundle.pl @echo "generating a fresh ca-bundle.crt" @perl $(srcdir)/scripts/mk-ca-bundle.pl -b -l -u lib/ca-bundle.crt ca-firefox: $(srcdir)/scripts/firefox-db2pem.sh @echo "generating a fresh ca-bundle.crt" $(srcdir)/scripts/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 packages && $(MAKE) checksrc) tidy: (cd src && $(MAKE) tidy) (cd lib && $(MAKE) tidy) clean-local: (cd tests && $(MAKE) clean) # 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: curl-8.14.1/README0000644000000000000000000000320015017756261011625 0ustar0000000000000000 _ _ ____ _ ___| | | | _ \| | / __| | | | |_) | | | (__| |_| | _ <| |___ \___|\___/|_| \_\_____| README 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 or the MANUAL document. Find out how to install Curl by reading the INSTALL document. 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 to learn how. You find answers to the most frequent questions we get in the FAQ 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.se/mail/ All contributors to the project are listed in the THANKS document. WEBSITE Visit the curl website for the latest news and downloads: https://curl.se/ GIT To download the latest source code off the GIT server, do this: git clone https://github.com/curl/curl.git (you will 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 Kungliga Tekniska Högskolan. This notice is included here to comply with the distribution terms. curl-8.14.1/RELEASE-NOTES0000644000000000000000000001015615017756261012646 0ustar0000000000000000curl and libcurl 8.14.1 Public curl releases: 268 Command line options: 269 curl_easy_setopt() options: 308 Public functions in libcurl: 96 Contributors: 3431 This release includes the following changes: This release includes the following bugfixes: o asyn-thrdd: fix cleanup when RR fails due to OOM [20] o autotools: recognize more Linux targets when setting `-D_GNU_SOURCE` [35] o BUG-BOUNTY.md. mention the medium bounty amount in 2025 [5] o cmake: fix missed version number for multi-pkg-config detections [14] o cmdline-docs: mention HTTP resumed uploads to be shaky [21] o curl: make -N handled correctly [34] o curl: upload from '.' fix [9] o dllmain: exclude from Cygwin builds [32] o docs/tests: remove mention of hyper [23] o docs: fix typos [12] o ftp: fix teardown of DATA connection in done [31] o http: fail early when rewind of input failed when following redirects [2] o license: update some copyright links to curl.se [24] o memanalyze.pl: fix getaddrinfo/freeaddrinfo checks [25] o misc: fix spelling [15] o misc: we write *an* IPv6 address [10] o multi: fix add_handle resizing [3] o spelling: 'a' vs 'an' [8] o spelling: call it null-terminate consistently [6] o test1510: fix expectation [19] o tests: await portfile to be complete [1] o tests: fix checks for https-mtls proto [30] o tests: improve server start reliability [18] o tests: move test docs into /docs [16] o tests: re-enable 1510, document heimdal memleak [22] o tests: test mtls also w/ clientAuth EKU only [28] o tests: test mtls with --insecure [29] o tls BIOs: handle BIO_CTRL_EOF correctly [33] o tool_getparam: make --no-anyauth not be accepted [13] o tool_getparam: refactored, simplified [4] o tool_getparam: remove two nextarg NULL checks [11] o VULN-DISCLOSURE-POLICY.md: the distros list wants <= 7 days embargo [26] o wolfssl: fix sending of early data [7] o ws: handle blocked sends better [27] o ws: tests and fixes [17] This release includes the following known bugs: See https://curl.se/docs/knownbugs.html For all changes ever done in curl: See https://curl.se/changes.html Planned upcoming removals include: o Support for the msh3 HTTP/3 backend o Supporting curl builds using VS2008 o The Secure Transport and BearSSL TLS backends o The winbuild build system o Windows CE support See https://curl.se/dev/deprecate.html This release would not have looked like this without help, code, reports and advice from friends like these: Calvin Ruocco, Dan Fandrich, Daniel Stenberg, denandz on github, Ethan Everett, Jacob Mealey, Jeremy Drake, Jeroen Ooms, John Bampton, Kadambini Nema, Michael Kaufmann, Rasmus Melchior Jacobsen, Ray Satiro, Samuel Henrique, Stefan Eissing, Viktor Szakats, x-xiang on github, Yedaya Katsman, Yuyi Wang, z2_ (20 contributors) References to bug reports and discussions on issues: [1] = https://curl.se/bug/?i=17492 [2] = https://curl.se/bug/?i=17472 [3] = https://curl.se/bug/?i=17473 [4] = https://curl.se/bug/?i=17448 [5] = https://curl.se/bug/?i=17470 [6] = https://curl.se/bug/?i=17489 [7] = https://curl.se/bug/?i=17481 [8] = https://curl.se/bug/?i=17487 [9] = https://curl.se/bug/?i=17513 [10] = https://curl.se/bug/?i=17484 [11] = https://curl.se/bug/?i=17483 [12] = https://curl.se/bug/?i=17480 [13] = https://curl.se/bug/?i=17508 [14] = https://curl.se/bug/?i=16980 [15] = https://curl.se/bug/?i=17478 [16] = https://curl.se/bug/?i=17463 [17] = https://curl.se/bug/?i=17136 [18] = https://curl.se/bug/?i=17516 [19] = https://curl.se/bug/?i=17515 [20] = https://curl.se/bug/?i=17507 [21] = https://curl.se/bug/?i=17521 [22] = https://curl.se/bug/?i=17462 [23] = https://curl.se/bug/?i=17500 [24] = https://curl.se/bug/?i=17502 [25] = https://curl.se/bug/?i=17503 [26] = https://curl.se/bug/?i=17497 [27] = https://curl.se/bug/?i=17496 [28] = https://curl.se/bug/?i=17493 [29] = https://curl.se/bug/?i=17493 [30] = https://curl.se/bug/?i=17493 [31] = https://curl.se/bug/?i=17482 [32] = https://curl.se/bug/?i=17262 [33] = https://curl.se/bug/?i=17471 [34] = https://curl.se/bug/?i=17527 [35] = https://curl.se/bug/?i=17512 curl-8.14.1/acinclude.m40000644000000000000000000012706215017756261013153 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # #*************************************************************************** dnl CURL_CHECK_DEF (SYMBOL, [INCLUDES], [SILENT]) dnl ------------------------------------------------- dnl Use the C preprocessor to find out if the given object-style symbol dnl is defined and get its expansion. This macro will not use default dnl includes even if no INCLUDES argument is given. This macro will run dnl silently when invoked with three arguments. If the expansion would dnl result in a set of double-quoted strings the returned expansion will dnl actually be a single double-quoted string concatenating all them. AC_DEFUN([CURL_CHECK_DEF], [ AC_REQUIRE([CURL_CPP_P])dnl OLDCPPFLAGS=$CPPFLAGS # CPPPFLAG comes from CURL_CPP_P CPPFLAGS="$CPPFLAGS $CPPPFLAG" AS_VAR_PUSHDEF([ac_HaveDef], [curl_cv_have_def_$1])dnl AS_VAR_PUSHDEF([ac_Def], [curl_cv_def_$1])dnl if test -z "$SED"; then AC_MSG_ERROR([SED not set. Cannot continue without SED being set.]) fi if test -z "$GREP"; then AC_MSG_ERROR([GREP not set. Cannot continue without GREP being set.]) fi ifelse($3,,[AC_MSG_CHECKING([for preprocessor definition of $1])]) tmp_exp="" AC_PREPROC_IFELSE([ AC_LANG_SOURCE( ifelse($2,,,[$2])[[ #ifdef $1 CURL_DEF_TOKEN $1 #endif ]]) ],[ tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ "$SED" 's/.*CURL_DEF_TOKEN[[ ]][[ ]]*//' 2>/dev/null | \ "$SED" 's/[["]][[ ]]*[["]]//g' 2>/dev/null` if test -z "$tmp_exp" || test "$tmp_exp" = "$1"; then tmp_exp="" fi ]) if test -z "$tmp_exp"; then AS_VAR_SET(ac_HaveDef, no) ifelse($3,,[AC_MSG_RESULT([no])]) else AS_VAR_SET(ac_HaveDef, yes) AS_VAR_SET(ac_Def, $tmp_exp) ifelse($3,,[AC_MSG_RESULT([$tmp_exp])]) fi AS_VAR_POPDEF([ac_Def])dnl AS_VAR_POPDEF([ac_HaveDef])dnl CPPFLAGS=$OLDCPPFLAGS ]) dnl CURL_CHECK_DEF_CC (SYMBOL, [INCLUDES], [SILENT]) dnl ------------------------------------------------- dnl Use the C compiler to find out only if the given symbol is defined dnl or not, this can not find out its expansion. This macro will not use dnl default includes even if no INCLUDES argument is given. This macro dnl will run silently when invoked with three arguments. AC_DEFUN([CURL_CHECK_DEF_CC], [ AS_VAR_PUSHDEF([ac_HaveDef], [curl_cv_have_def_$1])dnl ifelse($3,,[AC_MSG_CHECKING([for compiler definition of $1])]) AC_COMPILE_IFELSE([ AC_LANG_SOURCE( ifelse($2,,,[$2])[[ int main(void) { #ifndef $1 #error force compilation error #endif return 0; } ]]) ],[ tst_symbol_defined="yes" ],[ tst_symbol_defined="no" ]) if test "$tst_symbol_defined" = "yes"; then AS_VAR_SET(ac_HaveDef, yes) ifelse($3,,[AC_MSG_RESULT([yes])]) else AS_VAR_SET(ac_HaveDef, no) ifelse($3,,[AC_MSG_RESULT([no])]) fi AS_VAR_POPDEF([ac_HaveDef])dnl ]) dnl CURL_CHECK_LIB_XNET dnl ------------------------------------------------- dnl Verify if X/Open network library is required. AC_DEFUN([CURL_CHECK_LIB_XNET], [ AC_MSG_CHECKING([if X/Open network library is required]) tst_lib_xnet_required="no" AC_COMPILE_IFELSE([ AC_LANG_SOURCE([[ int main(void) { #if defined(__hpux) && defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 600) #elif defined(__hpux) && defined(_XOPEN_SOURCE_EXTENDED) #else #error force compilation error #endif return 0; } ]]) ],[ tst_lib_xnet_required="yes" LIBS="-lxnet $LIBS" ]) AC_MSG_RESULT([$tst_lib_xnet_required]) ]) dnl CURL_CHECK_AIX_ALL_SOURCE dnl ------------------------------------------------- dnl Provides a replacement of traditional AC_AIX with dnl an uniform behavior across all autoconf versions, dnl and with our own placement rules. AC_DEFUN([CURL_CHECK_AIX_ALL_SOURCE], [ AH_VERBATIM([_ALL_SOURCE], [/* Define to 1 if OS is AIX. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif]) AC_BEFORE([$0], [AC_SYS_LARGEFILE])dnl AC_BEFORE([$0], [CURL_CONFIGURE_REENTRANT])dnl AC_MSG_CHECKING([if OS is AIX (to define _ALL_SOURCE)]) AC_EGREP_CPP([yes_this_is_aix],[ #ifdef _AIX yes_this_is_aix #endif ],[ AC_MSG_RESULT([yes]) AC_DEFINE(_ALL_SOURCE) ],[ AC_MSG_RESULT([no]) ]) ]) dnl CURL_CHECK_NATIVE_WINDOWS dnl ------------------------------------------------- dnl Check if building a native Windows target AC_DEFUN([CURL_CHECK_NATIVE_WINDOWS], [ AC_CACHE_CHECK([whether build target is a native Windows one], [curl_cv_native_windows], [ AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ ]],[[ #ifdef _WIN32 int dummy = 1; (void)dummy; #else #error Not a native Windows build target. #endif ]]) ],[ curl_cv_native_windows="yes" ],[ curl_cv_native_windows="no" ]) ]) AM_CONDITIONAL(DOING_NATIVE_WINDOWS, test "x$curl_cv_native_windows" = xyes) ]) dnl CURL_CHECK_HEADER_LBER dnl ------------------------------------------------- dnl Check for compilable and valid lber.h header, dnl and check if it is needed even with ldap.h AC_DEFUN([CURL_CHECK_HEADER_LBER], [ AC_REQUIRE([CURL_CHECK_NATIVE_WINDOWS])dnl AC_CACHE_CHECK([for lber.h], [curl_cv_header_lber_h], [ AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ #undef inline #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #else #ifdef HAVE_SYS_TYPES_H #include #endif #endif #ifndef NULL #define NULL (void *)0 #endif #include ]],[[ BerValue *bvp = NULL; BerElement *bep = ber_init(bvp); ber_free(bep, 1); ]]) ],[ curl_cv_header_lber_h="yes" ],[ curl_cv_header_lber_h="no" ]) ]) if test "$curl_cv_header_lber_h" = "yes"; then AC_DEFINE_UNQUOTED(HAVE_LBER_H, 1, [Define to 1 if you have the lber.h header file.]) # AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ #undef inline #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #else #ifdef HAVE_SYS_TYPES_H #include #endif #endif #ifndef NULL #define NULL (void *)0 #endif #ifndef LDAP_DEPRECATED #define LDAP_DEPRECATED 1 #endif #include ]],[[ BerValue *bvp = NULL; BerElement *bep = ber_init(bvp); ber_free(bep, 1); ]]) ],[ curl_cv_need_header_lber_h="no" ],[ curl_cv_need_header_lber_h="yes" ]) # case "$curl_cv_need_header_lber_h" in yes) AC_DEFINE_UNQUOTED(NEED_LBER_H, 1, [Define to 1 if you need the lber.h header file even with ldap.h]) ;; esac fi ]) dnl CURL_CHECK_HEADER_LDAP dnl ------------------------------------------------- dnl Check for compilable and valid ldap.h header AC_DEFUN([CURL_CHECK_HEADER_LDAP], [ AC_REQUIRE([CURL_CHECK_HEADER_LBER])dnl AC_CACHE_CHECK([for ldap.h], [curl_cv_header_ldap_h], [ AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ #undef inline #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #else #ifdef HAVE_SYS_TYPES_H #include #endif #endif #ifndef LDAP_DEPRECATED #define LDAP_DEPRECATED 1 #endif #ifdef NEED_LBER_H #include #endif #include ]],[[ LDAP *ldp = ldap_init("0.0.0.0", LDAP_PORT); int res = ldap_unbind(ldp); (void)res; ]]) ],[ curl_cv_header_ldap_h="yes" ],[ curl_cv_header_ldap_h="no" ]) ]) case "$curl_cv_header_ldap_h" in yes) AC_DEFINE_UNQUOTED(HAVE_LDAP_H, 1, [Define to 1 if you have the ldap.h header file.]) ;; esac ]) dnl CURL_CHECK_HEADER_LDAP_SSL dnl ------------------------------------------------- dnl Check for compilable and valid ldap_ssl.h header AC_DEFUN([CURL_CHECK_HEADER_LDAP_SSL], [ AC_REQUIRE([CURL_CHECK_HEADER_LDAP])dnl AC_CACHE_CHECK([for ldap_ssl.h], [curl_cv_header_ldap_ssl_h], [ AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ #undef inline #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #else #ifdef HAVE_SYS_TYPES_H #include #endif #endif #ifndef LDAP_DEPRECATED #define LDAP_DEPRECATED 1 #endif #ifdef NEED_LBER_H #include #endif #ifdef HAVE_LDAP_H #include #endif #include ]],[[ LDAP *ldp = ldapssl_init("0.0.0.0", LDAPS_PORT, 1); (void)ldp; ]]) ],[ curl_cv_header_ldap_ssl_h="yes" ],[ curl_cv_header_ldap_ssl_h="no" ]) ]) case "$curl_cv_header_ldap_ssl_h" in yes) AC_DEFINE_UNQUOTED(HAVE_LDAP_SSL_H, 1, [Define to 1 if you have the ldap_ssl.h header file.]) ;; esac ]) dnl CURL_CHECK_LIBS_WINLDAP 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 whitespace separated list of libraries to check dnl before the WINLDAP default ones. AC_DEFUN([CURL_CHECK_LIBS_WINLDAP], [ AC_REQUIRE([CURL_CHECK_HEADER_WINBER])dnl # AC_MSG_CHECKING([for WINLDAP libraries]) # u_libs="" # ifelse($1,,,[ for x_lib in $1; do case "$x_lib" in -l*) l_lib="$x_lib" ;; *) l_lib="-l$x_lib" ;; esac if test -z "$u_libs"; then u_libs="$l_lib" else u_libs="$u_libs $l_lib" fi done ]) # curl_cv_save_LIBS="$LIBS" curl_cv_ldap_LIBS="unknown" # for x_nlibs in '' "$u_libs" \ '-lwldap32' ; do if test "$curl_cv_ldap_LIBS" = "unknown"; then if test -z "$x_nlibs"; then LIBS="$curl_cv_save_LIBS" else LIBS="$x_nlibs $curl_cv_save_LIBS" fi AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #undef inline #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #include #ifdef HAVE_WINBER_H #include #endif #endif ]],[[ BERVAL *bvp = NULL; BerElement *bep = ber_init(bvp); LDAP *ldp = ldap_init("0.0.0.0", LDAP_PORT); ULONG res = ldap_unbind(ldp); ber_free(bep, 1); (void)res; ]]) ],[ curl_cv_ldap_LIBS="$x_nlibs" ]) fi done # LIBS="$curl_cv_save_LIBS" # case X-"$curl_cv_ldap_LIBS" in X-unknown) AC_MSG_RESULT([cannot find WINLDAP libraries]) ;; X-) AC_MSG_RESULT([no additional lib required]) ;; *) if test -z "$curl_cv_save_LIBS"; then LIBS="$curl_cv_ldap_LIBS" else LIBS="$curl_cv_ldap_LIBS $curl_cv_save_LIBS" fi AC_MSG_RESULT([$curl_cv_ldap_LIBS]) ;; esac # ]) dnl CURL_CHECK_LIBS_LDAP 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 whitespace separated list of libraries to check dnl before the default ones. AC_DEFUN([CURL_CHECK_LIBS_LDAP], [ AC_REQUIRE([CURL_CHECK_HEADER_LDAP])dnl # AC_MSG_CHECKING([for LDAP libraries]) # u_libs="" # ifelse($1,,,[ for x_lib in $1; do case "$x_lib" in -l*) l_lib="$x_lib" ;; *) l_lib="-l$x_lib" ;; esac if test -z "$u_libs"; then u_libs="$l_lib" else u_libs="$u_libs $l_lib" fi done ]) # curl_cv_save_LIBS="$LIBS" curl_cv_ldap_LIBS="unknown" # for x_nlibs in '' "$u_libs" \ '-lldap' \ '-lldap -llber' \ '-llber -lldap' \ '-lldapssl -lldapx -lldapsdk' \ '-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" else LIBS="$x_nlibs $curl_cv_save_LIBS" fi AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #undef inline #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #else #ifdef HAVE_SYS_TYPES_H #include #endif #endif #ifndef NULL #define NULL (void *)0 #endif #ifndef LDAP_DEPRECATED #define LDAP_DEPRECATED 1 #endif #ifdef NEED_LBER_H #include #endif #ifdef HAVE_LDAP_H #include #endif ]],[[ BerValue *bvp = NULL; BerElement *bep = ber_init(bvp); LDAP *ldp = ldap_init("0.0.0.0", LDAP_PORT); int res = ldap_unbind(ldp); ber_free(bep, 1); (void)res; ]]) ],[ curl_cv_ldap_LIBS="$x_nlibs" ]) fi done # LIBS="$curl_cv_save_LIBS" # case X-"$curl_cv_ldap_LIBS" in X-unknown) AC_MSG_RESULT([cannot find LDAP libraries]) ;; X-) AC_MSG_RESULT([no additional lib required]) ;; *) if test -z "$curl_cv_save_LIBS"; then LIBS="$curl_cv_ldap_LIBS" else LIBS="$curl_cv_ldap_LIBS $curl_cv_save_LIBS" fi # FIXME: Enable when ldap was detected via pkg-config if false; then LIBCURL_PC_REQUIRES_PRIVATE="ldap $LIBCURL_PC_REQUIRES_PRIVATE" fi AC_MSG_RESULT([$curl_cv_ldap_LIBS]) ;; esac # ]) dnl TYPE_SOCKADDR_STORAGE dnl ------------------------------------------------- dnl Check for struct sockaddr_storage. Most IPv6-enabled dnl hosts have it, but AIX 4.3 is one known exception. AC_DEFUN([TYPE_SOCKADDR_STORAGE], [ AC_CHECK_TYPE([struct sockaddr_storage], AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1, [if struct sockaddr_storage is defined]), , [ #undef inline #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #else #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_ARPA_INET_H #include #endif #endif ]) ]) dnl CURL_CHECK_FUNC_RECV dnl ------------------------------------------------- dnl Test if the socket recv() function is available, AC_DEFUN([CURL_CHECK_FUNC_RECV], [ AC_REQUIRE([CURL_CHECK_NATIVE_WINDOWS])dnl AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl AC_CHECK_HEADERS(sys/types.h sys/socket.h) # AC_MSG_CHECKING([for recv]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #undef inline #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #else $curl_includes_bsdsocket #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #endif ]],[[ recv(0, 0, 0, 0); ]]) ],[ AC_MSG_RESULT([yes]) curl_cv_recv="yes" ],[ AC_MSG_RESULT([no]) curl_cv_recv="no" ]) # if test "$curl_cv_recv" = "yes"; then AC_DEFINE_UNQUOTED(HAVE_RECV, 1, [Define to 1 if you have the recv function.]) curl_cv_func_recv="yes" else AC_MSG_ERROR([Unable to link function recv]) fi ]) dnl CURL_CHECK_FUNC_SEND dnl ------------------------------------------------- dnl Test if the socket send() function is available, AC_DEFUN([CURL_CHECK_FUNC_SEND], [ AC_REQUIRE([CURL_CHECK_NATIVE_WINDOWS])dnl AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl AC_CHECK_HEADERS(sys/types.h sys/socket.h) # AC_MSG_CHECKING([for send]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #undef inline #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #else $curl_includes_bsdsocket #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #endif ]],[[ char s[] = ""; send(0, (void *)s, 0, 0); ]]) ],[ AC_MSG_RESULT([yes]) curl_cv_send="yes" ],[ AC_MSG_RESULT([no]) curl_cv_send="no" ]) # if test "$curl_cv_send" = "yes"; then AC_DEFINE_UNQUOTED(HAVE_SEND, 1, [Define to 1 if you have the send function.]) curl_cv_func_send="yes" else AC_MSG_ERROR([Unable to link function send]) fi ]) dnl CURL_CHECK_MSG_NOSIGNAL dnl ------------------------------------------------- dnl Check for MSG_NOSIGNAL AC_DEFUN([CURL_CHECK_MSG_NOSIGNAL], [ AC_CHECK_HEADERS(sys/types.h sys/socket.h) AC_CACHE_CHECK([for MSG_NOSIGNAL], [curl_cv_msg_nosignal], [ AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ #undef inline #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #else #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #endif ]],[[ int flag = MSG_NOSIGNAL; (void)flag; ]]) ],[ curl_cv_msg_nosignal="yes" ],[ curl_cv_msg_nosignal="no" ]) ]) case "$curl_cv_msg_nosignal" in yes) AC_DEFINE_UNQUOTED(HAVE_MSG_NOSIGNAL, 1, [Define to 1 if you have the MSG_NOSIGNAL flag.]) ;; esac ]) dnl CURL_CHECK_STRUCT_TIMEVAL dnl ------------------------------------------------- dnl Check for timeval struct AC_DEFUN([CURL_CHECK_STRUCT_TIMEVAL], [ AC_REQUIRE([CURL_CHECK_NATIVE_WINDOWS])dnl AC_CHECK_HEADERS(sys/types.h sys/time.h sys/socket.h) AC_CACHE_CHECK([for struct timeval], [curl_cv_struct_timeval], [ AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ #undef inline #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #include #ifdef HAVE_SYS_SOCKET_H #include #endif ]],[[ struct timeval ts; ts.tv_sec = 0; ts.tv_usec = 0; (void)ts; ]]) ],[ curl_cv_struct_timeval="yes" ],[ curl_cv_struct_timeval="no" ]) ]) case "$curl_cv_struct_timeval" in yes) AC_DEFINE_UNQUOTED(HAVE_STRUCT_TIMEVAL, 1, [Define to 1 if you have the timeval struct.]) ;; esac ]) dnl CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC dnl ------------------------------------------------- dnl Check if monotonic clock_gettime is available. AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC], [ AC_CHECK_HEADERS(sys/types.h sys/time.h) AC_MSG_CHECKING([for monotonic clock_gettime]) # AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #include ]],[[ struct timespec ts; (void)clock_gettime(CLOCK_MONOTONIC, &ts); (void)ts; ]]) ],[ AC_MSG_RESULT([yes]) curl_func_clock_gettime="yes" ],[ AC_MSG_RESULT([no]) curl_func_clock_gettime="no" ]) dnl Definition of HAVE_CLOCK_GETTIME_MONOTONIC is intentionally postponed dnl until library linking and run-time checks for clock_gettime succeed. ]) dnl CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC_RAW dnl ------------------------------------------------- dnl Check if monotonic clock_gettime is available. AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC_RAW], [ AC_CHECK_HEADERS(sys/types.h sys/time.h) AC_MSG_CHECKING([for raw monotonic clock_gettime]) # AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #include ]],[[ struct timespec ts; (void)clock_gettime(CLOCK_MONOTONIC_RAW, &ts); (void)ts; ]]) ],[ AC_MSG_RESULT([yes]) AC_DEFINE_UNQUOTED(HAVE_CLOCK_GETTIME_MONOTONIC_RAW, 1, [Define to 1 if you have the clock_gettime function and raw monotonic timer.]) ],[ AC_MSG_RESULT([no]) ]) ]) dnl CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC dnl ------------------------------------------------- dnl If monotonic clock_gettime is available then, dnl check and prepended to LIBS any needed libraries. AC_DEFUN([CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC], [ AC_REQUIRE([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC])dnl # if test "$curl_func_clock_gettime" = "yes"; then # AC_MSG_CHECKING([for clock_gettime in libraries]) # curl_cv_save_LIBS="$LIBS" curl_cv_gclk_LIBS="unknown" # for x_xlibs in '' '-lrt' '-lposix4' ; do if test "$curl_cv_gclk_LIBS" = "unknown"; then if test -z "$x_xlibs"; then LIBS="$curl_cv_save_LIBS" else LIBS="$x_xlibs $curl_cv_save_LIBS" fi AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #include ]],[[ struct timespec ts; (void)clock_gettime(CLOCK_MONOTONIC, &ts); (void)ts; ]]) ],[ curl_cv_gclk_LIBS="$x_xlibs" ]) fi done # LIBS="$curl_cv_save_LIBS" # case X-"$curl_cv_gclk_LIBS" in X-unknown) AC_MSG_RESULT([cannot find clock_gettime]) AC_MSG_WARN([HAVE_CLOCK_GETTIME_MONOTONIC will not be defined]) curl_func_clock_gettime="no" ;; X-) AC_MSG_RESULT([no additional lib required]) curl_func_clock_gettime="yes" ;; *) if test "x$dontwant_rt" = "xyes" ; then AC_MSG_WARN([needs -lrt but asked not to use it, HAVE_CLOCK_GETTIME_MONOTONIC will not be defined]) curl_func_clock_gettime="no" else if test -z "$curl_cv_save_LIBS"; then LIBS="$curl_cv_gclk_LIBS" else LIBS="$curl_cv_gclk_LIBS $curl_cv_save_LIBS" fi AC_MSG_RESULT([$curl_cv_gclk_LIBS]) curl_func_clock_gettime="yes" fi ;; esac # dnl only do runtime verification when not cross-compiling if test "x$cross_compiling" != "xyes" && test "$curl_func_clock_gettime" = "yes"; then AC_MSG_CHECKING([if monotonic clock_gettime works]) CURL_RUN_IFELSE([ AC_LANG_PROGRAM([[ #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #include ]],[[ struct timespec ts; if(0 == clock_gettime(CLOCK_MONOTONIC, &ts)) return 0; (void)ts; return 1; ]]) ],[ AC_MSG_RESULT([yes]) ],[ AC_MSG_RESULT([no]) AC_MSG_WARN([HAVE_CLOCK_GETTIME_MONOTONIC will not be defined]) curl_func_clock_gettime="no" LIBS="$curl_cv_save_LIBS" ]) fi # case "$curl_func_clock_gettime" in yes) AC_DEFINE_UNQUOTED(HAVE_CLOCK_GETTIME_MONOTONIC, 1, [Define to 1 if you have the clock_gettime function and monotonic timer.]) ;; esac # fi # ]) dnl CURL_CHECK_LIBS_CONNECT dnl ------------------------------------------------- dnl Verify if network connect function is already available dnl using current libraries or if another one is required. AC_DEFUN([CURL_CHECK_LIBS_CONNECT], [ AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl AC_MSG_CHECKING([for connect in libraries]) tst_connect_save_LIBS="$LIBS" tst_connect_need_LIBS="unknown" for tst_lib in '' '-lsocket' ; do if test "$tst_connect_need_LIBS" = "unknown"; then LIBS="$tst_lib $tst_connect_save_LIBS" AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ $curl_includes_winsock2 $curl_includes_bsdsocket #if !defined(_WIN32) && !defined(HAVE_PROTO_BSDSOCKET_H) int connect(int, void*, int); #endif ]],[[ if(0 != connect(0, 0, 0)) return 1; ]]) ],[ tst_connect_need_LIBS="$tst_lib" ]) fi done LIBS="$tst_connect_save_LIBS" # case X-"$tst_connect_need_LIBS" in X-unknown) AC_MSG_RESULT([cannot find connect]) AC_MSG_ERROR([cannot find connect function in libraries.]) ;; X-) AC_MSG_RESULT([yes]) ;; *) AC_MSG_RESULT([$tst_connect_need_LIBS]) LIBS="$tst_connect_need_LIBS $tst_connect_save_LIBS" ;; esac ]) dnl CURL_CHECK_FUNC_SELECT dnl ------------------------------------------------- dnl Test if the socket select() function is available. AC_DEFUN([CURL_CHECK_FUNC_SELECT], [ AC_REQUIRE([CURL_CHECK_STRUCT_TIMEVAL])dnl AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl AC_CHECK_HEADERS(sys/select.h sys/socket.h) # AC_MSG_CHECKING([for select]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #undef inline #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #include #ifndef _WIN32 #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif $curl_includes_bsdsocket #endif ]],[[ select(0, 0, 0, 0, 0); ]]) ],[ AC_MSG_RESULT([yes]) curl_cv_select="yes" ],[ AC_MSG_RESULT([no]) curl_cv_select="no" ]) # if test "$curl_cv_select" = "yes"; then AC_DEFINE_UNQUOTED(HAVE_SELECT, 1, [Define to 1 if you have the select function.]) curl_cv_func_select="yes" fi ]) dnl CURL_VERIFY_RUNTIMELIBS dnl ------------------------------------------------- dnl Verify that the shared libs found so far can be used when running dnl programs, since otherwise the situation will create odd configure errors dnl that are misleading people. dnl dnl Make sure this test is run BEFORE the first test in the script that dnl runs anything, which at the time of this writing is the AC_CHECK_SIZEOF dnl macro. It must also run AFTER all lib-checking macros are complete. AC_DEFUN([CURL_VERIFY_RUNTIMELIBS], [ dnl this test is of course not sensible if we are cross-compiling! if test "x$cross_compiling" != xyes; then dnl just run a program to verify that the libs checked for previous to this dnl point also is available run-time! AC_MSG_CHECKING([run-time libs availability]) CURL_RUN_IFELSE([ int main(void) { return 0; } ], AC_MSG_RESULT([fine]), AC_MSG_RESULT([failed]) AC_MSG_ERROR([one or more libs available at link-time are not available run-time. Libs used at link-time: $LIBS]) ) dnl if this test fails, configure has already stopped fi ]) dnl CURL_CHECK_CA_BUNDLE dnl ------------------------------------------------- dnl Check if a default ca-bundle should be used dnl dnl regarding the paths this will scan: dnl /etc/ssl/certs/ca-certificates.crt Debian systems dnl /etc/pki/tls/certs/ca-bundle.crt Redhat and Mandriva dnl /usr/share/ssl/certs/ca-bundle.crt old(er) Redhat dnl /usr/local/share/certs/ca-root-nss.crt MidnightBSD dnl /etc/ssl/cert.pem OpenBSD, MidnightBSD (symlink) dnl /etc/ssl/certs (CA path) SUSE, FreeBSD AC_DEFUN([CURL_CHECK_CA_BUNDLE], [ AC_MSG_CHECKING([default CA cert bundle/path]) AC_ARG_WITH(ca-bundle, AS_HELP_STRING([--with-ca-bundle=FILE], [Absolute path to a file containing CA certificates (example: /etc/ca-bundle.crt)]) AS_HELP_STRING([--without-ca-bundle], [Don't use a default CA bundle]), [ want_ca="$withval" if test "x$want_ca" = "xyes"; then AC_MSG_ERROR([--with-ca-bundle=FILE requires a path to the CA bundle]) fi ], [ want_ca="unset" ]) AC_ARG_WITH(ca-path, AS_HELP_STRING([--with-ca-path=DIRECTORY], [Absolute path to a directory containing CA certificates stored individually, with \ their filenames in a hash format. This option can be used with the OpenSSL, \ GnuTLS, mbedTLS and wolfSSL backends. Refer to OpenSSL c_rehash for details. \ (example: /etc/certificates)]) AS_HELP_STRING([--without-ca-path], [Don't use a default CA path]), [ want_capath="$withval" if test "x$want_capath" = "xyes"; then AC_MSG_ERROR([--with-ca-path=DIRECTORY requires a path to the CA path directory]) fi ], [ want_capath="unset"]) ca_warning=" (warning: certs not found)" capath_warning=" (warning: certs not found)" check_capath="" if test "x$want_ca" != "xno" -a "x$want_ca" != "xunset" -a \ "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then dnl both given ca="$want_ca" capath="$want_capath" elif test "x$want_ca" != "xno" -a "x$want_ca" != "xunset"; then dnl --with-ca-bundle given ca="$want_ca" capath="no" elif test "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then dnl --with-ca-path given capath="$want_capath" ca="no" else dnl First try auto-detecting a CA bundle, then a CA path. dnl Both auto-detections can be skipped by --without-ca-* ca="no" capath="no" if test "x$cross_compiling" != "xyes" -a \ "x$curl_cv_native_windows" != "xyes"; then dnl NOT cross-compiling and... dnl neither of the --with-ca-* options are provided if test "x$want_ca" = "xunset"; then dnl the path we previously would have installed the curl CA bundle dnl to, and thus we now check for an already existing cert in that dnl place in case we find no other if test "x$prefix" != xNONE; then cac="${prefix}/share/curl/curl-ca-bundle.crt" else cac="$ac_default_prefix/share/curl/curl-ca-bundle.crt" fi for a in /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 \ "$cac"; do if test -f "$a"; then ca="$a" break fi done fi AC_MSG_NOTICE([want $want_capath ca $ca]) if test "x$want_capath" = "xunset"; then check_capath="/etc/ssl/certs" fi else dnl no option given and cross-compiling AC_MSG_WARN([skipped the ca-cert path detection when cross-compiling]) fi fi if test "x$ca" = "xno" || test -f "$ca"; then ca_warning="" fi if test "x$capath" != "xno"; then check_capath="$capath" fi if test ! -z "$check_capath"; then for a in "$check_capath"; do if test -d "$a" && ls "$a"/[[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]].0 >/dev/null 2>/dev/null; then if test "x$capath" = "xno"; then capath="$a" fi capath_warning="" break fi done fi if test "x$capath" = "xno"; then capath_warning="" fi if test "x$ca" != "xno"; then CURL_CA_BUNDLE="$ca" AC_DEFINE_UNQUOTED(CURL_CA_BUNDLE, "$ca", [Location of default ca bundle]) AC_SUBST(CURL_CA_BUNDLE) AC_MSG_RESULT([$ca]) fi if test "x$capath" != "xno"; then CURL_CA_PATH="\"$capath\"" AC_DEFINE_UNQUOTED(CURL_CA_PATH, "$capath", [Location of default ca path]) AC_MSG_RESULT([$capath (capath)]) fi if test "x$ca" = "xno" && test "x$capath" = "xno"; then AC_MSG_RESULT([no]) fi AC_MSG_CHECKING([whether to use built-in CA store of SSL library]) AC_ARG_WITH(ca-fallback, AS_HELP_STRING([--with-ca-fallback], [Use the built-in CA store of the SSL library]) AS_HELP_STRING([--without-ca-fallback], [Don't use the built-in CA store of the SSL library]), [ if test "x$with_ca_fallback" != "xyes" -a "x$with_ca_fallback" != "xno"; then AC_MSG_ERROR([--with-ca-fallback only allows yes or no as parameter]) fi ], [ with_ca_fallback="no"]) AC_MSG_RESULT([$with_ca_fallback]) if test "x$with_ca_fallback" = "xyes"; then if test "x$OPENSSL_ENABLED" != "x1" -a "x$GNUTLS_ENABLED" != "x1"; then AC_MSG_ERROR([--with-ca-fallback only works with OpenSSL or GnuTLS]) fi AC_DEFINE_UNQUOTED(CURL_CA_FALLBACK, 1, [define "1" to use built-in CA store of SSL library]) fi ]) dnl CURL_CHECK_CA_EMBED dnl ------------------------------------------------- dnl Check if a ca-bundle should be embedded AC_DEFUN([CURL_CHECK_CA_EMBED], [ AC_MSG_CHECKING([CA cert bundle path to embed in the curl tool]) AC_ARG_WITH(ca-embed, AS_HELP_STRING([--with-ca-embed=FILE], [Absolute path to a file containing CA certificates to embed in the curl tool (example: /etc/ca-bundle.crt)]) AS_HELP_STRING([--without-ca-embed], [Don't embed a default CA bundle in the curl tool]), [ want_ca_embed="$withval" if test "x$want_ca_embed" = "xyes"; then AC_MSG_ERROR([--with-ca-embed=FILE requires a path to the CA bundle]) fi ], [ want_ca_embed="unset" ]) CURL_CA_EMBED='' if test "x$want_ca_embed" != "xno" -a "x$want_ca_embed" != "xunset" -a -f "$want_ca_embed"; then CURL_CA_EMBED="$want_ca_embed" AC_SUBST(CURL_CA_EMBED) AC_MSG_RESULT([$want_ca_embed]) else AC_MSG_RESULT([no]) fi ]) dnl CURL_CHECK_WIN32_LARGEFILE dnl ------------------------------------------------- dnl Check if curl's Win32 large file will be used AC_DEFUN([CURL_CHECK_WIN32_LARGEFILE], [ AC_REQUIRE([CURL_CHECK_NATIVE_WINDOWS])dnl if test "$curl_cv_native_windows" = 'yes'; then AC_MSG_CHECKING([whether build target supports Win32 large files]) if test "$curl_cv_wince" = 'yes'; then dnl Windows CE does not support large files curl_win32_has_largefile='no' else dnl All mingw-w64 versions support large files curl_win32_has_largefile='yes' fi case "$curl_win32_has_largefile" in yes) if test x"$enable_largefile" = 'xno'; then AC_MSG_RESULT([yes (large file disabled)]) else AC_MSG_RESULT([yes (large file enabled)]) AC_DEFINE_UNQUOTED(USE_WIN32_LARGE_FILES, 1, [Define to 1 if you are building a Windows target with large file support.]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi ]) dnl CURL_CHECK_WIN32_CRYPTO dnl ------------------------------------------------- dnl Check if curl's Win32 crypto lib can be used AC_DEFUN([CURL_CHECK_WIN32_CRYPTO], [ AC_REQUIRE([CURL_CHECK_NATIVE_WINDOWS])dnl AC_MSG_CHECKING([whether build target supports Win32 crypto API]) curl_win32_crypto_api="no" if test "$curl_cv_native_windows" = "yes" -a "$curl_cv_winuwp" != "yes"; then AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ #undef inline #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #include ]],[[ HCRYPTPROV hCryptProv; if(CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) { CryptReleaseContext(hCryptProv, 0); } ]]) ],[ curl_win32_crypto_api="yes" ]) fi case "$curl_win32_crypto_api" in yes) AC_MSG_RESULT([yes]) AC_DEFINE_UNQUOTED(USE_WIN32_CRYPTO, 1, [Define to 1 if you are building a Windows target with crypto API support.]) USE_WIN32_CRYPTO=1 ;; *) AC_MSG_RESULT([no]) ;; esac ]) dnl CURL_EXPORT_PCDIR ($pcdir) dnl ------------------------ dnl if $pcdir is not empty, set PKG_CONFIG_LIBDIR to $pcdir and export dnl dnl we need this macro since pkg-config distinguishes among empty and unset dnl variable while checking PKG_CONFIG_LIBDIR dnl AC_DEFUN([CURL_EXPORT_PCDIR], [ if test -n "$1"; then PKG_CONFIG_LIBDIR="$1" export PKG_CONFIG_LIBDIR fi ]) dnl CURL_CHECK_PKGCONFIG ($module, [$pcdir]) dnl ------------------------ dnl search for the pkg-config tool. Set the PKGCONFIG variable to hold the dnl path to it, or 'no' if not found/present. dnl dnl If pkg-config is present, check that it has info about the $module or dnl return "no" anyway! dnl dnl Optionally PKG_CONFIG_LIBDIR may be given as $pcdir. dnl AC_DEFUN([CURL_CHECK_PKGCONFIG], [ if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else AC_PATH_TOOL([PKGCONFIG], [pkg-config], [no], [$PATH:/usr/bin:/usr/local/bin]) fi if test "x$PKGCONFIG" != "xno"; then AC_MSG_CHECKING([for $1 options with pkg-config]) dnl ask pkg-config about $1 itexists=`CURL_EXPORT_PCDIR([$2]) dnl $PKGCONFIG --exists $1 >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then dnl pkg-config does not have info about the given module! set the dnl variable to 'no' PKGCONFIG="no" AC_MSG_RESULT([no]) else AC_MSG_RESULT([found]) fi fi ]) dnl CURL_PREPARE_CONFIGUREHELP_PM dnl ------------------------------------------------- dnl Prepare test harness configurehelp.pm module, defining and dnl initializing some perl variables with values which are known dnl when the configure script runs. For portability reasons, test dnl harness needs information on how to run the C preprocessor. AC_DEFUN([CURL_PREPARE_CONFIGUREHELP_PM], [ AC_REQUIRE([AC_PROG_CPP])dnl tmp_cpp=`eval echo "$ac_cpp" 2>/dev/null` if test -z "$tmp_cpp"; then tmp_cpp='cpp' fi AC_SUBST(CURL_CPP, $tmp_cpp) ]) dnl CURL_PREPARE_BUILDINFO dnl ------------------------------------------------- dnl Save build info for test runner to pick up and log AC_DEFUN([CURL_PREPARE_BUILDINFO], [ curl_pflags="" if test "$curl_cv_apple" = 'yes'; then curl_pflags="${curl_pflags} APPLE" fi case $host in *-*-*bsd*|*-*-aix*|*-*-hpux*|*-*-interix*|*-*-irix*|*-*-linux*|*-*-solaris*|*-*-sunos*|*-apple-*|*-*-cygwin*|*-*-msys*) curl_pflags="${curl_pflags} UNIX";; esac case $host in *-*-*bsd*) curl_pflags="${curl_pflags} BSD";; esac case $host in *-*-android*) curl_pflags="${curl_pflags} ANDROID" ANDROID_PLATFORM_LEVEL=`echo "$host_os" | $SED -ne 's/.*android\(@<:@0-9@:>@*\).*/\1/p'` if test -n "${ANDROID_PLATFORM_LEVEL}"; then curl_pflags="${curl_pflags}-${ANDROID_PLATFORM_LEVEL}" fi ;; esac if test "$curl_cv_native_windows" = 'yes'; then curl_pflags="${curl_pflags} WIN32" fi if test "$curl_cv_wince" = 'yes'; then curl_pflags="${curl_pflags} WINCE" fi if test "$curl_cv_winuwp" = 'yes'; then curl_pflags="${curl_pflags} UWP" fi case $host in *-*-*bsd*|*-*-aix*|*-*-hpux*|*-*-interix*|*-*-irix*|*-*-linux*|*-*-solaris*|*-*-sunos*|*-apple-*|*-*-cygwin*|*-*-msys*) curl_pflags="${curl_pflags} UNIX";; esac case $host in *-*-*bsd*) curl_pflags="${curl_pflags} BSD";; esac if test "$curl_cv_cygwin" = 'yes'; then curl_pflags="${curl_pflags} CYGWIN" fi case $host_os in msdos*) curl_pflags="${curl_pflags} DOS";; amiga*) curl_pflags="${curl_pflags} AMIGA";; esac if test "x$compiler_id" = 'xGNU_C'; then curl_pflags="${curl_pflags} GCC" fi case $host_os in mingw*) curl_pflags="${curl_pflags} MINGW";; esac if test "x$cross_compiling" = 'xyes'; then curl_pflags="${curl_pflags} CROSS" fi squeeze curl_pflags curl_buildinfo=" buildinfo.configure.tool: configure buildinfo.configure.args: $ac_configure_args buildinfo.host: $build buildinfo.host.cpu: $build_cpu buildinfo.host.os: $build_os buildinfo.target: $host buildinfo.target.cpu: $host_cpu buildinfo.target.os: $host_os buildinfo.target.flags: $curl_pflags buildinfo.compiler: $compiler_id buildinfo.compiler.version: $compiler_ver buildinfo.sysroot: $lt_sysroot" ]) dnl CURL_CPP_P dnl dnl Check if $cpp -P should be used for extract define values due to gcc 5 dnl splitting up strings and defines between line outputs. gcc by default dnl (without -P) will show TEST EINVAL TEST as dnl dnl # 13 "conftest.c" dnl TEST dnl # 13 "conftest.c" 3 4 dnl 22 dnl # 13 "conftest.c" dnl TEST AC_DEFUN([CURL_CPP_P], [ AC_MSG_CHECKING([if cpp -P is needed]) AC_EGREP_CPP([TEST.*TEST], [ #include TEST EINVAL TEST ], [cpp=no], [cpp=yes]) AC_MSG_RESULT([$cpp]) dnl we need cpp -P so check if it works then if test "x$cpp" = "xyes"; then AC_MSG_CHECKING([if cpp -P works]) OLDCPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS -P" AC_EGREP_CPP([TEST.*TEST], [ #include TEST EINVAL TEST ], [cpp_p=yes], [cpp_p=no]) AC_MSG_RESULT([$cpp_p]) if test "x$cpp_p" = "xno"; then AC_MSG_WARN([failed to figure out cpp -P alternative]) # without -P CPPPFLAG="" else # with -P CPPPFLAG="-P" fi dnl restore CPPFLAGS CPPFLAGS=$OLDCPPFLAGS else # without -P CPPPFLAG="" fi ]) dnl CURL_DARWIN_CFLAGS dnl dnl Set -Werror=partial-availability to detect possible breaking code dnl with very low deployment targets. dnl AC_DEFUN([CURL_DARWIN_CFLAGS], [ old_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -Werror=partial-availability" AC_MSG_CHECKING([whether $CC accepts -Werror=partial-availability]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]) CFLAGS=$old_CFLAGS]) ]) dnl CURL_SUPPORTS_BUILTIN_AVAILABLE dnl dnl Check to see if the compiler supports __builtin_available. This built-in dnl compiler function first appeared in Apple LLVM 9.0.0. It's so new that, at dnl the time this macro was written, the function was not yet documented. Its dnl purpose is to return true if the code is running under a certain OS version dnl or later. AC_DEFUN([CURL_SUPPORTS_BUILTIN_AVAILABLE], [ AC_MSG_CHECKING([to see if the compiler supports __builtin_available()]) AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ ]],[[ if(__builtin_available(macOS 10.12, iOS 5.0, *)) {} ]]) ],[ AC_MSG_RESULT([yes]) AC_DEFINE_UNQUOTED(HAVE_BUILTIN_AVAILABLE, 1, [Define to 1 if you have the __builtin_available function.]) ],[ AC_MSG_RESULT([no]) ]) ]) curl-8.14.1/aclocal.m40000644000000000000000000013152215017756261012616 0ustar0000000000000000# generated automatically by aclocal 1.16.5 -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # This file 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. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.71],, [m4_warning([this file was generated for autoconf 2.71. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 2002-2021 Free Software Foundation, Inc. # # This file 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. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.16' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.16.5], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.16.5])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file 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. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_COND_IF -*- Autoconf -*- # Copyright (C) 2008-2021 Free Software Foundation, Inc. # # This file 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. # _AM_COND_IF # _AM_COND_ELSE # _AM_COND_ENDIF # -------------- # These macros are only used for tracing. m4_define([_AM_COND_IF]) m4_define([_AM_COND_ELSE]) m4_define([_AM_COND_ENDIF]) # AM_COND_IF(COND, [IF-TRUE], [IF-FALSE]) # --------------------------------------- # If the shell condition COND is true, execute IF-TRUE, otherwise execute # IF-FALSE. Allow automake to learn about conditional instantiating macros # (the AC_CONFIG_FOOS). AC_DEFUN([AM_COND_IF], [m4_ifndef([_AM_COND_VALUE_$1], [m4_fatal([$0: no such condition "$1"])])dnl _AM_COND_IF([$1])dnl if test -z "$$1_TRUE"; then : m4_n([$2])[]dnl m4_ifval([$3], [_AM_COND_ELSE([$1])dnl else $3 ])dnl _AM_COND_ENDIF([$1])dnl fi[]dnl ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file 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. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file 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. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file 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. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. AS_CASE([$CONFIG_FILES], [*\'*], [eval set x "$CONFIG_FILES"], [*], [set x $CONFIG_FILES]) shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`AS_DIRNAME(["$am_mf"])` am_filepart=`AS_BASENAME(["$am_mf"])` AM_RUN_LOG([cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles]) || am_rc=$? done if test $am_rc -ne 0; then AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE="gmake" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking).]) fi AS_UNSET([am_dirpart]) AS_UNSET([am_filepart]) AS_UNSET([am_mf]) AS_UNSET([am_rc]) rm -f conftest-deps.mk } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking is enabled. # This creates each '.Po' and '.Plo' makefile fragment that we'll need in # order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file 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 macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl m4_ifdef([_$0_ALREADY_INIT], [m4_fatal([$0 expanded multiple times ]m4_defn([_$0_ALREADY_INIT]))], [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi AC_SUBST([CTAGS]) if test -z "$ETAGS"; then ETAGS=etags fi AC_SUBST([ETAGS]) if test -z "$CSCOPE"; then CSCOPE=cscope fi AC_SUBST([CSCOPE]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file 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. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2021 Free Software Foundation, Inc. # # This file 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. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file 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. # AM_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. # Default is to disable them, unless 'enable' is passed literally. # For symmetry, 'disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), [enable], [m4_define([am_maintainer_other], [disable])], [disable], [m4_define([am_maintainer_other], [enable])], [m4_define([am_maintainer_other], [enable]) m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], am_maintainer_other[ make rules and dependencies not useful (and sometimes confusing) to the casual installer])], [USE_MAINTAINER_MODE=$enableval], [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST([MAINT])dnl ] ) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file 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. # AM_MAKE_INCLUDE() # ----------------- # Check whether make has an 'include' directive that can support all # the idioms we need for our automatic dependency tracking code. AC_DEFUN([AM_MAKE_INCLUDE], [AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) AS_CASE([$?:`cat confinc.out 2>/dev/null`], ['0:this is the am__doit target'], [AS_CASE([$s], [BSD], [am__include='.include' am__quote='"'], [am__include='include' am__quote=''])]) if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* AC_MSG_RESULT([${_am_result}]) AC_SUBST([am__include])]) AC_SUBST([am__quote])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file 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. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file 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. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file 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. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file 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. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file 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. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2021 Free Software Foundation, Inc. # # This file 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. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file 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. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2021 Free Software Foundation, Inc. # # This file 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. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2021 Free Software Foundation, Inc. # # This file 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. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/curl-amissl.m4]) m4_include([m4/curl-bearssl.m4]) m4_include([m4/curl-compilers.m4]) m4_include([m4/curl-confopts.m4]) m4_include([m4/curl-functions.m4]) m4_include([m4/curl-gnutls.m4]) m4_include([m4/curl-mbedtls.m4]) m4_include([m4/curl-openssl.m4]) m4_include([m4/curl-override.m4]) m4_include([m4/curl-reentrant.m4]) m4_include([m4/curl-rustls.m4]) m4_include([m4/curl-schannel.m4]) m4_include([m4/curl-sectransp.m4]) m4_include([m4/curl-sysconfig.m4]) m4_include([m4/curl-wolfssl.m4]) m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) m4_include([m4/xc-am-iface.m4]) m4_include([m4/xc-cc-check.m4]) m4_include([m4/xc-lt-iface.m4]) m4_include([m4/xc-val-flgs.m4]) m4_include([m4/zz40-xc-ovr.m4]) m4_include([m4/zz50-xc-ovr.m4]) m4_include([m4/zz60-xc-ovr.m4]) m4_include([acinclude.m4]) curl-8.14.1/compile0000755000000000000000000001635015017756261012335 0ustar0000000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2018-03-07.03; # UTC # Copyright (C) 1999-2021 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN* | MSYS*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/* | msys/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: curl-8.14.1/config.guess0000755000000000000000000014051215017756261013275 0ustar0000000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2022 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale timestamp='2022-01-09' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . # The "shellcheck disable" line above the timestamp inhibits complaints # about features and limitations of the classic Bourne shell that were # superseded or lifted in POSIX. However, this script identifies a wide # variety of pre-POSIX systems that do not have POSIX shells at all, and # even some reasonably current systems (Solaris 10 as case-in-point) still # have a pre-POSIX /bin/sh. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi # Just in case it came from the environment. GUESS= # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. tmp= # shellcheck disable=SC2172 trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 set_cc_for_build() { # prevent multiple calls if $tmp is already set test "$tmp" && return 0 : "${TMPDIR=/tmp}" # shellcheck disable=SC2039,SC3028 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } dummy=$tmp/dummy case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c89 c99 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD=$driver break fi done if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac } # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case $UNAME_SYSTEM in Linux|GNU|GNU/*) LIBC=unknown set_cc_for_build cat <<-EOF > "$dummy.c" #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #elif defined(__GLIBC__) LIBC=gnu #else #include /* First heuristic to detect musl libc. */ #ifdef __DEFINED_va_list LIBC=musl #endif #endif EOF cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` eval "$cc_set_libc" # Second heuristic to detect musl libc. if [ "$LIBC" = unknown ] && command -v ldd >/dev/null && ldd --version 2>&1 | grep -q ^musl; then LIBC=musl fi # If the system lacks a compiler, then just pick glibc. # We could probably try harder. if [ "$LIBC" = unknown ]; then LIBC=gnu fi ;; esac # Note: order is significant - the case branches are not exclusive. case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ echo unknown)` case $UNAME_MACHINE_ARCH in aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` machine=${arch}${endian}-unknown ;; *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case $UNAME_MACHINE_ARCH in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case $UNAME_VERSION in Debian*) release='-gnu' ;; *) release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. GUESS=$machine-${os}${release}${abi-} ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE ;; *:SecBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE ;; *:MidnightBSD:*:*) GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE ;; *:ekkoBSD:*:*) GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE ;; *:SolidBSD:*:*) GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE ;; *:OS108:*:*) GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE ;; macppc:MirBSD:*:*) GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE ;; *:MirBSD:*:*) GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE ;; *:Sortix:*:*) GUESS=$UNAME_MACHINE-unknown-sortix ;; *:Twizzler:*:*) GUESS=$UNAME_MACHINE-unknown-twizzler ;; *:Redox:*:*) GUESS=$UNAME_MACHINE-unknown-redox ;; mips:OSF1:*.*) GUESS=mips-dec-osf1 ;; alpha:OSF1:*:*) # Reset EXIT trap before exiting to avoid spurious non-zero exit code. trap '' 0 case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case $ALPHA_CPU_TYPE in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` GUESS=$UNAME_MACHINE-dec-osf$OSF_REL ;; Amiga*:UNIX_System_V:4.0:*) GUESS=m68k-unknown-sysv4 ;; *:[Aa]miga[Oo][Ss]:*:*) GUESS=$UNAME_MACHINE-unknown-amigaos ;; *:[Mm]orph[Oo][Ss]:*:*) GUESS=$UNAME_MACHINE-unknown-morphos ;; *:OS/390:*:*) GUESS=i370-ibm-openedition ;; *:z/VM:*:*) GUESS=s390-ibm-zvmoe ;; *:OS400:*:*) GUESS=powerpc-ibm-os400 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) GUESS=arm-acorn-riscix$UNAME_RELEASE ;; arm*:riscos:*:*|arm*:RISCOS:*:*) GUESS=arm-unknown-riscos ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) GUESS=hppa1.1-hitachi-hiuxmpp ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. case `(/bin/universe) 2>/dev/null` in att) GUESS=pyramid-pyramid-sysv3 ;; *) GUESS=pyramid-pyramid-bsd ;; esac ;; NILE*:*:*:dcosx) GUESS=pyramid-pyramid-svr4 ;; DRS?6000:unix:4.0:6*) GUESS=sparc-icl-nx6 ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) GUESS=sparc-icl-nx7 ;; esac ;; s390x:SunOS:*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL ;; sun4H:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-hal-solaris2$SUN_REL ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-sun-solaris2$SUN_REL ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) GUESS=i386-pc-auroraux$UNAME_RELEASE ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=$SUN_ARCH-pc-solaris2$SUN_REL ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-sun-solaris3$SUN_REL ;; sun4*:SunOS:*:*) case `/usr/bin/arch -k` in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` GUESS=sparc-sun-sunos$SUN_REL ;; sun3*:SunOS:*:*) GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 case `/bin/arch` in sun3) GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac ;; aushp:SunOS:*:*) GUESS=sparc-auspex-sunos$UNAME_RELEASE ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) GUESS=m68k-milan-mint$UNAME_RELEASE ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) GUESS=m68k-hades-mint$UNAME_RELEASE ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) GUESS=m68k-unknown-mint$UNAME_RELEASE ;; m68k:machten:*:*) GUESS=m68k-apple-machten$UNAME_RELEASE ;; powerpc:machten:*:*) GUESS=powerpc-apple-machten$UNAME_RELEASE ;; RISC*:Mach:*:*) GUESS=mips-dec-mach_bsd4.3 ;; RISC*:ULTRIX:*:*) GUESS=mips-dec-ultrix$UNAME_RELEASE ;; VAX*:ULTRIX*:*:*) GUESS=vax-dec-ultrix$UNAME_RELEASE ;; 2020:CLIX:*:* | 2430:CLIX:*:*) GUESS=clipper-intergraph-clix$UNAME_RELEASE ;; mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } GUESS=mips-mips-riscos$UNAME_RELEASE ;; Motorola:PowerMAX_OS:*:*) GUESS=powerpc-motorola-powermax ;; Motorola:*:4.3:PL8-*) GUESS=powerpc-harris-powermax ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) GUESS=powerpc-harris-powermax ;; Night_Hawk:Power_UNIX:*:*) GUESS=powerpc-harris-powerunix ;; m88k:CX/UX:7*:*) GUESS=m88k-harris-cxux7 ;; m88k:*:4*:R4*) GUESS=m88k-motorola-sysv4 ;; m88k:*:3*:R3*) GUESS=m88k-motorola-sysv3 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ test "$TARGET_BINARY_INTERFACE"x = x then GUESS=m88k-dg-dgux$UNAME_RELEASE else GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else GUESS=i586-dg-dgux$UNAME_RELEASE fi ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) GUESS=m88k-dolphin-sysv3 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 GUESS=m88k-motorola-sysv3 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) GUESS=m88k-tektronix-sysv3 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) GUESS=m68k-tektronix-bsd ;; *:IRIX*:*:*) IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` GUESS=mips-sgi-irix$IRIX_REL ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) GUESS=i386-ibm-aix ;; ia64:AIX:*:*) if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then GUESS=$SYSTEM_NAME else GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then GUESS=rs6000-ibm-aix3.2.4 else GUESS=rs6000-ibm-aix3.2 fi ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if test -x /usr/bin/lslpp ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi GUESS=$IBM_ARCH-ibm-aix$IBM_REV ;; *:AIX:*:*) GUESS=rs6000-ibm-aix ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) GUESS=romp-ibm-bsd4.4 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) GUESS=rs6000-bull-bosx ;; DPX/2?00:B.O.S.:*:*) GUESS=m68k-bull-sysv3 ;; 9000/[34]??:4.3bsd:1.*:*) GUESS=m68k-hp-bsd ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) GUESS=m68k-hp-bsd4.4 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` case $UNAME_MACHINE in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if test -x /usr/bin/getconf; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case $sc_cpu_version in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case $sc_kernel_bits in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if test "$HP_ARCH" = ""; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if test "$HP_ARCH" = hppa2.0w then set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi GUESS=$HP_ARCH-hp-hpux$HPUX_REV ;; ia64:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` GUESS=ia64-hp-hpux$HPUX_REV ;; 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } GUESS=unknown-hitachi-hiuxwe2 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) GUESS=hppa1.1-hp-bsd ;; 9000/8??:4.3bsd:*:*) GUESS=hppa1.0-hp-bsd ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) GUESS=hppa1.0-hp-mpeix ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) GUESS=hppa1.1-hp-osf ;; hp8??:OSF1:*:*) GUESS=hppa1.0-hp-osf ;; i*86:OSF1:*:*) if test -x /usr/sbin/sysversion ; then GUESS=$UNAME_MACHINE-unknown-osf1mk else GUESS=$UNAME_MACHINE-unknown-osf1 fi ;; parisc*:Lites*:*:*) GUESS=hppa1.1-hp-lites ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) GUESS=c1-convex-bsd ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) GUESS=c34-convex-bsd ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) GUESS=c38-convex-bsd ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) GUESS=c4-convex-bsd ;; CRAY*Y-MP:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=ymp-cray-unicos$CRAY_REL ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=t90-cray-unicos$CRAY_REL ;; CRAY*T3E:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=alphaev5-cray-unicosmk$CRAY_REL ;; CRAY*SV1:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=sv1-cray-unicos$CRAY_REL ;; *:UNICOS/mp:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=craynv-cray-unicosmp$CRAY_REL ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE ;; sparc*:BSD/OS:*:*) GUESS=sparc-unknown-bsdi$UNAME_RELEASE ;; *:BSD/OS:*:*) GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE ;; arm:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi else FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf fi ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL ;; i*:CYGWIN*:*) GUESS=$UNAME_MACHINE-pc-cygwin ;; *:MINGW64*:*) GUESS=$UNAME_MACHINE-pc-mingw64 ;; *:MINGW*:*) GUESS=$UNAME_MACHINE-pc-mingw32 ;; *:MSYS*:*) GUESS=$UNAME_MACHINE-pc-msys ;; i*:PW*:*) GUESS=$UNAME_MACHINE-pc-pw32 ;; *:SerenityOS:*:*) GUESS=$UNAME_MACHINE-pc-serenity ;; *:Interix*:*) case $UNAME_MACHINE in x86) GUESS=i586-pc-interix$UNAME_RELEASE ;; authenticamd | genuineintel | EM64T) GUESS=x86_64-unknown-interix$UNAME_RELEASE ;; IA64) GUESS=ia64-unknown-interix$UNAME_RELEASE ;; esac ;; i*:UWIN*:*) GUESS=$UNAME_MACHINE-pc-uwin ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) GUESS=x86_64-pc-cygwin ;; prep*:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=powerpcle-unknown-solaris2$SUN_REL ;; *:GNU:*:*) # the GNU system GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL ;; *:GNU/*:*:*) # other systems with GNU libc and userland GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC ;; *:Minix:*:*) GUESS=$UNAME_MACHINE-unknown-minix ;; aarch64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi ;; avr32*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; cris:Linux:*:*) GUESS=$UNAME_MACHINE-axis-linux-$LIBC ;; crisv32:Linux:*:*) GUESS=$UNAME_MACHINE-axis-linux-$LIBC ;; e2k:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; frv:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; hexagon:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; i*86:Linux:*:*) GUESS=$UNAME_MACHINE-pc-linux-$LIBC ;; ia64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; k1om:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m32r*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m68*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build IS_GLIBC=0 test x"${LIBC}" = xgnu && IS_GLIBC=1 sed 's/^ //' << EOF > "$dummy.c" #undef CPU #undef mips #undef mipsel #undef mips64 #undef mips64el #if ${IS_GLIBC} && defined(_ABI64) LIBCABI=gnuabi64 #else #if ${IS_GLIBC} && defined(_ABIN32) LIBCABI=gnuabin32 #else LIBCABI=${LIBC} #endif #endif #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa64r6 #else #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa32r6 #else #if defined(__mips64) CPU=mips64 #else CPU=mips #endif #endif #endif #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) MIPS_ENDIAN=el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) MIPS_ENDIAN= #else MIPS_ENDIAN= #endif #endif EOF cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` eval "$cc_set_vars" test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; openrisc*:Linux:*:*) GUESS=or1k-unknown-linux-$LIBC ;; or32:Linux:*:* | or1k*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; padre:Linux:*:*) GUESS=sparc-unknown-linux-$LIBC ;; parisc64:Linux:*:* | hppa64:Linux:*:*) GUESS=hppa64-unknown-linux-$LIBC ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; *) GUESS=hppa-unknown-linux-$LIBC ;; esac ;; ppc64:Linux:*:*) GUESS=powerpc64-unknown-linux-$LIBC ;; ppc:Linux:*:*) GUESS=powerpc-unknown-linux-$LIBC ;; ppc64le:Linux:*:*) GUESS=powerpc64le-unknown-linux-$LIBC ;; ppcle:Linux:*:*) GUESS=powerpcle-unknown-linux-$LIBC ;; riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; s390:Linux:*:* | s390x:Linux:*:*) GUESS=$UNAME_MACHINE-ibm-linux-$LIBC ;; sh64*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; sh*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; sparc:Linux:*:* | sparc64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; tile*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; vax:Linux:*:*) GUESS=$UNAME_MACHINE-dec-linux-$LIBC ;; x86_64:Linux:*:*) set_cc_for_build LIBCABI=$LIBC if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_X32 >/dev/null then LIBCABI=${LIBC}x32 fi fi GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI ;; xtensa*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. GUESS=i386-sequent-sysv4 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. GUESS=$UNAME_MACHINE-pc-os2-emx ;; i*86:XTS-300:*:STOP) GUESS=$UNAME_MACHINE-unknown-stop ;; i*86:atheos:*:*) GUESS=$UNAME_MACHINE-unknown-atheos ;; i*86:syllable:*:*) GUESS=$UNAME_MACHINE-pc-syllable ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) GUESS=i386-unknown-lynxos$UNAME_RELEASE ;; i*86:*DOS:*:*) GUESS=$UNAME_MACHINE-pc-msdosdjgpp ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else GUESS=$UNAME_MACHINE-pc-sysv32 fi ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. GUESS=i586-pc-msdosdjgpp ;; Intel:Mach:3*:*) GUESS=i386-pc-mach3 ;; paragon:*:*:*) GUESS=i860-intel-osf1 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi ;; mini*:CTIX:SYS*5:*) # "miniframe" GUESS=m68010-convergent-sysv ;; mc68k:UNIX:SYSTEM5:3.51m) GUESS=m68k-convergent-sysv ;; M680?0:D-NIX:5.3:*) GUESS=m68k-diab-dnix ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) GUESS=m68k-unknown-lynxos$UNAME_RELEASE ;; mc68030:UNIX_System_V:4.*:*) GUESS=m68k-atari-sysv4 ;; TSUNAMI:LynxOS:2.*:*) GUESS=sparc-unknown-lynxos$UNAME_RELEASE ;; rs6000:LynxOS:2.*:*) GUESS=rs6000-unknown-lynxos$UNAME_RELEASE ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) GUESS=powerpc-unknown-lynxos$UNAME_RELEASE ;; SM[BE]S:UNIX_SV:*:*) GUESS=mips-dde-sysv$UNAME_RELEASE ;; RM*:ReliantUNIX-*:*:*) GUESS=mips-sni-sysv4 ;; RM*:SINIX-*:*:*) GUESS=mips-sni-sysv4 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` GUESS=$UNAME_MACHINE-sni-sysv4 else GUESS=ns32k-sni-sysv fi ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says GUESS=i586-unisys-sysv4 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm GUESS=hppa1.1-stratus-sysv4 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. GUESS=i860-stratus-sysv4 ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. GUESS=$UNAME_MACHINE-stratus-vos ;; *:VOS:*:*) # From Paul.Green@stratus.com. GUESS=hppa1.1-stratus-vos ;; mc68*:A/UX:*:*) GUESS=m68k-apple-aux$UNAME_RELEASE ;; news*:NEWS-OS:6*:*) GUESS=mips-sony-newsos6 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if test -d /usr/nec; then GUESS=mips-nec-sysv$UNAME_RELEASE else GUESS=mips-unknown-sysv$UNAME_RELEASE fi ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. GUESS=powerpc-be-beos ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. GUESS=powerpc-apple-beos ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. GUESS=i586-pc-beos ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. GUESS=i586-pc-haiku ;; x86_64:Haiku:*:*) GUESS=x86_64-unknown-haiku ;; SX-4:SUPER-UX:*:*) GUESS=sx4-nec-superux$UNAME_RELEASE ;; SX-5:SUPER-UX:*:*) GUESS=sx5-nec-superux$UNAME_RELEASE ;; SX-6:SUPER-UX:*:*) GUESS=sx6-nec-superux$UNAME_RELEASE ;; SX-7:SUPER-UX:*:*) GUESS=sx7-nec-superux$UNAME_RELEASE ;; SX-8:SUPER-UX:*:*) GUESS=sx8-nec-superux$UNAME_RELEASE ;; SX-8R:SUPER-UX:*:*) GUESS=sx8r-nec-superux$UNAME_RELEASE ;; SX-ACE:SUPER-UX:*:*) GUESS=sxace-nec-superux$UNAME_RELEASE ;; Power*:Rhapsody:*:*) GUESS=powerpc-apple-rhapsody$UNAME_RELEASE ;; *:Rhapsody:*:*) GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE ;; arm64:Darwin:*:*) GUESS=aarch64-apple-darwin$UNAME_RELEASE ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac if command -v xcode-select > /dev/null 2> /dev/null && \ ! xcode-select --print-path > /dev/null 2> /dev/null ; then # Avoid executing cc if there is no toolchain installed as # cc will be a stub that puts up a graphical alert # prompting the user to install developer tools. CC_FOR_BUILD=no_compiler_found else set_cc_for_build fi if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_PPC >/dev/null then UNAME_PROCESSOR=powerpc fi elif test "$UNAME_PROCESSOR" = i386 ; then # uname -m returns i386 or x86_64 UNAME_PROCESSOR=$UNAME_MACHINE fi GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE ;; *:QNX:*:4*) GUESS=i386-pc-qnx ;; NEO-*:NONSTOP_KERNEL:*:*) GUESS=neo-tandem-nsk$UNAME_RELEASE ;; NSE-*:NONSTOP_KERNEL:*:*) GUESS=nse-tandem-nsk$UNAME_RELEASE ;; NSR-*:NONSTOP_KERNEL:*:*) GUESS=nsr-tandem-nsk$UNAME_RELEASE ;; NSV-*:NONSTOP_KERNEL:*:*) GUESS=nsv-tandem-nsk$UNAME_RELEASE ;; NSX-*:NONSTOP_KERNEL:*:*) GUESS=nsx-tandem-nsk$UNAME_RELEASE ;; *:NonStop-UX:*:*) GUESS=mips-compaq-nonstopux ;; BS2000:POSIX*:*:*) GUESS=bs2000-siemens-sysv ;; DS/*:UNIX_System_V:*:*) GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "${cputype-}" = 386; then UNAME_MACHINE=i386 elif test "x${cputype-}" != x; then UNAME_MACHINE=$cputype fi GUESS=$UNAME_MACHINE-unknown-plan9 ;; *:TOPS-10:*:*) GUESS=pdp10-unknown-tops10 ;; *:TENEX:*:*) GUESS=pdp10-unknown-tenex ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) GUESS=pdp10-dec-tops20 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) GUESS=pdp10-xkl-tops20 ;; *:TOPS-20:*:*) GUESS=pdp10-unknown-tops20 ;; *:ITS:*:*) GUESS=pdp10-unknown-its ;; SEI:*:*:SEIUX) GUESS=mips-sei-seiux$UNAME_RELEASE ;; *:DragonFly:*:*) DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case $UNAME_MACHINE in A*) GUESS=alpha-dec-vms ;; I*) GUESS=ia64-dec-vms ;; V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) GUESS=i386-pc-xenix ;; i*86:skyos:*:*) SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL ;; i*86:rdos:*:*) GUESS=$UNAME_MACHINE-pc-rdos ;; i*86:Fiwix:*:*) GUESS=$UNAME_MACHINE-pc-fiwix ;; *:AROS:*:*) GUESS=$UNAME_MACHINE-unknown-aros ;; x86_64:VMkernel:*:*) GUESS=$UNAME_MACHINE-unknown-esx ;; amd64:Isilon\ OneFS:*:*) GUESS=x86_64-unknown-onefs ;; *:Unleashed:*:*) GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE ;; esac # Do we have a guess based on uname results? if test "x$GUESS" != x; then echo "$GUESS" exit fi # No uname command or uname output not recognized. set_cc_for_build cat > "$dummy.c" < #include #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #include #if defined(_SIZE_T_) || defined(SIGLOST) #include #endif #endif #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) #if !defined (ultrix) #include #if defined (BSD) #if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); #else #if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); #else printf ("vax-dec-bsd\n"); exit (0); #endif #endif #else printf ("vax-dec-bsd\n"); exit (0); #endif #else #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname un; uname (&un); printf ("vax-dec-ultrix%s\n", un.release); exit (0); #else printf ("vax-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname *un; uname (&un); printf ("mips-dec-ultrix%s\n", un.release); exit (0); #else printf ("mips-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } echo "$0: unable to guess system type" >&2 case $UNAME_MACHINE:$UNAME_SYSTEM in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 <&2 </dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = "$UNAME_MACHINE" UNAME_RELEASE = "$UNAME_RELEASE" UNAME_SYSTEM = "$UNAME_SYSTEM" UNAME_VERSION = "$UNAME_VERSION" EOF fi exit 1 # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: curl-8.14.1/config.sub0000755000000000000000000010511615017756261012741 0ustar0000000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2022 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale timestamp='2022-01-03' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # https://git.savannah.gnu.org/cgit/config.git/plain/config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. # The "shellcheck disable" line above the timestamp inhibits complaints # about features and limitations of the classic Bourne shell that were # superseded or lifted in POSIX. However, this script identifies a wide # variety of pre-POSIX systems that do not have POSIX shells at all, and # even some reasonably current systems (Solaris 10 as case-in-point) still # have a pre-POSIX /bin/sh. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; *local*) # First pass through any local machine types. echo "$1" exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Split fields of configuration type # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read field1 field2 field3 field4 <&2 exit 1 ;; *-*-*-*) basic_machine=$field1-$field2 basic_os=$field3-$field4 ;; *-*-*) # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two # parts maybe_os=$field2-$field3 case $maybe_os in nto-qnx* | linux-* | uclinux-uclibc* \ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ | storm-chaos* | os2-emx* | rtmk-nova*) basic_machine=$field1 basic_os=$maybe_os ;; android-linux) basic_machine=$field1-unknown basic_os=linux-android ;; *) basic_machine=$field1-$field2 basic_os=$field3 ;; esac ;; *-*) # A lone config we happen to match not fitting any pattern case $field1-$field2 in decstation-3100) basic_machine=mips-dec basic_os= ;; *-*) # Second component is usually, but not always the OS case $field2 in # Prevent following clause from handling this valid os sun*os*) basic_machine=$field1 basic_os=$field2 ;; zephyr*) basic_machine=$field1-unknown basic_os=$field2 ;; # Manufacturers dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ | unicom* | ibm* | next | hp | isi* | apollo | altos* \ | convergent* | ncr* | news | 32* | 3600* | 3100* \ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ | ultra | tti* | harris | dolphin | highlevel | gould \ | cbm | ns | masscomp | apple | axis | knuth | cray \ | microblaze* | sim | cisco \ | oki | wec | wrs | winbond) basic_machine=$field1-$field2 basic_os= ;; *) basic_machine=$field1 basic_os=$field2 ;; esac ;; esac ;; *) # Convert single-component short-hands not valid as part of # multi-component configurations. case $field1 in 386bsd) basic_machine=i386-pc basic_os=bsd ;; a29khif) basic_machine=a29k-amd basic_os=udi ;; adobe68k) basic_machine=m68010-adobe basic_os=scout ;; alliant) basic_machine=fx80-alliant basic_os= ;; altos | altos3068) basic_machine=m68k-altos basic_os= ;; am29k) basic_machine=a29k-none basic_os=bsd ;; amdahl) basic_machine=580-amdahl basic_os=sysv ;; amiga) basic_machine=m68k-unknown basic_os= ;; amigaos | amigados) basic_machine=m68k-unknown basic_os=amigaos ;; amigaunix | amix) basic_machine=m68k-unknown basic_os=sysv4 ;; apollo68) basic_machine=m68k-apollo basic_os=sysv ;; apollo68bsd) basic_machine=m68k-apollo basic_os=bsd ;; aros) basic_machine=i386-pc basic_os=aros ;; aux) basic_machine=m68k-apple basic_os=aux ;; balance) basic_machine=ns32k-sequent basic_os=dynix ;; blackfin) basic_machine=bfin-unknown basic_os=linux ;; cegcc) basic_machine=arm-unknown basic_os=cegcc ;; convex-c1) basic_machine=c1-convex basic_os=bsd ;; convex-c2) basic_machine=c2-convex basic_os=bsd ;; convex-c32) basic_machine=c32-convex basic_os=bsd ;; convex-c34) basic_machine=c34-convex basic_os=bsd ;; convex-c38) basic_machine=c38-convex basic_os=bsd ;; cray) basic_machine=j90-cray basic_os=unicos ;; crds | unos) basic_machine=m68k-crds basic_os= ;; da30) basic_machine=m68k-da30 basic_os= ;; decstation | pmax | pmin | dec3100 | decstatn) basic_machine=mips-dec basic_os= ;; delta88) basic_machine=m88k-motorola basic_os=sysv3 ;; dicos) basic_machine=i686-pc basic_os=dicos ;; djgpp) basic_machine=i586-pc basic_os=msdosdjgpp ;; ebmon29k) basic_machine=a29k-amd basic_os=ebmon ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson basic_os=ose ;; gmicro) basic_machine=tron-gmicro basic_os=sysv ;; go32) basic_machine=i386-pc basic_os=go32 ;; h8300hms) basic_machine=h8300-hitachi basic_os=hms ;; h8300xray) basic_machine=h8300-hitachi basic_os=xray ;; h8500hms) basic_machine=h8500-hitachi basic_os=hms ;; harris) basic_machine=m88k-harris basic_os=sysv3 ;; hp300 | hp300hpux) basic_machine=m68k-hp basic_os=hpux ;; hp300bsd) basic_machine=m68k-hp basic_os=bsd ;; hppaosf) basic_machine=hppa1.1-hp basic_os=osf ;; hppro) basic_machine=hppa1.1-hp basic_os=proelf ;; i386mach) basic_machine=i386-mach basic_os=mach ;; isi68 | isi) basic_machine=m68k-isi basic_os=sysv ;; m68knommu) basic_machine=m68k-unknown basic_os=linux ;; magnum | m3230) basic_machine=mips-mips basic_os=sysv ;; merlin) basic_machine=ns32k-utek basic_os=sysv ;; mingw64) basic_machine=x86_64-pc basic_os=mingw64 ;; mingw32) basic_machine=i686-pc basic_os=mingw32 ;; mingw32ce) basic_machine=arm-unknown basic_os=mingw32ce ;; monitor) basic_machine=m68k-rom68k basic_os=coff ;; morphos) basic_machine=powerpc-unknown basic_os=morphos ;; moxiebox) basic_machine=moxie-unknown basic_os=moxiebox ;; msdos) basic_machine=i386-pc basic_os=msdos ;; msys) basic_machine=i686-pc basic_os=msys ;; mvs) basic_machine=i370-ibm basic_os=mvs ;; nacl) basic_machine=le32-unknown basic_os=nacl ;; ncr3000) basic_machine=i486-ncr basic_os=sysv4 ;; netbsd386) basic_machine=i386-pc basic_os=netbsd ;; netwinder) basic_machine=armv4l-rebel basic_os=linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony basic_os=newsos ;; news1000) basic_machine=m68030-sony basic_os=newsos ;; necv70) basic_machine=v70-nec basic_os=sysv ;; nh3000) basic_machine=m68k-harris basic_os=cxux ;; nh[45]000) basic_machine=m88k-harris basic_os=cxux ;; nindy960) basic_machine=i960-intel basic_os=nindy ;; mon960) basic_machine=i960-intel basic_os=mon960 ;; nonstopux) basic_machine=mips-compaq basic_os=nonstopux ;; os400) basic_machine=powerpc-ibm basic_os=os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson basic_os=ose ;; os68k) basic_machine=m68k-none basic_os=os68k ;; paragon) basic_machine=i860-intel basic_os=osf ;; parisc) basic_machine=hppa-unknown basic_os=linux ;; psp) basic_machine=mipsallegrexel-sony basic_os=psp ;; pw32) basic_machine=i586-unknown basic_os=pw32 ;; rdos | rdos64) basic_machine=x86_64-pc basic_os=rdos ;; rdos32) basic_machine=i386-pc basic_os=rdos ;; rom68k) basic_machine=m68k-rom68k basic_os=coff ;; sa29200) basic_machine=a29k-amd basic_os=udi ;; sei) basic_machine=mips-sei basic_os=seiux ;; sequent) basic_machine=i386-sequent basic_os= ;; sps7) basic_machine=m68k-bull basic_os=sysv2 ;; st2000) basic_machine=m68k-tandem basic_os= ;; stratus) basic_machine=i860-stratus basic_os=sysv4 ;; sun2) basic_machine=m68000-sun basic_os= ;; sun2os3) basic_machine=m68000-sun basic_os=sunos3 ;; sun2os4) basic_machine=m68000-sun basic_os=sunos4 ;; sun3) basic_machine=m68k-sun basic_os= ;; sun3os3) basic_machine=m68k-sun basic_os=sunos3 ;; sun3os4) basic_machine=m68k-sun basic_os=sunos4 ;; sun4) basic_machine=sparc-sun basic_os= ;; sun4os3) basic_machine=sparc-sun basic_os=sunos3 ;; sun4os4) basic_machine=sparc-sun basic_os=sunos4 ;; sun4sol2) basic_machine=sparc-sun basic_os=solaris2 ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun basic_os= ;; sv1) basic_machine=sv1-cray basic_os=unicos ;; symmetry) basic_machine=i386-sequent basic_os=dynix ;; t3e) basic_machine=alphaev5-cray basic_os=unicos ;; t90) basic_machine=t90-cray basic_os=unicos ;; toad1) basic_machine=pdp10-xkl basic_os=tops20 ;; tpf) basic_machine=s390x-ibm basic_os=tpf ;; udi29k) basic_machine=a29k-amd basic_os=udi ;; ultra3) basic_machine=a29k-nyu basic_os=sym1 ;; v810 | necv810) basic_machine=v810-nec basic_os=none ;; vaxv) basic_machine=vax-dec basic_os=sysv ;; vms) basic_machine=vax-dec basic_os=vms ;; vsta) basic_machine=i386-pc basic_os=vsta ;; vxworks960) basic_machine=i960-wrs basic_os=vxworks ;; vxworks68) basic_machine=m68k-wrs basic_os=vxworks ;; vxworks29k) basic_machine=a29k-wrs basic_os=vxworks ;; xbox) basic_machine=i686-pc basic_os=mingw32 ;; ymp) basic_machine=ymp-cray basic_os=unicos ;; *) basic_machine=$1 basic_os= ;; esac ;; esac # Decode 1-component or ad-hoc basic machines case $basic_machine in # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) cpu=hppa1.1 vendor=winbond ;; op50n) cpu=hppa1.1 vendor=oki ;; op60c) cpu=hppa1.1 vendor=oki ;; ibm*) cpu=i370 vendor=ibm ;; orion105) cpu=clipper vendor=highlevel ;; mac | mpw | mac-mpw) cpu=m68k vendor=apple ;; pmac | pmac-mpw) cpu=powerpc vendor=apple ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) cpu=m68000 vendor=att ;; 3b*) cpu=we32k vendor=att ;; bluegene*) cpu=powerpc vendor=ibm basic_os=cnk ;; decsystem10* | dec10*) cpu=pdp10 vendor=dec basic_os=tops10 ;; decsystem20* | dec20*) cpu=pdp10 vendor=dec basic_os=tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) cpu=m68k vendor=motorola ;; dpx2*) cpu=m68k vendor=bull basic_os=sysv3 ;; encore | umax | mmax) cpu=ns32k vendor=encore ;; elxsi) cpu=elxsi vendor=elxsi basic_os=${basic_os:-bsd} ;; fx2800) cpu=i860 vendor=alliant ;; genix) cpu=ns32k vendor=ns ;; h3050r* | hiux*) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) cpu=m68000 vendor=hp ;; hp9k3[2-9][0-9]) cpu=m68k vendor=hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) cpu=hppa1.1 vendor=hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; i*86v32) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv32 ;; i*86v4*) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv4 ;; i*86v) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv ;; i*86sol2) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=solaris2 ;; j90 | j90-cray) cpu=j90 vendor=cray basic_os=${basic_os:-unicos} ;; iris | iris4d) cpu=mips vendor=sgi case $basic_os in irix*) ;; *) basic_os=irix4 ;; esac ;; miniframe) cpu=m68000 vendor=convergent ;; *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) cpu=m68k vendor=atari basic_os=mint ;; news-3600 | risc-news) cpu=mips vendor=sony basic_os=newsos ;; next | m*-next) cpu=m68k vendor=next case $basic_os in openstep*) ;; nextstep*) ;; ns2*) basic_os=nextstep2 ;; *) basic_os=nextstep3 ;; esac ;; np1) cpu=np1 vendor=gould ;; op50n-* | op60c-*) cpu=hppa1.1 vendor=oki basic_os=proelf ;; pa-hitachi) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; pbd) cpu=sparc vendor=tti ;; pbb) cpu=m68k vendor=tti ;; pc532) cpu=ns32k vendor=pc532 ;; pn) cpu=pn vendor=gould ;; power) cpu=power vendor=ibm ;; ps2) cpu=i386 vendor=ibm ;; rm[46]00) cpu=mips vendor=siemens ;; rtpc | rtpc-*) cpu=romp vendor=ibm ;; sde) cpu=mipsisa32 vendor=sde basic_os=${basic_os:-elf} ;; simso-wrs) cpu=sparclite vendor=wrs basic_os=vxworks ;; tower | tower-32) cpu=m68k vendor=ncr ;; vpp*|vx|vx-*) cpu=f301 vendor=fujitsu ;; w65) cpu=w65 vendor=wdc ;; w89k-*) cpu=hppa1.1 vendor=winbond basic_os=proelf ;; none) cpu=none vendor=none ;; leon|leon[3-9]) cpu=sparc vendor=$basic_machine ;; leon-*|leon[3-9]-*) cpu=sparc vendor=`echo "$basic_machine" | sed 's/-.*//'` ;; *-*) # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read cpu vendor <&2 exit 1 ;; esac ;; esac # Here we canonicalize certain aliases for manufacturers. case $vendor in digital*) vendor=dec ;; commodore*) vendor=cbm ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if test x$basic_os != x then # First recognize some ad-hoc cases, or perhaps split kernel-os, or else just # set os. case $basic_os in gnu/linux*) kernel=linux os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` ;; os2-emx) kernel=os2 os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` ;; nto-qnx*) kernel=nto os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` ;; *-*) # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read kernel os <&2 exit 1 ;; esac # As a final step for OS-related things, validate the OS-kernel combination # (given a valid OS), if there is a kernel. case $kernel-$os in linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ | linux-musl* | linux-relibc* | linux-uclibc* ) ;; uclinux-uclibc* ) ;; -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) # These are just libc implementations, not actual OSes, and thus # require a kernel. echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 exit 1 ;; kfreebsd*-gnu* | kopensolaris*-gnu*) ;; vxworks-simlinux | vxworks-simwindows | vxworks-spe) ;; nto-qnx*) ;; os2-emx) ;; *-eabi* | *-gnueabi*) ;; -*) # Blank kernel with real OS is always fine. ;; *-*) echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 exit 1 ;; esac # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. case $vendor in unknown) case $cpu-$os in *-riscix*) vendor=acorn ;; *-sunos*) vendor=sun ;; *-cnk* | *-aix*) vendor=ibm ;; *-beos*) vendor=be ;; *-hpux*) vendor=hp ;; *-mpeix*) vendor=hp ;; *-hiux*) vendor=hitachi ;; *-unos*) vendor=crds ;; *-dgux*) vendor=dg ;; *-luna*) vendor=omron ;; *-genix*) vendor=ns ;; *-clix*) vendor=intergraph ;; *-mvs* | *-opened*) vendor=ibm ;; *-os400*) vendor=ibm ;; s390-* | s390x-*) vendor=ibm ;; *-ptx*) vendor=sequent ;; *-tpf*) vendor=ibm ;; *-vxsim* | *-vxworks* | *-windiss*) vendor=wrs ;; *-aux*) vendor=apple ;; *-hms*) vendor=hitachi ;; *-mpw* | *-macos*) vendor=apple ;; *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) vendor=atari ;; *-vos*) vendor=stratus ;; esac ;; esac echo "$cpu-$vendor-${kernel:+$kernel-}$os" exit # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: curl-8.14.1/configure0000755000000000000000000510116515017756261012672 0ustar0000000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for curl -. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # # Copyright (C) Daniel Stenberg, # This configure script may be copied, distributed and modified under the # terms of the curl license; see COPYING for more details ## -------------------------------- ## ## XC_CONFIGURE_PREAMBLE ver: 1.0 ## ## -------------------------------- ## xc_configure_preamble_ver_major='1' xc_configure_preamble_ver_minor='0' # # Set IFS to space, tab and newline. # xc_space=' ' xc_tab=' ' xc_newline=' ' IFS="$xc_space$xc_tab$xc_newline" # # Set internationalization behavior variables. # LANG='C' LC_ALL='C' LANGUAGE='C' export LANG export LC_ALL export LANGUAGE # # Some useful variables. # xc_msg_warn='configure: WARNING:' xc_msg_abrt='Can not continue.' xc_msg_err='configure: error:' # # Verify that 'echo' command is available, otherwise abort. # xc_tst_str='unknown' (`echo "$xc_tst_str" >/dev/null 2>&1`) && xc_tst_str='success' case "x$xc_tst_str" in # (( xsuccess) : ;; *) # Try built-in echo, and fail. echo "$xc_msg_err 'echo' command not found. $xc_msg_abrt" >&2 exit 1 ;; esac # # Verify that 'test' command is available, otherwise abort. # xc_tst_str='unknown' (`test -n "$xc_tst_str" >/dev/null 2>&1`) && xc_tst_str='success' case "x$xc_tst_str" in # (( xsuccess) : ;; *) echo "$xc_msg_err 'test' command not found. $xc_msg_abrt" >&2 exit 1 ;; esac # # Verify that 'PATH' variable is set, otherwise abort. # xc_tst_str='unknown' (`test -n "$PATH" >/dev/null 2>&1`) && xc_tst_str='success' case "x$xc_tst_str" in # (( xsuccess) : ;; *) echo "$xc_msg_err 'PATH' variable not set. $xc_msg_abrt" >&2 exit 1 ;; esac # # Verify that 'expr' command is available, otherwise abort. # xc_tst_str='unknown' xc_tst_str=`expr "$xc_tst_str" : '.*' 2>/dev/null` case "x$xc_tst_str" in # (( x7) : ;; *) echo "$xc_msg_err 'expr' command not found. $xc_msg_abrt" >&2 exit 1 ;; esac # # Verify that 'sed' utility is found within 'PATH', otherwise abort. # xc_tst_str='unknown' xc_tst_str=`echo "$xc_tst_str" 2>/dev/null \ | sed -e 's:unknown:success:' 2>/dev/null` case "x$xc_tst_str" in # (( xsuccess) : ;; *) echo "$xc_msg_err 'sed' utility not found in 'PATH'. $xc_msg_abrt" >&2 exit 1 ;; esac # # Verify that 'grep' utility is found within 'PATH', otherwise abort. # xc_tst_str='unknown' (`echo "$xc_tst_str" 2>/dev/null \ | grep 'unknown' >/dev/null 2>&1`) && xc_tst_str='success' case "x$xc_tst_str" in # (( xsuccess) : ;; *) echo "$xc_msg_err 'grep' utility not found in 'PATH'. $xc_msg_abrt" >&2 exit 1 ;; esac # # Verify that 'tr' utility is found within 'PATH', otherwise abort. # xc_tst_str="${xc_tab}98s7u6c5c4e3s2s10" xc_tst_str=`echo "$xc_tst_str" 2>/dev/null \ | tr -d "0123456789$xc_tab" 2>/dev/null` case "x$xc_tst_str" in # (( xsuccess) : ;; *) echo "$xc_msg_err 'tr' utility not found in 'PATH'. $xc_msg_abrt" >&2 exit 1 ;; esac # # Verify that 'wc' utility is found within 'PATH', otherwise abort. # xc_tst_str='unknown unknown unknown unknown' xc_tst_str=`echo "$xc_tst_str" 2>/dev/null \ | wc -w 2>/dev/null | tr -d "$xc_space$xc_tab" 2>/dev/null` case "x$xc_tst_str" in # (( x4) : ;; *) echo "$xc_msg_err 'wc' utility not found in 'PATH'. $xc_msg_abrt" >&2 exit 1 ;; esac # # Verify that 'cat' utility is found within 'PATH', otherwise abort. # xc_tst_str='unknown' xc_tst_str=`cat <<_EOT 2>/dev/null \ | wc -l 2>/dev/null | tr -d "$xc_space$xc_tab" 2>/dev/null unknown unknown unknown _EOT` case "x$xc_tst_str" in # (( x3) : ;; *) echo "$xc_msg_err 'cat' utility not found in 'PATH'. $xc_msg_abrt" >&2 exit 1 ;; esac # # Auto-detect and set 'PATH_SEPARATOR', unless it is already non-empty set. # # Directory count in 'PATH' when using a colon separator. xc_tst_dirs_col='x' xc_tst_prev_IFS=$IFS; IFS=':' for xc_tst_dir in $PATH; do IFS=$xc_tst_prev_IFS xc_tst_dirs_col="x$xc_tst_dirs_col" done IFS=$xc_tst_prev_IFS xc_tst_dirs_col=`expr "$xc_tst_dirs_col" : '.*'` # Directory count in 'PATH' when using a semicolon separator. xc_tst_dirs_sem='x' xc_tst_prev_IFS=$IFS; IFS=';' for xc_tst_dir in $PATH; do IFS=$xc_tst_prev_IFS xc_tst_dirs_sem="x$xc_tst_dirs_sem" done IFS=$xc_tst_prev_IFS xc_tst_dirs_sem=`expr "$xc_tst_dirs_sem" : '.*'` if test $xc_tst_dirs_sem -eq $xc_tst_dirs_col; then # When both counting methods give the same result we do not want to # chose one over the other, and consider auto-detection not possible. if test -z "$PATH_SEPARATOR"; then # User should provide the correct 'PATH_SEPARATOR' definition. # Until then, guess that it is colon! echo "$xc_msg_warn path separator not determined, guessing colon" >&2 PATH_SEPARATOR=':' fi else # Separator with the greater directory count is the auto-detected one. if test $xc_tst_dirs_sem -gt $xc_tst_dirs_col; then xc_tst_auto_separator=';' else xc_tst_auto_separator=':' fi if test -z "$PATH_SEPARATOR"; then # Simply use the auto-detected one when not already set. PATH_SEPARATOR=$xc_tst_auto_separator elif test "x$PATH_SEPARATOR" != "x$xc_tst_auto_separator"; then echo "$xc_msg_warn 'PATH_SEPARATOR' does not match auto-detected one." >&2 fi fi xc_PATH_SEPARATOR=$PATH_SEPARATOR xc_configure_preamble_result='yes' ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="as_nop=: if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else $as_nop as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and a suitable curl $0: mailing list: https://curl.se/mail/ about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='curl' PACKAGE_TARNAME='curl' PACKAGE_VERSION='-' PACKAGE_STRING='curl -' PACKAGE_BUGREPORT='a suitable curl mailing list: https://curl.se/mail/' PACKAGE_URL='' ac_unique_file="lib/urldata.h" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_STDIO_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_c_list= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS CURL_CPP SSL_BACKENDS SUPPORT_PROTOCOLS SUPPORT_FEATURES LIBCURL_PC_LIBS LIBCURL_PC_REQUIRES LIBCURL_PC_REQUIRES_PRIVATE ENABLE_STATIC ENABLE_SHARED CROSSCOMPILING_FALSE CROSSCOMPILING_TRUE BLANK_AT_MAKETIME CURL_NETWORK_AND_TIME_LIBS LIBCURL_PC_LIBS_PRIVATE LIBCURL_PC_LDFLAGS_PRIVATE CFLAG_CURL_SYMBOL_HIDING DOING_CURL_SYMBOL_HIDING_FALSE DOING_CURL_SYMBOL_HIDING_TRUE USE_MANUAL_FALSE USE_MANUAL_TRUE BUILD_DOCS_FALSE BUILD_DOCS_TRUE PERL USE_FISH_COMPLETION_FALSE USE_FISH_COMPLETION_TRUE FISH_FUNCTIONS_DIR USE_ZSH_COMPLETION_FALSE USE_ZSH_COMPLETION_TRUE ZSH_FUNCTIONS_DIR USE_UNICODE_FALSE USE_UNICODE_TRUE CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_FALSE CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_TRUE CURL_LIBCURL_VERSIONED_SYMBOLS_SONAME CURL_LIBCURL_VERSIONED_SYMBOLS_PREFIX USE_GSASL_FALSE USE_GSASL_TRUE USE_LIBPSL_FALSE USE_LIBPSL_TRUE CURL_CA_EMBED_SET_FALSE CURL_CA_EMBED_SET_TRUE CURL_CA_EMBED CURL_CA_BUNDLE BUILD_STUB_GSS_FALSE BUILD_STUB_GSS_TRUE ZLIB_LIBS HAVE_LIBZ_FALSE HAVE_LIBZ_TRUE HAVE_LIBZ PKGCONFIG USE_TEST_BUNDLES_FALSE USE_TEST_BUNDLES_TRUE USE_UNITY_FALSE USE_UNITY_TRUE HAVE_WINDRES_FALSE HAVE_WINDRES_TRUE ENABLE_SERVER_DEBUG_FALSE ENABLE_SERVER_DEBUG_TRUE BUILD_UNITTESTS_FALSE BUILD_UNITTESTS_TRUE CURL_WERROR_FALSE CURL_WERROR_TRUE CURL_CFLAG_EXTRAS DOING_NATIVE_WINDOWS_FALSE DOING_NATIVE_WINDOWS_TRUE LIBCURL_PC_CFLAGS LIBCURL_PC_CFLAGS_PRIVATE USE_CPPFLAG_CURL_STATICLIB_FALSE USE_CPPFLAG_CURL_STATICLIB_TRUE CURL_LT_SHLIB_USE_MIMPURE_TEXT_FALSE CURL_LT_SHLIB_USE_MIMPURE_TEXT_TRUE CURL_LT_SHLIB_USE_NO_UNDEFINED_FALSE CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE CURL_LT_SHLIB_USE_VERSION_INFO_FALSE CURL_LT_SHLIB_USE_VERSION_INFO_TRUE NOT_CURL_CI_FALSE NOT_CURL_CI_TRUE RC LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR FILECMD LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP LIBTOOL OBJDUMP DLLTOOL AS AR_FLAGS host_os host_vendor host_cpu host build_os build_vendor build_cpu build HTTPD_NGHTTPX HTTPD APXS VSFTPD CADDY TEST_NGHTTPX VERSIONNUM CURLVERSION CSCOPE ETAGS CTAGS am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__include DEPDIR am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc LCOV GCOV CPP OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM libext AR EGREP GREP SED CONFIGURE_OPTIONS CURLDEBUG_FALSE CURLDEBUG_TRUE DEBUGBUILD_FALSE DEBUGBUILD_TRUE AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME SHELL PATH_SEPARATOR am__quote' ac_subst_files='' ac_user_opts=' enable_option_checking enable_maintainer_mode enable_silent_rules enable_debug enable_optimize enable_warnings enable_werror enable_curldebug enable_symbol_hiding enable_ares enable_rt enable_httpsrr enable_ech enable_ssls_export enable_code_coverage enable_dependency_tracking with_schannel with_secure_transport with_amissl with_ssl with_openssl with_gnutls with_mbedtls with_wolfssl with_bearssl with_rustls with_test_nghttpx with_test_caddy with_test_vsftpd with_test_httpd with_darwinssl enable_largefile enable_shared enable_static with_pic enable_fast_install with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock enable_server_debug enable_unity enable_test_bundles enable_http enable_ftp enable_file enable_ipfs enable_ldap enable_ldaps enable_rtsp enable_proxy enable_dict enable_telnet enable_tftp enable_pop3 enable_imap enable_smb enable_smtp enable_gopher enable_mqtt enable_manual enable_docs enable_libcurl_option enable_libgcc with_zlib with_brotli with_zstd with_ldap_lib with_lber_lib enable_ipv6 with_gssapi_includes with_gssapi_libs with_gssapi with_default_ssl_backend enable_openssl_auto_load_config with_ca_bundle with_ca_path with_ca_fallback with_ca_embed enable_ca_search enable_ca_search_safe with_libpsl with_libgsasl with_libmetalink with_libssh2 with_libssh with_wolfssh with_librtmp enable_versioned_symbols enable_windows_unicode with_winidn with_apple_idn with_libidn2 with_nghttp2 with_ngtcp2 with_openssl_quic with_nghttp3 with_quiche with_msh3 with_libuv with_zsh_functions_dir with_fish_functions_dir enable_threaded_resolver enable_verbose enable_sspi enable_basic_auth enable_bearer_auth enable_digest_auth enable_kerberos_auth enable_negotiate_auth enable_aws enable_ntlm enable_tls_srp enable_unix_sockets enable_cookies enable_socketpair enable_http_auth enable_doh enable_mime enable_bindlocal enable_form_api enable_dateparse enable_netrc enable_progress_meter enable_sha512_256 enable_dnsshuffle enable_get_easy_options enable_alt_svc enable_headers_api enable_hsts enable_websockets ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP LT_SYS_LIBRARY_PATH' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures curl - to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/curl] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of curl -:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-debug Enable debug build options --disable-debug Disable debug build options --enable-optimize Enable compiler optimizations --disable-optimize Disable compiler optimizations --enable-warnings Enable strict compiler warnings --disable-warnings Disable strict compiler warnings --enable-werror Enable compiler warnings as errors --disable-werror Disable compiler warnings as errors --enable-curldebug Enable curl debug memory tracking --disable-curldebug Disable curl debug memory tracking --enable-symbol-hiding Enable hiding of library internal symbols --disable-symbol-hiding Disable hiding of library internal symbols --enable-ares[=PATH] Enable c-ares for DNS lookups --disable-ares Disable c-ares for DNS lookups --disable-rt disable dependency on -lrt --enable-httpsrr Enable HTTPSRR support --disable-httpsrr Disable HTTPSRR support --enable-ech Enable ECH support --disable-ech Disable ECH support --enable-ssls-export Enable SSL session export support --disable-ssls-export Disable SSL session export support --enable-code-coverage Provide code coverage --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --disable-largefile omit support for large files --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-server-debug Enable debug options for test servers --disable-server-debug Disable debug options for test servers --enable-unity Enable unity mode --disable-unity Disable unity (default) --enable-test-bundles Enable test bundles --disable-test-bundles Disable test bundles (default) --enable-http Enable HTTP support --disable-http Disable HTTP support --enable-ftp Enable FTP support --disable-ftp Disable FTP support --enable-file Enable FILE support --disable-file Disable FILE support --enable-ipfs Enable IPFS support --disable-ipfs Disable IPFS support --enable-ldap Enable LDAP support --disable-ldap Disable LDAP support --enable-ldaps Enable LDAPS support --disable-ldaps Disable LDAPS support --enable-rtsp Enable RTSP support --disable-rtsp Disable RTSP support --enable-proxy Enable proxy support --disable-proxy Disable proxy support --enable-dict Enable DICT support --disable-dict Disable DICT support --enable-telnet Enable TELNET support --disable-telnet Disable TELNET support --enable-tftp Enable TFTP support --disable-tftp Disable TFTP support --enable-pop3 Enable POP3 support --disable-pop3 Disable POP3 support --enable-imap Enable IMAP support --disable-imap Disable IMAP support --enable-smb Enable SMB/CIFS support --disable-smb Disable SMB/CIFS support --enable-smtp Enable SMTP support --disable-smtp Disable SMTP support --enable-gopher Enable Gopher support --disable-gopher Disable Gopher support --enable-mqtt Enable MQTT support --disable-mqtt Disable MQTT support --enable-manual Enable built-in manual --disable-manual Disable built-in manual --enable-docs Enable documentation --disable-docs Disable documentation --enable-libcurl-option Enable --libcurl C code generation support --disable-libcurl-option Disable --libcurl C code generation support --enable-libgcc use libgcc when linking --enable-ipv6 Enable IPv6 (with IPv4) support --disable-ipv6 Disable IPv6 support --enable-openssl-auto-load-config Enable automatic loading of OpenSSL configuration --disable-openssl-auto-load-config Disable automatic loading of OpenSSL configuration --enable-ca-search Enable unsafe CA bundle search in PATH on Windows (default) --disable-ca-search Disable unsafe CA bundle search in PATH on Windows --enable-ca-search-safe Enable safe CA bundle search --disable-ca-search-safe Disable safe CA bundle search (default) --enable-versioned-symbols Enable versioned symbols in shared library --disable-versioned-symbols Disable versioned symbols in shared library --enable-windows-unicode Enable Windows Unicode --disable-windows-unicode Disable Windows Unicode (default) --enable-threaded-resolver Enable threaded resolver --disable-threaded-resolver Disable threaded resolver --enable-verbose Enable verbose strings --disable-verbose Disable verbose strings --enable-sspi Enable SSPI --disable-sspi Disable SSPI --enable-basic-auth Enable basic authentication (default) --disable-basic-auth Disable basic authentication --enable-bearer-auth Enable bearer authentication (default) --disable-bearer-auth Disable bearer authentication --enable-digest-auth Enable digest authentication (default) --disable-digest-auth Disable digest authentication --enable-kerberos-auth Enable kerberos authentication (default) --disable-kerberos-auth Disable kerberos authentication --enable-negotiate-auth Enable negotiate authentication (default) --disable-negotiate-auth Disable negotiate authentication --enable-aws Enable AWS sig support (default) --disable-aws Disable AWS sig support --enable-ntlm Enable NTLM support --disable-ntlm Disable NTLM support --enable-tls-srp Enable TLS-SRP authentication --disable-tls-srp Disable TLS-SRP authentication --enable-unix-sockets Enable Unix domain sockets --disable-unix-sockets Disable Unix domain sockets --enable-cookies Enable cookies support --disable-cookies Disable cookies support --enable-socketpair Enable socketpair support --disable-socketpair Disable socketpair support --enable-http-auth Enable HTTP authentication support --disable-http-auth Disable HTTP authentication support --enable-doh Enable DoH support --disable-doh Disable DoH support --enable-mime Enable mime API support --disable-mime Disable mime API support --enable-bindlocal Enable local binding support --disable-bindlocal Disable local binding support --enable-form-api Enable form API support --disable-form-api Disable form API support --enable-dateparse Enable date parsing --disable-dateparse Disable date parsing --enable-netrc Enable netrc parsing --disable-netrc Disable netrc parsing --enable-progress-meter Enable progress-meter --disable-progress-meter Disable progress-meter --enable-sha512-256 Enable SHA-512/256 hash algorithm (default) --disable-sha512-256 Disable SHA-512/256 hash algorithm --enable-dnsshuffle Enable DNS shuffling --disable-dnsshuffle Disable DNS shuffling --enable-get-easy-options Enable curl_easy_options --disable-get-easy-options Disable curl_easy_options --enable-alt-svc Enable alt-svc support --disable-alt-svc Disable alt-svc support --enable-headers-api Enable headers-api support --disable-headers-api Disable headers-api support --enable-hsts Enable HSTS support --disable-hsts Disable HSTS support --enable-websockets Enable WebSockets support --disable-websockets Disable WebSockets support Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-schannel enable Windows native SSL/TLS --with-secure-transport enable Apple OS native SSL/TLS --with-amissl enable Amiga native SSL/TLS (AmiSSL) --with-ssl=PATH old version of --with-openssl --without-ssl build without any TLS library --with-openssl=PATH Where to look for OpenSSL, PATH points to the SSL installation (default: /usr/local/ssl); when possible, set the PKG_CONFIG_PATH environment variable instead of using this option --with-gnutls=PATH where to look for GnuTLS, PATH points to the installation root --with-mbedtls=PATH where to look for mbedTLS, PATH points to the installation root --with-wolfssl=PATH where to look for wolfSSL, PATH points to the installation root (default: system lib default) --with-bearssl=PATH where to look for BearSSL, PATH points to the installation root --with-rustls=PATH where to look for Rustls, PATH points to the installation root --with-test-nghttpx=PATH where to find nghttpx for testing --with-test-caddy=PATH where to find caddy for testing --with-test-vsftpd=PATH where to find vsftpd for testing --with-test-httpd=PATH where to find httpd/apache2 for testing --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-zlib=PATH search for zlib in PATH --without-zlib disable use of zlib --with-brotli=PATH Where to look for brotli, PATH points to the BROTLI installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option --without-brotli disable BROTLI --with-zstd=PATH Where to look for libzstd, PATH points to the libzstd installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option --without-zstd disable libzstd --with-ldap-lib=libname Specify name of ldap lib file --with-lber-lib=libname Specify name of lber lib file --with-gssapi-includes=DIR Specify location of GSS-API headers --with-gssapi-libs=DIR Specify location of GSS-API libs --with-gssapi=DIR Where to look for GSS-API --with-default-ssl-backend=NAME Use NAME as default SSL backend --without-default-ssl-backend Use implicit default SSL backend --with-ca-bundle=FILE Absolute path to a file containing CA certificates (example: /etc/ca-bundle.crt) --without-ca-bundle Don't use a default CA bundle --with-ca-path=DIRECTORY Absolute path to a directory containing CA certificates stored individually, with their filenames in a hash format. This option can be used with the OpenSSL, GnuTLS, mbedTLS and wolfSSL backends. Refer to OpenSSL c_rehash for details. (example: /etc/certificates) --without-ca-path Don't use a default CA path --with-ca-fallback Use the built-in CA store of the SSL library --without-ca-fallback Don't use the built-in CA store of the SSL library --with-ca-embed=FILE Absolute path to a file containing CA certificates to embed in the curl tool (example: /etc/ca-bundle.crt) --without-ca-embed Don't embed a default CA bundle in the curl tool --with-libpsl=PATH Where to look for libpsl, PATH points to the LIBPSL installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option --without-libpsl disable LIBPSL --without-libgsasl disable libgsasl support for SCRAM --with-libssh2=PATH Where to look for libssh2, PATH points to the libssh2 installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option --with-libssh2 enable libssh2 --with-libssh=PATH Where to look for libssh, PATH points to the libssh installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option --with-libssh enable libssh --with-wolfssh=PATH Where to look for wolfssh, PATH points to the wolfSSH installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option --with-wolfssh enable wolfssh --with-librtmp=PATH Where to look for librtmp, PATH points to the LIBRTMP installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option --without-librtmp disable LIBRTMP --with-winidn=PATH enable Windows native IDN --without-winidn disable Windows native IDN --with-apple-idn Enable AppleIDN --without-apple-idn Disable AppleIDN --with-libidn2=PATH Enable libidn2 usage --without-libidn2 Disable libidn2 usage --with-nghttp2=PATH Enable nghttp2 usage --without-nghttp2 Disable nghttp2 usage --with-ngtcp2=PATH Enable ngtcp2 usage --without-ngtcp2 Disable ngtcp2 usage --with-openssl-quic Enable OpenSSL QUIC usage --without-openssl-quic Disable OpenSSL QUIC usage --with-nghttp3=PATH Enable nghttp3 usage --without-nghttp3 Disable nghttp3 usage --with-quiche=PATH Enable quiche usage --without-quiche Disable quiche usage --with-msh3=PATH Enable msh3 usage --without-msh3 Disable msh3 usage --with-libuv=PATH Enable libuv --without-libuv Disable libuv --with-zsh-functions-dir=PATH Install zsh completions to PATH --without-zsh-functions-dir Do not install zsh completions --with-fish-functions-dir=PATH Install fish completions to PATH --without-fish-functions-dir Do not install fish completions Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor LT_SYS_LIBRARY_PATH User-defined run-time library search path. Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF curl configure - generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. Copyright (C) Daniel Stenberg, This configure script may be copied, distributed and modified under the terms of the curl license; see COPYING for more details _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define $2 innocuous_$2 #ifdef __STDC__ # include #else # include #endif #undef $2 #ifdef __cplusplus extern "C" #endif char $2 (); #if defined __stub_$2 || defined __stub___$2 #error force compilation error #endif int main(void) { return $2 (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_c_try_run LINENO # ---------------------- # Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that # executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: program exited with status $ac_status" >&5 printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_type LINENO SIZEOF_LONG_LONG VAR INCLUDES # ------------------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main(void) { if (sizeof ($2)) return 0; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main(void) { if (sizeof (($2))) return 0; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR # ------------------------------------------------------------------ # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR # accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. ac_fn_check_decl () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack as_decl_name=`echo $2|sed 's/ *(.*//'` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 printf %s "checking whether $as_decl_name is declared... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` eval ac_save_FLAGS=\$$6 as_fn_append $6 " $5" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main(void) { #ifndef $as_decl_name #ifdef __cplusplus (void) $as_decl_use; #else (void) $as_decl_name; #endif #endif return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext eval $6=\$ac_save_FLAGS fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_check_decl # ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES # ---------------------------------------------------- # Tries to find if the field MEMBER exists in type AGGR, after including # INCLUDES, setting cache variable VAR accordingly. ac_fn_c_check_member () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 printf %s "checking for $2.$3... " >&6; } if eval test \${$4+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main(void) { static $2 ac_aggr; if (ac_aggr.$3) return 0; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$4=yes" else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main(void) { static $2 ac_aggr; if (sizeof ac_aggr.$3) return 0; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$4=yes" else $as_nop eval "$4=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$4 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_member ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by curl $as_me -, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' /* Does the compiler advertise C89 conformance? Do not test the value of __STDC__, because some compilers set it to 0 while being otherwise adequately conformant. */ #if !defined __STDC__ # error "Compiler does not advertise C89 conformance" #endif #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ struct buf { int x; }; struct buf * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not \xHH hex character constants. These do not provoke an error unfortunately, instead are silently treated as an "x". The following induces an error, until -std is added to get proper ANSI mode. Curiously \x00 != x always comes out true, for an array size at least. It is necessary to write \x00 == 0 to get something that is true only with -std. */ int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) '\''x'\'' int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), int, int);' # Test code for whether the C compiler supports C89 (body of main). ac_c_conftest_c89_main=' ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); ' # Test code for whether the C compiler supports C99 (global declarations) ac_c_conftest_c99_globals=' // Does the compiler advertise C99 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare // FILE and stderr. #define debug(...) dprintf (2, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK #error "your preprocessor is broken" #endif #if BIG_OK #else #error "your preprocessor is broken" #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) continue; return 0; } // Check varargs and va_copy. static bool test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str = ""; int number = 0; float fnumber = 0; while (*format) { switch (*format++) { case '\''s'\'': // string str = va_arg (args_copy, const char *); break; case '\''d'\'': // int number = va_arg (args_copy, int); break; case '\''f'\'': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); return *str && number && fnumber; } ' # Test code for whether the C compiler supports C99 (body of main). ac_c_conftest_c99_main=' // Check bool. _Bool success = false; success |= (argc != 0); // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[0] = argv[0][0]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' || dynamic_array[ni.number - 1] != 543); ' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' // Does the compiler advertise C11 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif // Check _Alignas. char _Alignas (double) aligned_as_double; char _Alignas (0) no_special_alignment; extern char aligned_as_int; char _Alignas (0) _Alignas (int) aligned_as_int; // Check _Alignof. enum { int_alignment = _Alignof (int), int_array_alignment = _Alignof (int[100]), char_alignment = _Alignof (char) }; _Static_assert (0 < -_Alignof (int), "_Alignof is signed"); // Check _Noreturn. int _Noreturn does_not_return (void) { for (;;) continue; } // Check _Static_assert. struct test_static_assert { int x; _Static_assert (sizeof (int) <= sizeof (long int), "_Static_assert does not work in struct"); long int y; }; // Check UTF-8 literals. #define u8 syntax error! char const utf8_literal[] = u8"happens to be ASCII" "another string"; // Check duplicate typedefs. typedef long *long_ptr; typedef long int *long_ptr; typedef long_ptr long_ptr; // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. struct anonymous { union { struct { int i; int j; }; struct { int k; long int l; } w; }; int m; } v1; ' # Test code for whether the C compiler supports C11 (body of main). ac_c_conftest_c11_main=' _Static_assert ((offsetof (struct anonymous, i) == offsetof (struct anonymous, w.k)), "Anonymous union alignment botch"); v1.i = 2; v1.w.k = 5; ok |= v1.i != 5; ' # Test code for whether the C compiler supports C11 (complete). ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} ${ac_c_conftest_c11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} ${ac_c_conftest_c11_main} return ok; } " # Test code for whether the C compiler supports C99 (complete). ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} return ok; } " # Test code for whether the C compiler supports C89 (complete). ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} return ok; } " as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" # Auxiliary files required by this configure script. ac_aux_files="ltmain.sh config.guess config.sub missing compile install-sh" # Locations in which to look for auxiliary files. ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." # Search for a directory containing all of the required auxiliary files, # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. # If we don't find one directory that contains all the files we need, # we report the set of missing files from the *first* directory in # $ac_aux_dir_candidates and give up. ac_missing_aux_files="" ac_first_candidate=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in $ac_aux_dir_candidates do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ac_aux_dir_found=yes ac_install_sh= for ac_aux in $ac_aux_files do # As a special case, if "install-sh" is required, that requirement # can be satisfied by any of "install-sh", "install.sh", or "shtool", # and $ac_install_sh is set appropriately for whichever one is found. if test x"$ac_aux" = x"install-sh" then if test -f "${as_dir}install-sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ac_install_sh="${as_dir}install-sh -c" elif test -f "${as_dir}install.sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ac_install_sh="${as_dir}install.sh -c" elif test -f "${as_dir}shtool"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ac_install_sh="${as_dir}shtool install -c" else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} install-sh" else break fi fi else if test -f "${as_dir}${ac_aux}"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" else break fi fi fi done if test "$ac_aux_dir_found" = yes; then ac_aux_dir="$as_dir" break fi ac_first_candidate=false as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. if test -f "${ac_aux_dir}config.guess"; then ac_config_guess="$SHELL ${ac_aux_dir}config.guess" fi if test -f "${ac_aux_dir}config.sub"; then ac_config_sub="$SHELL ${ac_aux_dir}config.sub" fi if test -f "$ac_aux_dir/configure"; then ac_configure="$SHELL ${ac_aux_dir}configure" fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # using curl-override.m4 ac_config_headers="$ac_config_headers lib/curl_config.h" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 printf %s "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test ${enable_maintainer_mode+y} then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else $as_nop USE_MAINTAINER_MODE=no fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 printf "%s\n" "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE # Check whether --enable-silent-rules was given. if test ${enable_silent_rules+y} then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=0;; esac am_make=${MAKE-make} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 printf %s "checking whether $am_make supports nested variables... " >&6; } if test ${am_cv_make_support_nested_variables+y} then : printf %s "(cached) " >&6 else $as_nop if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable debug build options" >&5 printf %s "checking whether to enable debug build options... " >&6; } OPT_DEBUG_BUILD="default" # Check whether --enable-debug was given. if test ${enable_debug+y} then : enableval=$enable_debug; OPT_DEBUG_BUILD=$enableval fi case "$OPT_DEBUG_BUILD" in no) want_debug="no" ;; default) want_debug="no" ;; *) want_debug="yes" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $want_debug" >&5 printf "%s\n" "$want_debug" >&6; } if test x$want_debug = xyes; then DEBUGBUILD_TRUE= DEBUGBUILD_FALSE='#' else DEBUGBUILD_TRUE='#' DEBUGBUILD_FALSE= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable compiler optimizer" >&5 printf %s "checking whether to enable compiler optimizer... " >&6; } OPT_COMPILER_OPTIMIZE="default" # Check whether --enable-optimize was given. if test ${enable_optimize+y} then : enableval=$enable_optimize; OPT_COMPILER_OPTIMIZE=$enableval fi case "$OPT_COMPILER_OPTIMIZE" in no) want_optimize="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; default) if test "$want_debug" = "yes"; then want_optimize="assume_no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (assumed) no" >&5 printf "%s\n" "(assumed) no" >&6; } else want_optimize="assume_yes" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (assumed) yes" >&5 printf "%s\n" "(assumed) yes" >&6; } fi ;; *) want_optimize="yes" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable strict compiler warnings" >&5 printf %s "checking whether to enable strict compiler warnings... " >&6; } OPT_COMPILER_WARNINGS="default" # Check whether --enable-warnings was given. if test ${enable_warnings+y} then : enableval=$enable_warnings; OPT_COMPILER_WARNINGS=$enableval fi case "$OPT_COMPILER_WARNINGS" in no) want_warnings="no" ;; default) want_warnings="$want_debug" ;; *) want_warnings="yes" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $want_warnings" >&5 printf "%s\n" "$want_warnings" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable compiler warnings as errors" >&5 printf %s "checking whether to enable compiler warnings as errors... " >&6; } OPT_COMPILER_WERROR="default" # Check whether --enable-werror was given. if test ${enable_werror+y} then : enableval=$enable_werror; OPT_COMPILER_WERROR=$enableval fi case "$OPT_COMPILER_WERROR" in no) want_werror="no" ;; default) want_werror="no" ;; *) want_werror="yes" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $want_werror" >&5 printf "%s\n" "$want_werror" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable curl debug memory tracking" >&5 printf %s "checking whether to enable curl debug memory tracking... " >&6; } OPT_CURLDEBUG_BUILD="default" # Check whether --enable-curldebug was given. if test ${enable_curldebug+y} then : enableval=$enable_curldebug; OPT_CURLDEBUG_BUILD=$enableval fi case "$OPT_CURLDEBUG_BUILD" in no) want_curldebug="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; default) if test "$want_debug" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (assumed) yes" >&5 printf "%s\n" "(assumed) yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi want_curldebug_assumed="yes" want_curldebug="$want_debug" ;; *) want_curldebug="yes" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac if test x$want_curldebug = xyes; then CURLDEBUG_TRUE= CURLDEBUG_FALSE='#' else CURLDEBUG_TRUE='#' CURLDEBUG_FALSE= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable hiding of library internal symbols" >&5 printf %s "checking whether to enable hiding of library internal symbols... " >&6; } OPT_SYMBOL_HIDING="default" # Check whether --enable-symbol-hiding was given. if test ${enable_symbol_hiding+y} then : enableval=$enable_symbol_hiding; OPT_SYMBOL_HIDING=$enableval fi case "$OPT_SYMBOL_HIDING" in no) want_symbol_hiding="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; default) want_symbol_hiding="yes" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; *) want_symbol_hiding="yes" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable c-ares for DNS lookups" >&5 printf %s "checking whether to enable c-ares for DNS lookups... " >&6; } OPT_ARES="default" # Check whether --enable-ares was given. if test ${enable_ares+y} then : enableval=$enable_ares; OPT_ARES=$enableval fi case "$OPT_ARES" in no) want_ares="no" ;; default) want_ares="no" ;; *) want_ares="yes" if test -n "$enableval" && test "$enableval" != "yes"; then want_ares_path="$enableval" fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $want_ares" >&5 printf "%s\n" "$want_ares" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to disable dependency on -lrt" >&5 printf %s "checking whether to disable dependency on -lrt... " >&6; } OPT_RT="default" # Check whether --enable-rt was given. if test ${enable_rt+y} then : enableval=$enable_rt; OPT_RT=$enableval fi case "$OPT_RT" in no) dontwant_rt="yes" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; default) dontwant_rt="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (assumed no)" >&5 printf "%s\n" "(assumed no)" >&6; } ;; *) dontwant_rt="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable HTTPSRR support" >&5 printf %s "checking whether to enable HTTPSRR support... " >&6; } OPT_HTTPSRR="default" # Check whether --enable-httpsrr was given. if test ${enable_httpsrr+y} then : enableval=$enable_httpsrr; OPT_HTTPSRR=$enableval fi case "$OPT_HTTPSRR" in no) want_httpsrr="no" curl_httpsrr_msg="no (--enable-httpsrr)" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; default) want_httpsrr="no" curl_httpsrr_msg="no (--enable-httpsrr)" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; *) want_httpsrr="yes" curl_httpsrr_msg="enabled" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable ECH support" >&5 printf %s "checking whether to enable ECH support... " >&6; } OPT_ECH="default" # Check whether --enable-ech was given. if test ${enable_ech+y} then : enableval=$enable_ech; OPT_ECH=$enableval fi case "$OPT_ECH" in no) want_ech="no" curl_ech_msg="no (--enable-ech)" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; default) want_ech="no" curl_ech_msg="no (--enable-ech)" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; *) want_ech="yes" curl_ech_msg="enabled (--disable-ech)" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable SSL session export support" >&5 printf %s "checking whether to enable SSL session export support... " >&6; } OPT_SSLS_EXPORT="default" # Check whether --enable-ssls-export was given. if test ${enable_ssls_export+y} then : enableval=$enable_ssls_export; OPT_SSLS_EXPORT=$enableval fi case "$OPT_SSLS_EXPORT" in no) want_ssls_export="no" curl_ssls_export_msg="no (--enable-ssls-export)" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; default) want_ssls_export="no" curl_ssls_export_msg="no (--enable-ssls-export)" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; *) want_ssls_export="yes" curl_ssls_export_msg="enabled (--disable-ssls-export)" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac # # Check that 'XC_CONFIGURE_PREAMBLE' has already run. # if test -z "$xc_configure_preamble_result"; then as_fn_error $? "xc_configure_preamble_result not set (internal problem)" "$LINENO" 5 fi # # Check that 'PATH_SEPARATOR' has already been set. # if test -z "$xc_PATH_SEPARATOR"; then as_fn_error $? "xc_PATH_SEPARATOR not set (internal problem)" "$LINENO" 5 fi if test -z "$PATH_SEPARATOR"; then as_fn_error $? "PATH_SEPARATOR not set (internal or config.site problem)" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for path separator" >&5 printf %s "checking for path separator... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PATH_SEPARATOR" >&5 printf "%s\n" "$PATH_SEPARATOR" >&6; } if test "x$PATH_SEPARATOR" != "x$xc_PATH_SEPARATOR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for initial path separator" >&5 printf %s "checking for initial path separator... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xc_PATH_SEPARATOR" >&5 printf "%s\n" "$xc_PATH_SEPARATOR" >&6; } as_fn_error $? "path separator mismatch (internal or config.site problem)" "$LINENO" 5 fi # # save the configure arguments # CONFIGURE_OPTIONS="\"$ac_configure_args\"" if test -z "$SED"; then # Extract the first word of "sed", so it can be a program name with args. set dummy sed; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_SED+y} then : printf %s "(cached) " >&6 else $as_nop case $SED in [\\/]* | ?:[\\/]*) ac_cv_path_SED="$SED" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_SED="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_SED" && ac_cv_path_SED="not_found" ;; esac fi SED=$ac_cv_path_SED if test -n "$SED"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SED" >&5 printf "%s\n" "$SED" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test -z "$SED" || test "$SED" = "not_found"; then as_fn_error $? "sed not found in PATH. Cannot continue without sed." "$LINENO" 5 fi fi if test -z "$GREP"; then # Extract the first word of "grep", so it can be a program name with args. set dummy grep; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_GREP+y} then : printf %s "(cached) " >&6 else $as_nop case $GREP in [\\/]* | ?:[\\/]*) ac_cv_path_GREP="$GREP" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_GREP="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GREP" && ac_cv_path_GREP="not_found" ;; esac fi GREP=$ac_cv_path_GREP if test -n "$GREP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GREP" >&5 printf "%s\n" "$GREP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test -z "$GREP" || test "$GREP" = "not_found"; then as_fn_error $? "grep not found in PATH. Cannot continue without grep." "$LINENO" 5 fi fi if test -z "$EGREP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that grep -E works" >&5 printf %s "checking that grep -E works... " >&6; } if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then EGREP="$GREP -E" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } # Extract the first word of "egrep", so it can be a program name with args. set dummy egrep; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_EGREP+y} then : printf %s "(cached) " >&6 else $as_nop case $EGREP in [\\/]* | ?:[\\/]*) ac_cv_path_EGREP="$EGREP" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_EGREP="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_EGREP" && ac_cv_path_EGREP="not_found" ;; esac fi EGREP=$ac_cv_path_EGREP if test -n "$EGREP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $EGREP" >&5 printf "%s\n" "$EGREP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi fi if test -z "$EGREP" || test "$EGREP" = "not_found"; then as_fn_error $? "grep -E is not working and egrep is not found in PATH. Cannot continue." "$LINENO" 5 fi if test -z "$AR"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_AR+y} then : printf %s "(cached) " >&6 else $as_nop case $AR in [\\/]* | ?:[\\/]*) ac_cv_path_AR="$AR" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_AR="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi AR=$ac_cv_path_AR if test -n "$AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 printf "%s\n" "$AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_AR"; then ac_pt_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_AR+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_AR in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_AR="$ac_pt_AR" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_AR="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_AR=$ac_cv_path_ac_pt_AR if test -n "$ac_pt_AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_AR" >&5 printf "%s\n" "$ac_pt_AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_AR" = x; then AR="not_found" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_pt_AR fi else AR="$ac_cv_path_AR" fi if test -z "$AR" || test "$AR" = "not_found"; then as_fn_error $? "ar not found in PATH. Cannot continue without ar." "$LINENO" 5 fi fi CURLVERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)".*/\1/p' ${srcdir}/include/curl/curlver.h` xc_prog_cc_prev_IFS=$IFS xc_prog_cc_prev_LIBS=$LIBS xc_prog_cc_prev_CFLAGS=$CFLAGS xc_prog_cc_prev_LDFLAGS=$LDFLAGS xc_prog_cc_prev_CPPFLAGS=$CPPFLAGS xc_bad_var_libs=no for xc_word in $LIBS; do case "$xc_word" in -l* | --library=*) : ;; *) xc_bad_var_libs=yes ;; esac done if test $xc_bad_var_libs = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: using LIBS: $LIBS" >&5 printf "%s\n" "$as_me: using LIBS: $LIBS" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: LIBS note: LIBS should only be used to specify libraries (-lname)." >&5 printf "%s\n" "$as_me: LIBS note: LIBS should only be used to specify libraries (-lname)." >&6;} fi xc_bad_var_ldflags=no for xc_word in $LDFLAGS; do case "$xc_word" in -D*) xc_bad_var_ldflags=yes ;; -U*) xc_bad_var_ldflags=yes ;; -I*) xc_bad_var_ldflags=yes ;; -l* | --library=*) xc_bad_var_ldflags=yes ;; esac done if test $xc_bad_var_ldflags = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: using LDFLAGS: $LDFLAGS" >&5 printf "%s\n" "$as_me: using LDFLAGS: $LDFLAGS" >&6;} xc_bad_var_msg="LDFLAGS note: LDFLAGS should only be used to specify linker flags, not" for xc_word in $LDFLAGS; do case "$xc_word" in -D*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg macro definitions. Use CPPFLAGS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg macro definitions. Use CPPFLAGS for: $xc_word" >&6;} ;; -U*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg macro suppressions. Use CPPFLAGS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg macro suppressions. Use CPPFLAGS for: $xc_word" >&6;} ;; -I*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg include directories. Use CPPFLAGS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg include directories. Use CPPFLAGS for: $xc_word" >&6;} ;; -l* | --library=*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&6;} ;; esac done fi xc_bad_var_cppflags=no for xc_word in $CPPFLAGS; do case "$xc_word" in -rpath*) xc_bad_var_cppflags=yes ;; -L* | --library-path=*) xc_bad_var_cppflags=yes ;; -l* | --library=*) xc_bad_var_cppflags=yes ;; esac done if test $xc_bad_var_cppflags = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: using CPPFLAGS: $CPPFLAGS" >&5 printf "%s\n" "$as_me: using CPPFLAGS: $CPPFLAGS" >&6;} xc_bad_var_msg="CPPFLAGS note: CPPFLAGS should only be used to specify C preprocessor flags, not" for xc_word in $CPPFLAGS; do case "$xc_word" in -rpath*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg library runtime directories. Use LDFLAGS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg library runtime directories. Use LDFLAGS for: $xc_word" >&6;} ;; -L* | --library-path=*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg library directories. Use LDFLAGS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg library directories. Use LDFLAGS for: $xc_word" >&6;} ;; -l* | --library=*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&6;} ;; esac done fi xc_bad_var_cflags=no for xc_word in $CFLAGS; do case "$xc_word" in -D*) xc_bad_var_cflags=yes ;; -U*) xc_bad_var_cflags=yes ;; -I*) xc_bad_var_cflags=yes ;; -rpath*) xc_bad_var_cflags=yes ;; -L* | --library-path=*) xc_bad_var_cflags=yes ;; -l* | --library=*) xc_bad_var_cflags=yes ;; esac done if test $xc_bad_var_cflags = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: using CFLAGS: $CFLAGS" >&5 printf "%s\n" "$as_me: using CFLAGS: $CFLAGS" >&6;} xc_bad_var_msg="CFLAGS note: CFLAGS should only be used to specify C compiler flags, not" for xc_word in $CFLAGS; do case "$xc_word" in -D*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg macro definitions. Use CPPFLAGS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg macro definitions. Use CPPFLAGS for: $xc_word" >&6;} ;; -U*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg macro suppressions. Use CPPFLAGS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg macro suppressions. Use CPPFLAGS for: $xc_word" >&6;} ;; -I*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg include directories. Use CPPFLAGS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg include directories. Use CPPFLAGS for: $xc_word" >&6;} ;; -rpath*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg library runtime directories. Use LDFLAGS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg library runtime directories. Use LDFLAGS for: $xc_word" >&6;} ;; -L* | --library-path=*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg library directories. Use LDFLAGS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg library directories. Use LDFLAGS for: $xc_word" >&6;} ;; -l* | --library=*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&6;} ;; esac done fi if test $xc_bad_var_libs = yes || test $xc_bad_var_cflags = yes || test $xc_bad_var_ldflags = yes || test $xc_bad_var_cppflags = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Continuing even with errors mentioned immediately above this line." >&5 printf "%s\n" "$as_me: WARNING: Continuing even with errors mentioned immediately above this line." >&2;} fi # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test ${ac_cv_path_install+y} then : printf %s "(cached) " >&6 else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac # Account for fact that we put trailing slashes in our PATH walk. case $as_dir in #(( ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 printf %s "checking whether the C compiler works... " >&6; } ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else $as_nop ac_file='' fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { #ifndef __GNUC__ choke me #endif return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 printf %s "checking whether $CC understands -c and -o together... " >&6; } if test ${am_cv_prog_cc_c_o+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 printf %s "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test ${ac_cv_prog_CPP+y} then : printf %s "(cached) " >&6 else $as_nop # Double quotes because $CC needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 printf "%s\n" "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu IFS=$xc_prog_cc_prev_IFS LIBS=$xc_prog_cc_prev_LIBS CFLAGS=$xc_prog_cc_prev_CFLAGS LDFLAGS=$xc_prog_cc_prev_LDFLAGS CPPFLAGS=$xc_prog_cc_prev_CPPFLAGS ac_header= ac_cache= for ac_item in $ac_header_c_list do if test $ac_cache; then ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then printf "%s\n" "#define $ac_item 1" >> confdefs.h fi ac_header= ac_cache= elif test $ac_header; then ac_cache=$ac_item else ac_header=$ac_item fi done if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes then : printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h fi for ac_header in stdatomic.h do : ac_fn_c_check_header_compile "$LINENO" "stdatomic.h" "ac_cv_header_stdatomic_h" "$ac_includes_default" if test "x$ac_cv_header_stdatomic_h" = xyes then : printf "%s\n" "#define HAVE_STDATOMIC_H 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if _Atomic is available" >&5 printf %s "checking if _Atomic is available... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_unistd int main(void) { _Atomic int i = 0; i = 4; // Force an atomic-write operation. (void)i; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_ATOMIC 1" >>confdefs.h tst_atomic="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_atomic="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 printf %s "checking for a sed that does not truncate output... " >&6; } if test ${ac_cv_path_SED+y} then : printf %s "(cached) " >&6 else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in sed gsed do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for code coverage support" >&5 printf %s "checking for code coverage support... " >&6; } coverage="no" curl_coverage_msg="disabled" # Check whether --enable-code-coverage was given. if test ${enable_code_coverage+y} then : enableval=$enable_code_coverage; coverage="$enableval" fi if test "$GCC" != "yes" then : coverage="no" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $coverage" >&5 printf "%s\n" "$coverage" >&6; } if test "x$coverage" = "xyes"; then curl_coverage_msg="enabled" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcov", so it can be a program name with args. set dummy ${ac_tool_prefix}gcov; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_GCOV+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$GCOV"; then ac_cv_prog_GCOV="$GCOV" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_GCOV="${ac_tool_prefix}gcov" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi GCOV=$ac_cv_prog_GCOV if test -n "$GCOV"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GCOV" >&5 printf "%s\n" "$GCOV" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_GCOV"; then ac_ct_GCOV=$GCOV # Extract the first word of "gcov", so it can be a program name with args. set dummy gcov; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_GCOV+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_GCOV"; then ac_cv_prog_ac_ct_GCOV="$ac_ct_GCOV" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_GCOV="gcov" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_GCOV=$ac_cv_prog_ac_ct_GCOV if test -n "$ac_ct_GCOV"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GCOV" >&5 printf "%s\n" "$ac_ct_GCOV" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_GCOV" = x; then GCOV="gcov" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac GCOV=$ac_ct_GCOV fi else GCOV="$ac_cv_prog_GCOV" fi if test -z "$GCOV"; then as_fn_error $? "needs gcov for code coverage" "$LINENO" 5 fi # Extract the first word of "lcov", so it can be a program name with args. set dummy lcov; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_LCOV+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$LCOV"; then ac_cv_prog_LCOV="$LCOV" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_LCOV="lcov" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LCOV=$ac_cv_prog_LCOV if test -n "$LCOV"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LCOV" >&5 printf "%s\n" "$LCOV" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test -z "$LCOV"; then as_fn_error $? "needs lcov for code coverage" "$LINENO" 5 fi CPPFLAGS="$CPPFLAGS -DNDEBUG" CFLAGS="$CFLAGS -O0 -g -fprofile-arcs -ftest-coverage" LIBS="$LIBS -lgcov" fi am__api_version='1.16' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 printf %s "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 printf %s "checking for a race-free mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test ${ac_cv_path_mkdir+y} then : printf %s "(cached) " >&6 else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir ('*'coreutils) '* | \ 'BusyBox '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test ${ac_cv_path_mkdir+y}; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 printf "%s\n" "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 printf "%s\n" "$AWK" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval test \${ac_cv_prog_make_${ac_make}_set+y} then : printf %s "(cached) " >&6 else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } SET_MAKE= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } case $?:`cat confinc.out 2>/dev/null` in #( '0:this is the am__doit target') : case $s in #( BSD) : am__include='.include' am__quote='"' ;; #( *) : am__include='include' am__quote='' ;; esac ;; #( *) : ;; esac if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 printf "%s\n" "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. if test ${enable_dependency_tracking+y} then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ## --------------------------------------- ## ## Start of automake initialization code ## ## --------------------------------------- ## if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='curl' VERSION='-' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' depcc="$CC" am_compiler_list= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 printf %s "checking dependency style of $depcc... " >&6; } if test ${am_cv_CC_dependencies_compiler_type+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi if test -z "$ETAGS"; then ETAGS=etags fi if test -z "$CSCOPE"; then CSCOPE=cscope fi # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi ## ------------------------------------- ## ## End of automake initialization code ## ## ------------------------------------- ## { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking curl version" >&5 printf %s "checking curl version... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CURLVERSION" >&5 printf "%s\n" "$CURLVERSION" >&6; } VERSIONNUM=`$SED -ne 's/^#define LIBCURL_VERSION_NUM 0x\([0-9A-Fa-f]*\).*/\1/p' ${srcdir}/include/curl/curlver.h` curl_ssl_msg="no (--with-{openssl,gnutls,mbedtls,wolfssl,schannel,secure-transport,amissl,bearssl,rustls} )" curl_ssh_msg="no (--with-{libssh,libssh2})" curl_zlib_msg="no (--with-zlib)" curl_brotli_msg="no (--with-brotli)" curl_zstd_msg="no (--with-zstd)" curl_gss_msg="no (--with-gssapi)" curl_gsasl_msg="no (--with-gsasl)" curl_tls_srp_msg="no (--enable-tls-srp)" curl_res_msg="blocking (--enable-ares / --enable-threaded-resolver)" curl_ipv6_msg="no (--enable-ipv6)" curl_unix_sockets_msg="no (--enable-unix-sockets)" curl_idn_msg="no (--with-{libidn2,winidn})" curl_docs_msg="enabled (--disable-docs)" curl_manual_msg="no (--enable-manual)" curl_libcurl_msg="enabled (--disable-libcurl-option)" curl_verbose_msg="enabled (--disable-verbose)" curl_sspi_msg="no (--enable-sspi)" curl_ldap_msg="no (--enable-ldap / --with-ldap-lib / --with-lber-lib)" curl_ldaps_msg="no (--enable-ldaps)" curl_ipfs_msg="no (--enable-ipfs)" curl_rtsp_msg="no (--enable-rtsp)" curl_rtmp_msg="no (--with-librtmp)" curl_psl_msg="no (--with-libpsl)" curl_altsvc_msg="enabled (--disable-alt-svc)" curl_headers_msg="enabled (--disable-headers-api)" curl_hsts_msg="enabled (--disable-hsts)" ssl_backends= curl_h1_msg="enabled (internal)" curl_h2_msg="no (--with-nghttp2)" curl_h3_msg="no (--with-ngtcp2 --with-nghttp3, --with-quiche, --with-openssl-quic, --with-msh3)" enable_altsvc="yes" hsts="yes" INITIAL_LDFLAGS=$LDFLAGS INITIAL_LIBS=$LIBS compilersh="run-compiler" CURL_SAVED_CC="$CC" export CURL_SAVED_CC CURL_SAVED_LD_LIBRARY_PATH="$LD_LIBRARY_PATH" export CURL_SAVED_LD_LIBRARY_PATH cat <<\EOF > "$compilersh" CC="$CURL_SAVED_CC" export CC LD_LIBRARY_PATH="$CURL_SAVED_LD_LIBRARY_PATH" export LD_LIBRARY_PATH exec $CC "$@" EOF OPT_SCHANNEL=no # Check whether --with-schannel was given. if test ${with_schannel+y} then : withval=$with_schannel; OPT_SCHANNEL=$withval TLSCHOICE="schannel" fi OPT_SECURETRANSPORT=no # Check whether --with-secure-transport was given. if test ${with_secure_transport+y} then : withval=$with_secure_transport; OPT_SECURETRANSPORT=$withval TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }Secure-Transport" fi OPT_AMISSL=no # Check whether --with-amissl was given. if test ${with_amissl+y} then : withval=$with_amissl; OPT_AMISSL=$withval TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }AmiSSL" fi OPT_OPENSSL=no ca="no" # Check whether --with-ssl was given. if test ${with_ssl+y} then : withval=$with_ssl; OPT_SSL=$withval OPT_OPENSSL=$withval if test X"$withval" != Xno; then TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL" else SSL_DISABLED="D" fi fi # Check whether --with-openssl was given. if test ${with_openssl+y} then : withval=$with_openssl; OPT_OPENSSL=$withval if test X"$withval" != Xno; then TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL" fi fi OPT_GNUTLS=no # Check whether --with-gnutls was given. if test ${with_gnutls+y} then : withval=$with_gnutls; OPT_GNUTLS=$withval if test X"$withval" != Xno; then TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }GnuTLS" fi fi OPT_MBEDTLS=no # Check whether --with-mbedtls was given. if test ${with_mbedtls+y} then : withval=$with_mbedtls; OPT_MBEDTLS=$withval if test X"$withval" != Xno; then TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }mbedTLS" fi fi OPT_WOLFSSL=no # Check whether --with-wolfssl was given. if test ${with_wolfssl+y} then : withval=$with_wolfssl; OPT_WOLFSSL=$withval if test X"$withval" != Xno; then TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }wolfSSL" fi fi OPT_BEARSSL=no # Check whether --with-bearssl was given. if test ${with_bearssl+y} then : withval=$with_bearssl; OPT_BEARSSL=$withval if test X"$withval" != Xno; then TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }BearSSL" fi fi OPT_RUSTLS=no # Check whether --with-rustls was given. if test ${with_rustls+y} then : withval=$with_rustls; OPT_RUSTLS=$withval if test X"$withval" != Xno; then TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }rustls" experimental="$experimental rustls" fi fi TEST_NGHTTPX=nghttpx # Check whether --with-test-nghttpx was given. if test ${with_test_nghttpx+y} then : withval=$with_test_nghttpx; TEST_NGHTTPX=$withval if test X"$TEST_NGHTTPX" = "Xno"; then TEST_NGHTTPX="" fi fi if test -x /usr/bin/caddy; then CADDY=/usr/bin/caddy elif test -x /usr/local/bin/caddy; then CADDY=/usr/local/bin/caddy elif test -x "`brew --prefix 2>/dev/null`/bin/caddy"; then CADDY=`brew --prefix`/bin/caddy fi # Check whether --with-test-caddy was given. if test ${with_test_caddy+y} then : withval=$with_test_caddy; CADDY=$withval if test X"$CADDY" = "Xno"; then CADDY="" fi fi if test -x /usr/sbin/vsftpd; then VSFTPD=/usr/sbin/vsftpd elif test -x /usr/local/sbin/vsftpd; then VSFTPD=/usr/local/sbin/vsftpd elif test -x "`brew --prefix 2>/dev/null`/sbin/vsftpd"; then VSFTPD=`brew --prefix`/sbin/vsftpd fi # Check whether --with-test-vsftpd was given. if test ${with_test_vsftpd+y} then : withval=$with_test_vsftpd; VSFTPD=$withval if test X"$VSFTPD" = "Xno"; then VSFTPD="" fi fi HTTPD_ENABLED="maybe" # Check whether --with-test-httpd was given. if test ${with_test_httpd+y} then : withval=$with_test_httpd; request_httpd=$withval else $as_nop request_httpd=check fi if test x"$request_httpd" = "xcheck" -o x"$request_httpd" = "xyes"; then if test -x "/usr/sbin/apache2"; then # common location on distros (debian/ubuntu) HTTPD="/usr/sbin/apache2" # Extract the first word of "apxs", so it can be a program name with args. set dummy apxs; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_APXS+y} then : printf %s "(cached) " >&6 else $as_nop case $APXS in [\\/]* | ?:[\\/]*) ac_cv_path_APXS="$APXS" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_APXS="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi APXS=$ac_cv_path_APXS if test -n "$APXS"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $APXS" >&5 printf "%s\n" "$APXS" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$APXS" = "x"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: apache2-dev not installed, httpd tests disabled" >&5 printf "%s\n" "$as_me: apache2-dev not installed, httpd tests disabled" >&6;} HTTPD_ENABLED="no" fi else # Extract the first word of "httpd", so it can be a program name with args. set dummy httpd; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_HTTPD+y} then : printf %s "(cached) " >&6 else $as_nop case $HTTPD in [\\/]* | ?:[\\/]*) ac_cv_path_HTTPD="$HTTPD" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_HTTPD="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi HTTPD=$ac_cv_path_HTTPD if test -n "$HTTPD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $HTTPD" >&5 printf "%s\n" "$HTTPD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$HTTPD" = "x"; then # Extract the first word of "apache2", so it can be a program name with args. set dummy apache2; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_HTTPD+y} then : printf %s "(cached) " >&6 else $as_nop case $HTTPD in [\\/]* | ?:[\\/]*) ac_cv_path_HTTPD="$HTTPD" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_HTTPD="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi HTTPD=$ac_cv_path_HTTPD if test -n "$HTTPD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $HTTPD" >&5 printf "%s\n" "$HTTPD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi # Extract the first word of "apxs", so it can be a program name with args. set dummy apxs; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_APXS+y} then : printf %s "(cached) " >&6 else $as_nop case $APXS in [\\/]* | ?:[\\/]*) ac_cv_path_APXS="$APXS" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_APXS="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi APXS=$ac_cv_path_APXS if test -n "$APXS"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $APXS" >&5 printf "%s\n" "$APXS" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$HTTPD" = "x"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: httpd/apache2 not in PATH, http tests disabled" >&5 printf "%s\n" "$as_me: httpd/apache2 not in PATH, http tests disabled" >&6;} HTTPD_ENABLED="no" fi if test "x$APXS" = "x"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: apxs not in PATH, http tests disabled" >&5 printf "%s\n" "$as_me: apxs not in PATH, http tests disabled" >&6;} HTTPD_ENABLED="no" fi fi elif test x"$request_httpd" != "xno"; then HTTPD="${request_httpd}/bin/httpd" APXS="${request_httpd}/bin/apxs" if test ! -x "${HTTPD}"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: httpd not found as ${HTTPD}, http tests disabled" >&5 printf "%s\n" "$as_me: httpd not found as ${HTTPD}, http tests disabled" >&6;} HTTPD_ENABLED="no" elif test ! -x "${APXS}"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: apxs not found as ${APXS}, http tests disabled" >&5 printf "%s\n" "$as_me: apxs not found as ${APXS}, http tests disabled" >&6;} HTTPD_ENABLED="no" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: using HTTPD=$HTTPD for tests" >&5 printf "%s\n" "$as_me: using HTTPD=$HTTPD for tests" >&6;} fi fi if test x"$HTTPD_ENABLED" = "xno"; then HTTPD="" APXS="" fi if test "x$TEST_NGHTTPX" != "x" -a "x$TEST_NGHTTPX" != "xnghttpx"; then HTTPD_NGHTTPX="$TEST_NGHTTPX" else # Extract the first word of "nghttpx", so it can be a program name with args. set dummy nghttpx; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_HTTPD_NGHTTPX+y} then : printf %s "(cached) " >&6 else $as_nop case $HTTPD_NGHTTPX in [\\/]* | ?:[\\/]*) ac_cv_path_HTTPD_NGHTTPX="$HTTPD_NGHTTPX" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_HTTPD_NGHTTPX="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi HTTPD_NGHTTPX=$ac_cv_path_HTTPD_NGHTTPX if test -n "$HTTPD_NGHTTPX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $HTTPD_NGHTTPX" >&5 printf "%s\n" "$HTTPD_NGHTTPX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test "x$TEST_CADDY" != "x"; then CADDY="$TEST_CADDY" else # Extract the first word of "caddy", so it can be a program name with args. set dummy caddy; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_CADDY+y} then : printf %s "(cached) " >&6 else $as_nop case $CADDY in [\\/]* | ?:[\\/]*) ac_cv_path_CADDY="$CADDY" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_CADDY="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi CADDY=$ac_cv_path_CADDY if test -n "$CADDY"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CADDY" >&5 printf "%s\n" "$CADDY" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$TLSCHOICE"; then if test "x$OPT_SSL" != "xno"; then as_fn_error $? "select TLS backend(s) or disable TLS with --without-ssl. Select from these: --with-amissl --with-bearssl --with-gnutls --with-mbedtls --with-openssl (also works for BoringSSL and LibreSSL) --with-rustls --with-schannel --with-secure-transport --with-wolfssl " "$LINENO" 5 fi fi # Check whether --with-darwinssl was given. if test ${with_darwinssl+y} then : withval=$with_darwinssl; as_fn_error $? "--with-darwin-ssl and --without-darwin-ssl no longer work!" "$LINENO" 5 fi # Make sure we can run config.sub. $SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 printf %s "checking build system type... " >&6; } if test ${ac_cv_build+y} then : printf %s "(cached) " >&6 else $as_nop ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 printf %s "checking host system type... " >&6; } if test ${ac_cv_host+y} then : printf %s "(cached) " >&6 else $as_nop if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac printf "%s\n" "#define CURL_OS \"${host}\"" >>confdefs.h # Silence warning: ar: 'u' modifier ignored since 'D' is the default AR_FLAGS=cr { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 printf %s "checking for grep that handles long lines and -e... " >&6; } if test ${ac_cv_path_GREP+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in grep ggrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 printf "%s\n" "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 printf %s "checking for egrep... " >&6; } if test ${ac_cv_path_EGREP+y} then : printf %s "(cached) " >&6 else $as_nop if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in egrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 printf "%s\n" "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if OS is AIX (to define _ALL_SOURCE)" >&5 printf %s "checking if OS is AIX (to define _ALL_SOURCE)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _AIX yes_this_is_aix #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes_this_is_aix" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -rf conftest* # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if _THREAD_SAFE is already defined" >&5 printf %s "checking if _THREAD_SAFE is already defined... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { #ifdef _THREAD_SAFE int dummy = 1; (void)dummy; #else #error force compilation error #endif return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tmp_thread_safe_initially_defined="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tmp_thread_safe_initially_defined="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # if test "$tmp_thread_safe_initially_defined" = "no"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if _THREAD_SAFE is actually needed" >&5 printf %s "checking if _THREAD_SAFE is actually needed... " >&6; } case $host_os in aix[123].* | aix4.[012].*) tmp_need_thread_safe="no" ;; aix*) tmp_need_thread_safe="yes" ;; *) tmp_need_thread_safe="no" ;; esac if test "$tmp_need_thread_safe" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if _THREAD_SAFE is onwards defined" >&5 printf %s "checking if _THREAD_SAFE is onwards defined... " >&6; } if test "$tmp_thread_safe_initially_defined" = "yes" || test "$tmp_need_thread_safe" = "yes"; then printf "%s\n" "#define NEED_THREAD_SAFE 1" >>confdefs.h cat >>confdefs.h <<_EOF #ifndef _THREAD_SAFE # define _THREAD_SAFE #endif _EOF { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if _REENTRANT is already defined" >&5 printf %s "checking if _REENTRANT is already defined... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { #ifdef _REENTRANT int dummy = 1; (void)dummy; #else #error force compilation error #endif return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tmp_reentrant_initially_defined="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tmp_reentrant_initially_defined="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # if test "$tmp_reentrant_initially_defined" = "no"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if _REENTRANT is actually needed" >&5 printf %s "checking if _REENTRANT is actually needed... " >&6; } case $host_os in solaris*) tmp_need_reentrant="yes" ;; *) tmp_need_reentrant="no" ;; esac if test "$tmp_need_reentrant" = "no"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { if(0 != errno) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : tmp_errno="yes" else $as_nop tmp_errno="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test "$tmp_errno" = "yes"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { #ifdef errno int dummy = 1; (void)dummy; #else #error force compilation error #endif return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : tmp_errno="errno_macro_defined" else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _REENTRANT #include int main(void) { #ifdef errno int dummy = 1; (void)dummy; #else #error force compilation error #endif return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : tmp_errno="errno_macro_needs_reentrant" tmp_need_reentrant="yes" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi if test "$tmp_need_reentrant" = "no"; then if test "$tmp_need_reentrant" = "no"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define gmtime_r innocuous_gmtime_r #ifdef __STDC__ # include #else # include #endif #undef gmtime_r #ifdef __cplusplus extern "C" #endif char gmtime_r (); #if defined __stub_gmtime_r || defined __stub___gmtime_r #error force compilation error #endif int main(void) { return gmtime_r (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : tmp_gmtime_r="yes" else $as_nop tmp_gmtime_r="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$tmp_gmtime_r" = "yes"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "gmtime_r" >/dev/null 2>&1 then : tmp_gmtime_r="proto_declared" else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _REENTRANT #include #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "gmtime_r" >/dev/null 2>&1 then : tmp_gmtime_r="proto_needs_reentrant" tmp_need_reentrant="yes" fi rm -rf conftest* fi rm -rf conftest* fi fi if test "$tmp_need_reentrant" = "no"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define localtime_r innocuous_localtime_r #ifdef __STDC__ # include #else # include #endif #undef localtime_r #ifdef __cplusplus extern "C" #endif char localtime_r (); #if defined __stub_localtime_r || defined __stub___localtime_r #error force compilation error #endif int main(void) { return localtime_r (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : tmp_localtime_r="yes" else $as_nop tmp_localtime_r="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$tmp_localtime_r" = "yes"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "localtime_r" >/dev/null 2>&1 then : tmp_localtime_r="proto_declared" else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _REENTRANT #include #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "localtime_r" >/dev/null 2>&1 then : tmp_localtime_r="proto_needs_reentrant" tmp_need_reentrant="yes" fi rm -rf conftest* fi rm -rf conftest* fi fi if test "$tmp_need_reentrant" = "no"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define strerror_r innocuous_strerror_r #ifdef __STDC__ # include #else # include #endif #undef strerror_r #ifdef __cplusplus extern "C" #endif char strerror_r (); #if defined __stub_strerror_r || defined __stub___strerror_r #error force compilation error #endif int main(void) { return strerror_r (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : tmp_strerror_r="yes" else $as_nop tmp_strerror_r="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$tmp_strerror_r" = "yes"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "strerror_r" >/dev/null 2>&1 then : tmp_strerror_r="proto_declared" else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _REENTRANT #include #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "strerror_r" >/dev/null 2>&1 then : tmp_strerror_r="proto_needs_reentrant" tmp_need_reentrant="yes" fi rm -rf conftest* fi rm -rf conftest* fi fi if test "$tmp_need_reentrant" = "no"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define gethostbyname_r innocuous_gethostbyname_r #ifdef __STDC__ # include #else # include #endif #undef gethostbyname_r #ifdef __cplusplus extern "C" #endif char gethostbyname_r (); #if defined __stub_gethostbyname_r || defined __stub___gethostbyname_r #error force compilation error #endif int main(void) { return gethostbyname_r (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : tmp_gethostbyname_r="yes" else $as_nop tmp_gethostbyname_r="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$tmp_gethostbyname_r" = "yes"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "gethostbyname_r" >/dev/null 2>&1 then : tmp_gethostbyname_r="proto_declared" else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _REENTRANT #include #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "gethostbyname_r" >/dev/null 2>&1 then : tmp_gethostbyname_r="proto_needs_reentrant" tmp_need_reentrant="yes" fi rm -rf conftest* fi rm -rf conftest* fi fi if test "$tmp_need_reentrant" = "no"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define getprotobyname_r innocuous_getprotobyname_r #ifdef __STDC__ # include #else # include #endif #undef getprotobyname_r #ifdef __cplusplus extern "C" #endif char getprotobyname_r (); #if defined __stub_getprotobyname_r || defined __stub___getprotobyname_r #error force compilation error #endif int main(void) { return getprotobyname_r (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : tmp_getprotobyname_r="yes" else $as_nop tmp_getprotobyname_r="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$tmp_getprotobyname_r" = "yes"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "getprotobyname_r" >/dev/null 2>&1 then : tmp_getprotobyname_r="proto_declared" else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _REENTRANT #include #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "getprotobyname_r" >/dev/null 2>&1 then : tmp_getprotobyname_r="proto_needs_reentrant" tmp_need_reentrant="yes" fi rm -rf conftest* fi rm -rf conftest* fi fi fi if test "$tmp_need_reentrant" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if _REENTRANT is onwards defined" >&5 printf %s "checking if _REENTRANT is onwards defined... " >&6; } if test "$tmp_reentrant_initially_defined" = "yes" || test "$tmp_need_reentrant" = "yes"; then printf "%s\n" "#define NEED_REENTRANT 1" >>confdefs.h cat >>confdefs.h <<_EOF #ifndef _REENTRANT # define _REENTRANT #endif _EOF { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # # Check whether --enable-largefile was given. if test ${enable_largefile+y} then : enableval=$enable_largefile; fi if test "$enable_largefile" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 printf %s "checking for special C compiler options needed for large files... " >&6; } if test ${ac_cv_sys_largefile_CC+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_sys_largefile_CC=no if test "$GCC" != yes; then ac_save_CC=$CC while :; do # IRIX 6.2 and later do not support large files by default, # so use the C compiler's -n32 option if that helps. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main(void) { return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : break fi rm -f core conftest.err conftest.$ac_objext conftest.beam CC="$CC -n32" if ac_fn_c_try_compile "$LINENO" then : ac_cv_sys_largefile_CC=' -n32'; break fi rm -f core conftest.err conftest.$ac_objext conftest.beam break done CC=$ac_save_CC rm -f conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 printf "%s\n" "$ac_cv_sys_largefile_CC" >&6; } if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } if test ${ac_cv_sys_file_offset_bits+y} then : printf %s "(cached) " >&6 else $as_nop while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main(void) { return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_sys_file_offset_bits=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _FILE_OFFSET_BITS 64 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main(void) { return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_sys_file_offset_bits=64; break fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_sys_file_offset_bits=unknown break done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 printf "%s\n" "$ac_cv_sys_file_offset_bits" >&6; } case $ac_cv_sys_file_offset_bits in #( no | unknown) ;; *) printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h ;; esac rm -rf conftest* if test $ac_cv_sys_file_offset_bits = unknown; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 printf %s "checking for _LARGE_FILES value needed for large files... " >&6; } if test ${ac_cv_sys_large_files+y} then : printf %s "(cached) " >&6 else $as_nop while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main(void) { return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_sys_large_files=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGE_FILES 1 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main(void) { return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_sys_large_files=1; break fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_sys_large_files=unknown break done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 printf "%s\n" "$ac_cv_sys_large_files" >&6; } case $ac_cv_sys_large_files in #( no | unknown) ;; *) printf "%s\n" "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h ;; esac rm -rf conftest* fi fi case `pwd` in *\ * | *\ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.7' macro_revision='2.4.7' ltmain=$ac_aux_dir/ltmain.sh # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 printf %s "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case $ECHO in printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5 printf "%s\n" "printf" >&6; } ;; print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 printf "%s\n" "print -r" >&6; } ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5 printf "%s\n" "cat" >&6; } ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 printf %s "checking for a sed that does not truncate output... " >&6; } if test ${ac_cv_path_SED+y} then : printf %s "(cached) " >&6 else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in sed gsed do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 printf %s "checking for fgrep... " >&6; } if test ${ac_cv_path_FGREP+y} then : printf %s "(cached) " >&6 else $as_nop if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in fgrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 printf "%s\n" "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test ${with_gnu_ld+y} then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else $as_nop with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test ${lt_cv_path_LD+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 printf "%s\n" "$LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${lt_cv_prog_gnu_ld+y} then : printf %s "(cached) " >&6 else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if test ${lt_cv_path_NM+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 printf "%s\n" "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DUMPBIN+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 printf "%s\n" "$DUMPBIN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DUMPBIN+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 printf "%s\n" "$ac_ct_DUMPBIN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 printf %s "checking the name lister ($NM) interface... " >&6; } if test ${lt_cv_nm_interface+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 printf "%s\n" "$lt_cv_nm_interface" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 printf %s "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 printf "%s\n" "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 printf %s "checking the maximum length of command line arguments... " >&6; } if test ${lt_cv_sys_max_cmd_len+y} then : printf %s "(cached) " >&6 else $as_nop i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n "$lt_cv_sys_max_cmd_len"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 printf "%s\n" "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 printf %s "checking how to convert $build file names to $host format... " >&6; } if test ${lt_cv_to_host_file_cmd+y} then : printf %s "(cached) " >&6 else $as_nop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 printf %s "checking how to convert $build file names to toolchain format... " >&6; } if test ${lt_cv_to_tool_file_cmd+y} then : printf %s "(cached) " >&6 else $as_nop #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 printf %s "checking for $LD option to reload object files... " >&6; } if test ${lt_cv_ld_reload_flag+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ld_reload_flag='-r' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 printf "%s\n" "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) if test yes = "$GCC"; then reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}file", so it can be a program name with args. set dummy ${ac_tool_prefix}file; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_FILECMD+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$FILECMD"; then ac_cv_prog_FILECMD="$FILECMD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_FILECMD="${ac_tool_prefix}file" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi FILECMD=$ac_cv_prog_FILECMD if test -n "$FILECMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FILECMD" >&5 printf "%s\n" "$FILECMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_FILECMD"; then ac_ct_FILECMD=$FILECMD # Extract the first word of "file", so it can be a program name with args. set dummy file; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_FILECMD+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_FILECMD"; then ac_cv_prog_ac_ct_FILECMD="$ac_ct_FILECMD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_FILECMD="file" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_FILECMD=$ac_cv_prog_ac_ct_FILECMD if test -n "$ac_ct_FILECMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FILECMD" >&5 printf "%s\n" "$ac_ct_FILECMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_FILECMD" = x; then FILECMD=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac FILECMD=$ac_ct_FILECMD fi else FILECMD="$ac_cv_prog_FILECMD" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OBJDUMP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 printf "%s\n" "$OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OBJDUMP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 printf "%s\n" "$ac_ct_OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 printf %s "checking how to recognize dependent libraries... " >&6; } if test ${lt_cv_deplibs_check_method+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='$FILECMD -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly* | midnightbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=$FILECMD case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DLLTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 printf "%s\n" "$DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DLLTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 printf "%s\n" "$ac_ct_DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 printf %s "checking how to associate runtime and link libraries... " >&6; } if test ${lt_cv_sharedlib_from_linklib_cmd+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AR+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 printf "%s\n" "$AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_AR+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 printf "%s\n" "$ac_ct_AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} # Use ARFLAGS variable as AR's operation code to sync the variable naming with # Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have # higher priority because thats what people were doing historically (setting # ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS # variable obsoleted/removed. test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} lt_ar_flags=$AR_FLAGS # Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override # by AR_FLAGS because that was never working and AR_FLAGS is about to die. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 printf %s "checking for archiver @FILE support... " >&6; } if test ${lt_cv_ar_at_file+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 printf "%s\n" "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 printf "%s\n" "$RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 printf "%s\n" "$ac_ct_RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 printf %s "checking command to parse $NM output from $compiler object... " >&6; } if test ${lt_cv_sys_global_symbol_pipe+y} then : printf %s "(cached) " >&6 else $as_nop # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++ or ICC, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5 if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 printf "%s\n" "failed" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 printf "%s\n" "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 printf %s "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test ${with_sysroot+y} then : withval=$with_sysroot; else $as_nop with_sysroot=no fi lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 printf "%s\n" "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 printf "%s\n" "${lt_sysroot:-no}" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 printf %s "checking for a working dd... " >&6; } if test ${ac_cv_path_lt_DD+y} then : printf %s "(cached) " >&6 else $as_nop printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then ac_path_lt_DD_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in dd do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi $ac_path_lt_DD_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_lt_DD"; then : fi else ac_cv_path_lt_DD=$lt_DD fi rm -f conftest.i conftest2.i conftest.out fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 printf "%s\n" "$ac_cv_path_lt_DD" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 printf %s "checking how to truncate binary pipes... " >&6; } if test ${lt_cv_truncate_bin+y} then : printf %s "(cached) " >&6 else $as_nop printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 printf "%s\n" "$lt_cv_truncate_bin" >&6; } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # Check whether --enable-libtool-lock was given. if test ${enable_libtool_lock+y} then : enableval=$enable_libtool_lock; fi test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf case `$FILECMD conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `$FILECMD conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `$FILECMD conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `$FILECMD conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 printf %s "checking whether the C compiler needs -belf... " >&6; } if test ${lt_cv_cc_needs_belf+y} then : printf %s "(cached) " >&6 else $as_nop ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_cc_needs_belf=yes else $as_nop lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 printf "%s\n" "$MANIFEST_TOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if test ${lt_cv_path_mainfest_tool+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 printf "%s\n" "$lt_cv_path_mainfest_tool" >&6; } if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DSYMUTIL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 printf "%s\n" "$DSYMUTIL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DSYMUTIL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 printf "%s\n" "$ac_ct_DSYMUTIL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_NMEDIT+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 printf "%s\n" "$NMEDIT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_NMEDIT+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 printf "%s\n" "$ac_ct_NMEDIT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_LIPO+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 printf "%s\n" "$LIPO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_LIPO+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 printf "%s\n" "$ac_ct_LIPO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 printf "%s\n" "$OTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 printf "%s\n" "$ac_ct_OTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL64+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 printf "%s\n" "$OTOOL64" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL64+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 printf "%s\n" "$ac_ct_OTOOL64" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 printf %s "checking for -single_module linker flag... " >&6; } if test ${lt_cv_apple_cc_single_mod+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 printf %s "checking for -exported_symbols_list linker flag... " >&6; } if test ${lt_cv_ld_exported_symbols_list+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_ld_exported_symbols_list=yes else $as_nop lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 printf %s "checking for -force_load linker flag... " >&6; } if test ${lt_cv_ld_force_load+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR $AR_FLAGS libconftest.a conftest.o" >&5 $AR $AR_FLAGS libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 printf "%s\n" "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) case $MACOSX_DEPLOYMENT_TARGET,$host in 10.[012],*|,*powerpc*-darwin[5-8]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; *) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes then : printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h fi # ------------------------------------ # # Determine libtool default behavior # # ------------------------------------ # # # Default behavior is to enable shared and static libraries on systems # where libtool knows how to build both library versions, and does not # require separate configuration and build runs for each flavor. # xc_lt_want_enable_shared='yes' xc_lt_want_enable_static='yes' # # User may have disabled shared or static libraries. # case "x$enable_shared" in # ( xno) xc_lt_want_enable_shared='no' ;; esac case "x$enable_static" in # ( xno) xc_lt_want_enable_static='no' ;; esac if test "x$xc_lt_want_enable_shared" = 'xno' && test "x$xc_lt_want_enable_static" = 'xno'; then as_fn_error $? "can not disable shared and static libraries simultaneously" "$LINENO" 5 fi # # Default behavior on systems that require independent configuration # and build runs for shared and static is to enable shared libraries # and disable static ones. On these systems option '--disable-shared' # must be used in order to build a proper static library. # if test "x$xc_lt_want_enable_shared" = 'xyes' && test "x$xc_lt_want_enable_static" = 'xyes'; then case $host_os in # ( pw32* | cegcc* | os2* | aix*) xc_lt_want_enable_static='no' ;; esac fi # # Make libtool aware of current shared and static library preferences # taking in account that, depending on host characteristics, libtool # may modify these option preferences later in this configure script. # enable_shared=$xc_lt_want_enable_shared enable_static=$xc_lt_want_enable_static # # Default behavior is to build PIC objects for shared libraries and # non-PIC objects for static libraries. # xc_lt_want_with_pic='default' # # User may have specified PIC preference. # case "x$with_pic" in # (( xno) xc_lt_want_with_pic='no' ;; xyes) xc_lt_want_with_pic='yes' ;; esac # # Default behavior on some systems where building a shared library out # of non-PIC compiled objects will fail with following linker error # "relocation R_X86_64_32 can not be used when making a shared object" # is to build PIC objects even for static libraries. This behavior may # be overridden using 'configure --disable-shared --without-pic'. # if test "x$xc_lt_want_with_pic" = 'xdefault'; then case $host_cpu in # ( x86_64 | amd64 | ia64) case $host_os in # ( linux* | freebsd* | midnightbsd*) xc_lt_want_with_pic='yes' ;; esac ;; esac fi # # Make libtool aware of current PIC preference taking in account that, # depending on host characteristics, libtool may modify PIC default # behavior to fit host system idiosyncrasies later in this script. # with_pic=$xc_lt_want_with_pic ## ----------------------- ## ## Start of libtool code ## ## ----------------------- ## # Set options enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AS+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AS"; then ac_cv_prog_AS="$AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AS="${ac_tool_prefix}as" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AS=$ac_cv_prog_AS if test -n "$AS"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 printf "%s\n" "$AS" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_AS"; then ac_ct_AS=$AS # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_AS+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_AS"; then ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AS="as" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AS=$ac_cv_prog_ac_ct_AS if test -n "$ac_ct_AS"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 printf "%s\n" "$ac_ct_AS" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_AS" = x; then AS="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AS=$ac_ct_AS fi else AS="$ac_cv_prog_AS" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DLLTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 printf "%s\n" "$DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DLLTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 printf "%s\n" "$ac_ct_DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OBJDUMP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 printf "%s\n" "$OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OBJDUMP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 printf "%s\n" "$ac_ct_OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi ;; esac test -z "$AS" && AS=as test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$OBJDUMP" && OBJDUMP=objdump enable_dlopen=no # Check whether --enable-shared was given. if test ${enable_shared+y} then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop enable_shared=yes fi # Check whether --enable-static was given. if test ${enable_static+y} then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop enable_static=yes fi # Check whether --with-pic was given. if test ${with_pic+y} then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop pic_mode=default fi # Check whether --enable-fast-install was given. if test ${enable_fast_install+y} then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop enable_fast_install=yes fi shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 printf %s "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. if test ${with_aix_soname+y} then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$with_aix_soname else $as_nop if test ${lt_cv_with_aix_soname+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_with_aix_soname=aix fi with_aix_soname=$lt_cv_with_aix_soname fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 printf "%s\n" "$with_aix_soname" >&6; } if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 printf %s "checking for objdir... " >&6; } if test ${lt_cv_objdir+y} then : printf %s "(cached) " >&6 else $as_nop rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 printf "%s\n" "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC and # ICC, which need '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o func_cc_basename $compiler cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 printf %s "checking for ${ac_tool_prefix}file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 else $as_nop case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/${ac_tool_prefix}file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 printf "%s\n" "$MAGIC_CMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5 printf %s "checking for file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 else $as_nop case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 printf "%s\n" "$MAGIC_CMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC=$CC ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test ${lt_cv_prog_compiler_rtti_exceptions+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # flang / f18. f95 an alias for gfortran or flang on Debian flang* | f18* | f95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 printf %s "checking for $compiler option to produce PIC... " >&6; } if test ${lt_cv_prog_compiler_pic+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test ${lt_cv_prog_compiler_pic_works+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test ${lt_cv_prog_compiler_static_works+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 printf %s "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 printf "%s\n" "$hard_links" >&6; } if test no = "$hard_links"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='$wl--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=yes ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes file_list_spec='@' ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test no = "$ld_shlibs"; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct=no hardcode_direct_absolute=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' $wl-bernotok' allow_undefined_flag=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl* | icl*) # Native MSVC or ICC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC and ICC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly* | midnightbsd*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 printf %s "checking if $CC understands -b... " >&6; } if test ${lt_cv_prog_compiler__b+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 printf "%s\n" "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if test ${lt_cv_irix_exported_symbol+y} then : printf %s "(cached) " >&6 else $as_nop save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_irix_exported_symbol=yes else $as_nop lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi link_all_deplibs=no else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' ;; esac ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' else archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes file_list_spec='@' ;; osf3*) if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='$wl-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='$wl-z,text' allow_undefined_flag='$wl-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 printf "%s\n" "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 printf %s "checking whether -lc should be explicitly linked in... " >&6; } if test ${lt_cv_archive_cmds_need_lc+y} then : printf %s "(cached) " >&6 else $as_nop $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 printf %s "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl* | *,icl*) # Native MSVC or ICC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC and ICC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly* | midnightbsd*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if test ${lt_cv_shlibpath_overrides_runpath+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 printf "%s\n" "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 printf %s "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && test no != "$hardcode_minus_L"; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 printf "%s\n" "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main(void) { return dlopen (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else $as_nop ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else $as_nop lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes then : lt_cv_dlopen=shl_load else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 printf %s "checking for shl_load in -ldld... " >&6; } if test ${ac_cv_lib_dld_shl_load+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main(void) { return shl_load (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_shl_load=yes else $as_nop ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else $as_nop ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes then : lt_cv_dlopen=dlopen else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main(void) { return dlopen (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else $as_nop ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 printf %s "checking for dlopen in -lsvld... " >&6; } if test ${ac_cv_lib_svld_dlopen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main(void) { return dlopen (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_svld_dlopen=yes else $as_nop ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 printf %s "checking for dld_link in -ldld... " >&6; } if test ${ac_cv_lib_dld_dld_link+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main(void) { return dld_link (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_dld_link=yes else $as_nop ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi fi fi fi fi fi ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 printf %s "checking whether a program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self+y} then : printf %s "(cached) " >&6 else $as_nop if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 printf "%s\n" "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 printf %s "checking whether a statically linked program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self_static+y} then : printf %s "(cached) " >&6 else $as_nop if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 printf "%s\n" "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 printf %s "checking whether stripping libraries is possible... " >&6; } if test -z "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else case $host_os in darwin*) # FIXME - insert some real tests, host_os isn't really good enough striplib="$STRIP -x" old_striplib="$STRIP -S" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; freebsd*) if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; esac fi fi # Report what library types will actually be built { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 printf %s "checking if libtool supports shared libraries... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 printf "%s\n" "$can_build_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 printf %s "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 printf "%s\n" "$enable_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 printf %s "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 printf "%s\n" "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC ac_config_commands="$ac_config_commands libtool" # Only expand once: ## --------------------- ## ## End of libtool code ## ## --------------------- ## # # Verify if finally libtool shared libraries will be built # case "x$enable_shared" in # (( xyes | xno) xc_lt_build_shared=$enable_shared ;; *) as_fn_error $? "unexpected libtool enable_shared value: $enable_shared" "$LINENO" 5 ;; esac # # Verify if finally libtool static libraries will be built # case "x$enable_static" in # (( xyes | xno) xc_lt_build_static=$enable_static ;; *) as_fn_error $? "unexpected libtool enable_static value: $enable_static" "$LINENO" 5 ;; esac # # Verify if libtool shared libraries should be linked using flag -version-info # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries with -version-info" >&5 printf %s "checking whether to build shared libraries with -version-info... " >&6; } xc_lt_shlib_use_version_info='yes' if test "x$version_type" = 'xnone'; then xc_lt_shlib_use_version_info='no' fi case $host_os in # ( amigaos*) xc_lt_shlib_use_version_info='yes' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xc_lt_shlib_use_version_info" >&5 printf "%s\n" "$xc_lt_shlib_use_version_info" >&6; } # # Verify if libtool shared libraries should be linked using flag -no-undefined # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries with -no-undefined" >&5 printf %s "checking whether to build shared libraries with -no-undefined... " >&6; } xc_lt_shlib_use_no_undefined='no' if test "x$allow_undefined" = 'xno'; then xc_lt_shlib_use_no_undefined='yes' elif test "x$allow_undefined_flag" = 'xunsupported'; then xc_lt_shlib_use_no_undefined='yes' fi case $host_os in # ( cygwin* | mingw* | pw32* | cegcc* | os2* | aix*) xc_lt_shlib_use_no_undefined='yes' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xc_lt_shlib_use_no_undefined" >&5 printf "%s\n" "$xc_lt_shlib_use_no_undefined" >&6; } # # Verify if libtool shared libraries should be linked using flag -mimpure-text # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries with -mimpure-text" >&5 printf %s "checking whether to build shared libraries with -mimpure-text... " >&6; } xc_lt_shlib_use_mimpure_text='no' case $host_os in # ( solaris2*) if test "x$GCC" = 'xyes'; then xc_lt_shlib_use_mimpure_text='yes' fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xc_lt_shlib_use_mimpure_text" >&5 printf "%s\n" "$xc_lt_shlib_use_mimpure_text" >&6; } # # Find out whether libtool libraries would be built with PIC # case "x$pic_mode" in # (((( xdefault) xc_lt_build_shared_with_pic='yes' xc_lt_build_static_with_pic='no' ;; xyes) xc_lt_build_shared_with_pic='yes' xc_lt_build_static_with_pic='yes' ;; xno) xc_lt_build_shared_with_pic='no' xc_lt_build_static_with_pic='no' ;; *) xc_lt_build_shared_with_pic='unknown' xc_lt_build_static_with_pic='unknown' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unexpected libtool pic_mode value: $pic_mode" >&5 printf "%s\n" "$as_me: WARNING: unexpected libtool pic_mode value: $pic_mode" >&2;} ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries with PIC" >&5 printf %s "checking whether to build shared libraries with PIC... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xc_lt_build_shared_with_pic" >&5 printf "%s\n" "$xc_lt_build_shared_with_pic" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries with PIC" >&5 printf %s "checking whether to build static libraries with PIC... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xc_lt_build_static_with_pic" >&5 printf "%s\n" "$xc_lt_build_static_with_pic" >&6; } # # Verify if libtool shared libraries will be built while static not built # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries only" >&5 printf %s "checking whether to build shared libraries only... " >&6; } if test "$xc_lt_build_shared" = 'yes' && test "$xc_lt_build_static" = 'no'; then xc_lt_build_shared_only='yes' else xc_lt_build_shared_only='no' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xc_lt_build_shared_only" >&5 printf "%s\n" "$xc_lt_build_shared_only" >&6; } # # Verify if libtool static libraries will be built while shared not built # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries only" >&5 printf %s "checking whether to build static libraries only... " >&6; } if test "$xc_lt_build_static" = 'yes' && test "$xc_lt_build_shared" = 'no'; then xc_lt_build_static_only='yes' else xc_lt_build_static_only='no' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xc_lt_build_static_only" >&5 printf "%s\n" "$xc_lt_build_static_only" >&6; } if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args. set dummy ${ac_tool_prefix}windres; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$RC"; then ac_cv_prog_RC="$RC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RC="${ac_tool_prefix}windres" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RC=$ac_cv_prog_RC if test -n "$RC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RC" >&5 printf "%s\n" "$RC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_RC"; then ac_ct_RC=$RC # Extract the first word of "windres", so it can be a program name with args. set dummy windres; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_RC"; then ac_cv_prog_ac_ct_RC="$ac_ct_RC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RC="windres" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RC=$ac_cv_prog_ac_ct_RC if test -n "$ac_ct_RC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RC" >&5 printf "%s\n" "$ac_ct_RC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RC" = x; then RC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RC=$ac_ct_RC fi else RC="$ac_cv_prog_RC" fi # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o objext_RC=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code=$lt_simple_compile_test_code # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC compiler_RC=$CC func_cc_basename $compiler cc_basename=$func_cc_basename_result lt_cv_prog_compiler_c_o_RC=yes if test -n "$compiler"; then : fi GCC=$lt_save_GCC ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS if test -z "$CURL_CI"; then NOT_CURL_CI_TRUE= NOT_CURL_CI_FALSE='#' else NOT_CURL_CI_TRUE='#' NOT_CURL_CI_FALSE= fi # # Automake conditionals based on libtool related checks # if test "x$xc_lt_shlib_use_version_info" = 'xyes'; then CURL_LT_SHLIB_USE_VERSION_INFO_TRUE= CURL_LT_SHLIB_USE_VERSION_INFO_FALSE='#' else CURL_LT_SHLIB_USE_VERSION_INFO_TRUE='#' CURL_LT_SHLIB_USE_VERSION_INFO_FALSE= fi if test "x$xc_lt_shlib_use_no_undefined" = 'xyes'; then CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE= CURL_LT_SHLIB_USE_NO_UNDEFINED_FALSE='#' else CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE='#' CURL_LT_SHLIB_USE_NO_UNDEFINED_FALSE= fi if test "x$xc_lt_shlib_use_mimpure_text" = 'xyes'; then CURL_LT_SHLIB_USE_MIMPURE_TEXT_TRUE= CURL_LT_SHLIB_USE_MIMPURE_TEXT_FALSE='#' else CURL_LT_SHLIB_USE_MIMPURE_TEXT_TRUE='#' CURL_LT_SHLIB_USE_MIMPURE_TEXT_FALSE= fi # # Due to libtool and automake machinery limitations of not allowing # specifying separate CPPFLAGS or CFLAGS when compiling objects for # inclusion of these in shared or static libraries, we are forced to # build using separate configure runs for shared and static libraries # on systems where different CPPFLAGS or CFLAGS are mandatory in order # to compile objects for each kind of library. Notice that relying on # the '-DPIC' CFLAG that libtool provides is not valid given that the # user might for example choose to build static libraries with PIC. # # # Make our Makefile.am files use the staticlib CPPFLAG only when strictly # targeting a static library and not building its shared counterpart. # if test "x$xc_lt_build_static_only" = 'xyes'; then USE_CPPFLAG_CURL_STATICLIB_TRUE= USE_CPPFLAG_CURL_STATICLIB_FALSE='#' else USE_CPPFLAG_CURL_STATICLIB_TRUE='#' USE_CPPFLAG_CURL_STATICLIB_FALSE= fi # # Make staticlib CPPFLAG variable and its definition visible in output # files unconditionally, providing an empty definition unless strictly # targeting a static library and not building its shared counterpart. # LIBCURL_PC_CFLAGS_PRIVATE='-DCURL_STATICLIB' LIBCURL_PC_CFLAGS= if test "x$xc_lt_build_static_only" = 'xyes'; then LIBCURL_PC_CFLAGS="${LIBCURL_PC_CFLAGS_PRIVATE}" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if cpp -P is needed" >&5 printf %s "checking if cpp -P is needed... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include TEST EINVAL TEST _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "TEST.*TEST" >/dev/null 2>&1 then : cpp=no else $as_nop cpp=yes fi rm -rf conftest* { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cpp" >&5 printf "%s\n" "$cpp" >&6; } if test "x$cpp" = "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if cpp -P works" >&5 printf %s "checking if cpp -P works... " >&6; } OLDCPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS -P" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include TEST EINVAL TEST _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "TEST.*TEST" >/dev/null 2>&1 then : cpp_p=yes else $as_nop cpp_p=no fi rm -rf conftest* { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cpp_p" >&5 printf "%s\n" "$cpp_p" >&6; } if test "x$cpp_p" = "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: failed to figure out cpp -P alternative" >&5 printf "%s\n" "$as_me: WARNING: failed to figure out cpp -P alternative" >&2;} # without -P CPPPFLAG="" else # with -P CPPPFLAG="-P" fi CPPFLAGS=$OLDCPPFLAGS else # without -P CPPPFLAG="" fi # compiler_id="unknown" compiler_ver="" compiler_num="0" # flags_dbg_yes="unknown" flags_opt_all="unknown" flags_opt_yes="unknown" flags_opt_off="unknown" # flags_prefer_cppflags="no" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is DEC/Compaq/HP C" >&5 printf %s "checking if compiler is DEC/Compaq/HP C... " >&6; } OLDCPPFLAGS=$CPPFLAGS # CPPPFLAG comes from CURL_CPP_P CPPFLAGS="$CPPFLAGS $CPPPFLAG" if test -z "$SED"; then as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 fi if test -z "$GREP"; then as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 fi tmp_exp="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __DECC CURL_DEF_TOKEN __DECC #endif _ACEOF if ac_fn_c_try_cpp "$LINENO" then : tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ "$SED" 's/["][ ]*["]//g' 2>/dev/null` if test -z "$tmp_exp" || test "$tmp_exp" = "__DECC"; then tmp_exp="" fi fi rm -f conftest.err conftest.i conftest.$ac_ext if test -z "$tmp_exp"; then curl_cv_have_def___DECC=no else curl_cv_have_def___DECC=yes curl_cv_def___DECC=$tmp_exp fi CPPFLAGS=$OLDCPPFLAGS OLDCPPFLAGS=$CPPFLAGS # CPPPFLAG comes from CURL_CPP_P CPPFLAGS="$CPPFLAGS $CPPPFLAG" if test -z "$SED"; then as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 fi if test -z "$GREP"; then as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 fi tmp_exp="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __DECC_VER CURL_DEF_TOKEN __DECC_VER #endif _ACEOF if ac_fn_c_try_cpp "$LINENO" then : tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ "$SED" 's/["][ ]*["]//g' 2>/dev/null` if test -z "$tmp_exp" || test "$tmp_exp" = "__DECC_VER"; then tmp_exp="" fi fi rm -f conftest.err conftest.i conftest.$ac_ext if test -z "$tmp_exp"; then curl_cv_have_def___DECC_VER=no else curl_cv_have_def___DECC_VER=yes curl_cv_def___DECC_VER=$tmp_exp fi CPPFLAGS=$OLDCPPFLAGS if test "$curl_cv_have_def___DECC" = "yes" && test "$curl_cv_have_def___DECC_VER" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } compiler_id="DEC_C" flags_dbg_yes="-g2" flags_opt_all="-O -O0 -O1 -O2 -O3 -O4" flags_opt_yes="-O1" flags_opt_off="-O0" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is HP-UX C" >&5 printf %s "checking if compiler is HP-UX C... " >&6; } OLDCPPFLAGS=$CPPFLAGS # CPPPFLAG comes from CURL_CPP_P CPPFLAGS="$CPPFLAGS $CPPPFLAG" if test -z "$SED"; then as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 fi if test -z "$GREP"; then as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 fi tmp_exp="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __HP_cc CURL_DEF_TOKEN __HP_cc #endif _ACEOF if ac_fn_c_try_cpp "$LINENO" then : tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ "$SED" 's/["][ ]*["]//g' 2>/dev/null` if test -z "$tmp_exp" || test "$tmp_exp" = "__HP_cc"; then tmp_exp="" fi fi rm -f conftest.err conftest.i conftest.$ac_ext if test -z "$tmp_exp"; then curl_cv_have_def___HP_cc=no else curl_cv_have_def___HP_cc=yes curl_cv_def___HP_cc=$tmp_exp fi CPPFLAGS=$OLDCPPFLAGS if test "$curl_cv_have_def___HP_cc" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } compiler_id="HP_UX_C" flags_dbg_yes="-g" flags_opt_all="-O +O0 +O1 +O2 +O3 +O4" flags_opt_yes="+O2" flags_opt_off="+O0" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is IBM C" >&5 printf %s "checking if compiler is IBM C... " >&6; } OLDCPPFLAGS=$CPPFLAGS # CPPPFLAG comes from CURL_CPP_P CPPFLAGS="$CPPFLAGS $CPPPFLAG" if test -z "$SED"; then as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 fi if test -z "$GREP"; then as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 fi tmp_exp="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __IBMC__ CURL_DEF_TOKEN __IBMC__ #endif _ACEOF if ac_fn_c_try_cpp "$LINENO" then : tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ "$SED" 's/["][ ]*["]//g' 2>/dev/null` if test -z "$tmp_exp" || test "$tmp_exp" = "__IBMC__"; then tmp_exp="" fi fi rm -f conftest.err conftest.i conftest.$ac_ext if test -z "$tmp_exp"; then curl_cv_have_def___IBMC__=no else curl_cv_have_def___IBMC__=yes curl_cv_def___IBMC__=$tmp_exp fi CPPFLAGS=$OLDCPPFLAGS if test "$curl_cv_have_def___IBMC__" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } compiler_id="IBM_C" flags_dbg_yes="-g" flags_opt_all="-O -O0 -O1 -O2 -O3 -O4 -O5" flags_opt_all="$flags_opt_all -qnooptimize" flags_opt_all="$flags_opt_all -qoptimize=0" flags_opt_all="$flags_opt_all -qoptimize=1" flags_opt_all="$flags_opt_all -qoptimize=2" flags_opt_all="$flags_opt_all -qoptimize=3" flags_opt_all="$flags_opt_all -qoptimize=4" flags_opt_all="$flags_opt_all -qoptimize=5" flags_opt_yes="-O2" flags_opt_off="-qnooptimize" flags_prefer_cppflags="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is Intel C" >&5 printf %s "checking if compiler is Intel C... " >&6; } OLDCPPFLAGS=$CPPFLAGS # CPPPFLAG comes from CURL_CPP_P CPPFLAGS="$CPPFLAGS $CPPPFLAG" if test -z "$SED"; then as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 fi if test -z "$GREP"; then as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 fi tmp_exp="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __INTEL_COMPILER CURL_DEF_TOKEN __INTEL_COMPILER #endif _ACEOF if ac_fn_c_try_cpp "$LINENO" then : tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ "$SED" 's/["][ ]*["]//g' 2>/dev/null` if test -z "$tmp_exp" || test "$tmp_exp" = "__INTEL_COMPILER"; then tmp_exp="" fi fi rm -f conftest.err conftest.i conftest.$ac_ext if test -z "$tmp_exp"; then curl_cv_have_def___INTEL_COMPILER=no else curl_cv_have_def___INTEL_COMPILER=yes curl_cv_def___INTEL_COMPILER=$tmp_exp fi CPPFLAGS=$OLDCPPFLAGS if test "$curl_cv_have_def___INTEL_COMPILER" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler version" >&5 printf %s "checking compiler version... " >&6; } compiler_num="$curl_cv_def___INTEL_COMPILER" compiler_ver=`echo "$compiler_num" | cut -c -2 | $SED 's/^0//'`.`echo "$compiler_num" | cut -c 3-4 | $SED 's/^0//'` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Intel C '$compiler_num'" >&5 printf "%s\n" "Intel C '$compiler_num'" >&6; } OLDCPPFLAGS=$CPPFLAGS # CPPPFLAG comes from CURL_CPP_P CPPFLAGS="$CPPFLAGS $CPPPFLAG" if test -z "$SED"; then as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 fi if test -z "$GREP"; then as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 fi tmp_exp="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __unix__ CURL_DEF_TOKEN __unix__ #endif _ACEOF if ac_fn_c_try_cpp "$LINENO" then : tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ "$SED" 's/["][ ]*["]//g' 2>/dev/null` if test -z "$tmp_exp" || test "$tmp_exp" = ""; then tmp_exp="" fi fi rm -f conftest.err conftest.i conftest.$ac_ext if test -z "$tmp_exp"; then curl_cv_have_def___unix__=no else curl_cv_have_def___unix__=yes curl_cv_def___unix__=$tmp_exp fi CPPFLAGS=$OLDCPPFLAGS if test "$curl_cv_have_def___unix__" = "yes"; then compiler_id="INTEL_UNIX_C" flags_dbg_yes="-g" flags_opt_all="-O -O0 -O1 -O2 -O3 -Os" flags_opt_yes="-O2" flags_opt_off="-O0" else compiler_id="INTEL_WINDOWS_C" flags_dbg_yes="/Zi /Oy-" flags_opt_all="/O /O0 /O1 /O2 /O3 /Od /Og /Og- /Oi /Oi-" flags_opt_yes="/O2" flags_opt_off="/Od" fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is clang" >&5 printf %s "checking if compiler is clang... " >&6; } OLDCPPFLAGS=$CPPFLAGS # CPPPFLAG comes from CURL_CPP_P CPPFLAGS="$CPPFLAGS $CPPPFLAG" if test -z "$SED"; then as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 fi if test -z "$GREP"; then as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 fi tmp_exp="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __clang__ CURL_DEF_TOKEN __clang__ #endif _ACEOF if ac_fn_c_try_cpp "$LINENO" then : tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ "$SED" 's/["][ ]*["]//g' 2>/dev/null` if test -z "$tmp_exp" || test "$tmp_exp" = "__clang__"; then tmp_exp="" fi fi rm -f conftest.err conftest.i conftest.$ac_ext if test -z "$tmp_exp"; then curl_cv_have_def___clang__=no else curl_cv_have_def___clang__=yes curl_cv_def___clang__=$tmp_exp fi CPPFLAGS=$OLDCPPFLAGS if test "$curl_cv_have_def___clang__" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is xlclang" >&5 printf %s "checking if compiler is xlclang... " >&6; } OLDCPPFLAGS=$CPPFLAGS # CPPPFLAG comes from CURL_CPP_P CPPFLAGS="$CPPFLAGS $CPPPFLAG" if test -z "$SED"; then as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 fi if test -z "$GREP"; then as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 fi tmp_exp="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __ibmxl__ CURL_DEF_TOKEN __ibmxl__ #endif _ACEOF if ac_fn_c_try_cpp "$LINENO" then : tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ "$SED" 's/["][ ]*["]//g' 2>/dev/null` if test -z "$tmp_exp" || test "$tmp_exp" = "__ibmxl__"; then tmp_exp="" fi fi rm -f conftest.err conftest.i conftest.$ac_ext if test -z "$tmp_exp"; then curl_cv_have_def___ibmxl__=no else curl_cv_have_def___ibmxl__=yes curl_cv_def___ibmxl__=$tmp_exp fi CPPFLAGS=$OLDCPPFLAGS if test "$curl_cv_have_def___ibmxl__" = "yes" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } compiler_id="XLCLANG" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } compiler_id="CLANG" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is Apple clang" >&5 printf %s "checking if compiler is Apple clang... " >&6; } fullclangver=`$CC -v 2>&1 | grep version` if echo $fullclangver | grep 'Apple' >/dev/null; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } appleclang=1 compiler_id="APPLECLANG" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } appleclang=0 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler version" >&5 printf %s "checking compiler version... " >&6; } clangver=`echo $fullclangver | grep "based on LLVM " | "$SED" 's/.*(based on LLVM \([0-9]*\.[0-9]*\).*)/\1/'` if test -z "$clangver"; then clangver=`echo $fullclangver | "$SED" 's/.*version \([0-9]*\.[0-9]*\).*/\1/'` oldapple=0 else oldapple=1 fi clangvhi=`echo $clangver | cut -d . -f1` clangvlo=`echo $clangver | cut -d . -f2` compiler_ver="$clangver" compiler_num=`(expr $clangvhi "*" 100 + $clangvlo) 2>/dev/null` if test "$appleclang" = '1' && test "$oldapple" = '0'; then if test "$compiler_num" -ge '1300'; then compiler_num='1200' elif test "$compiler_num" -ge '1205'; then compiler_num='1101' elif test "$compiler_num" -ge '1204'; then compiler_num='1000' elif test "$compiler_num" -ge '1107'; then compiler_num='900' elif test "$compiler_num" -ge '1103'; then compiler_num='800' elif test "$compiler_num" -ge '1003'; then compiler_num='700' elif test "$compiler_num" -ge '1001'; then compiler_num='600' elif test "$compiler_num" -ge '904'; then compiler_num='500' elif test "$compiler_num" -ge '902'; then compiler_num='400' elif test "$compiler_num" -ge '803'; then compiler_num='309' elif test "$compiler_num" -ge '703'; then compiler_num='308' else compiler_num='307' fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: clang '$compiler_num' (raw: '$fullclangver' / '$clangver')" >&5 printf "%s\n" "clang '$compiler_num' (raw: '$fullclangver' / '$clangver')" >&6; } flags_dbg_yes="-g" flags_opt_all="-O -O0 -O1 -O2 -Os -O3 -O4" flags_opt_yes="-O2" flags_opt_off="-O0" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is GNU C" >&5 printf %s "checking if compiler is GNU C... " >&6; } OLDCPPFLAGS=$CPPFLAGS # CPPPFLAG comes from CURL_CPP_P CPPFLAGS="$CPPFLAGS $CPPPFLAG" if test -z "$SED"; then as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 fi if test -z "$GREP"; then as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 fi tmp_exp="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __GNUC__ CURL_DEF_TOKEN __GNUC__ #endif _ACEOF if ac_fn_c_try_cpp "$LINENO" then : tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ "$SED" 's/["][ ]*["]//g' 2>/dev/null` if test -z "$tmp_exp" || test "$tmp_exp" = "__GNUC__"; then tmp_exp="" fi fi rm -f conftest.err conftest.i conftest.$ac_ext if test -z "$tmp_exp"; then curl_cv_have_def___GNUC__=no else curl_cv_have_def___GNUC__=yes curl_cv_def___GNUC__=$tmp_exp fi CPPFLAGS=$OLDCPPFLAGS if test "$curl_cv_have_def___GNUC__" = "yes" && test "$compiler_id" = "unknown"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } compiler_id="GNU_C" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler version" >&5 printf %s "checking compiler version... " >&6; } # strip '-suffix' parts, e.g. Ubuntu Windows cross-gcc returns '10-win32' gccver=`$CC -dumpversion | "$SED" 's/-.\{1,\}$//'` gccvhi=`echo $gccver | cut -d . -f1` if echo $gccver | grep -F '.' >/dev/null; then gccvlo=`echo $gccver | cut -d . -f2` else gccvlo="0" fi compiler_ver="$gccver" compiler_num=`(expr $gccvhi "*" 100 + $gccvlo) 2>/dev/null` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: gcc '$compiler_num' (raw: '$gccver')" >&5 printf "%s\n" "gcc '$compiler_num' (raw: '$gccver')" >&6; } flags_dbg_yes="-g" flags_opt_all="-O -O0 -O1 -O2 -O3 -Os -Og -Ofast" flags_opt_yes="-O2" flags_opt_off="-O0" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi case $host in mips-sgi-irix*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is SGI MIPSpro C" >&5 printf %s "checking if compiler is SGI MIPSpro C... " >&6; } OLDCPPFLAGS=$CPPFLAGS # CPPPFLAG comes from CURL_CPP_P CPPFLAGS="$CPPFLAGS $CPPPFLAG" if test -z "$SED"; then as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 fi if test -z "$GREP"; then as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 fi tmp_exp="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __GNUC__ CURL_DEF_TOKEN __GNUC__ #endif _ACEOF if ac_fn_c_try_cpp "$LINENO" then : tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ "$SED" 's/["][ ]*["]//g' 2>/dev/null` if test -z "$tmp_exp" || test "$tmp_exp" = "__GNUC__"; then tmp_exp="" fi fi rm -f conftest.err conftest.i conftest.$ac_ext if test -z "$tmp_exp"; then curl_cv_have_def___GNUC__=no else curl_cv_have_def___GNUC__=yes curl_cv_def___GNUC__=$tmp_exp fi CPPFLAGS=$OLDCPPFLAGS OLDCPPFLAGS=$CPPFLAGS # CPPPFLAG comes from CURL_CPP_P CPPFLAGS="$CPPFLAGS $CPPPFLAG" if test -z "$SED"; then as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 fi if test -z "$GREP"; then as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 fi tmp_exp="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _COMPILER_VERSION CURL_DEF_TOKEN _COMPILER_VERSION #endif _ACEOF if ac_fn_c_try_cpp "$LINENO" then : tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ "$SED" 's/["][ ]*["]//g' 2>/dev/null` if test -z "$tmp_exp" || test "$tmp_exp" = "_COMPILER_VERSION"; then tmp_exp="" fi fi rm -f conftest.err conftest.i conftest.$ac_ext if test -z "$tmp_exp"; then curl_cv_have_def__COMPILER_VERSION=no else curl_cv_have_def__COMPILER_VERSION=yes curl_cv_def__COMPILER_VERSION=$tmp_exp fi CPPFLAGS=$OLDCPPFLAGS OLDCPPFLAGS=$CPPFLAGS # CPPPFLAG comes from CURL_CPP_P CPPFLAGS="$CPPFLAGS $CPPPFLAG" if test -z "$SED"; then as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 fi if test -z "$GREP"; then as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 fi tmp_exp="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _SGI_COMPILER_VERSION CURL_DEF_TOKEN _SGI_COMPILER_VERSION #endif _ACEOF if ac_fn_c_try_cpp "$LINENO" then : tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ "$SED" 's/["][ ]*["]//g' 2>/dev/null` if test -z "$tmp_exp" || test "$tmp_exp" = "_SGI_COMPILER_VERSION"; then tmp_exp="" fi fi rm -f conftest.err conftest.i conftest.$ac_ext if test -z "$tmp_exp"; then curl_cv_have_def__SGI_COMPILER_VERSION=no else curl_cv_have_def__SGI_COMPILER_VERSION=yes curl_cv_def__SGI_COMPILER_VERSION=$tmp_exp fi CPPFLAGS=$OLDCPPFLAGS if test "$curl_cv_have_def___GNUC__" = "no" && (test "$curl_cv_have_def__SGI_COMPILER_VERSION" = "yes" || test "$curl_cv_have_def__COMPILER_VERSION" = "yes"); then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } compiler_id="SGI_MIPSPRO_C" flags_dbg_yes="-g" flags_opt_all="-O -O0 -O1 -O2 -O3 -Ofast" flags_opt_yes="-O2" flags_opt_off="-O0" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is SGI MIPS C" >&5 printf %s "checking if compiler is SGI MIPS C... " >&6; } OLDCPPFLAGS=$CPPFLAGS # CPPPFLAG comes from CURL_CPP_P CPPFLAGS="$CPPFLAGS $CPPPFLAG" if test -z "$SED"; then as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 fi if test -z "$GREP"; then as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 fi tmp_exp="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __GNUC__ CURL_DEF_TOKEN __GNUC__ #endif _ACEOF if ac_fn_c_try_cpp "$LINENO" then : tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ "$SED" 's/["][ ]*["]//g' 2>/dev/null` if test -z "$tmp_exp" || test "$tmp_exp" = "__GNUC__"; then tmp_exp="" fi fi rm -f conftest.err conftest.i conftest.$ac_ext if test -z "$tmp_exp"; then curl_cv_have_def___GNUC__=no else curl_cv_have_def___GNUC__=yes curl_cv_def___GNUC__=$tmp_exp fi CPPFLAGS=$OLDCPPFLAGS OLDCPPFLAGS=$CPPFLAGS # CPPPFLAG comes from CURL_CPP_P CPPFLAGS="$CPPFLAGS $CPPPFLAG" if test -z "$SED"; then as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 fi if test -z "$GREP"; then as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 fi tmp_exp="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __sgi CURL_DEF_TOKEN __sgi #endif _ACEOF if ac_fn_c_try_cpp "$LINENO" then : tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ "$SED" 's/["][ ]*["]//g' 2>/dev/null` if test -z "$tmp_exp" || test "$tmp_exp" = "__sgi"; then tmp_exp="" fi fi rm -f conftest.err conftest.i conftest.$ac_ext if test -z "$tmp_exp"; then curl_cv_have_def___sgi=no else curl_cv_have_def___sgi=yes curl_cv_def___sgi=$tmp_exp fi CPPFLAGS=$OLDCPPFLAGS if test "$curl_cv_have_def___GNUC__" = "no" && test "$curl_cv_have_def___sgi" = "yes" && test "$compiler_id" = "unknown"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } compiler_id="SGI_MIPS_C" flags_dbg_yes="-g" flags_opt_all="-O -O0 -O1 -O2 -O3 -Ofast" flags_opt_yes="-O2" flags_opt_off="-O0" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is SunPro C" >&5 printf %s "checking if compiler is SunPro C... " >&6; } OLDCPPFLAGS=$CPPFLAGS # CPPPFLAG comes from CURL_CPP_P CPPFLAGS="$CPPFLAGS $CPPPFLAG" if test -z "$SED"; then as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 fi if test -z "$GREP"; then as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 fi tmp_exp="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __SUNPRO_C CURL_DEF_TOKEN __SUNPRO_C #endif _ACEOF if ac_fn_c_try_cpp "$LINENO" then : tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ "$SED" 's/["][ ]*["]//g' 2>/dev/null` if test -z "$tmp_exp" || test "$tmp_exp" = "__SUNPRO_C"; then tmp_exp="" fi fi rm -f conftest.err conftest.i conftest.$ac_ext if test -z "$tmp_exp"; then curl_cv_have_def___SUNPRO_C=no else curl_cv_have_def___SUNPRO_C=yes curl_cv_def___SUNPRO_C=$tmp_exp fi CPPFLAGS=$OLDCPPFLAGS if test "$curl_cv_have_def___SUNPRO_C" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } compiler_id="SUNPRO_C" flags_dbg_yes="-g" flags_opt_all="-O -xO -xO1 -xO2 -xO3 -xO4 -xO5" flags_opt_yes="-xO2" flags_opt_off="" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is Tiny C" >&5 printf %s "checking if compiler is Tiny C... " >&6; } OLDCPPFLAGS=$CPPFLAGS # CPPPFLAG comes from CURL_CPP_P CPPFLAGS="$CPPFLAGS $CPPPFLAG" if test -z "$SED"; then as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 fi if test -z "$GREP"; then as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 fi tmp_exp="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __TINYC__ CURL_DEF_TOKEN __TINYC__ #endif _ACEOF if ac_fn_c_try_cpp "$LINENO" then : tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ "$SED" 's/["][ ]*["]//g' 2>/dev/null` if test -z "$tmp_exp" || test "$tmp_exp" = "__TINYC__"; then tmp_exp="" fi fi rm -f conftest.err conftest.i conftest.$ac_ext if test -z "$tmp_exp"; then curl_cv_have_def___TINYC__=no else curl_cv_have_def___TINYC__=yes curl_cv_def___TINYC__=$tmp_exp fi CPPFLAGS=$OLDCPPFLAGS if test "$curl_cv_have_def___TINYC__" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } compiler_id="TINY_C" flags_dbg_yes="-g" flags_opt_all="" flags_opt_yes="" flags_opt_off="" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # if test "$compiler_id" = "unknown"; then cat <<_EOF 1>&2 *** *** Warning: This configure script does not have information about the *** compiler you are using, relative to the flags required to enable or *** disable generation of debug info, optimization options or warnings. *** *** Whatever settings are present in CFLAGS will be used for this run. *** *** If you wish to help the curl project to better support your compiler *** you can report this and the required info on the libcurl development *** mailing list: https://lists.haxx.selistinfo/curl-library/ *** _EOF fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build target is a native Windows one" >&5 printf %s "checking whether build target is a native Windows one... " >&6; } if test ${curl_cv_native_windows+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { #ifdef _WIN32 int dummy = 1; (void)dummy; #else #error Not a native Windows build target. #endif return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : curl_cv_native_windows="yes" else $as_nop curl_cv_native_windows="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_native_windows" >&5 printf "%s\n" "$curl_cv_native_windows" >&6; } if test "x$curl_cv_native_windows" = xyes; then DOING_NATIVE_WINDOWS_TRUE= DOING_NATIVE_WINDOWS_FALSE='#' else DOING_NATIVE_WINDOWS_TRUE='#' DOING_NATIVE_WINDOWS_FALSE= fi curl_cv_wince='no' curl_cv_winuwp='no' if test "$curl_cv_native_windows" = "yes"; then case $host_os in mingw32ce*) curl_cv_wince='yes';; esac case "$CPPFLAGS" in *-DWINSTORECOMPAT*) curl_cv_winuwp='yes';; esac fi squeeze() { _sqz_result="" eval _sqz_input=\$$1 for _sqz_token in $_sqz_input; do if test -z "$_sqz_result"; then _sqz_result="$_sqz_token" else _sqz_result="$_sqz_result $_sqz_token" fi done eval $1=\$_sqz_result return 0 } # if test "$compiler_id" != "unknown"; then # tmp_save_CPPFLAGS="$CPPFLAGS" tmp_save_CFLAGS="$CFLAGS" tmp_CPPFLAGS="" tmp_CFLAGS="" # case "$compiler_id" in # CLANG|APPLECLANG) # tmp_CFLAGS="$tmp_CFLAGS -Qunused-arguments" tmp_CFLAGS="$tmp_CFLAGS -Werror-implicit-function-declaration" ;; # DEC_C) # tmp_CFLAGS="$tmp_CFLAGS -std1" tmp_CFLAGS="$tmp_CFLAGS -noansi_alias" tmp_CFLAGS="$tmp_CFLAGS -warnprotos" tmp_CFLAGS="$tmp_CFLAGS -msg_fatal toofewargs,toomanyargs" ;; # GNU_C) # if test "$compiler_num" -ge "295"; then tmp_CFLAGS="$tmp_CFLAGS -Werror-implicit-function-declaration" fi ;; # HP_UX_C) # tmp_CFLAGS="$tmp_CFLAGS -z" tmp_CFLAGS="$tmp_CFLAGS +W 4227,4255" ;; # IBM_C) # tmp_CPPFLAGS="$tmp_CPPFLAGS -qthreaded" tmp_CPPFLAGS="$tmp_CPPFLAGS -qnoansialias" tmp_CPPFLAGS="$tmp_CPPFLAGS -qhalt=e" ;; # INTEL_UNIX_C) # tmp_CFLAGS="$tmp_CFLAGS -std=gnu89" tmp_CPPFLAGS="$tmp_CPPFLAGS -diag-error 140,147,165,266" tmp_CPPFLAGS="$tmp_CPPFLAGS -diag-disable 279,981,1025,1469,2259" ;; # INTEL_WINDOWS_C) # tmp_CFLAGS="$tmp_CFLAGS" ;; # SGI_MIPS_C) # tmp_CFLAGS="$tmp_CFLAGS" ;; # SGI_MIPSPRO_C) # tmp_CFLAGS="$tmp_CFLAGS" ;; # SUNPRO_C) # tmp_CFLAGS="$tmp_CFLAGS" ;; # TINY_C) # tmp_CFLAGS="$tmp_CFLAGS" ;; # esac # squeeze tmp_CPPFLAGS squeeze tmp_CFLAGS # if test ! -z "$tmp_CFLAGS" || test ! -z "$tmp_CPPFLAGS"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler accepts some basic options" >&5 printf %s "checking if compiler accepts some basic options... " >&6; } CPPFLAGS="$tmp_save_CPPFLAGS $tmp_CPPFLAGS" CFLAGS="$tmp_save_CFLAGS $tmp_CFLAGS" squeeze CPPFLAGS squeeze CFLAGS tmp_compiler_works="unknown" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { int i = 1; return i; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : tmp_compiler_works="yes" else $as_nop tmp_compiler_works="no" echo " " >&6 sed 's/^/cc-fail: /' conftest.err >&6 echo " " >&6 fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test "$tmp_compiler_works" = "yes"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { int i = 1; return i; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : tmp_compiler_works="yes" else $as_nop tmp_compiler_works="no" echo " " >&6 sed 's/^/link-fail: /' conftest.err >&6 echo " " >&6 fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi if test "x$cross_compiling" != "xyes" && test "$tmp_compiler_works" = "yes"; then if test "$curl_cv_apple" = 'yes'; then if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #endif int main(void) { int i = 0; return i; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : tmp_compiler_works="yes" else $as_nop tmp_compiler_works="no" echo " " >&6 echo "run-fail: test program exited with status $ac_status" >&6 echo " " >&6 fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else oldcc=$CC old=$LD_LIBRARY_PATH CC="sh ./run-compiler" LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old export LD_LIBRARY_PATH if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #endif int main(void) { int i = 0; return i; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : tmp_compiler_works="yes" else $as_nop tmp_compiler_works="no" echo " " >&6 echo "run-fail: test program exited with status $ac_status" >&6 echo " " >&6 fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi LD_LIBRARY_PATH=$old # restore CC=$oldcc fi fi if test "$tmp_compiler_works" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: compiler options added: $tmp_CFLAGS $tmp_CPPFLAGS" >&5 printf "%s\n" "$as_me: compiler options added: $tmp_CFLAGS $tmp_CPPFLAGS" >&6;} else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: compiler options rejected: $tmp_CFLAGS $tmp_CPPFLAGS" >&5 printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_CFLAGS $tmp_CPPFLAGS" >&2;} CPPFLAGS="$tmp_save_CPPFLAGS" CFLAGS="$tmp_save_CFLAGS" fi fi # fi # if test "$compiler_id" != "unknown"; then # tmp_save_CFLAGS="$CFLAGS" tmp_save_CPPFLAGS="$CPPFLAGS" # tmp_options="" tmp_CFLAGS="$CFLAGS" tmp_CPPFLAGS="$CPPFLAGS" # if test "$want_debug" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler accepts debug enabling options" >&5 printf %s "checking if compiler accepts debug enabling options... " >&6; } tmp_options="$flags_dbg_yes" fi # if test "$flags_prefer_cppflags" = "yes"; then CPPFLAGS="$tmp_CPPFLAGS $tmp_options" CFLAGS="$tmp_CFLAGS" else CPPFLAGS="$tmp_CPPFLAGS" CFLAGS="$tmp_CFLAGS $tmp_options" fi squeeze CPPFLAGS squeeze CFLAGS fi # if test "$compiler_id" != "unknown"; then # tmp_save_CFLAGS="$CFLAGS" tmp_save_CPPFLAGS="$CPPFLAGS" # tmp_options="" tmp_CFLAGS="$CFLAGS" tmp_CPPFLAGS="$CPPFLAGS" honor_optimize_option="yes" # # if test "$want_optimize" = "assume_no" || test "$want_optimize" = "assume_yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler optimizer assumed setting might be used" >&5 printf %s "checking if compiler optimizer assumed setting might be used... " >&6; } ac_var_match_word="no" for word1 in $tmp_CFLAGS; do for word2 in $flags_opt_all; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "yes"; then honor_optimize_option="no" fi ac_var_match_word="no" for word1 in $tmp_CPPFLAGS; do for word2 in $flags_opt_all; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "yes"; then honor_optimize_option="no" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $honor_optimize_option" >&5 printf "%s\n" "$honor_optimize_option" >&6; } if test "$honor_optimize_option" = "yes"; then if test "$want_optimize" = "assume_yes"; then want_optimize="yes" fi if test "$want_optimize" = "assume_no"; then want_optimize="no" fi fi fi # if test "$honor_optimize_option" = "yes"; then ac_var_stripped="" for word1 in $tmp_CFLAGS; do ac_var_strip_word="no" for word2 in $flags_opt_all; do if test "$word1" = "$word2"; then ac_var_strip_word="yes" fi done if test "$ac_var_strip_word" = "no"; then ac_var_stripped="$ac_var_stripped $word1" fi done tmp_CFLAGS="$ac_var_stripped" squeeze tmp_CFLAGS ac_var_stripped="" for word1 in $tmp_CPPFLAGS; do ac_var_strip_word="no" for word2 in $flags_opt_all; do if test "$word1" = "$word2"; then ac_var_strip_word="yes" fi done if test "$ac_var_strip_word" = "no"; then ac_var_stripped="$ac_var_stripped $word1" fi done tmp_CPPFLAGS="$ac_var_stripped" squeeze tmp_CPPFLAGS if test "$want_optimize" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler accepts optimizer enabling options" >&5 printf %s "checking if compiler accepts optimizer enabling options... " >&6; } tmp_options="$flags_opt_yes" fi if test "$want_optimize" = "no"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler accepts optimizer disabling options" >&5 printf %s "checking if compiler accepts optimizer disabling options... " >&6; } tmp_options="$flags_opt_off" fi if test "$flags_prefer_cppflags" = "yes"; then CPPFLAGS="$tmp_CPPFLAGS $tmp_options" CFLAGS="$tmp_CFLAGS" else CPPFLAGS="$tmp_CPPFLAGS" CFLAGS="$tmp_CFLAGS $tmp_options" fi squeeze CPPFLAGS squeeze CFLAGS tmp_compiler_works="unknown" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { int i = 1; return i; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : tmp_compiler_works="yes" else $as_nop tmp_compiler_works="no" echo " " >&6 sed 's/^/cc-fail: /' conftest.err >&6 echo " " >&6 fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test "$tmp_compiler_works" = "yes"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { int i = 1; return i; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : tmp_compiler_works="yes" else $as_nop tmp_compiler_works="no" echo " " >&6 sed 's/^/link-fail: /' conftest.err >&6 echo " " >&6 fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi if test "x$cross_compiling" != "xyes" && test "$tmp_compiler_works" = "yes"; then if test "$curl_cv_apple" = 'yes'; then if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #endif int main(void) { int i = 0; return i; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : tmp_compiler_works="yes" else $as_nop tmp_compiler_works="no" echo " " >&6 echo "run-fail: test program exited with status $ac_status" >&6 echo " " >&6 fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else oldcc=$CC old=$LD_LIBRARY_PATH CC="sh ./run-compiler" LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old export LD_LIBRARY_PATH if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #endif int main(void) { int i = 0; return i; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : tmp_compiler_works="yes" else $as_nop tmp_compiler_works="no" echo " " >&6 echo "run-fail: test program exited with status $ac_status" >&6 echo " " >&6 fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi LD_LIBRARY_PATH=$old # restore CC=$oldcc fi fi if test "$tmp_compiler_works" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: compiler options added: $tmp_options" >&5 printf "%s\n" "$as_me: compiler options added: $tmp_options" >&6;} else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: compiler options rejected: $tmp_options" >&5 printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} CPPFLAGS="$tmp_save_CPPFLAGS" CFLAGS="$tmp_save_CFLAGS" fi fi # fi # if test "$compiler_id" != "unknown"; then # tmp_save_CPPFLAGS="$CPPFLAGS" tmp_save_CFLAGS="$CFLAGS" tmp_CPPFLAGS="" tmp_CFLAGS="" # case "$compiler_id" in # CLANG|APPLECLANG) # if test "$want_warnings" = "yes"; then tmp_CFLAGS="$tmp_CFLAGS -pedantic" ac_var_added_warnings="" for warning in all extra; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in pointer-arith write-strings; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in shadow; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in nested-externs; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in missing-declarations; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in missing-prototypes; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS tmp_CFLAGS="$tmp_CFLAGS -Wno-long-long" ac_var_added_warnings="" for warning in float-equal; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in sign-compare; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS tmp_CFLAGS="$tmp_CFLAGS -Wno-multichar" ac_var_added_warnings="" for warning in undef; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS tmp_CFLAGS="$tmp_CFLAGS -Wno-format-nonliteral" ac_var_added_warnings="" for warning in endif-labels strict-prototypes; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in declaration-after-statement; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in cast-align; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS tmp_CFLAGS="$tmp_CFLAGS -Wno-system-headers" ac_var_added_warnings="" for warning in shorten-64-to-32; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS # if test "$compiler_num" -ge "101"; then ac_var_added_warnings="" for warning in unused; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS fi # if test "$compiler_num" -ge "207"; then ac_var_added_warnings="" for warning in address; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in attributes; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in bad-function-cast; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in conversion; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in div-by-zero format-security; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in empty-body; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in missing-field-initializers; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in missing-noreturn; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in old-style-definition; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in redundant-decls; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS # CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [switch-enum]) # Not used because this basically disallows default case ac_var_added_warnings="" for warning in type-limits; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS # CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [unused-macros]) # Not practical # tmp_CFLAGS="$tmp_CFLAGS -Wno-error=unused-macros" ac_var_added_warnings="" for warning in unreachable-code unused-parameter; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS fi # if test "$compiler_num" -ge "208"; then ac_var_added_warnings="" for warning in ignored-qualifiers; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in vla; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS fi # if test "$compiler_num" -ge "209"; then tmp_CFLAGS="$tmp_CFLAGS -Wno-sign-conversion" ac_var_added_warnings="" for warning in shift-sign-overflow; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS # CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [padded]) # Not used because we cannot change public structs fi # if test "$compiler_num" -ge "300"; then ac_var_added_warnings="" for warning in cast-qual; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in language-extension-token; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS tmp_CFLAGS="$tmp_CFLAGS -Wformat=2" fi # if test "$compiler_num" -ge "302"; then ac_var_added_warnings="" for warning in enum-conversion; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in sometimes-uninitialized; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS case $host_os in cygwin* | mingw*) ;; *) ac_var_added_warnings="" for warning in missing-variable-declarations; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ;; esac fi # if test "$compiler_num" -ge "304"; then ac_var_added_warnings="" for warning in header-guard; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in unused-const-variable; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS fi # if test "$compiler_num" -ge "305"; then ac_var_added_warnings="" for warning in pragmas; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS # CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [unreachable-code-break]) # Not used: Silent in "unity" builds fi # if test "$compiler_num" -ge "306"; then ac_var_added_warnings="" for warning in double-promotion; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS fi # if test "$compiler_num" -ge "309"; then ac_var_added_warnings="" for warning in comma; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS # avoid the varargs warning, fixed in 4.0 # https://bugs.llvm.org/show_bug.cgi?id=29140 if test "$compiler_num" -lt "400"; then tmp_CFLAGS="$tmp_CFLAGS -Wno-varargs" fi fi if test "$compiler_num" -ge "700"; then ac_var_added_warnings="" for warning in assign-enum; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in extra-semi-stmt; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS fi if test "$compiler_num" -ge "1000"; then tmp_CFLAGS="$tmp_CFLAGS -Wimplicit-fallthrough" # we have silencing markup for clang 10.0 and above only ac_var_added_warnings="" for warning in xor-used-as-pow; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS fi fi ;; # DEC_C) # if test "$want_warnings" = "yes"; then tmp_CFLAGS="$tmp_CFLAGS -msg_enable level3" fi ;; # GNU_C) # if test "$want_warnings" = "yes"; then # if test "x$cross_compiling" != "xyes" || test "$compiler_num" -ge "300"; then tmp_CFLAGS="$tmp_CFLAGS -pedantic" fi # ac_var_added_warnings="" for warning in all; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS tmp_CFLAGS="$tmp_CFLAGS -W" # if test "$compiler_num" -ge "104"; then ac_var_added_warnings="" for warning in pointer-arith write-strings; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS if test "x$cross_compiling" != "xyes" || test "$compiler_num" -ge "300"; then ac_var_added_warnings="" for warning in unused shadow; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS fi fi # if test "$compiler_num" -ge "207"; then ac_var_added_warnings="" for warning in nested-externs; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS if test "x$cross_compiling" != "xyes" || test "$compiler_num" -ge "300"; then ac_var_added_warnings="" for warning in missing-declarations; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in missing-prototypes; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS fi fi # if test "$compiler_num" -ge "295"; then tmp_CFLAGS="$tmp_CFLAGS -Wno-long-long" ac_var_added_warnings="" for warning in bad-function-cast; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS fi # if test "$compiler_num" -ge "296"; then ac_var_added_warnings="" for warning in float-equal; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS tmp_CFLAGS="$tmp_CFLAGS -Wno-multichar" ac_var_added_warnings="" for warning in sign-compare; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in undef; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS fi # if test "$compiler_num" -ge "297"; then tmp_CFLAGS="$tmp_CFLAGS -Wno-format-nonliteral" fi # if test "$compiler_num" -ge "300"; then tmp_CFLAGS="$tmp_CFLAGS" fi # if test "$compiler_num" -ge "303"; then ac_var_added_warnings="" for warning in endif-labels strict-prototypes; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS fi # if test "$compiler_num" -ge "304"; then ac_var_added_warnings="" for warning in declaration-after-statement; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in old-style-definition; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS fi # if test "$compiler_num" -ge "400"; then ac_var_added_warnings="" for warning in cast-qual; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS tmp_CFLAGS="$tmp_CFLAGS -Wstrict-aliasing=3" fi # if test "$compiler_num" -ge "401"; then ac_var_added_warnings="" for warning in attributes; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in div-by-zero format-security; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in missing-field-initializers; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS case $host in *-*-msys*) ;; *) ac_var_added_warnings="" for warning in missing-noreturn; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS # Seen to clash with libtool-generated stub code ;; esac ac_var_added_warnings="" for warning in unreachable-code unused-parameter; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS # CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [padded]) # Not used because we cannot change public structs ac_var_added_warnings="" for warning in pragmas; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in redundant-decls; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS # CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [switch-enum]) # Not used because this basically disallows default case # CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [unused-macros]) # Not practical # tmp_CFLAGS="$tmp_CFLAGS -Wno-error=unused-macros" fi # if test "$compiler_num" -ge "402"; then ac_var_added_warnings="" for warning in cast-align; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS fi # if test "$compiler_num" -ge "403"; then ac_var_added_warnings="" for warning in address; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in type-limits old-style-declaration; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in missing-parameter-type empty-body; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in clobbered ignored-qualifiers; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in conversion; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS tmp_CFLAGS="$tmp_CFLAGS -Wno-sign-conversion" ac_var_added_warnings="" for warning in vla; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS tmp_CFLAGS="$tmp_CFLAGS -ftree-vrp" fi # if test "$compiler_num" -ge "405"; then ac_var_added_warnings="" for warning in jump-misses-init; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS if test "$curl_cv_native_windows" = "yes"; then tmp_CFLAGS="$tmp_CFLAGS -Wno-pedantic-ms-format" fi case $host_os in cygwin*) tmp_CFLAGS="$tmp_CFLAGS -Wno-suggest-attribute=noreturn" ;; esac fi # if test "$compiler_num" -ge "406"; then ac_var_added_warnings="" for warning in double-promotion; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in trampolines; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS fi # if test "$compiler_num" -ge "408"; then tmp_CFLAGS="$tmp_CFLAGS -Wformat=2" fi # if test "$compiler_num" -ge "500"; then tmp_CFLAGS="$tmp_CFLAGS -Warray-bounds=2" fi # if test "$compiler_num" -ge "600"; then ac_var_added_warnings="" for warning in shift-negative-value; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS tmp_CFLAGS="$tmp_CFLAGS -Wshift-overflow=2" ac_var_added_warnings="" for warning in null-dereference; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS tmp_CFLAGS="$tmp_CFLAGS -fdelete-null-pointer-checks" ac_var_added_warnings="" for warning in duplicated-cond; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in unused-const-variable; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS fi # if test "$compiler_num" -ge "700"; then ac_var_added_warnings="" for warning in duplicated-branches; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in restrict; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in alloc-zero; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS tmp_CFLAGS="$tmp_CFLAGS -Wformat-truncation=2" tmp_CFLAGS="$tmp_CFLAGS -Wimplicit-fallthrough" fi # if test "$compiler_num" -ge "1000"; then ac_var_added_warnings="" for warning in arith-conversion; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in enum-conversion; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS fi # if test "$compiler_num" -ge "1200"; then ac_var_added_warnings="" for warning in array-compare; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS fi # if test "$compiler_num" -ge "1300"; then ac_var_added_warnings="" for warning in enum-int-mismatch; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in xor-used-as-pow; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS fi # if test "$compiler_num" -ge "1500"; then ac_var_added_warnings="" for warning in leading-whitespace=spaces; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in trailing-whitespace=any; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in unterminated-string-initialization; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS fi # fi # if test "$compiler_num" -ge "300"; then tmp_CFLAGS="$tmp_CFLAGS -Wno-system-headers" else if test "x$cross_compiling" = "xyes"; then if test "$compiler_num" -ge "104"; then tmp_CFLAGS="$tmp_CFLAGS -Wno-unused -Wno-shadow" fi if test "$compiler_num" -ge "207"; then tmp_CFLAGS="$tmp_CFLAGS -Wno-missing-declarations" tmp_CFLAGS="$tmp_CFLAGS -Wno-missing-prototypes" fi fi fi if test "$compiler_num" -lt "405"; then tmp_CFLAGS="$tmp_CFLAGS -Wno-shadow" tmp_CFLAGS="$tmp_CFLAGS -Wno-unreachable-code" fi if test "$compiler_num" -ge "402" -a "$compiler_num" -lt "406"; then tmp_CFLAGS="$tmp_CFLAGS -Wno-overlength-strings" fi if test "$compiler_num" -ge "400" -a "$compiler_num" -lt "407"; then tmp_CFLAGS="$tmp_CFLAGS -Wno-missing-field-initializers" fi if test "$compiler_num" -ge "403" -a "$compiler_num" -lt "408"; then tmp_CFLAGS="$tmp_CFLAGS -Wno-type-limits" fi if test "$compiler_num" -ge "501" -a "$compiler_num" -lt "505"; then tmp_CFLAGS="$tmp_CFLAGS -Wno-conversion" fi ;; # HP_UX_C) # if test "$want_warnings" = "yes"; then tmp_CFLAGS="$tmp_CFLAGS +w1" fi ;; # IBM_C) # tmp_CFLAGS="$tmp_CFLAGS" ;; # INTEL_UNIX_C) # if test "$want_warnings" = "yes"; then if test "$compiler_num" -gt "600"; then tmp_CPPFLAGS="$tmp_CPPFLAGS -Wall -w2" tmp_CPPFLAGS="$tmp_CPPFLAGS -Wcheck" tmp_CPPFLAGS="$tmp_CPPFLAGS -Wcomment" tmp_CPPFLAGS="$tmp_CPPFLAGS -Wdeprecated" tmp_CPPFLAGS="$tmp_CPPFLAGS -Wmissing-prototypes" tmp_CPPFLAGS="$tmp_CPPFLAGS -Wp64" tmp_CPPFLAGS="$tmp_CPPFLAGS -Wpointer-arith" tmp_CPPFLAGS="$tmp_CPPFLAGS -Wreturn-type" tmp_CPPFLAGS="$tmp_CPPFLAGS -Wshadow" tmp_CPPFLAGS="$tmp_CPPFLAGS -Wuninitialized" tmp_CPPFLAGS="$tmp_CPPFLAGS -Wunused-function" fi fi tmp_CFLAGS="$tmp_CFLAGS -fno-omit-frame-pointer" tmp_CFLAGS="$tmp_CFLAGS -fno-strict-aliasing" tmp_CFLAGS="$tmp_CFLAGS -fp-model precise" ;; # INTEL_WINDOWS_C) # tmp_CFLAGS="$tmp_CFLAGS" ;; # SGI_MIPS_C) # if test "$want_warnings" = "yes"; then tmp_CFLAGS="$tmp_CFLAGS -fullwarn" fi ;; # SGI_MIPSPRO_C) # if test "$want_warnings" = "yes"; then tmp_CFLAGS="$tmp_CFLAGS -fullwarn" tmp_CFLAGS="$tmp_CFLAGS -woff 1209" fi ;; # SUNPRO_C) # if test "$want_warnings" = "yes"; then tmp_CFLAGS="$tmp_CFLAGS -v" fi ;; # TINY_C) # if test "$want_warnings" = "yes"; then ac_var_added_warnings="" for warning in all; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in write-strings; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS ac_var_added_warnings="" for warning in unsupported; do ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do if test "$word1" = "$word2"; then ac_var_match_word="yes" fi done done if test "$ac_var_match_word" = "no"; then ac_var_added_warnings="$ac_var_added_warnings -W$warning" fi done tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS fi ;; # esac # squeeze tmp_CPPFLAGS squeeze tmp_CFLAGS # if test ! -z "$tmp_CFLAGS" || test ! -z "$tmp_CPPFLAGS"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler accepts strict warning options" >&5 printf %s "checking if compiler accepts strict warning options... " >&6; } CPPFLAGS="$tmp_save_CPPFLAGS $tmp_CPPFLAGS" CFLAGS="$tmp_save_CFLAGS $tmp_CFLAGS" squeeze CPPFLAGS squeeze CFLAGS tmp_compiler_works="unknown" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { int i = 1; return i; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : tmp_compiler_works="yes" else $as_nop tmp_compiler_works="no" echo " " >&6 sed 's/^/cc-fail: /' conftest.err >&6 echo " " >&6 fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test "$tmp_compiler_works" = "yes"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { int i = 1; return i; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : tmp_compiler_works="yes" else $as_nop tmp_compiler_works="no" echo " " >&6 sed 's/^/link-fail: /' conftest.err >&6 echo " " >&6 fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi if test "x$cross_compiling" != "xyes" && test "$tmp_compiler_works" = "yes"; then if test "$curl_cv_apple" = 'yes'; then if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #endif int main(void) { int i = 0; return i; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : tmp_compiler_works="yes" else $as_nop tmp_compiler_works="no" echo " " >&6 echo "run-fail: test program exited with status $ac_status" >&6 echo " " >&6 fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else oldcc=$CC old=$LD_LIBRARY_PATH CC="sh ./run-compiler" LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old export LD_LIBRARY_PATH if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #endif int main(void) { int i = 0; return i; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : tmp_compiler_works="yes" else $as_nop tmp_compiler_works="no" echo " " >&6 echo "run-fail: test program exited with status $ac_status" >&6 echo " " >&6 fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi LD_LIBRARY_PATH=$old # restore CC=$oldcc fi fi if test "$tmp_compiler_works" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: compiler options added: $tmp_CFLAGS $tmp_CPPFLAGS" >&5 printf "%s\n" "$as_me: compiler options added: $tmp_CFLAGS $tmp_CPPFLAGS" >&6;} else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: compiler options rejected: $tmp_CFLAGS $tmp_CPPFLAGS" >&5 printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_CFLAGS $tmp_CPPFLAGS" >&2;} CPPFLAGS="$tmp_save_CPPFLAGS" CFLAGS="$tmp_save_CFLAGS" fi fi # fi if test "$compiler_id" = "INTEL_UNIX_C"; then # if test "$compiler_num" -ge "1000"; then CFLAGS="$CFLAGS -shared-intel" elif test "$compiler_num" -ge "900"; then CFLAGS="$CFLAGS -i-dynamic" fi # fi CURL_CFLAG_EXTRAS="" if test X"$want_werror" = Xyes; then CURL_CFLAG_EXTRAS="-Werror" if test "$compiler_id" = "GNU_C"; then if test "$compiler_num" -ge "500"; then CURL_CFLAG_EXTRAS="$CURL_CFLAG_EXTRAS -pedantic-errors" fi elif test "$compiler_id" = "CLANG" -o "$compiler_id" = "APPLECLANG"; then CURL_CFLAG_EXTRAS="$CURL_CFLAG_EXTRAS -pedantic-errors" fi fi if test X"$want_werror" = Xyes; then CURL_WERROR_TRUE= CURL_WERROR_FALSE='#' else CURL_WERROR_TRUE='#' CURL_WERROR_FALSE= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler halts on compilation errors" >&5 printf %s "checking if compiler halts on compilation errors... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { #error force compilation error return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "compiler does not halt on compilation errors." "$LINENO" 5 else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler halts on negative sized arrays" >&5 printf %s "checking if compiler halts on negative sized arrays... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ typedef char bad_t[sizeof(char) == sizeof(int) ? -1 : -1]; int main(void) { bad_t dummy; (void)dummy; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "compiler does not halt on negative sized arrays." "$LINENO" 5 else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler halts on function prototype mismatch" >&5 printf %s "checking if compiler halts on function prototype mismatch... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int rand(int n); int rand(int n) { if(n) return ++n; else return n; } int main(void) { int i[2]={0,0}; int j = rand(i[0]); if(j) return j; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "compiler does not halt on function prototype mismatch." "$LINENO" 5 else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler supports hiding library internal symbols" >&5 printf %s "checking if compiler supports hiding library internal symbols... " >&6; } supports_symbol_hiding="no" symbol_hiding_CFLAGS="" symbol_hiding_EXTERN="" tmp_CFLAGS="" tmp_EXTERN="" case "$compiler_id" in CLANG|APPLECLANG) tmp_EXTERN="__attribute__((__visibility__(\"default\")))" tmp_CFLAGS="-fvisibility=hidden" supports_symbol_hiding="yes" ;; GNU_C) if test "$compiler_num" -ge "304"; then if $CC --help --verbose 2>/dev/null | grep fvisibility= >/dev/null ; then tmp_EXTERN="__attribute__((__visibility__(\"default\")))" tmp_CFLAGS="-fvisibility=hidden" supports_symbol_hiding="yes" fi fi ;; INTEL_UNIX_C) if test "$compiler_num" -ge "900"; then if $CC --help --verbose 2>&1 | grep fvisibility= > /dev/null ; then tmp_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fvisibility=hidden" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { printf("icc fvisibility bug test"); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : tmp_EXTERN="__attribute__((__visibility__(\"default\")))" tmp_CFLAGS="-fvisibility=hidden" supports_symbol_hiding="yes" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$tmp_save_CFLAGS" fi fi ;; SUNPRO_C) if $CC 2>&1 | grep flags >/dev/null && $CC -flags | grep xldscope= >/dev/null ; then tmp_EXTERN="__global" tmp_CFLAGS="-xldscope=hidden" supports_symbol_hiding="yes" fi ;; esac if test "$supports_symbol_hiding" = "yes"; then tmp_save_CFLAGS="$CFLAGS" CFLAGS="$tmp_save_CFLAGS $tmp_CFLAGS" squeeze CFLAGS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $tmp_EXTERN const char *dummy(const char *buff); const char *dummy(const char *buff) { if(buff) return ++buff; else return buff; } int main(void) { const char *b = "example"; const char *r = dummy(&b[0]); if(r) return (int)*r; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : supports_symbol_hiding="yes" if test -f conftest.err; then grep 'visibility' conftest.err >/dev/null if test "$?" -eq "0"; then supports_symbol_hiding="no" fi fi else $as_nop supports_symbol_hiding="no" echo " " >&6 sed 's/^/cc-src: /' conftest.$ac_ext >&6 sed 's/^/cc-err: /' conftest.err >&6 echo " " >&6 fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$tmp_save_CFLAGS" fi if test "$supports_symbol_hiding" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } symbol_hiding_CFLAGS="$tmp_CFLAGS" symbol_hiding_EXTERN="$tmp_EXTERN" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi supports_unittests=yes # cross-compilation of unit tests static library/programs fails when # libcurl shared library is built. This might be due to a libtool or # automake issue. In this case we disable unit tests. if test "x$cross_compiling" != "xno" && test "x$enable_shared" != "xno"; then supports_unittests=no fi # IRIX 6.5.24 gcc 3.3 autobuilds fail unittests library compilation due to # a problem related with OpenSSL headers and library versions not matching. # Disable unit tests while time to further investigate this is found. case $host in mips-sgi-irix6.5) if test "$compiler_id" = "GNU_C"; then supports_unittests=no fi ;; esac # All AIX autobuilds fails unit tests linking against unittests library # due to unittests library being built with no symbols or members. Libtool ? # Disable unit tests while time to further investigate this is found. case $host_os in aix*) supports_unittests=no ;; esac if test x$supports_unittests = xyes; then BUILD_UNITTESTS_TRUE= BUILD_UNITTESTS_FALSE='#' else BUILD_UNITTESTS_TRUE='#' BUILD_UNITTESTS_FALSE= fi # In order to detect support of sendmmsg() and accept4(), we need to escape the POSIX # jail by defining _GNU_SOURCE or will not expose it. case $host_os in *linux*|cygwin*|msys*) CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" ;; esac OPT_SERVER_DEBUG="default" # Check whether --enable-server-debug was given. if test ${enable_server_debug+y} then : enableval=$enable_server_debug; OPT_SERVER_DEBUG=$enableval fi case "$OPT_SERVER_DEBUG" in no) want_server_debug="no" ;; *) want_server_debug="no" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $want_server_debug" >&5 printf "%s\n" "$want_server_debug" >&6; } if test x$want_server_debug = xyes; then ENABLE_SERVER_DEBUG_TRUE= ENABLE_SERVER_DEBUG_FALSE='#' else ENABLE_SERVER_DEBUG_TRUE='#' ENABLE_SERVER_DEBUG_FALSE= fi if test "$curl_cv_native_windows" = 'yes'; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build target supports Win32 large files" >&5 printf %s "checking whether build target supports Win32 large files... " >&6; } if test "$curl_cv_wince" = 'yes'; then curl_win32_has_largefile='no' else curl_win32_has_largefile='yes' fi case "$curl_win32_has_largefile" in yes) if test x"$enable_largefile" = 'xno'; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes (large file disabled)" >&5 printf "%s\n" "yes (large file disabled)" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes (large file enabled)" >&5 printf "%s\n" "yes (large file enabled)" >&6; } printf "%s\n" "#define USE_WIN32_LARGE_FILES 1" >>confdefs.h fi ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build target supports Win32 crypto API" >&5 printf %s "checking whether build target supports Win32 crypto API... " >&6; } curl_win32_crypto_api="no" if test "$curl_cv_native_windows" = "yes" -a "$curl_cv_winuwp" != "yes"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #undef inline #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #include int main(void) { HCRYPTPROV hCryptProv; if(CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) { CryptReleaseContext(hCryptProv, 0); } return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : curl_win32_crypto_api="yes" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi case "$curl_win32_crypto_api" in yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define USE_WIN32_CRYPTO 1" >>confdefs.h USE_WIN32_CRYPTO=1 ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; esac curl_cv_apple='no' case $host in *-apple-*) curl_cv_apple='yes';; esac if test "$curl_cv_apple" = 'yes'; then old_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -Werror=partial-availability" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -Werror=partial-availability" >&5 printf %s "checking whether $CC accepts -Werror=partial-availability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } CFLAGS=$old_CFLAGS fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking to see if the compiler supports __builtin_available()" >&5 printf %s "checking to see if the compiler supports __builtin_available()... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { if(__builtin_available(macOS 10.12, iOS 5.0, *)) {} return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_BUILTIN_AVAILABLE 1" >>confdefs.h else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi curl_cv_cygwin='no' case $host_os in cygwin*|msys*) curl_cv_cygwin='yes';; esac if test "$curl_cv_native_windows" = "yes" && test -n "${RC}"; then HAVE_WINDRES_TRUE= HAVE_WINDRES_FALSE='#' else HAVE_WINDRES_TRUE='#' HAVE_WINDRES_FALSE= fi if test "$curl_cv_native_windows" = "yes"; then if test -z "$HAVE_WINDRES_TRUE"; then : else as_fn_error $? "windres not found in PATH. Windows builds require windres. Cannot continue." "$LINENO" 5 fi fi want_unity='no' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build libcurl and curl in \"unity\" mode" >&5 printf %s "checking whether to build libcurl and curl in \"unity\" mode... " >&6; } # Check whether --enable-unity was given. if test ${enable_unity+y} then : enableval=$enable_unity; case "$enableval" in yes) want_unity='yes' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "$want_unity" = 'yes'; then USE_UNITY_TRUE= USE_UNITY_FALSE='#' else USE_UNITY_TRUE='#' USE_UNITY_FALSE= fi want_test_bundles='no' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build tests into single-binary bundles" >&5 printf %s "checking whether to build tests into single-binary bundles... " >&6; } # Check whether --enable-test-bundles was given. if test ${enable_test_bundles+y} then : enableval=$enable_test_bundles; case "$enableval" in yes) want_test_bundles='yes' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "$want_test_bundles" = 'yes'; then USE_TEST_BUNDLES_TRUE= USE_TEST_BUNDLES_FALSE='#' else USE_TEST_BUNDLES_TRUE='#' USE_TEST_BUNDLES_FALSE= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support http" >&5 printf %s "checking whether to support http... " >&6; } # Check whether --enable-http was given. if test ${enable_http+y} then : enableval=$enable_http; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_HTTP 1" >>confdefs.h disable_http="yes" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: disable HTTP disables FTP over proxy, IPFS and RTSP" >&5 printf "%s\n" "$as_me: WARNING: disable HTTP disables FTP over proxy, IPFS and RTSP" >&2;} CURL_DISABLE_HTTP=1 printf "%s\n" "#define CURL_DISABLE_IPFS 1" >>confdefs.h CURL_DISABLE_IPFS=1 printf "%s\n" "#define CURL_DISABLE_RTSP 1" >>confdefs.h CURL_DISABLE_RTSP=1 printf "%s\n" "#define CURL_DISABLE_ALTSVC 1" >>confdefs.h printf "%s\n" "#define CURL_DISABLE_HSTS 1" >>confdefs.h curl_h1_msg="no (--enable-http)" curl_altsvc_msg="no"; curl_hsts_msg="no (--enable-hsts)"; enable_altsvc="no" hsts="no" ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support ftp" >&5 printf %s "checking whether to support ftp... " >&6; } # Check whether --enable-ftp was given. if test ${enable_ftp+y} then : enableval=$enable_ftp; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_FTP 1" >>confdefs.h CURL_DISABLE_FTP=1 ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support file" >&5 printf %s "checking whether to support file... " >&6; } # Check whether --enable-file was given. if test ${enable_file+y} then : enableval=$enable_file; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_FILE 1" >>confdefs.h CURL_DISABLE_FILE=1 ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support IPFS" >&5 printf %s "checking whether to support IPFS... " >&6; } # Check whether --enable-ipfs was given. if test ${enable_ipfs+y} then : enableval=$enable_ipfs; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_IPFS 1" >>confdefs.h CURL_DISABLE_IPFS=1 ;; *) if test x$CURL_DISABLE_HTTP = x1; then as_fn_error $? "HTTP support needs to be enabled in order to enable IPFS support!" "$LINENO" 5 else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } curl_ipfs_msg="enabled" fi ;; esac else $as_nop if test "x$CURL_DISABLE_HTTP" != "x1"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } curl_ipfs_msg="enabled" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support ldap" >&5 printf %s "checking whether to support ldap... " >&6; } # Check whether --enable-ldap was given. if test ${enable_ldap+y} then : enableval=$enable_ldap; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_LDAP 1" >>confdefs.h CURL_DISABLE_LDAP=1 ;; yes) ldap_askedfor="yes" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support ldaps" >&5 printf %s "checking whether to support ldaps... " >&6; } # Check whether --enable-ldaps was given. if test ${enable_ldaps+y} then : enableval=$enable_ldaps; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_LDAPS 1" >>confdefs.h CURL_DISABLE_LDAPS=1 ;; *) if test "x$CURL_DISABLE_LDAP" = "x1"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: LDAP needs to be enabled to support LDAPS" >&5 printf "%s\n" "LDAP needs to be enabled to support LDAPS" >&6; } printf "%s\n" "#define CURL_DISABLE_LDAPS 1" >>confdefs.h CURL_DISABLE_LDAPS=1 else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_LDAP_SSL 1" >>confdefs.h HAVE_LDAP_SSL=1 fi ;; esac else $as_nop if test "x$CURL_DISABLE_LDAP" = "x1"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_LDAPS 1" >>confdefs.h CURL_DISABLE_LDAPS=1 else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_LDAP_SSL 1" >>confdefs.h HAVE_LDAP_SSL=1 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support rtsp" >&5 printf %s "checking whether to support rtsp... " >&6; } # Check whether --enable-rtsp was given. if test ${enable_rtsp+y} then : enableval=$enable_rtsp; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_RTSP 1" >>confdefs.h CURL_DISABLE_RTSP=1 ;; *) if test x$CURL_DISABLE_HTTP = x1; then as_fn_error $? "HTTP support needs to be enabled in order to enable RTSP support!" "$LINENO" 5 else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } curl_rtsp_msg="enabled" fi ;; esac else $as_nop if test "x$CURL_DISABLE_HTTP" != "x1"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } curl_rtsp_msg="enabled" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support proxies" >&5 printf %s "checking whether to support proxies... " >&6; } # Check whether --enable-proxy was given. if test ${enable_proxy+y} then : enableval=$enable_proxy; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_PROXY 1" >>confdefs.h CURL_DISABLE_PROXY=1 https_proxy="no" ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support dict" >&5 printf %s "checking whether to support dict... " >&6; } # Check whether --enable-dict was given. if test ${enable_dict+y} then : enableval=$enable_dict; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_DICT 1" >>confdefs.h CURL_DISABLE_DICT=1 ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support telnet" >&5 printf %s "checking whether to support telnet... " >&6; } # Check whether --enable-telnet was given. if test ${enable_telnet+y} then : enableval=$enable_telnet; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_TELNET 1" >>confdefs.h CURL_DISABLE_TELNET=1 ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi if test "$curl_cv_winuwp" = 'yes' -o "$curl_cv_wince" = 'yes'; then printf "%s\n" "#define CURL_DISABLE_TELNET 1" >>confdefs.h CURL_DISABLE_TELNET=1 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support tftp" >&5 printf %s "checking whether to support tftp... " >&6; } # Check whether --enable-tftp was given. if test ${enable_tftp+y} then : enableval=$enable_tftp; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_TFTP 1" >>confdefs.h CURL_DISABLE_TFTP=1 ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support pop3" >&5 printf %s "checking whether to support pop3... " >&6; } # Check whether --enable-pop3 was given. if test ${enable_pop3+y} then : enableval=$enable_pop3; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_POP3 1" >>confdefs.h CURL_DISABLE_POP3=1 ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support imap" >&5 printf %s "checking whether to support imap... " >&6; } # Check whether --enable-imap was given. if test ${enable_imap+y} then : enableval=$enable_imap; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_IMAP 1" >>confdefs.h CURL_DISABLE_IMAP=1 ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support smb" >&5 printf %s "checking whether to support smb... " >&6; } # Check whether --enable-smb was given. if test ${enable_smb+y} then : enableval=$enable_smb; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_SMB 1" >>confdefs.h CURL_DISABLE_SMB=1 ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support smtp" >&5 printf %s "checking whether to support smtp... " >&6; } # Check whether --enable-smtp was given. if test ${enable_smtp+y} then : enableval=$enable_smtp; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_SMTP 1" >>confdefs.h CURL_DISABLE_SMTP=1 ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support gopher" >&5 printf %s "checking whether to support gopher... " >&6; } # Check whether --enable-gopher was given. if test ${enable_gopher+y} then : enableval=$enable_gopher; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_GOPHER 1" >>confdefs.h CURL_DISABLE_GOPHER=1 ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support mqtt" >&5 printf %s "checking whether to support mqtt... " >&6; } # Check whether --enable-mqtt was given. if test ${enable_mqtt+y} then : enableval=$enable_mqtt; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_MQTT 1" >>confdefs.h CURL_DISABLE_MQTT=1 ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to provide built-in manual" >&5 printf %s "checking whether to provide built-in manual... " >&6; } # Check whether --enable-manual was given. if test ${enable_manual+y} then : enableval=$enable_manual; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } USE_MANUAL="1" ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } USE_MANUAL="1" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build documentation" >&5 printf %s "checking whether to build documentation... " >&6; } # Check whether --enable-docs was given. if test ${enable_docs+y} then : enableval=$enable_docs; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } BUILD_DOCS=0 USE_MANUAL=0 curl_docs_msg="no" ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } BUILD_DOCS=1 ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } BUILD_DOCS=1 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable generation of C code" >&5 printf %s "checking whether to enable generation of C code... " >&6; } # Check whether --enable-libcurl_option was given. if test ${enable_libcurl_option+y} then : enableval=$enable_libcurl_option; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_LIBCURL_OPTION 1" >>confdefs.h curl_libcurl_msg="no" ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use libgcc" >&5 printf %s "checking whether to use libgcc... " >&6; } # Check whether --enable-libgcc was given. if test ${enable_libgcc+y} then : enableval=$enable_libgcc; case "$enableval" in yes) LIBS="-lgcc $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if X/Open network library is required" >&5 printf %s "checking if X/Open network library is required... " >&6; } tst_lib_xnet_required="no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { #if defined(__hpux) && defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 600) #elif defined(__hpux) && defined(_XOPEN_SOURCE_EXTENDED) #else #error force compilation error #endif return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : tst_lib_xnet_required="yes" LIBS="-lxnet $LIBS" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tst_lib_xnet_required" >&5 printf "%s\n" "$tst_lib_xnet_required" >&6; } ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" if test "x$ac_cv_func_gethostbyname" = xyes then : HAVE_GETHOSTBYNAME="1" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 printf %s "checking for gethostbyname in -lnsl... " >&6; } if test ${ac_cv_lib_nsl_gethostbyname+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main(void) { return gethostbyname (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_nsl_gethostbyname=yes else $as_nop ac_cv_lib_nsl_gethostbyname=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 printf "%s\n" "$ac_cv_lib_nsl_gethostbyname" >&6; } if test "x$ac_cv_lib_nsl_gethostbyname" = xyes then : HAVE_GETHOSTBYNAME="1" LIBS="-lnsl $LIBS" fi fi if test "$HAVE_GETHOSTBYNAME" != "1"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lsocket" >&5 printf %s "checking for gethostbyname in -lsocket... " >&6; } if test ${ac_cv_lib_socket_gethostbyname+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main(void) { return gethostbyname (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_socket_gethostbyname=yes else $as_nop ac_cv_lib_socket_gethostbyname=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_gethostbyname" >&5 printf "%s\n" "$ac_cv_lib_socket_gethostbyname" >&6; } if test "x$ac_cv_lib_socket_gethostbyname" = xyes then : HAVE_GETHOSTBYNAME="1" LIBS="-lsocket $LIBS" fi fi if test "$HAVE_GETHOSTBYNAME" != "1"; then clean_CPPFLAGS=$CPPFLAGS clean_LDFLAGS=$LDFLAGS CPPFLAGS="-I${WATT_ROOT}/inc" LDFLAGS="-L${WATT_ROOT}/lib" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lwatt" >&5 printf %s "checking for gethostbyname in -lwatt... " >&6; } if test ${ac_cv_lib_watt_gethostbyname+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lwatt $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main(void) { return gethostbyname (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_watt_gethostbyname=yes else $as_nop ac_cv_lib_watt_gethostbyname=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_watt_gethostbyname" >&5 printf "%s\n" "$ac_cv_lib_watt_gethostbyname" >&6; } if test "x$ac_cv_lib_watt_gethostbyname" = xyes then : HAVE_GETHOSTBYNAME="1" LIBS="-lwatt $LIBS" printf "%s\n" "#define USE_WATT32 1" >>confdefs.h else $as_nop CPPFLAGS=$clean_CPPFLAGS LDFLAGS=$clean_LDFLAGS fi fi if test "$HAVE_GETHOSTBYNAME" != "1"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname with both nsl and socket libs" >&5 printf %s "checking for gethostbyname with both nsl and socket libs... " >&6; } my_ac_save_LIBS=$LIBS LIBS="-lnsl -lsocket $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { gethostbyname(); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } HAVE_GETHOSTBYNAME="1" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } LIBS=$my_ac_save_LIBS fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi if test "$HAVE_GETHOSTBYNAME" != "1"; then if test "$curl_cv_wince" = 'yes'; then winsock_LIB="-lws2" if test ! -z "$winsock_LIB"; then my_ac_save_LIBS=$LIBS LIBS="$winsock_LIB $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in $winsock_LIB" >&5 printf %s "checking for gethostbyname in $winsock_LIB... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #endif int main(void) { gethostbyname("localhost"); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } HAVE_GETHOSTBYNAME="1" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } winsock_LIB="" LIBS=$my_ac_save_LIBS fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi fi fi # In UWP mode gethostbyname gets detected via the core libs, but some # code (in6addr_any) still need ws2_32, so let us detect and add it. if test "$HAVE_GETHOSTBYNAME" != "1" -o "$curl_cv_winuwp" = "yes"; then if test "$curl_cv_native_windows" = "yes"; then winsock_LIB="-lws2_32" if test ! -z "$winsock_LIB"; then my_ac_save_LIBS=$LIBS LIBS="$winsock_LIB $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in $winsock_LIB" >&5 printf %s "checking for gethostbyname in $winsock_LIB... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #endif int main(void) { gethostbyname("localhost"); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } HAVE_GETHOSTBYNAME="1" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } winsock_LIB="" LIBS=$my_ac_save_LIBS fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi fi fi if test "$HAVE_GETHOSTBYNAME" != "1"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname for Minix 3" >&5 printf %s "checking for gethostbyname for Minix 3... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Older Minix versions may need here instead */ #include int main(void) { gethostbyname("localhost"); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } HAVE_GETHOSTBYNAME="1" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi if test "$HAVE_GETHOSTBYNAME" != "1"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname for eCos" >&5 printf %s "checking for gethostbyname for eCos... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main(void) { gethostbyname("localhost"); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } HAVE_GETHOSTBYNAME="1" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi if test "$HAVE_GETHOSTBYNAME" != "1" -o "${with_amissl+set}" = set; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname for AmigaOS bsdsocket.library" >&5 printf %s "checking for gethostbyname for AmigaOS bsdsocket.library... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define __USE_INLINE__ #include #ifdef __amigaos4__ struct SocketIFace *ISocket = NULL; #else struct Library *SocketBase = NULL; #endif int main(void) { unsigned char host[] = "localhost"; gethostbyname(host); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } HAVE_GETHOSTBYNAME="1" HAVE_PROTO_BSDSOCKET_H="1" printf "%s\n" "#define HAVE_PROTO_BSDSOCKET_H 1" >>confdefs.h else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi if test "$HAVE_GETHOSTBYNAME" != "1"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnetwork" >&5 printf %s "checking for gethostbyname in -lnetwork... " >&6; } if test ${ac_cv_lib_network_gethostbyname+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lnetwork $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main(void) { return gethostbyname (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_network_gethostbyname=yes else $as_nop ac_cv_lib_network_gethostbyname=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_network_gethostbyname" >&5 printf "%s\n" "$ac_cv_lib_network_gethostbyname" >&6; } if test "x$ac_cv_lib_network_gethostbyname" = xyes then : HAVE_GETHOSTBYNAME="1" LIBS="-lnetwork $LIBS" fi fi curl_includes_winsock2="\ /* includes start */ #ifdef _WIN32 # ifndef WIN32_LEAN_AND_MEAN # define WIN32_LEAN_AND_MEAN # endif # include #endif /* includes end */" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build target is a native Windows one" >&5 printf %s "checking whether build target is a native Windows one... " >&6; } if test ${curl_cv_native_windows+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { #ifdef _WIN32 int dummy = 1; (void)dummy; #else #error Not a native Windows build target. #endif return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : curl_cv_native_windows="yes" else $as_nop curl_cv_native_windows="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_native_windows" >&5 printf "%s\n" "$curl_cv_native_windows" >&6; } if test "x$curl_cv_native_windows" = xyes; then DOING_NATIVE_WINDOWS_TRUE= DOING_NATIVE_WINDOWS_FALSE='#' else DOING_NATIVE_WINDOWS_TRUE='#' DOING_NATIVE_WINDOWS_FALSE= fi curl_includes_bsdsocket="\ /* includes start */ #if defined(HAVE_PROTO_BSDSOCKET_H) # define __NO_NET_API # define __USE_INLINE__ # include # ifdef HAVE_SYS_IOCTL_H # include # endif # ifdef __amigaos4__ struct SocketIFace *ISocket = NULL; # else struct Library *SocketBase = NULL; # endif # define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0) #endif /* includes end */" ac_fn_c_check_header_compile "$LINENO" "proto/bsdsocket.h" "ac_cv_header_proto_bsdsocket_h" "$curl_includes_bsdsocket " if test "x$ac_cv_header_proto_bsdsocket_h" = xyes then : printf "%s\n" "#define HAVE_PROTO_BSDSOCKET_H 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for connect in libraries" >&5 printf %s "checking for connect in libraries... " >&6; } tst_connect_save_LIBS="$LIBS" tst_connect_need_LIBS="unknown" for tst_lib in '' '-lsocket' ; do if test "$tst_connect_need_LIBS" = "unknown"; then LIBS="$tst_lib $tst_connect_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_winsock2 $curl_includes_bsdsocket #if !defined(_WIN32) && !defined(HAVE_PROTO_BSDSOCKET_H) int connect(int, void*, int); #endif int main(void) { if(0 != connect(0, 0, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : tst_connect_need_LIBS="$tst_lib" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi done LIBS="$tst_connect_save_LIBS" # case X-"$tst_connect_need_LIBS" in X-unknown) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cannot find connect" >&5 printf "%s\n" "cannot find connect" >&6; } as_fn_error $? "cannot find connect function in libraries." "$LINENO" 5 ;; X-) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tst_connect_need_LIBS" >&5 printf "%s\n" "$tst_connect_need_LIBS" >&6; } LIBS="$tst_connect_need_LIBS $tst_connect_save_LIBS" ;; esac ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default" if test "x$ac_cv_header_sys_types_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" if test "x$ac_cv_header_sys_time_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for monotonic clock_gettime" >&5 printf %s "checking for monotonic clock_gettime... " >&6; } # cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #include int main(void) { struct timespec ts; (void)clock_gettime(CLOCK_MONOTONIC, &ts); (void)ts; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } curl_func_clock_gettime="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_func_clock_gettime="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # if test "$curl_func_clock_gettime" = "yes"; then # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in libraries" >&5 printf %s "checking for clock_gettime in libraries... " >&6; } # curl_cv_save_LIBS="$LIBS" curl_cv_gclk_LIBS="unknown" # for x_xlibs in '' '-lrt' '-lposix4' ; do if test "$curl_cv_gclk_LIBS" = "unknown"; then if test -z "$x_xlibs"; then LIBS="$curl_cv_save_LIBS" else LIBS="$x_xlibs $curl_cv_save_LIBS" fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #include int main(void) { struct timespec ts; (void)clock_gettime(CLOCK_MONOTONIC, &ts); (void)ts; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : curl_cv_gclk_LIBS="$x_xlibs" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi done # LIBS="$curl_cv_save_LIBS" # case X-"$curl_cv_gclk_LIBS" in X-unknown) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cannot find clock_gettime" >&5 printf "%s\n" "cannot find clock_gettime" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: HAVE_CLOCK_GETTIME_MONOTONIC will not be defined" >&5 printf "%s\n" "$as_me: WARNING: HAVE_CLOCK_GETTIME_MONOTONIC will not be defined" >&2;} curl_func_clock_gettime="no" ;; X-) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no additional lib required" >&5 printf "%s\n" "no additional lib required" >&6; } curl_func_clock_gettime="yes" ;; *) if test "x$dontwant_rt" = "xyes" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: needs -lrt but asked not to use it, HAVE_CLOCK_GETTIME_MONOTONIC will not be defined" >&5 printf "%s\n" "$as_me: WARNING: needs -lrt but asked not to use it, HAVE_CLOCK_GETTIME_MONOTONIC will not be defined" >&2;} curl_func_clock_gettime="no" else if test -z "$curl_cv_save_LIBS"; then LIBS="$curl_cv_gclk_LIBS" else LIBS="$curl_cv_gclk_LIBS $curl_cv_save_LIBS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_gclk_LIBS" >&5 printf "%s\n" "$curl_cv_gclk_LIBS" >&6; } curl_func_clock_gettime="yes" fi ;; esac # if test "x$cross_compiling" != "xyes" && test "$curl_func_clock_gettime" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if monotonic clock_gettime works" >&5 printf %s "checking if monotonic clock_gettime works... " >&6; } if test "$curl_cv_apple" = 'yes'; then if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #include int main(void) { struct timespec ts; if(0 == clock_gettime(CLOCK_MONOTONIC, &ts)) return 0; (void)ts; return 1; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: HAVE_CLOCK_GETTIME_MONOTONIC will not be defined" >&5 printf "%s\n" "$as_me: WARNING: HAVE_CLOCK_GETTIME_MONOTONIC will not be defined" >&2;} curl_func_clock_gettime="no" LIBS="$curl_cv_save_LIBS" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else oldcc=$CC old=$LD_LIBRARY_PATH CC="sh ./run-compiler" LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old export LD_LIBRARY_PATH if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #include int main(void) { struct timespec ts; if(0 == clock_gettime(CLOCK_MONOTONIC, &ts)) return 0; (void)ts; return 1; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: HAVE_CLOCK_GETTIME_MONOTONIC will not be defined" >&5 printf "%s\n" "$as_me: WARNING: HAVE_CLOCK_GETTIME_MONOTONIC will not be defined" >&2;} curl_func_clock_gettime="no" LIBS="$curl_cv_save_LIBS" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi LD_LIBRARY_PATH=$old # restore CC=$oldcc fi fi # case "$curl_func_clock_gettime" in yes) printf "%s\n" "#define HAVE_CLOCK_GETTIME_MONOTONIC 1" >>confdefs.h ;; esac # fi # ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default" if test "x$ac_cv_header_sys_types_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" if test "x$ac_cv_header_sys_time_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for raw monotonic clock_gettime" >&5 printf %s "checking for raw monotonic clock_gettime... " >&6; } # cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #include int main(void) { struct timespec ts; (void)clock_gettime(CLOCK_MONOTONIC_RAW, &ts); (void)ts; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_CLOCK_GETTIME_MONOTONIC_RAW 1" >>confdefs.h else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CURL_NETWORK_AND_TIME_LIBS=$LIBS clean_CPPFLAGS=$CPPFLAGS clean_LDFLAGS=$LDFLAGS clean_LIBS=$LIBS ZLIB_LIBS="" # Check whether --with-zlib was given. if test ${with_zlib+y} then : withval=$with_zlib; OPT_ZLIB="$withval" fi if test "$OPT_ZLIB" = "no"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: zlib disabled" >&5 printf "%s\n" "$as_me: WARNING: zlib disabled" >&2;} else if test "$OPT_ZLIB" = "yes"; then OPT_ZLIB="" fi if test -z "$OPT_ZLIB"; then if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for zlib options with pkg-config" >&5 printf %s "checking for zlib options with pkg-config... " >&6; } itexists=` if test -n ""; then PKG_CONFIG_LIBDIR="" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists zlib >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no"; then ZLIB_LIBS="`$PKGCONFIG --libs-only-l zlib`" if test -n "$ZLIB_LIBS"; then LDFLAGS="$LDFLAGS `$PKGCONFIG --libs-only-L zlib`" else ZLIB_LIBS="`$PKGCONFIG --libs zlib`" fi LIBS="$ZLIB_LIBS $LIBS" CPPFLAGS="$CPPFLAGS `$PKGCONFIG --cflags zlib`" OPT_ZLIB="" HAVE_LIBZ="1" fi if test -z "$HAVE_LIBZ"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inflateEnd in -lz" >&5 printf %s "checking for inflateEnd in -lz... " >&6; } if test ${ac_cv_lib_z_inflateEnd+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char inflateEnd (); int main(void) { return inflateEnd (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_z_inflateEnd=yes else $as_nop ac_cv_lib_z_inflateEnd=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateEnd" >&5 printf "%s\n" "$ac_cv_lib_z_inflateEnd" >&6; } if test "x$ac_cv_lib_z_inflateEnd" = xyes then : HAVE_LIBZ="1" ZLIB_LIBS="-lz" LIBS="$ZLIB_LIBS $LIBS" else $as_nop OPT_ZLIB="/usr/local" fi fi fi if test -n "$OPT_ZLIB"; then CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include" LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib$libsuff" fi ac_fn_c_check_header_compile "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" if test "x$ac_cv_header_zlib_h" = xyes then : HAVE_ZLIB_H="1" if test "$HAVE_LIBZ" != "1"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gzread in -lz" >&5 printf %s "checking for gzread in -lz... " >&6; } if test ${ac_cv_lib_z_gzread+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char gzread (); int main(void) { return gzread (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_z_gzread=yes else $as_nop ac_cv_lib_z_gzread=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzread" >&5 printf "%s\n" "$ac_cv_lib_z_gzread" >&6; } if test "x$ac_cv_lib_z_gzread" = xyes then : HAVE_LIBZ="1" ZLIB_LIBS="-lz" LIBS="$ZLIB_LIBS $LIBS" else $as_nop CPPFLAGS=$clean_CPPFLAGS LDFLAGS=$clean_LDFLAGS fi fi else $as_nop CPPFLAGS=$clean_CPPFLAGS LDFLAGS=$clean_LDFLAGS fi if test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" != "1"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: configure found only the libz lib, not the header file!" >&5 printf "%s\n" "$as_me: WARNING: configure found only the libz lib, not the header file!" >&2;} HAVE_LIBZ="" CPPFLAGS=$clean_CPPFLAGS LDFLAGS=$clean_LDFLAGS LIBS=$clean_LIBS ZLIB_LIBS="" elif test "$HAVE_LIBZ" != "1" && test "$HAVE_ZLIB_H" = "1"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: configure found only the libz header file, not the lib!" >&5 printf "%s\n" "$as_me: WARNING: configure found only the libz header file, not the lib!" >&2;} CPPFLAGS=$clean_CPPFLAGS LDFLAGS=$clean_LDFLAGS LIBS=$clean_LIBS ZLIB_LIBS="" elif test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" = "1"; then printf "%s\n" "#define HAVE_LIBZ 1" >>confdefs.h LIBS="$ZLIB_LIBS $clean_LIBS" AMFIXLIB="1" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: found both libz and libz.h header" >&5 printf "%s\n" "$as_me: found both libz and libz.h header" >&6;} LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE zlib" curl_zlib_msg="enabled" fi fi if test x"$AMFIXLIB" = x1; then HAVE_LIBZ_TRUE= HAVE_LIBZ_FALSE='#' else HAVE_LIBZ_TRUE='#' HAVE_LIBZ_FALSE= fi OPT_BROTLI=off # Check whether --with-brotli was given. if test ${with_brotli+y} then : withval=$with_brotli; OPT_BROTLI=$withval fi if test X"$OPT_BROTLI" != Xno; then CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" case "$OPT_BROTLI" in yes) if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libbrotlidec options with pkg-config" >&5 printf %s "checking for libbrotlidec options with pkg-config... " >&6; } itexists=` if test -n ""; then PKG_CONFIG_LIBDIR="" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists libbrotlidec >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no"; then LIB_BROTLI=`$PKGCONFIG --libs-only-l libbrotlidec` LD_BROTLI=`$PKGCONFIG --libs-only-L libbrotlidec` CPP_BROTLI=`$PKGCONFIG --cflags-only-I libbrotlidec` version=`$PKGCONFIG --modversion libbrotlidec` DIR_BROTLI=`echo $LD_BROTLI | $SED -e 's/^-L//'` fi ;; off) ;; *) PREFIX_BROTLI=$OPT_BROTLI ;; esac if test -n "$PREFIX_BROTLI"; then LIB_BROTLI="-lbrotlidec" LD_BROTLI=-L${PREFIX_BROTLI}/lib$libsuff CPP_BROTLI=-I${PREFIX_BROTLI}/include DIR_BROTLI=${PREFIX_BROTLI}/lib$libsuff fi LDFLAGS="$LDFLAGS $LD_BROTLI" LDFLAGSPC="$LDFLAGSPC $LD_BROTLI" CPPFLAGS="$CPPFLAGS $CPP_BROTLI" LIBS="$LIB_BROTLI $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BrotliDecoderDecompress in -lbrotlidec" >&5 printf %s "checking for BrotliDecoderDecompress in -lbrotlidec... " >&6; } if test ${ac_cv_lib_brotlidec_BrotliDecoderDecompress+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lbrotlidec $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char BrotliDecoderDecompress (); int main(void) { return BrotliDecoderDecompress (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_brotlidec_BrotliDecoderDecompress=yes else $as_nop ac_cv_lib_brotlidec_BrotliDecoderDecompress=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_brotlidec_BrotliDecoderDecompress" >&5 printf "%s\n" "$ac_cv_lib_brotlidec_BrotliDecoderDecompress" >&6; } if test "x$ac_cv_lib_brotlidec_BrotliDecoderDecompress" = xyes then : printf "%s\n" "#define HAVE_LIBBROTLIDEC 1" >>confdefs.h LIBS="-lbrotlidec $LIBS" fi for ac_header in brotli/decode.h do : ac_fn_c_check_header_compile "$LINENO" "brotli/decode.h" "ac_cv_header_brotli_decode_h" "$ac_includes_default" if test "x$ac_cv_header_brotli_decode_h" = xyes then : printf "%s\n" "#define HAVE_BROTLI_DECODE_H 1" >>confdefs.h curl_brotli_msg="enabled (libbrotlidec)" HAVE_BROTLI=1 printf "%s\n" "#define HAVE_BROTLI 1" >>confdefs.h fi done if test X"$OPT_BROTLI" != Xoff && test "$HAVE_BROTLI" != "1"; then as_fn_error $? "BROTLI libs and/or directories were not found where specified!" "$LINENO" 5 fi if test "$HAVE_BROTLI" = "1"; then if test -n "$DIR_BROTLI"; then if test "x$cross_compiling" != "xyes"; then CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_BROTLI" export CURL_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_BROTLI to CURL_LIBRARY_PATH" >&5 printf "%s\n" "$as_me: Added $DIR_BROTLI to CURL_LIBRARY_PATH" >&6;} fi fi LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libbrotlidec libbrotlicommon" else LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS fi fi OPT_ZSTD=off # Check whether --with-zstd was given. if test ${with_zstd+y} then : withval=$with_zstd; OPT_ZSTD=$withval fi if test X"$OPT_ZSTD" != Xno; then CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" case "$OPT_ZSTD" in yes) if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libzstd options with pkg-config" >&5 printf %s "checking for libzstd options with pkg-config... " >&6; } itexists=` if test -n ""; then PKG_CONFIG_LIBDIR="" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists libzstd >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no"; then LIB_ZSTD=`$PKGCONFIG --libs-only-l libzstd` LD_ZSTD=`$PKGCONFIG --libs-only-L libzstd` CPP_ZSTD=`$PKGCONFIG --cflags-only-I libzstd` version=`$PKGCONFIG --modversion libzstd` DIR_ZSTD=`echo $LD_ZSTD | $SED -e 's/-L//'` fi ;; off) ;; *) PREFIX_ZSTD=$OPT_ZSTD ;; esac if test -n "$PREFIX_ZSTD"; then LIB_ZSTD="-lzstd" LD_ZSTD=-L${PREFIX_ZSTD}/lib$libsuff CPP_ZSTD=-I${PREFIX_ZSTD}/include DIR_ZSTD=${PREFIX_ZSTD}/lib$libsuff fi LDFLAGS="$LDFLAGS $LD_ZSTD" LDFLAGSPC="$LDFLAGSPC $LD_ZSTD" CPPFLAGS="$CPPFLAGS $CPP_ZSTD" LIBS="$LIB_ZSTD $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ZSTD_createDStream in -lzstd" >&5 printf %s "checking for ZSTD_createDStream in -lzstd... " >&6; } if test ${ac_cv_lib_zstd_ZSTD_createDStream+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lzstd $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char ZSTD_createDStream (); int main(void) { return ZSTD_createDStream (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_zstd_ZSTD_createDStream=yes else $as_nop ac_cv_lib_zstd_ZSTD_createDStream=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_zstd_ZSTD_createDStream" >&5 printf "%s\n" "$ac_cv_lib_zstd_ZSTD_createDStream" >&6; } if test "x$ac_cv_lib_zstd_ZSTD_createDStream" = xyes then : printf "%s\n" "#define HAVE_LIBZSTD 1" >>confdefs.h LIBS="-lzstd $LIBS" fi for ac_header in zstd.h do : ac_fn_c_check_header_compile "$LINENO" "zstd.h" "ac_cv_header_zstd_h" "$ac_includes_default" if test "x$ac_cv_header_zstd_h" = xyes then : printf "%s\n" "#define HAVE_ZSTD_H 1" >>confdefs.h curl_zstd_msg="enabled (libzstd)" HAVE_ZSTD=1 printf "%s\n" "#define HAVE_ZSTD 1" >>confdefs.h fi done if test X"$OPT_ZSTD" != Xoff && test "$HAVE_ZSTD" != "1"; then as_fn_error $? "libzstd was not found where specified!" "$LINENO" 5 fi if test "$HAVE_ZSTD" = "1"; then if test -n "$DIR_ZSTD"; then if test "x$cross_compiling" != "xyes"; then CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_ZSTD" export CURL_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_ZSTD to CURL_LIBRARY_PATH" >&5 printf "%s\n" "$as_me: Added $DIR_ZSTD to CURL_LIBRARY_PATH" >&6;} fi fi LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libzstd" else LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS fi fi LDAPLIBNAME="" # Check whether --with-ldap-lib was given. if test ${with_ldap_lib+y} then : withval=$with_ldap_lib; LDAPLIBNAME="$withval" fi LBERLIBNAME="" # Check whether --with-lber-lib was given. if test ${with_lber_lib+y} then : withval=$with_lber_lib; LBERLIBNAME="$withval" fi if test x$CURL_DISABLE_LDAP != x1; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lber.h" >&5 printf %s "checking for lber.h... " >&6; } if test ${curl_cv_header_lber_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #undef inline #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #else #ifdef HAVE_SYS_TYPES_H #include #endif #endif #ifndef NULL #define NULL (void *)0 #endif #include int main(void) { BerValue *bvp = NULL; BerElement *bep = ber_init(bvp); ber_free(bep, 1); return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : curl_cv_header_lber_h="yes" else $as_nop curl_cv_header_lber_h="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_lber_h" >&5 printf "%s\n" "$curl_cv_header_lber_h" >&6; } if test "$curl_cv_header_lber_h" = "yes"; then printf "%s\n" "#define HAVE_LBER_H 1" >>confdefs.h # cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #undef inline #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #else #ifdef HAVE_SYS_TYPES_H #include #endif #endif #ifndef NULL #define NULL (void *)0 #endif #ifndef LDAP_DEPRECATED #define LDAP_DEPRECATED 1 #endif #include int main(void) { BerValue *bvp = NULL; BerElement *bep = ber_init(bvp); ber_free(bep, 1); return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : curl_cv_need_header_lber_h="no" else $as_nop curl_cv_need_header_lber_h="yes" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # case "$curl_cv_need_header_lber_h" in yes) printf "%s\n" "#define NEED_LBER_H 1" >>confdefs.h ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ldap.h" >&5 printf %s "checking for ldap.h... " >&6; } if test ${curl_cv_header_ldap_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #undef inline #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #else #ifdef HAVE_SYS_TYPES_H #include #endif #endif #ifndef LDAP_DEPRECATED #define LDAP_DEPRECATED 1 #endif #ifdef NEED_LBER_H #include #endif #include int main(void) { LDAP *ldp = ldap_init("0.0.0.0", LDAP_PORT); int res = ldap_unbind(ldp); (void)res; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : curl_cv_header_ldap_h="yes" else $as_nop curl_cv_header_ldap_h="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_ldap_h" >&5 printf "%s\n" "$curl_cv_header_ldap_h" >&6; } case "$curl_cv_header_ldap_h" in yes) printf "%s\n" "#define HAVE_LDAP_H 1" >>confdefs.h ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ldap_ssl.h" >&5 printf %s "checking for ldap_ssl.h... " >&6; } if test ${curl_cv_header_ldap_ssl_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #undef inline #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #else #ifdef HAVE_SYS_TYPES_H #include #endif #endif #ifndef LDAP_DEPRECATED #define LDAP_DEPRECATED 1 #endif #ifdef NEED_LBER_H #include #endif #ifdef HAVE_LDAP_H #include #endif #include int main(void) { LDAP *ldp = ldapssl_init("0.0.0.0", LDAPS_PORT, 1); (void)ldp; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : curl_cv_header_ldap_ssl_h="yes" else $as_nop curl_cv_header_ldap_ssl_h="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_ldap_ssl_h" >&5 printf "%s\n" "$curl_cv_header_ldap_ssl_h" >&6; } case "$curl_cv_header_ldap_ssl_h" in yes) printf "%s\n" "#define HAVE_LDAP_SSL_H 1" >>confdefs.h ;; esac if test -z "$LDAPLIBNAME"; then if test "$curl_cv_native_windows" = "yes" -a "$curl_cv_winuwp" != "yes"; then LDAPLIBNAME="wldap32" LBERLIBNAME="no" fi fi if test "$LDAPLIBNAME"; then as_ac_Lib=`printf "%s\n" "ac_cv_lib_"$LDAPLIBNAME"""_ldap_init" | $as_tr_sh` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ldap_init in -l\"$LDAPLIBNAME\"" >&5 printf %s "checking for ldap_init in -l\"$LDAPLIBNAME\"... " >&6; } if eval test \${$as_ac_Lib+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-l"$LDAPLIBNAME" $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char ldap_init (); int main(void) { return ldap_init (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$as_ac_Lib=yes" else $as_nop eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : cat >>confdefs.h <<_ACEOF #define `printf "%s\n" "HAVE_LIB"$LDAPLIBNAME"" | $as_tr_cpp` 1 _ACEOF LIBS="-l"$LDAPLIBNAME" $LIBS" else $as_nop if test -n "$ldap_askedfor"; then as_fn_error $? "couldn't detect the LDAP libraries" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: \"$LDAPLIBNAME\" is not an LDAP library: LDAP disabled" >&5 printf "%s\n" "$as_me: WARNING: \"$LDAPLIBNAME\" is not an LDAP library: LDAP disabled" >&2;} printf "%s\n" "#define CURL_DISABLE_LDAP 1" >>confdefs.h CURL_DISABLE_LDAP=1 printf "%s\n" "#define CURL_DISABLE_LDAPS 1" >>confdefs.h CURL_DISABLE_LDAPS=1 fi else # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LDAP libraries" >&5 printf %s "checking for LDAP libraries... " >&6; } # u_libs="" # # curl_cv_save_LIBS="$LIBS" curl_cv_ldap_LIBS="unknown" # for x_nlibs in '' "$u_libs" \ '-lldap' \ '-lldap -llber' \ '-llber -lldap' \ '-lldapssl -lldapx -lldapsdk' \ '-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" else LIBS="$x_nlibs $curl_cv_save_LIBS" fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #undef inline #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #else #ifdef HAVE_SYS_TYPES_H #include #endif #endif #ifndef NULL #define NULL (void *)0 #endif #ifndef LDAP_DEPRECATED #define LDAP_DEPRECATED 1 #endif #ifdef NEED_LBER_H #include #endif #ifdef HAVE_LDAP_H #include #endif int main(void) { BerValue *bvp = NULL; BerElement *bep = ber_init(bvp); LDAP *ldp = ldap_init("0.0.0.0", LDAP_PORT); int res = ldap_unbind(ldp); ber_free(bep, 1); (void)res; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : curl_cv_ldap_LIBS="$x_nlibs" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi done # LIBS="$curl_cv_save_LIBS" # case X-"$curl_cv_ldap_LIBS" in X-unknown) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cannot find LDAP libraries" >&5 printf "%s\n" "cannot find LDAP libraries" >&6; } ;; X-) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no additional lib required" >&5 printf "%s\n" "no additional lib required" >&6; } ;; *) if test -z "$curl_cv_save_LIBS"; then LIBS="$curl_cv_ldap_LIBS" else LIBS="$curl_cv_ldap_LIBS $curl_cv_save_LIBS" fi # FIXME: Enable when ldap was detected via pkg-config if false; then LIBCURL_PC_REQUIRES_PRIVATE="ldap $LIBCURL_PC_REQUIRES_PRIVATE" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_ldap_LIBS" >&5 printf "%s\n" "$curl_cv_ldap_LIBS" >&6; } ;; esac # case X-"$curl_cv_ldap_LIBS" in X-unknown) if test -n "$ldap_askedfor"; then as_fn_error $? "couldn't detect the LDAP libraries" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find libraries for LDAP support: LDAP disabled" >&5 printf "%s\n" "$as_me: WARNING: Cannot find libraries for LDAP support: LDAP disabled" >&2;} printf "%s\n" "#define CURL_DISABLE_LDAP 1" >>confdefs.h CURL_DISABLE_LDAP=1 printf "%s\n" "#define CURL_DISABLE_LDAPS 1" >>confdefs.h CURL_DISABLE_LDAPS=1 ;; esac fi fi if test x$CURL_DISABLE_LDAP != x1; then if test "$LBERLIBNAME"; then if test "$LBERLIBNAME" != "no"; then as_ac_Lib=`printf "%s\n" "ac_cv_lib_"$LBERLIBNAME"""_ber_free" | $as_tr_sh` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ber_free in -l\"$LBERLIBNAME\"" >&5 printf %s "checking for ber_free in -l\"$LBERLIBNAME\"... " >&6; } if eval test \${$as_ac_Lib+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-l"$LBERLIBNAME" $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char ber_free (); int main(void) { return ber_free (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$as_ac_Lib=yes" else $as_nop eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : cat >>confdefs.h <<_ACEOF #define `printf "%s\n" "HAVE_LIB"$LBERLIBNAME"" | $as_tr_cpp` 1 _ACEOF LIBS="-l"$LBERLIBNAME" $LIBS" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: \"$LBERLIBNAME\" is not an LBER library: LDAP disabled" >&5 printf "%s\n" "$as_me: WARNING: \"$LBERLIBNAME\" is not an LBER library: LDAP disabled" >&2;} printf "%s\n" "#define CURL_DISABLE_LDAP 1" >>confdefs.h CURL_DISABLE_LDAP=1 printf "%s\n" "#define CURL_DISABLE_LDAPS 1" >>confdefs.h CURL_DISABLE_LDAPS=1 fi fi fi fi if test x$CURL_DISABLE_LDAP != x1; then ac_fn_c_check_func "$LINENO" "ldap_url_parse" "ac_cv_func_ldap_url_parse" if test "x$ac_cv_func_ldap_url_parse" = xyes then : printf "%s\n" "#define HAVE_LDAP_URL_PARSE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "ldap_init_fd" "ac_cv_func_ldap_init_fd" if test "x$ac_cv_func_ldap_init_fd" = xyes then : printf "%s\n" "#define HAVE_LDAP_INIT_FD 1" >>confdefs.h fi if test "$LDAPLIBNAME" = "wldap32"; then curl_ldap_msg="enabled (winldap)" printf "%s\n" "#define USE_WIN32_LDAP 1" >>confdefs.h else if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then curl_ldap_msg="enabled (OpenLDAP)" printf "%s\n" "#define USE_OPENLDAP 1" >>confdefs.h USE_OPENLDAP=1 else curl_ldap_msg="enabled (ancient OpenLDAP)" fi fi fi if test x$CURL_DISABLE_LDAPS != x1; then curl_ldaps_msg="enabled" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable IPv6" >&5 printf %s "checking whether to enable IPv6... " >&6; } # Check whether --enable-ipv6 was given. if test ${enable_ipv6+y} then : enableval=$enable_ipv6; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ipv6=no ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ipv6=yes ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* are AF_INET6 and sockaddr_in6 available? */ #include #ifdef _WIN32 #include #include #else #include #include #ifdef __TANDEM #include #endif #endif int main(void) { int s = (int)sizeof(struct sockaddr_in6); (void)s; return socket(AF_INET6, SOCK_STREAM, 0) > 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ipv6=yes else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ipv6=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test "$curl_cv_wince" = 'yes'; then ipv6=no fi if test "$ipv6" = yes; then curl_ipv6_msg="enabled" printf "%s\n" "#define USE_IPV6 1" >>confdefs.h IPV6_ENABLED=1 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if struct sockaddr_in6 has sin6_scope_id member" >&5 printf %s "checking if struct sockaddr_in6 has sin6_scope_id member... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef _WIN32 #include #include #else #include #ifdef __TANDEM #include #endif #endif int main(void) { struct sockaddr_in6 s; s.sin6_scope_id = 0; (void)s; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1" >>confdefs.h else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if argv can be written to" >&5 printf %s "checking if argv can be written to... " >&6; } if test "$curl_cv_apple" = 'yes'; then if test "$cross_compiling" = yes then : curl_cv_writable_argv=cross else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(int argc, char **argv) { #ifdef _WIN32 /* on Windows, writing to the argv does not hide the argument in process lists so it can just be skipped */ (void)argc; (void)argv; return 1; #else (void)argc; argv[0][0] = ' '; return (argv[0][0] == ' ')?0:1; #endif } _ACEOF if ac_fn_c_try_run "$LINENO" then : curl_cv_writable_argv=yes else $as_nop curl_cv_writable_argv=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else oldcc=$CC old=$LD_LIBRARY_PATH CC="sh ./run-compiler" LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old export LD_LIBRARY_PATH if test "$cross_compiling" = yes then : curl_cv_writable_argv=cross else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(int argc, char **argv) { #ifdef _WIN32 /* on Windows, writing to the argv does not hide the argument in process lists so it can just be skipped */ (void)argc; (void)argv; return 1; #else (void)argc; argv[0][0] = ' '; return (argv[0][0] == ' ')?0:1; #endif } _ACEOF if ac_fn_c_try_run "$LINENO" then : curl_cv_writable_argv=yes else $as_nop curl_cv_writable_argv=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi LD_LIBRARY_PATH=$old # restore CC=$oldcc fi if test "$curl_cv_writable_argv" = 'cross' -a "$curl_cv_apple" = 'yes'; then curl_cv_writable_argv=yes fi case $curl_cv_writable_argv in yes) printf "%s\n" "#define HAVE_WRITABLE_ARGV 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: the previous check could not be made default was used" >&5 printf "%s\n" "$as_me: WARNING: the previous check could not be made default was used" >&2;} ;; esac GSSAPI_ROOT="/usr" # Check whether --with-gssapi-includes was given. if test ${with_gssapi_includes+y} then : withval=$with_gssapi_includes; GSSAPI_INCS="-I$withval" want_gss="yes" fi # Check whether --with-gssapi-libs was given. if test ${with_gssapi_libs+y} then : withval=$with_gssapi_libs; GSSAPI_LIB_DIR="-L$withval" want_gss="yes" fi # Check whether --with-gssapi was given. if test ${with_gssapi+y} then : withval=$with_gssapi; GSSAPI_ROOT="$withval" if test x"$GSSAPI_ROOT" != xno; then want_gss="yes" if test x"$GSSAPI_ROOT" = xyes; then GSSAPI_ROOT="/usr" fi fi fi : ${KRB5CONFIG:="$GSSAPI_ROOT/bin/krb5-config"} save_CPPFLAGS="$CPPFLAGS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if GSS-API support is requested" >&5 printf %s "checking if GSS-API support is requested... " >&6; } if test x"$want_gss" = xyes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } if test $GSSAPI_ROOT != "/usr"; then if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mit-krb5-gssapi options with pkg-config" >&5 printf %s "checking for mit-krb5-gssapi options with pkg-config... " >&6; } itexists=` if test -n "$GSSAPI_ROOT/lib/pkgconfig"; then PKG_CONFIG_LIBDIR="$GSSAPI_ROOT/lib/pkgconfig" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists mit-krb5-gssapi >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi else if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mit-krb5-gssapi options with pkg-config" >&5 printf %s "checking for mit-krb5-gssapi options with pkg-config... " >&6; } itexists=` if test -n ""; then PKG_CONFIG_LIBDIR="" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists mit-krb5-gssapi >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi fi if test -z "$GSSAPI_INCS"; then if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then GSSAPI_INCS=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --cflags gssapi` elif test "$PKGCONFIG" != "no"; then GSSAPI_INCS=`$PKGCONFIG --cflags mit-krb5-gssapi` elif test -f "$KRB5CONFIG"; then GSSAPI_INCS=`$KRB5CONFIG --cflags gssapi` elif test "$GSSAPI_ROOT" != "yes"; then GSSAPI_INCS="-I$GSSAPI_ROOT/include" fi fi CPPFLAGS="$CPPFLAGS $GSSAPI_INCS" ac_fn_c_check_header_compile "$LINENO" "gss.h" "ac_cv_header_gss_h" "$ac_includes_default" if test "x$ac_cv_header_gss_h" = xyes then : printf "%s\n" "#define HAVE_GSSGNU 1" >>confdefs.h gnu_gss=yes else $as_nop for ac_header in gssapi/gssapi.h do : ac_fn_c_check_header_compile "$LINENO" "gssapi/gssapi.h" "ac_cv_header_gssapi_gssapi_h" "$ac_includes_default" if test "x$ac_cv_header_gssapi_gssapi_h" = xyes then : printf "%s\n" "#define HAVE_GSSAPI_GSSAPI_H 1" >>confdefs.h else $as_nop not_mit=1 fi done for ac_header in gssapi/gssapi_generic.h gssapi/gssapi_krb5.h do : as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" " $ac_includes_default #ifdef HAVE_GSSAPI_GSSAPI_H #include #endif " if eval test \"x\$"$as_ac_Header"\" = x"yes" then : cat >>confdefs.h <<_ACEOF #define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF else $as_nop not_mit=1 fi done if test "x$not_mit" = "x1"; then ac_fn_c_check_header_compile "$LINENO" "gssapi.h" "ac_cv_header_gssapi_h" "$ac_includes_default" if test "x$ac_cv_header_gssapi_h" = xyes then : else $as_nop want_gss=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: disabling GSS-API support since no header files were found" >&5 printf "%s\n" "$as_me: WARNING: disabling GSS-API support since no header files were found" >&2;} fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if GSS-API headers declare GSS_C_NT_HOSTBASED_SERVICE" >&5 printf %s "checking if GSS-API headers declare GSS_C_NT_HOSTBASED_SERVICE... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main(void) { gss_import_name( (OM_uint32 *)0, (gss_buffer_t)0, GSS_C_NT_HOSTBASED_SERVICE, (gss_name_t *)0); return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define HAVE_OLD_GSSMIT 1" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test x"$want_gss" = xyes; then printf "%s\n" "#define HAVE_GSSAPI 1" >>confdefs.h HAVE_GSSAPI=1 curl_gss_msg="enabled (MIT Kerberos/Heimdal)" link_pkgconfig='' if test -n "$gnu_gss"; then curl_gss_msg="enabled (GNU GSS)" LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR" LDFLAGSPC="$LDFLAGSPC $GSSAPI_LIB_DIR" LIBS="-lgss $LIBS" link_pkgconfig=1 elif test -z "$GSSAPI_LIB_DIR"; then if test "$curl_cv_apple" = 'yes'; then LIBS="-lgssapi_krb5 -lresolv $LIBS" else if test $GSSAPI_ROOT != "/usr"; then if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mit-krb5-gssapi options with pkg-config" >&5 printf %s "checking for mit-krb5-gssapi options with pkg-config... " >&6; } itexists=` if test -n "$GSSAPI_ROOT/lib/pkgconfig"; then PKG_CONFIG_LIBDIR="$GSSAPI_ROOT/lib/pkgconfig" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists mit-krb5-gssapi >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi else if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mit-krb5-gssapi options with pkg-config" >&5 printf %s "checking for mit-krb5-gssapi options with pkg-config... " >&6; } itexists=` if test -n ""; then PKG_CONFIG_LIBDIR="" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists mit-krb5-gssapi >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi fi if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then gss_libs=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --libs gssapi` LIBS="$gss_libs $LIBS" elif test "$PKGCONFIG" != "no"; then gss_libs=`$PKGCONFIG --libs mit-krb5-gssapi` LIBS="$gss_libs $LIBS" link_pkgconfig=1 elif test -f "$KRB5CONFIG"; then gss_libs=`$KRB5CONFIG --libs gssapi` LIBS="$gss_libs $LIBS" link_pkgconfig=1 else case $host in *-hp-hpux*) gss_libname="gss" ;; *) gss_libname="gssapi" ;; esac if test "$GSSAPI_ROOT" != "yes"; then LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff" LDFLAGSPC="$LDFLAGSPC -L$GSSAPI_ROOT/lib$libsuff" LIBS="-l$gss_libname $LIBS" else LIBS="-l$gss_libname $LIBS" fi fi fi else LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR" LDFLAGSPC="$LDFLAGSPC $GSSAPI_LIB_DIR" case $host in *-hp-hpux*) LIBS="-lgss $LIBS" ;; *) LIBS="-lgssapi $LIBS" ;; esac fi if test -n "$link_pkgconfig"; then if test -n "$gnu_gss"; then LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE gss" elif test "x$not_mit" = "x1"; then LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE heimdal-gssapi" else LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE mit-krb5-gssapi" fi fi else CPPFLAGS="$save_CPPFLAGS" fi if test x"$want_gss" = xyes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can link against GSS-API library" >&5 printf %s "checking if we can link against GSS-API library... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define gss_init_sec_context innocuous_gss_init_sec_context #ifdef __STDC__ # include #else # include #endif #undef gss_init_sec_context #ifdef __cplusplus extern "C" #endif char gss_init_sec_context (); #if defined __stub_gss_init_sec_context || defined __stub___gss_init_sec_context #error force compilation error #endif int main(void) { return gss_init_sec_context (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "--with-gssapi was specified, but a GSS-API library was not found." "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi build_libstubgss=no if test x"$want_gss" = "xyes"; then build_libstubgss=yes fi if test "x$build_libstubgss" = "xyes"; then BUILD_STUB_GSS_TRUE= BUILD_STUB_GSS_FALSE='#' else BUILD_STUB_GSS_TRUE='#' BUILD_STUB_GSS_FALSE= fi DEFAULT_SSL_BACKEND=no VALID_DEFAULT_SSL_BACKEND= # Check whether --with-default-ssl-backend was given. if test ${with_default_ssl_backend+y} then : withval=$with_default_ssl_backend; DEFAULT_SSL_BACKEND=$withval fi case "$DEFAULT_SSL_BACKEND" in no) ;; default|yes) as_fn_error $? "The name of the default SSL backend is required." "$LINENO" 5 ;; *) VALID_DEFAULT_SSL_BACKEND=no ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Windows native SSL/TLS" >&5 printf %s "checking whether to enable Windows native SSL/TLS... " >&6; } if test "x$OPT_SCHANNEL" != xno; then ssl_msg= if test "x$OPT_SCHANNEL" != "xno" && test "x$curl_cv_native_windows" = "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define USE_SCHANNEL 1" >>confdefs.h ssl_msg="Schannel" test schannel != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes SCHANNEL_ENABLED=1 # --with-schannel implies --enable-sspi printf "%s\n" "#define USE_WINDOWS_SSPI 1" >>confdefs.h USE_WINDOWS_SSPI=1 curl_sspi_msg="enabled" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Secure Transport" >&5 printf %s "checking whether to enable Secure Transport... " >&6; } if test "x$OPT_SECURETRANSPORT" != xno; then if test "x$OPT_SECURETRANSPORT" != "xno" && (test "x$cross_compiling" != "xno" || test -d "/System/Library/Frameworks/Security.framework"); then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define USE_SECTRANSP 1" >>confdefs.h ssl_msg="Secure Transport" test secure-transport != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes SECURETRANSPORT_ENABLED=1 SECURETRANSPORT_LDFLAGS='-framework CoreFoundation -framework CoreServices -framework Security' LDFLAGS="$LDFLAGS $SECURETRANSPORT_LDFLAGS" LDFLAGSPC="$LDFLAGSPC $SECURETRANSPORT_LDFLAGS" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Amiga native SSL/TLS (AmiSSL v5)" >&5 printf %s "checking whether to enable Amiga native SSL/TLS (AmiSSL v5)... " >&6; } if test "$HAVE_PROTO_BSDSOCKET_H" = "1"; then if test "x$OPT_AMISSL" != xno; then ssl_msg= cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main(void) { #if defined(AMISSL_CURRENT_VERSION) && defined(AMISSL_V3xx) && \ (OPENSSL_VERSION_NUMBER >= 0x30000000L) && \ defined(PROTO_AMISSL_H) return 0; #else #error not AmiSSL v5 / OpenSSL 3 #endif return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ssl_msg="AmiSSL" test amissl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes AMISSL_ENABLED=1 OPENSSL_ENABLED=1 # Use AmiSSL's built-in ca bundle check_for_ca_bundle=1 with_ca_fallback=yes LIBS="-lamisslstubs -lamisslauto $LIBS" CURL_NETWORK_AND_TIME_LIBS="-lamisslstubs -lamisslauto $CURL_NETWORK_AND_TIME_LIBS" printf "%s\n" "#define USE_AMISSL 1" >>confdefs.h printf "%s\n" "#define USE_OPENSSL 1" >>confdefs.h ac_fn_c_check_header_compile "$LINENO" "openssl/x509.h" "ac_cv_header_openssl_x509_h" "$ac_includes_default" if test "x$ac_cv_header_openssl_x509_h" = xyes then : printf "%s\n" "#define HAVE_OPENSSL_X509_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "openssl/rsa.h" "ac_cv_header_openssl_rsa_h" "$ac_includes_default" if test "x$ac_cv_header_openssl_rsa_h" = xyes then : printf "%s\n" "#define HAVE_OPENSSL_RSA_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "openssl/crypto.h" "ac_cv_header_openssl_crypto_h" "$ac_includes_default" if test "x$ac_cv_header_openssl_crypto_h" = xyes then : printf "%s\n" "#define HAVE_OPENSSL_CRYPTO_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "openssl/pem.h" "ac_cv_header_openssl_pem_h" "$ac_includes_default" if test "x$ac_cv_header_openssl_pem_h" = xyes then : printf "%s\n" "#define HAVE_OPENSSL_PEM_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "openssl/ssl.h" "ac_cv_header_openssl_ssl_h" "$ac_includes_default" if test "x$ac_cv_header_openssl_ssl_h" = xyes then : printf "%s\n" "#define HAVE_OPENSSL_SSL_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "openssl/err.h" "ac_cv_header_openssl_err_h" "$ac_includes_default" if test "x$ac_cv_header_openssl_err_h" = xyes then : printf "%s\n" "#define HAVE_OPENSSL_ERR_H 1" >>confdefs.h fi else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$OPT_OPENSSL" != xno; then ssl_msg= CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" case $host in *-*-msys* | *-*-mingw*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gdi32" >&5 printf %s "checking for gdi32... " >&6; } my_ac_save_LIBS=$LIBS LIBS="-lgdi32 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #include int main(void) { GdiFlush(); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else $as_nop LIBS=$my_ac_save_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac case "$OPT_OPENSSL" in yes) PKGTEST="yes" PREFIX_OPENSSL= ;; *) PKGTEST="no" PREFIX_OPENSSL=$OPT_OPENSSL OPENSSL_PCDIR="$OPT_OPENSSL/lib/pkgconfig" if test -f "$OPENSSL_PCDIR/openssl.pc"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: PKG_CONFIG_LIBDIR will be set to \"$OPENSSL_PCDIR\"" >&5 printf "%s\n" "$as_me: PKG_CONFIG_LIBDIR will be set to \"$OPENSSL_PCDIR\"" >&6;} PKGTEST="yes" fi if test "$PKGTEST" != "yes"; then # try lib64 instead OPENSSL_PCDIR="$OPT_OPENSSL/lib64/pkgconfig" if test -f "$OPENSSL_PCDIR/openssl.pc"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: PKG_CONFIG_LIBDIR will be set to \"$OPENSSL_PCDIR\"" >&5 printf "%s\n" "$as_me: PKG_CONFIG_LIBDIR will be set to \"$OPENSSL_PCDIR\"" >&6;} PKGTEST="yes" fi fi if test "$PKGTEST" != "yes"; then if test ! -f "$PREFIX_OPENSSL/include/openssl/ssl.h"; then as_fn_error $? "$PREFIX_OPENSSL is a bad --with-openssl prefix!" "$LINENO" 5 fi fi LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff" if test "$PREFIX_OPENSSL" != "/usr" ; then SSL_LDFLAGS="-L$LIB_OPENSSL" SSL_CPPFLAGS="-I$PREFIX_OPENSSL/include" fi ;; esac if test "$PKGTEST" = "yes"; then if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for openssl options with pkg-config" >&5 printf %s "checking for openssl options with pkg-config... " >&6; } itexists=` if test -n "$OPENSSL_PCDIR"; then PKG_CONFIG_LIBDIR="$OPENSSL_PCDIR" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists openssl >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no" ; then SSL_LIBS=` if test -n "$OPENSSL_PCDIR"; then PKG_CONFIG_LIBDIR="$OPENSSL_PCDIR" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-l --libs-only-other openssl 2>/dev/null` SSL_LDFLAGS=` if test -n "$OPENSSL_PCDIR"; then PKG_CONFIG_LIBDIR="$OPENSSL_PCDIR" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-L openssl 2>/dev/null` SSL_CPPFLAGS=` if test -n "$OPENSSL_PCDIR"; then PKG_CONFIG_LIBDIR="$OPENSSL_PCDIR" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --cflags-only-I openssl 2>/dev/null` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: SSL_LIBS: \"$SSL_LIBS\"" >&5 printf "%s\n" "$as_me: pkg-config: SSL_LIBS: \"$SSL_LIBS\"" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: SSL_LDFLAGS: \"$SSL_LDFLAGS\"" >&5 printf "%s\n" "$as_me: pkg-config: SSL_LDFLAGS: \"$SSL_LDFLAGS\"" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: SSL_CPPFLAGS: \"$SSL_CPPFLAGS\"" >&5 printf "%s\n" "$as_me: pkg-config: SSL_CPPFLAGS: \"$SSL_CPPFLAGS\"" >&6;} LIB_OPENSSL=`echo $SSL_LDFLAGS | sed -e 's/^-L//'` LIBS="$SSL_LIBS $LIBS" fi fi CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS" LDFLAGS="$LDFLAGS $SSL_LDFLAGS" LDFLAGSPC="$LDFLAGSPC $SSL_LDFLAGS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for HMAC_Update in -lcrypto" >&5 printf %s "checking for HMAC_Update in -lcrypto... " >&6; } if test ${ac_cv_lib_crypto_HMAC_Update+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lcrypto $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char HMAC_Update (); int main(void) { return HMAC_Update (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_crypto_HMAC_Update=yes else $as_nop ac_cv_lib_crypto_HMAC_Update=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_HMAC_Update" >&5 printf "%s\n" "$ac_cv_lib_crypto_HMAC_Update" >&6; } if test "x$ac_cv_lib_crypto_HMAC_Update" = xyes then : HAVECRYPTO="yes" LIBS="-lcrypto $LIBS" else $as_nop if test -n "$LIB_OPENSSL" ; then LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL" LDFLAGSPC="$CLEANLDFLAGSPC -L$LIB_OPENSSL" fi if test "$PKGCONFIG" = "no" -a -n "$PREFIX_OPENSSL" ; then # only set this if pkg-config wasn't used CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include" fi # Linking previously failed, try extra paths from --with-openssl or # pkg-config. Use a different function name to avoid reusing the earlier # cached result. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for HMAC_Init_ex in -lcrypto" >&5 printf %s "checking for HMAC_Init_ex in -lcrypto... " >&6; } if test ${ac_cv_lib_crypto_HMAC_Init_ex+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lcrypto $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char HMAC_Init_ex (); int main(void) { return HMAC_Init_ex (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_crypto_HMAC_Init_ex=yes else $as_nop ac_cv_lib_crypto_HMAC_Init_ex=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_HMAC_Init_ex" >&5 printf "%s\n" "$ac_cv_lib_crypto_HMAC_Init_ex" >&6; } if test "x$ac_cv_lib_crypto_HMAC_Init_ex" = xyes then : HAVECRYPTO="yes" LIBS="-lcrypto $LIBS" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking OpenSSL linking with -ldl" >&5 printf %s "checking OpenSSL linking with -ldl... " >&6; } LIBS="-lcrypto $CLEANLIBS -ldl" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { ERR_clear_error(); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } HAVECRYPTO="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking OpenSSL linking with -ldl and -lpthread" >&5 printf %s "checking OpenSSL linking with -ldl and -lpthread... " >&6; } LIBS="-lcrypto $CLEANLIBS -ldl -lpthread" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { ERR_clear_error(); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } HAVECRYPTO="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } LDFLAGS="$CLEANLDFLAGS" LDFLAGSPC="$CLEANLDFLAGSPC" CPPFLAGS="$CLEANCPPFLAGS" LIBS="$CLEANLIBS" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi fi if test X"$HAVECRYPTO" = X"yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SSL_connect in -lssl" >&5 printf %s "checking for SSL_connect in -lssl... " >&6; } if test ${ac_cv_lib_ssl_SSL_connect+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lssl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char SSL_connect (); int main(void) { return SSL_connect (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_ssl_SSL_connect=yes else $as_nop ac_cv_lib_ssl_SSL_connect=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_connect" >&5 printf "%s\n" "$ac_cv_lib_ssl_SSL_connect" >&6; } if test "x$ac_cv_lib_ssl_SSL_connect" = xyes then : printf "%s\n" "#define HAVE_LIBSSL 1" >>confdefs.h LIBS="-lssl $LIBS" fi if test "$ac_cv_lib_ssl_SSL_connect" != yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ssl with RSAglue/rsaref libs in use" >&5 printf %s "checking for ssl with RSAglue/rsaref libs in use... " >&6; }; OLIBS=$LIBS LIBS="-lRSAglue -lrsaref $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SSL_connect in -lssl" >&5 printf %s "checking for SSL_connect in -lssl... " >&6; } if test ${ac_cv_lib_ssl_SSL_connect+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lssl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char SSL_connect (); int main(void) { return SSL_connect (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_ssl_SSL_connect=yes else $as_nop ac_cv_lib_ssl_SSL_connect=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_connect" >&5 printf "%s\n" "$ac_cv_lib_ssl_SSL_connect" >&6; } if test "x$ac_cv_lib_ssl_SSL_connect" = xyes then : printf "%s\n" "#define HAVE_LIBSSL 1" >>confdefs.h LIBS="-lssl $LIBS" fi if test "$ac_cv_lib_ssl_SSL_connect" != yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } LIBS=$OLIBS else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi else for ac_header in openssl/x509.h openssl/rsa.h openssl/crypto.h openssl/pem.h openssl/ssl.h openssl/err.h do : as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes" then : cat >>confdefs.h <<_ACEOF #define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF ssl_msg="OpenSSL" test openssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes OPENSSL_ENABLED=1 printf "%s\n" "#define USE_OPENSSL 1" >>confdefs.h fi done fi if test X"$OPENSSL_ENABLED" != X"1"; then LIBS="$CLEANLIBS" fi if test X"$OPT_OPENSSL" != Xoff && test "$OPENSSL_ENABLED" != "1"; then as_fn_error $? "OpenSSL libs and/or directories were not found where specified!" "$LINENO" 5 fi fi if test X"$OPENSSL_ENABLED" = X"1"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BoringSSL" >&5 printf %s "checking for BoringSSL... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { #ifndef OPENSSL_IS_BORINGSSL #error not boringssl #endif return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ssl_msg="BoringSSL" OPENSSL_IS_BORINGSSL=1 else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for AWS-LC" >&5 printf %s "checking for AWS-LC... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { #ifndef OPENSSL_IS_AWSLC #error not AWS-LC #endif return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ssl_msg="AWS-LC" OPENSSL_IS_BORINGSSL=1 else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LibreSSL" >&5 printf %s "checking for LibreSSL... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { int dummy = LIBRESSL_VERSION_NUMBER; (void)dummy; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ssl_msg="LibreSSL" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for OpenSSL >= v3" >&5 printf %s "checking for OpenSSL >= v3... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { #if (OPENSSL_VERSION_NUMBER >= 0x30000000L) return 0; #else #error older than 3 #endif return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ssl_msg="OpenSSL v3+" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi for ac_func in SSL_set_quic_use_legacy_codepoint do : ac_fn_c_check_func "$LINENO" "SSL_set_quic_use_legacy_codepoint" "ac_cv_func_SSL_set_quic_use_legacy_codepoint" if test "x$ac_cv_func_SSL_set_quic_use_legacy_codepoint" = xyes then : printf "%s\n" "#define HAVE_SSL_SET_QUIC_USE_LEGACY_CODEPOINT 1" >>confdefs.h QUIC_ENABLED=yes fi done if test "$QUIC_ENABLED" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: OpenSSL fork speaks QUIC API" >&5 printf "%s\n" "$as_me: OpenSSL fork speaks QUIC API" >&6;} else for ac_func in SSL_set_quic_tls_cbs do : ac_fn_c_check_func "$LINENO" "SSL_set_quic_tls_cbs" "ac_cv_func_SSL_set_quic_tls_cbs" if test "x$ac_cv_func_SSL_set_quic_tls_cbs" = xyes then : printf "%s\n" "#define HAVE_SSL_SET_QUIC_TLS_CBS 1" >>confdefs.h QUIC_ENABLED=yes fi done if test "$QUIC_ENABLED" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: OpenSSL with QUIC APIv2" >&5 printf "%s\n" "$as_me: OpenSSL with QUIC APIv2" >&6;} OPENSSL_QUIC_API2=1 else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: OpenSSL version does not speak any known QUIC API" >&5 printf "%s\n" "$as_me: OpenSSL version does not speak any known QUIC API" >&6;} fi fi if test "$OPENSSL_ENABLED" = "1"; then if test -n "$LIB_OPENSSL"; then if test "x$cross_compiling" != "xyes"; then CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$LIB_OPENSSL" export CURL_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $LIB_OPENSSL to CURL_LIBRARY_PATH" >&5 printf "%s\n" "$as_me: Added $LIB_OPENSSL to CURL_LIBRARY_PATH" >&6;} fi fi check_for_ca_bundle=1 LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE openssl" fi test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" fi if test X"$OPT_OPENSSL" != Xno && test "$OPENSSL_ENABLED" != "1"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: OPT_OPENSSL: $OPT_OPENSSL" >&5 printf "%s\n" "$as_me: OPT_OPENSSL: $OPT_OPENSSL" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: OPENSSL_ENABLED: $OPENSSL_ENABLED" >&5 printf "%s\n" "$as_me: OPENSSL_ENABLED: $OPENSSL_ENABLED" >&6;} as_fn_error $? "--with-openssl was given but OpenSSL could not be detected" "$LINENO" 5 fi if test "$OPENSSL_ENABLED" = "1"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SRP support in OpenSSL" >&5 printf %s "checking for SRP support in OpenSSL... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef OPENSSL_SUPPRESS_DEPRECATED #define OPENSSL_SUPPRESS_DEPRECATED #endif #include int main(void) { SSL_CTX_set_srp_username(NULL, NULL); SSL_CTX_set_srp_password(NULL, NULL); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_OPENSSL_SRP 1" >>confdefs.h HAVE_OPENSSL_SRP=1 else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi if test X"$OPENSSL_ENABLED" = X"1"; then # Check whether --enable-openssl-auto-load-config was given. if test ${enable_openssl_auto_load_config+y} then : enableval=$enable_openssl_auto_load_config; if test X"$enableval" = X"no"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: automatic loading of OpenSSL configuration disabled" >&5 printf "%s\n" "$as_me: automatic loading of OpenSSL configuration disabled" >&6;} printf "%s\n" "#define CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG 1" >>confdefs.h fi fi fi if test "$OPENSSL_ENABLED" = "1"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for QUIC support and OpenSSL >= 3.3" >&5 printf %s "checking for QUIC support and OpenSSL >= 3.3... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { #if (OPENSSL_VERSION_NUMBER < 0x30300000L) #error need at least version 3.3.0 #endif OSSL_QUIC_client_method(); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } have_openssl_quic=1 else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi if test "x$OPT_GNUTLS" != xno; then ssl_msg= if test X"$OPT_GNUTLS" != Xno; then addld="" addlib="" gtlslib="" version="" addcflags="" if test "x$OPT_GNUTLS" = "xyes"; then if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gnutls options with pkg-config" >&5 printf %s "checking for gnutls options with pkg-config... " >&6; } itexists=` if test -n ""; then PKG_CONFIG_LIBDIR="" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists gnutls >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no" ; then addlib=`$PKGCONFIG --libs-only-l gnutls` addld=`$PKGCONFIG --libs-only-L gnutls` addcflags=`$PKGCONFIG --cflags-only-I gnutls` version=`$PKGCONFIG --modversion gnutls` gtlslib=`echo $addld | $SED -e 's/^-L//'` else check=`libgnutls-config --version 2>/dev/null` if test -n "$check"; then addlib=`libgnutls-config --libs` addcflags=`libgnutls-config --cflags` version=`libgnutls-config --version` gtlslib=`libgnutls-config --prefix`/lib$libsuff fi fi else cfg=$OPT_GNUTLS/bin/libgnutls-config check=`$cfg --version 2>/dev/null` if test -n "$check"; then addlib=`$cfg --libs` addcflags=`$cfg --cflags` version=`$cfg --version` gtlslib=`$cfg --prefix`/lib$libsuff else addlib=-lgnutls addld=-L$OPT_GNUTLS/lib$libsuff addcflags=-I$OPT_GNUTLS/include version="" # we just don't know gtlslib=$OPT_GNUTLS/lib$libsuff fi fi if test -z "$version"; then version="unknown" fi if test -n "$addlib"; then CLEANLIBS="$LIBS" CLEANCPPFLAGS="$CPPFLAGS" CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" LIBS="$addlib $LIBS" LDFLAGS="$LDFLAGS $addld" LDFLAGSPC="$LDFLAGSPC $addld" if test "$addcflags" != "-I/usr/include"; then CPPFLAGS="$CPPFLAGS $addcflags" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gnutls_x509_crt_get_dn2 in -lgnutls" >&5 printf %s "checking for gnutls_x509_crt_get_dn2 in -lgnutls... " >&6; } if test ${ac_cv_lib_gnutls_gnutls_x509_crt_get_dn2+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lgnutls $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char gnutls_x509_crt_get_dn2 (); int main(void) { return gnutls_x509_crt_get_dn2 (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_gnutls_gnutls_x509_crt_get_dn2=yes else $as_nop ac_cv_lib_gnutls_gnutls_x509_crt_get_dn2=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gnutls_gnutls_x509_crt_get_dn2" >&5 printf "%s\n" "$ac_cv_lib_gnutls_gnutls_x509_crt_get_dn2" >&6; } if test "x$ac_cv_lib_gnutls_gnutls_x509_crt_get_dn2" = xyes then : printf "%s\n" "#define USE_GNUTLS 1" >>confdefs.h GNUTLS_ENABLED=1 USE_GNUTLS="yes" ssl_msg="GnuTLS" QUIC_ENABLED=yes test gnutls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes else $as_nop LIBS="$CLEANLIBS" CPPFLAGS="$CLEANCPPFLAGS" fi if test "x$USE_GNUTLS" = "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: detected GnuTLS version $version" >&5 printf "%s\n" "$as_me: detected GnuTLS version $version" >&6;} check_for_ca_bundle=1 if test -n "$gtlslib"; then if test "x$cross_compiling" != "xyes"; then CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$gtlslib" export CURL_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $gtlslib to CURL_LIBRARY_PATH" >&5 printf "%s\n" "$as_me: Added $gtlslib to CURL_LIBRARY_PATH" >&6;} fi fi LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE gnutls nettle" fi fi fi test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" fi if test "$GNUTLS_ENABLED" = "1"; then USE_GNUTLS_NETTLE= # First check if we can detect either crypto library via transitive linking { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nettle_MD5Init in -lgnutls" >&5 printf %s "checking for nettle_MD5Init in -lgnutls... " >&6; } if test ${ac_cv_lib_gnutls_nettle_MD5Init+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lgnutls $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char nettle_MD5Init (); int main(void) { return nettle_MD5Init (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_gnutls_nettle_MD5Init=yes else $as_nop ac_cv_lib_gnutls_nettle_MD5Init=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gnutls_nettle_MD5Init" >&5 printf "%s\n" "$ac_cv_lib_gnutls_nettle_MD5Init" >&6; } if test "x$ac_cv_lib_gnutls_nettle_MD5Init" = xyes then : USE_GNUTLS_NETTLE=1 fi # If not, try linking directly to both of them to see if they are available if test "$USE_GNUTLS_NETTLE" = ""; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nettle_MD5Init in -lnettle" >&5 printf %s "checking for nettle_MD5Init in -lnettle... " >&6; } if test ${ac_cv_lib_nettle_nettle_MD5Init+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lnettle $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char nettle_MD5Init (); int main(void) { return nettle_MD5Init (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_nettle_nettle_MD5Init=yes else $as_nop ac_cv_lib_nettle_nettle_MD5Init=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nettle_nettle_MD5Init" >&5 printf "%s\n" "$ac_cv_lib_nettle_nettle_MD5Init" >&6; } if test "x$ac_cv_lib_nettle_nettle_MD5Init" = xyes then : USE_GNUTLS_NETTLE=1 fi fi if test "$USE_GNUTLS_NETTLE" = ""; then as_fn_error $? "GnuTLS found, but nettle was not found" "$LINENO" 5 fi LIBS="-lnettle $LIBS" fi if test "$GNUTLS_ENABLED" = "1"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gnutls_srp_verifier in -lgnutls" >&5 printf %s "checking for gnutls_srp_verifier in -lgnutls... " >&6; } if test ${ac_cv_lib_gnutls_gnutls_srp_verifier+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lgnutls $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char gnutls_srp_verifier (); int main(void) { return gnutls_srp_verifier (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_gnutls_gnutls_srp_verifier=yes else $as_nop ac_cv_lib_gnutls_gnutls_srp_verifier=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gnutls_gnutls_srp_verifier" >&5 printf "%s\n" "$ac_cv_lib_gnutls_gnutls_srp_verifier" >&6; } if test "x$ac_cv_lib_gnutls_gnutls_srp_verifier" = xyes then : printf "%s\n" "#define HAVE_GNUTLS_SRP 1" >>confdefs.h HAVE_GNUTLS_SRP=1 fi fi if test "x$OPT_MBEDTLS" != xno; then _cppflags=$CPPFLAGS _ldflags=$LDFLAGS _ldflagspc=$LDFLAGSPC ssl_msg= if test X"$OPT_MBEDTLS" != Xno; then if test "$OPT_MBEDTLS" = "yes"; then OPT_MBEDTLS="" fi if test -z "$OPT_MBEDTLS" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mbedtls_havege_init in -lmbedtls" >&5 printf %s "checking for mbedtls_havege_init in -lmbedtls... " >&6; } if test ${ac_cv_lib_mbedtls_mbedtls_havege_init+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lmbedtls -lmbedx509 -lmbedcrypto $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char mbedtls_havege_init (); int main(void) { return mbedtls_havege_init (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_mbedtls_mbedtls_havege_init=yes else $as_nop ac_cv_lib_mbedtls_mbedtls_havege_init=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mbedtls_mbedtls_havege_init" >&5 printf "%s\n" "$ac_cv_lib_mbedtls_mbedtls_havege_init" >&6; } if test "x$ac_cv_lib_mbedtls_mbedtls_havege_init" = xyes then : printf "%s\n" "#define USE_MBEDTLS 1" >>confdefs.h MBEDTLS_ENABLED=1 USE_MBEDTLS="yes" ssl_msg="mbedTLS" test mbedtls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes fi fi addld="" addlib="" addcflags="" mbedtlslib="" if test "x$USE_MBEDTLS" != "xyes"; then addld=-L$OPT_MBEDTLS/lib$libsuff addcflags=-I$OPT_MBEDTLS/include mbedtlslib=$OPT_MBEDTLS/lib$libsuff LDFLAGS="$LDFLAGS $addld" LDFLAGSPC="$LDFLAGSPC $addld" if test "$addcflags" != "-I/usr/include"; then CPPFLAGS="$CPPFLAGS $addcflags" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mbedtls_ssl_init in -lmbedtls" >&5 printf %s "checking for mbedtls_ssl_init in -lmbedtls... " >&6; } if test ${ac_cv_lib_mbedtls_mbedtls_ssl_init+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lmbedtls -lmbedx509 -lmbedcrypto $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char mbedtls_ssl_init (); int main(void) { return mbedtls_ssl_init (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_mbedtls_mbedtls_ssl_init=yes else $as_nop ac_cv_lib_mbedtls_mbedtls_ssl_init=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mbedtls_mbedtls_ssl_init" >&5 printf "%s\n" "$ac_cv_lib_mbedtls_mbedtls_ssl_init" >&6; } if test "x$ac_cv_lib_mbedtls_mbedtls_ssl_init" = xyes then : printf "%s\n" "#define USE_MBEDTLS 1" >>confdefs.h MBEDTLS_ENABLED=1 USE_MBEDTLS="yes" ssl_msg="mbedTLS" test mbedtls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes else $as_nop CPPFLAGS=$_cppflags LDFLAGS=$_ldflags LDFLAGSPC=$_ldflagspc fi fi if test "x$USE_MBEDTLS" = "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: detected mbedTLS" >&5 printf "%s\n" "$as_me: detected mbedTLS" >&6;} check_for_ca_bundle=1 LIBS="-lmbedtls -lmbedx509 -lmbedcrypto $LIBS" if test -n "$mbedtlslib"; then if test "x$cross_compiling" != "xyes"; then CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$mbedtlslib" export CURL_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $mbedtlslib to CURL_LIBRARY_PATH" >&5 printf "%s\n" "$as_me: Added $mbedtlslib to CURL_LIBRARY_PATH" >&6;} fi fi if false; then LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE mbedtls mbedx509 mbedcrypto" fi fi fi test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" fi case "$OPT_WOLFSSL" in yes|no) wolfpkg="" ;; *) wolfpkg="$withval/lib/pkgconfig" ;; esac if test "x$OPT_WOLFSSL" != xno; then _cppflags=$CPPFLAGS _ldflags=$LDFLAGS _ldflagspc=$LDFLAGSPC ssl_msg= if test X"$OPT_WOLFSSL" != Xno; then if test "$OPT_WOLFSSL" = "yes"; then OPT_WOLFSSL="" fi if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wolfssl options with pkg-config" >&5 printf %s "checking for wolfssl options with pkg-config... " >&6; } itexists=` if test -n "$wolfpkg"; then PKG_CONFIG_LIBDIR="$wolfpkg" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists wolfssl >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Check dir $wolfpkg" >&5 printf "%s\n" "$as_me: Check dir $wolfpkg" >&6;} addld="" addlib="" addcflags="" if test "$PKGCONFIG" != "no" ; then addlib=` if test -n "$wolfpkg"; then PKG_CONFIG_LIBDIR="$wolfpkg" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-l wolfssl` addld=` if test -n "$wolfpkg"; then PKG_CONFIG_LIBDIR="$wolfpkg" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-L wolfssl` addcflags=` if test -n "$wolfpkg"; then PKG_CONFIG_LIBDIR="$wolfpkg" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --cflags-only-I wolfssl` version=` if test -n "$wolfpkg"; then PKG_CONFIG_LIBDIR="$wolfpkg" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --modversion wolfssl` wolfssllibpath=`echo $addld | $SED -e 's/^-L//'` else addlib=-lwolfssl if test -n "$OPT_WOLFSSL"; then addld=-L$OPT_WOLFSSL/lib$libsuff addcflags=-I$OPT_WOLFSSL/include wolfssllibpath=$OPT_WOLFSSL/lib$libsuff fi fi if test "x$USE_WOLFSSL" != "xyes"; then LDFLAGS="$LDFLAGS $addld" LDFLAGSPC="$LDFLAGSPC $addld" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Add $addld to LDFLAGS" >&5 printf "%s\n" "$as_me: Add $addld to LDFLAGS" >&6;} if test "$addcflags" != "-I/usr/include"; then CPPFLAGS="$CPPFLAGS $addcflags" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Add $addcflags to CPPFLAGS" >&5 printf "%s\n" "$as_me: Add $addcflags to CPPFLAGS" >&6;} fi my_ac_save_LIBS="$LIBS" LIBS="$addlib $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Add $addlib to LIBS" >&5 printf "%s\n" "$as_me: Add $addlib to LIBS" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wolfSSL_Init in -lwolfssl" >&5 printf %s "checking for wolfSSL_Init in -lwolfssl... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* These are not needed for detection and confuse wolfSSL. They are set up properly later if it is detected. */ #undef SIZEOF_LONG #undef SIZEOF_LONG_LONG #include #include int main(void) { return wolfSSL_Init(); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define USE_WOLFSSL 1" >>confdefs.h WOLFSSL_ENABLED=1 USE_WOLFSSL="yes" ssl_msg="wolfSSL" test wolfssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } CPPFLAGS=$_cppflags LDFLAGS=$_ldflags LDFLAGSPC=$_ldflagspc wolfssllibpath="" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$my_ac_save_LIBS" fi if test "x$USE_WOLFSSL" = "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: detected wolfSSL" >&5 printf "%s\n" "$as_me: detected wolfSSL" >&6;} check_for_ca_bundle=1 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 printf %s "checking size of long long... " >&6; } r=0 for typesize in 8 4 2 16 1; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { switch(0) { case 0: case (sizeof(long long) == $typesize):; } return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : r=$typesize else $as_nop r=0 fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test $r -gt 0; then break; fi done if test $r -eq 0; then as_fn_error $? "Failed to find size of long long" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5 printf "%s\n" "$r" >&6; } tname=`echo "ac_cv_sizeof_long long" | tr A-Z a-z | tr " " "_"` eval "$tname=$r" printf "%s\n" "#define SIZEOF_LONG_LONG $r" >>confdefs.h LIBS="$addlib -lm $LIBS" for ac_func in wolfSSL_set_quic_use_legacy_codepoint do : ac_fn_c_check_func "$LINENO" "wolfSSL_set_quic_use_legacy_codepoint" "ac_cv_func_wolfSSL_set_quic_use_legacy_codepoint" if test "x$ac_cv_func_wolfSSL_set_quic_use_legacy_codepoint" = xyes then : printf "%s\n" "#define HAVE_WOLFSSL_SET_QUIC_USE_LEGACY_CODEPOINT 1" >>confdefs.h QUIC_ENABLED=yes fi done ac_fn_c_check_func "$LINENO" "wolfSSL_get_peer_certificate" "ac_cv_func_wolfSSL_get_peer_certificate" if test "x$ac_cv_func_wolfSSL_get_peer_certificate" = xyes then : printf "%s\n" "#define HAVE_WOLFSSL_GET_PEER_CERTIFICATE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wolfSSL_UseALPN" "ac_cv_func_wolfSSL_UseALPN" if test "x$ac_cv_func_wolfSSL_UseALPN" = xyes then : printf "%s\n" "#define HAVE_WOLFSSL_USEALPN 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wolfSSL_DES_ecb_encrypt" "ac_cv_func_wolfSSL_DES_ecb_encrypt" if test "x$ac_cv_func_wolfSSL_DES_ecb_encrypt" = xyes then : printf "%s\n" "#define HAVE_WOLFSSL_DES_ECB_ENCRYPT 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wolfSSL_BIO_new" "ac_cv_func_wolfSSL_BIO_new" if test "x$ac_cv_func_wolfSSL_BIO_new" = xyes then : printf "%s\n" "#define HAVE_WOLFSSL_BIO_NEW 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wolfSSL_BIO_set_shutdown" "ac_cv_func_wolfSSL_BIO_set_shutdown" if test "x$ac_cv_func_wolfSSL_BIO_set_shutdown" = xyes then : printf "%s\n" "#define HAVE_WOLFSSL_BIO_SET_SHUTDOWN 1" >>confdefs.h fi if test "x$ac_cv_func_wolfSSL_DES_ecb_encrypt" = 'xyes'; then HAVE_WOLFSSL_DES_ECB_ENCRYPT=1 fi if test "x$ac_cv_func_wolfSSL_BIO_new" = 'xyes'; then HAVE_WOLFSSL_BIO_NEW=1 fi if test -n "$wolfssllibpath"; then if test "x$cross_compiling" != "xyes"; then CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$wolfssllibpath" export CURL_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $wolfssllibpath to CURL_LIBRARY_PATH" >&5 printf "%s\n" "$as_me: Added $wolfssllibpath to CURL_LIBRARY_PATH" >&6;} fi fi LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE wolfssl" else as_fn_error $? "--with-wolfssl but wolfSSL was not found or doesn't work" "$LINENO" 5 fi fi test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" fi if test "x$OPT_BEARSSL" != xno; then _cppflags=$CPPFLAGS _ldflags=$LDFLAGS _ldflagspc=$LDFLAGSPC ssl_msg= if test X"$OPT_BEARSSL" != Xno; then if test "$OPT_BEARSSL" = "yes"; then OPT_BEARSSL="" fi if test -z "$OPT_BEARSSL" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for br_ssl_client_init_full in -lbearssl" >&5 printf %s "checking for br_ssl_client_init_full in -lbearssl... " >&6; } if test ${ac_cv_lib_bearssl_br_ssl_client_init_full+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lbearssl -lbearssl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char br_ssl_client_init_full (); int main(void) { return br_ssl_client_init_full (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_bearssl_br_ssl_client_init_full=yes else $as_nop ac_cv_lib_bearssl_br_ssl_client_init_full=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bearssl_br_ssl_client_init_full" >&5 printf "%s\n" "$ac_cv_lib_bearssl_br_ssl_client_init_full" >&6; } if test "x$ac_cv_lib_bearssl_br_ssl_client_init_full" = xyes then : printf "%s\n" "#define USE_BEARSSL 1" >>confdefs.h BEARSSL_ENABLED=1 USE_BEARSSL="yes" ssl_msg="BearSSL" test bearssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes fi fi addld="" addlib="" addcflags="" bearssllib="" if test "x$USE_BEARSSL" != "xyes"; then addld=-L$OPT_BEARSSL/lib$libsuff addcflags=-I$OPT_BEARSSL/include bearssllib=$OPT_BEARSSL/lib$libsuff LDFLAGS="$LDFLAGS $addld" LDFLAGSPC="$LDFLAGSPC $addld" if test "$addcflags" != "-I/usr/include"; then CPPFLAGS="$CPPFLAGS $addcflags" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for br_ssl_client_init_full in -lbearssl" >&5 printf %s "checking for br_ssl_client_init_full in -lbearssl... " >&6; } if test ${ac_cv_lib_bearssl_br_ssl_client_init_full+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lbearssl -lbearssl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char br_ssl_client_init_full (); int main(void) { return br_ssl_client_init_full (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_bearssl_br_ssl_client_init_full=yes else $as_nop ac_cv_lib_bearssl_br_ssl_client_init_full=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bearssl_br_ssl_client_init_full" >&5 printf "%s\n" "$ac_cv_lib_bearssl_br_ssl_client_init_full" >&6; } if test "x$ac_cv_lib_bearssl_br_ssl_client_init_full" = xyes then : printf "%s\n" "#define USE_BEARSSL 1" >>confdefs.h BEARSSL_ENABLED=1 USE_BEARSSL="yes" ssl_msg="BearSSL" test bearssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes else $as_nop CPPFLAGS=$_cppflags LDFLAGS=$_ldflags LDFLAGSPC=$_ldflagspc fi fi if test "x$USE_BEARSSL" = "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: detected BearSSL" >&5 printf "%s\n" "$as_me: detected BearSSL" >&6;} check_for_ca_bundle=1 LIBS="-lbearssl $LIBS" if test -n "$bearssllib"; then if test "x$cross_compiling" != "xyes"; then CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$bearssllib" export CURL_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $bearssllib to CURL_LIBRARY_PATH" >&5 printf "%s\n" "$as_me: Added $bearssllib to CURL_LIBRARY_PATH" >&6;} fi fi fi fi test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" fi if test "x$OPT_RUSTLS" != xno; then ssl_msg= CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" ## NEW CODE case "$OPT_RUSTLS" in yes) PKGTEST="yes" PREFIX_RUSTLS= ;; *) PKGTEST="no" PREFIX_RUSTLS=$OPT_RUSTLS RUSTLS_PCDIR="$PREFIX_RUSTLS/lib/pkgconfig" if test -f "$RUSTLS_PCDIR/rustls.pc"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: PKG_CONFIG_LIBDIR will be set to \"$RUSTLS_PCDIR\"" >&5 printf "%s\n" "$as_me: PKG_CONFIG_LIBDIR will be set to \"$RUSTLS_PCDIR\"" >&6;} PKGTEST="yes" fi if test "$PKGTEST" != "yes"; then # try lib64 instead RUSTLS_PCDIR="$PREFIX_RUSTLS/lib64/pkgconfig" if test -f "$RUSTLS_PCDIR/rustls.pc"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: PKG_CONFIG_LIBDIR will be set to \"$RUSTLS_PCDIR\"" >&5 printf "%s\n" "$as_me: PKG_CONFIG_LIBDIR will be set to \"$RUSTLS_PCDIR\"" >&6;} PKGTEST="yes" fi fi if test "$PKGTEST" != "yes"; then addld=-L$PREFIX_RUSTLS/lib$libsuff addcflags=-I$PREFIX_RUSTLS/include LDFLAGS="$LDFLAGS $addld" LDFLAGSPC="$LDFLAGSPC $addld" if test "$addcflags" != "-I/usr/include"; then CPPFLAGS="$CPPFLAGS $addcflags" fi if test "$curl_cv_apple" = 'yes'; then RUSTLS_LDFLAGS="-framework Security -framework Foundation" else RUSTLS_LDFLAGS="-lpthread -ldl -lm" fi LIB_RUSTLS="$PREFIX_RUSTLS/lib$libsuff" if test "$PREFIX_RUSTLS" != "/usr" ; then SSL_LDFLAGS="-L$LIB_RUSTLS $RUSTLS_LDFLAGS" SSL_CPPFLAGS="-I$PREFIX_RUSTLS/include" fi printf "%s\n" "#define USE_RUSTLS 1" >>confdefs.h USE_RUSTLS="yes" fi ;; esac link_pkgconfig='' if test "$PKGTEST" = "yes"; then if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for rustls options with pkg-config" >&5 printf %s "checking for rustls options with pkg-config... " >&6; } itexists=` if test -n "$RUSTLS_PCDIR"; then PKG_CONFIG_LIBDIR="$RUSTLS_PCDIR" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists rustls >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no" ; then SSL_LIBS=` if test -n "$RUSTLS_PCDIR"; then PKG_CONFIG_LIBDIR="$RUSTLS_PCDIR" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-l --libs-only-other rustls 2>/dev/null` SSL_LDFLAGS=` if test -n "$RUSTLS_PCDIR"; then PKG_CONFIG_LIBDIR="$RUSTLS_PCDIR" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-L rustls 2>/dev/null` SSL_CPPFLAGS=` if test -n "$RUSTLS_PCDIR"; then PKG_CONFIG_LIBDIR="$RUSTLS_PCDIR" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --cflags-only-I rustls 2>/dev/null` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: SSL_LIBS: \"$SSL_LIBS\"" >&5 printf "%s\n" "$as_me: pkg-config: SSL_LIBS: \"$SSL_LIBS\"" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: SSL_LDFLAGS: \"$SSL_LDFLAGS\"" >&5 printf "%s\n" "$as_me: pkg-config: SSL_LDFLAGS: \"$SSL_LDFLAGS\"" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: SSL_CPPFLAGS: \"$SSL_CPPFLAGS\"" >&5 printf "%s\n" "$as_me: pkg-config: SSL_CPPFLAGS: \"$SSL_CPPFLAGS\"" >&6;} LIB_RUSTLS=`echo $SSL_LDFLAGS | sed -e 's/^-L//'` LIBS="$SSL_LIBS $LIBS" link_pkgconfig=1 ssl_msg="rustls" printf "%s\n" "#define USE_RUSTLS 1" >>confdefs.h USE_RUSTLS="yes" RUSTLS_ENABLED=1 test rustls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes else as_fn_error $? "pkg-config: Could not find Rustls" "$LINENO" 5 fi else LIBS="-lrustls -lpthread -ldl -lm $LIBS" fi CPPFLAGS="$CLEANCPPFLAGS $SSL_CPPFLAGS" LDFLAGS="$CLEANLDFLAGS $SSL_LDFLAGS" LDFLAGSPC="$CLEANLDFLAGSPC $SSL_LDFLAGS" if test "x$USE_RUSTLS" = "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: detected Rustls" >&5 printf "%s\n" "$as_me: detected Rustls" >&6;} check_for_ca_bundle=1 if test -n "$LIB_RUSTLS"; then if test "x$cross_compiling" != "xyes"; then CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$LIB_RUSTLS" export CURL_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $LIB_RUSTLS to CURL_LIBRARY_PATH" >&5 printf "%s\n" "$as_me: Added $LIB_RUSTLS to CURL_LIBRARY_PATH" >&6;} fi fi if test -n "$link_pkgconfig"; then LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE rustls" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for rustls_supported_hpke in -lrustls" >&5 printf %s "checking for rustls_supported_hpke in -lrustls... " >&6; } if test ${ac_cv_lib_rustls_rustls_supported_hpke+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lrustls $RUSTLS_LDFLAGS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char rustls_supported_hpke (); int main(void) { return rustls_supported_hpke (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_rustls_rustls_supported_hpke=yes else $as_nop ac_cv_lib_rustls_rustls_supported_hpke=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rustls_rustls_supported_hpke" >&5 printf "%s\n" "$ac_cv_lib_rustls_rustls_supported_hpke" >&6; } if test "x$ac_cv_lib_rustls_rustls_supported_hpke" = xyes then : printf "%s\n" "#define USE_RUSTLS 1" >>confdefs.h RUSTLS_ENABLED=1 USE_RUSTLS="yes" ssl_msg="rustls" test rustls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes else $as_nop as_fn_error $? "--with-rustls was specified but could not find compatible Rustls." "$LINENO" 5 fi fi test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" if test X"$OPT_RUSTLS" != Xno && test "$RUSTLS_ENABLED" != "1"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: OPT_RUSTLS: $OPT_RUSTLS" >&5 printf "%s\n" "$as_me: OPT_RUSTLS: $OPT_RUSTLS" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: RUSTLS_ENABLED: $RUSTLS_ENABLED" >&5 printf "%s\n" "$as_me: RUSTLS_ENABLED: $RUSTLS_ENABLED" >&6;} as_fn_error $? "--with-rustls was given but Rustls could not be detected" "$LINENO" 5 fi fi if test "x$USE_WIN32_CRYPTO" = "x1" -o "x$SCHANNEL_ENABLED" = "x1"; then LIBS="-lcrypt32 $LIBS" if test "$curl_cv_wince" = 'no'; then LIBS="-ladvapi32 $LIBS" fi fi if test "x$curl_cv_native_windows" = "xyes" -a "$curl_cv_wince" = 'no'; then LIBS="-lbcrypt $LIBS" fi case "x$SSL_DISABLED$OPENSSL_ENABLED$GNUTLS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$SCHANNEL_ENABLED$SECURETRANSPORT_ENABLED$BEARSSL_ENABLED$RUSTLS_ENABLED" in x) as_fn_error $? "TLS not detected, you will not be able to use HTTPS, FTPS, NTLM and more. Use --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-schannel, --with-secure-transport, --with-amissl, --with-bearssl or --with-rustls to address this." "$LINENO" 5 ;; x1) # one SSL backend is enabled SSL_ENABLED="1" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: built with one SSL backend" >&5 printf "%s\n" "$as_me: built with one SSL backend" >&6;} ;; xD) # explicitly built without TLS ;; xD*) as_fn_error $? "--without-ssl has been set together with an explicit option to use an ssl library (e.g. --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-schannel, --with-secure-transport, --with-amissl, --with-bearssl, --with-rustls). Since these are conflicting parameters, verify which is the desired one and drop the other." "$LINENO" 5 ;; *) # more than one SSL backend is enabled SSL_ENABLED="1" CURL_WITH_MULTI_SSL="1" printf "%s\n" "#define CURL_WITH_MULTI_SSL 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: built with multiple SSL backends" >&5 printf "%s\n" "$as_me: built with multiple SSL backends" >&6;} ;; esac if test -n "$ssl_backends"; then curl_ssl_msg="enabled ($ssl_backends)" fi if test no = "$VALID_DEFAULT_SSL_BACKEND"; then if test -n "$SSL_ENABLED"; then as_fn_error $? "Default SSL backend $DEFAULT_SSL_BACKEND not enabled!" "$LINENO" 5 else as_fn_error $? "Default SSL backend requires SSL!" "$LINENO" 5 fi elif test yes = "$VALID_DEFAULT_SSL_BACKEND"; then printf "%s\n" "#define CURL_DEFAULT_SSL_BACKEND \"$DEFAULT_SSL_BACKEND\"" >>confdefs.h fi if test -n "$check_for_ca_bundle"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking default CA cert bundle/path" >&5 printf %s "checking default CA cert bundle/path... " >&6; } # Check whether --with-ca-bundle was given. if test ${with_ca_bundle+y} then : withval=$with_ca_bundle; want_ca="$withval" if test "x$want_ca" = "xyes"; then as_fn_error $? "--with-ca-bundle=FILE requires a path to the CA bundle" "$LINENO" 5 fi else $as_nop want_ca="unset" fi # Check whether --with-ca-path was given. if test ${with_ca_path+y} then : withval=$with_ca_path; want_capath="$withval" if test "x$want_capath" = "xyes"; then as_fn_error $? "--with-ca-path=DIRECTORY requires a path to the CA path directory" "$LINENO" 5 fi else $as_nop want_capath="unset" fi ca_warning=" (warning: certs not found)" capath_warning=" (warning: certs not found)" check_capath="" if test "x$want_ca" != "xno" -a "x$want_ca" != "xunset" -a \ "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then ca="$want_ca" capath="$want_capath" elif test "x$want_ca" != "xno" -a "x$want_ca" != "xunset"; then ca="$want_ca" capath="no" elif test "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then capath="$want_capath" ca="no" else ca="no" capath="no" if test "x$cross_compiling" != "xyes" -a \ "x$curl_cv_native_windows" != "xyes"; then if test "x$want_ca" = "xunset"; then if test "x$prefix" != xNONE; then cac="${prefix}/share/curl/curl-ca-bundle.crt" else cac="$ac_default_prefix/share/curl/curl-ca-bundle.crt" fi for a in /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 \ "$cac"; do if test -f "$a"; then ca="$a" break fi done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: want $want_capath ca $ca" >&5 printf "%s\n" "$as_me: want $want_capath ca $ca" >&6;} if test "x$want_capath" = "xunset"; then check_capath="/etc/ssl/certs" fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: skipped the ca-cert path detection when cross-compiling" >&5 printf "%s\n" "$as_me: WARNING: skipped the ca-cert path detection when cross-compiling" >&2;} fi fi if test "x$ca" = "xno" || test -f "$ca"; then ca_warning="" fi if test "x$capath" != "xno"; then check_capath="$capath" fi if test ! -z "$check_capath"; then for a in "$check_capath"; do if test -d "$a" && ls "$a"/[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].0 >/dev/null 2>/dev/null; then if test "x$capath" = "xno"; then capath="$a" fi capath_warning="" break fi done fi if test "x$capath" = "xno"; then capath_warning="" fi if test "x$ca" != "xno"; then CURL_CA_BUNDLE="$ca" printf "%s\n" "#define CURL_CA_BUNDLE \"$ca\"" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ca" >&5 printf "%s\n" "$ca" >&6; } fi if test "x$capath" != "xno"; then CURL_CA_PATH="\"$capath\"" printf "%s\n" "#define CURL_CA_PATH \"$capath\"" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $capath (capath)" >&5 printf "%s\n" "$capath (capath)" >&6; } fi if test "x$ca" = "xno" && test "x$capath" = "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use built-in CA store of SSL library" >&5 printf %s "checking whether to use built-in CA store of SSL library... " >&6; } # Check whether --with-ca-fallback was given. if test ${with_ca_fallback+y} then : withval=$with_ca_fallback; if test "x$with_ca_fallback" != "xyes" -a "x$with_ca_fallback" != "xno"; then as_fn_error $? "--with-ca-fallback only allows yes or no as parameter" "$LINENO" 5 fi else $as_nop with_ca_fallback="no" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_ca_fallback" >&5 printf "%s\n" "$with_ca_fallback" >&6; } if test "x$with_ca_fallback" = "xyes"; then if test "x$OPENSSL_ENABLED" != "x1" -a "x$GNUTLS_ENABLED" != "x1"; then as_fn_error $? "--with-ca-fallback only works with OpenSSL or GnuTLS" "$LINENO" 5 fi printf "%s\n" "#define CURL_CA_FALLBACK 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking CA cert bundle path to embed in the curl tool" >&5 printf %s "checking CA cert bundle path to embed in the curl tool... " >&6; } # Check whether --with-ca-embed was given. if test ${with_ca_embed+y} then : withval=$with_ca_embed; want_ca_embed="$withval" if test "x$want_ca_embed" = "xyes"; then as_fn_error $? "--with-ca-embed=FILE requires a path to the CA bundle" "$LINENO" 5 fi else $as_nop want_ca_embed="unset" fi CURL_CA_EMBED='' if test "x$want_ca_embed" != "xno" -a "x$want_ca_embed" != "xunset" -a -f "$want_ca_embed"; then CURL_CA_EMBED="$want_ca_embed" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $want_ca_embed" >&5 printf "%s\n" "$want_ca_embed" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test "x$CURL_CA_EMBED" != "x"; then CURL_CA_EMBED_SET_TRUE= CURL_CA_EMBED_SET_FALSE='#' else CURL_CA_EMBED_SET_TRUE='#' CURL_CA_EMBED_SET_FALSE= fi if test "$curl_cv_native_windows" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable unsafe CA bundle search in PATH on Windows" >&5 printf %s "checking whether to enable unsafe CA bundle search in PATH on Windows... " >&6; } # Check whether --enable-ca-search was given. if test ${enable_ca_search+y} then : enableval=$enable_ca_search; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_CA_SEARCH 1" >>confdefs.h ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi fi if test "$curl_cv_native_windows" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable safe CA bundle search (within the curl tool directory) on Windows" >&5 printf %s "checking whether to enable safe CA bundle search (within the curl tool directory) on Windows... " >&6; } # Check whether --enable-ca-search-safe was given. if test ${enable_ca_search_safe+y} then : enableval=$enable_ca_search_safe; case "$enableval" in yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define CURL_CA_SEARCH_SAFE 1" >>confdefs.h ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi OPT_LIBPSL=off # Check whether --with-libpsl was given. if test ${with_libpsl+y} then : withval=$with_libpsl; OPT_LIBPSL=$withval fi if test X"$OPT_LIBPSL" != Xno; then CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" case "$OPT_LIBPSL" in yes|off) if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libpsl options with pkg-config" >&5 printf %s "checking for libpsl options with pkg-config... " >&6; } itexists=` if test -n ""; then PKG_CONFIG_LIBDIR="" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists libpsl >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no"; then LIB_PSL=`$PKGCONFIG --libs-only-l libpsl` LD_PSL=`$PKGCONFIG --libs-only-L libpsl` CPP_PSL=`$PKGCONFIG --cflags-only-I libpsl` else LIB_PSL="-lpsl" fi ;; *) LIB_PSL="-lpsl" PREFIX_PSL=$OPT_LIBPSL ;; esac if test -n "$PREFIX_PSL"; then LD_PSL=-L${PREFIX_PSL}/lib$libsuff CPP_PSL=-I${PREFIX_PSL}/include fi LDFLAGS="$LDFLAGS $LD_PSL" LDFLAGSPC="$LDFLAGSPC $LD_PSL" CPPFLAGS="$CPPFLAGS $CPP_PSL" LIBS="$LIB_PSL $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for psl_builtin in -lpsl" >&5 printf %s "checking for psl_builtin in -lpsl... " >&6; } if test ${ac_cv_lib_psl_psl_builtin+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lpsl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char psl_builtin (); int main(void) { return psl_builtin (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_psl_psl_builtin=yes else $as_nop ac_cv_lib_psl_psl_builtin=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_psl_psl_builtin" >&5 printf "%s\n" "$ac_cv_lib_psl_psl_builtin" >&6; } if test "x$ac_cv_lib_psl_psl_builtin" = xyes then : for ac_header in libpsl.h do : ac_fn_c_check_header_compile "$LINENO" "libpsl.h" "ac_cv_header_libpsl_h" "$ac_includes_default" if test "x$ac_cv_header_libpsl_h" = xyes then : printf "%s\n" "#define HAVE_LIBPSL_H 1" >>confdefs.h curl_psl_msg="enabled" printf "%s\n" "#define USE_LIBPSL 1" >>confdefs.h USE_LIBPSL=1 LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libpsl" fi done else $as_nop LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS fi if test "$USE_LIBPSL" != "1"; then as_fn_error $? "libpsl libs and/or directories were not found where specified!" "$LINENO" 5 fi fi if test "$curl_psl_msg" = "enabled"; then USE_LIBPSL_TRUE= USE_LIBPSL_FALSE='#' else USE_LIBPSL_TRUE='#' USE_LIBPSL_FALSE= fi # Check whether --with-libgsasl was given. if test ${with_libgsasl+y} then : withval=$with_libgsasl; with_libgsasl=$withval else $as_nop with_libgsasl=yes fi if test $with_libgsasl != "no"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing gsasl_init" >&5 printf %s "checking for library containing gsasl_init... " >&6; } if test ${ac_cv_search_gsasl_init+y} then : printf %s "(cached) " >&6 else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char gsasl_init (); int main(void) { return gsasl_init (); return 0; } _ACEOF for ac_lib in '' gsasl do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO" then : ac_cv_search_gsasl_init=$ac_res fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext if test ${ac_cv_search_gsasl_init+y} then : break fi done if test ${ac_cv_search_gsasl_init+y} then : else $as_nop ac_cv_search_gsasl_init=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gsasl_init" >&5 printf "%s\n" "$ac_cv_search_gsasl_init" >&6; } ac_res=$ac_cv_search_gsasl_init if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" curl_gsasl_msg="enabled"; printf "%s\n" "#define USE_GSASL 1" >>confdefs.h LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libgsasl" else $as_nop curl_gsasl_msg="no (libgsasl not found)"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libgsasl was not found" >&5 printf "%s\n" "$as_me: WARNING: libgsasl was not found" >&2;} fi fi if test "$curl_gsasl_msg" = "enabled"; then USE_GSASL_TRUE= USE_GSASL_FALSE='#' else USE_GSASL_TRUE='#' USE_GSASL_FALSE= fi # Check whether --with-libmetalink was given. if test ${with_libmetalink+y} then : withval=$with_libmetalink; as_fn_error $? "--with-libmetalink and --without-libmetalink no longer work!" "$LINENO" 5 fi OPT_LIBSSH2=off # Check whether --with-libssh2 was given. if test ${with_libssh2+y} then : withval=$with_libssh2; OPT_LIBSSH2=$withval else $as_nop OPT_LIBSSH2=no fi OPT_LIBSSH=off # Check whether --with-libssh was given. if test ${with_libssh+y} then : withval=$with_libssh; OPT_LIBSSH=$withval else $as_nop OPT_LIBSSH=no fi OPT_WOLFSSH=off # Check whether --with-wolfssh was given. if test ${with_wolfssh+y} then : withval=$with_wolfssh; OPT_WOLFSSH=$withval else $as_nop OPT_WOLFSSH=no fi if test X"$OPT_LIBSSH2" != Xno; then CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" case "$OPT_LIBSSH2" in yes) if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libssh2 options with pkg-config" >&5 printf %s "checking for libssh2 options with pkg-config... " >&6; } itexists=` if test -n ""; then PKG_CONFIG_LIBDIR="" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists libssh2 >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no"; then LIB_SSH2=`$PKGCONFIG --libs-only-l libssh2` LD_SSH2=`$PKGCONFIG --libs-only-L libssh2` CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2` version=`$PKGCONFIG --modversion libssh2` DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/^-L//'` fi ;; off) ;; *) PREFIX_SSH2=$OPT_LIBSSH2 ;; esac if test -n "$PREFIX_SSH2"; then LIB_SSH2="-lssh2" LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff CPP_SSH2=-I${PREFIX_SSH2}/include DIR_SSH2=${PREFIX_SSH2}/lib$libsuff fi LDFLAGS="$LDFLAGS $LD_SSH2" LDFLAGSPC="$LDFLAGSPC $LD_SSH2" CPPFLAGS="$CPPFLAGS $CPP_SSH2" LIBS="$LIB_SSH2 $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libssh2_free in -lssh2" >&5 printf %s "checking for libssh2_free in -lssh2... " >&6; } if test ${ac_cv_lib_ssh2_libssh2_free+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lssh2 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char libssh2_free (); int main(void) { return libssh2_free (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_ssh2_libssh2_free=yes else $as_nop ac_cv_lib_ssh2_libssh2_free=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssh2_libssh2_free" >&5 printf "%s\n" "$ac_cv_lib_ssh2_libssh2_free" >&6; } if test "x$ac_cv_lib_ssh2_libssh2_free" = xyes then : printf "%s\n" "#define HAVE_LIBSSH2 1" >>confdefs.h LIBS="-lssh2 $LIBS" fi ac_fn_c_check_header_compile "$LINENO" "libssh2.h" "ac_cv_header_libssh2_h" "$ac_includes_default" if test "x$ac_cv_header_libssh2_h" = xyes then : curl_ssh_msg="enabled (libssh2)" printf "%s\n" "#define USE_LIBSSH2 1" >>confdefs.h USE_LIBSSH2=1 fi if test X"$OPT_LIBSSH2" != Xoff && test "$USE_LIBSSH2" != "1"; then as_fn_error $? "libssh2 libs and/or directories were not found where specified!" "$LINENO" 5 fi if test "$USE_LIBSSH2" = "1"; then if test -n "$DIR_SSH2"; then if test "x$cross_compiling" != "xyes"; then CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_SSH2" export CURL_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_SSH2 to CURL_LIBRARY_PATH" >&5 printf "%s\n" "$as_me: Added $DIR_SSH2 to CURL_LIBRARY_PATH" >&6;} fi fi LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libssh2" else LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS fi elif test X"$OPT_LIBSSH" != Xno; then CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" case "$OPT_LIBSSH" in yes) if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libssh options with pkg-config" >&5 printf %s "checking for libssh options with pkg-config... " >&6; } itexists=` if test -n ""; then PKG_CONFIG_LIBDIR="" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists libssh >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no"; then LIB_SSH=`$PKGCONFIG --libs-only-l libssh` LD_SSH=`$PKGCONFIG --libs-only-L libssh` CPP_SSH=`$PKGCONFIG --cflags-only-I libssh` version=`$PKGCONFIG --modversion libssh` DIR_SSH=`echo $LD_SSH | $SED -e 's/^-L//'` fi ;; off) ;; *) PREFIX_SSH=$OPT_LIBSSH ;; esac if test -n "$PREFIX_SSH"; then LIB_SSH="-lssh" LD_SSH=-L${PREFIX_SSH}/lib$libsuff CPP_SSH=-I${PREFIX_SSH}/include DIR_SSH=${PREFIX_SSH}/lib$libsuff fi LDFLAGS="$LDFLAGS $LD_SSH" LDFLAGSPC="$LDFLAGSPC $LD_SSH" CPPFLAGS="$CPPFLAGS $CPP_SSH" LIBS="$LIB_SSH $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ssh_new in -lssh" >&5 printf %s "checking for ssh_new in -lssh... " >&6; } if test ${ac_cv_lib_ssh_ssh_new+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lssh $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char ssh_new (); int main(void) { return ssh_new (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_ssh_ssh_new=yes else $as_nop ac_cv_lib_ssh_ssh_new=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssh_ssh_new" >&5 printf "%s\n" "$ac_cv_lib_ssh_ssh_new" >&6; } if test "x$ac_cv_lib_ssh_ssh_new" = xyes then : printf "%s\n" "#define HAVE_LIBSSH 1" >>confdefs.h LIBS="-lssh $LIBS" fi ac_fn_c_check_header_compile "$LINENO" "libssh/libssh.h" "ac_cv_header_libssh_libssh_h" "$ac_includes_default" if test "x$ac_cv_header_libssh_libssh_h" = xyes then : curl_ssh_msg="enabled (libssh)" printf "%s\n" "#define USE_LIBSSH 1" >>confdefs.h USE_LIBSSH=1 fi if test X"$OPT_LIBSSH" != Xoff && test "$USE_LIBSSH" != "1"; then as_fn_error $? "libssh libs and/or directories were not found where specified!" "$LINENO" 5 fi if test "$USE_LIBSSH" = "1"; then if test "$curl_cv_native_windows" = "yes"; then LIBS="-liphlpapi $LIBS" fi if test -n "$DIR_SSH"; then if test "x$cross_compiling" != "xyes"; then CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_SSH" export CURL_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_SSH to CURL_LIBRARY_PATH" >&5 printf "%s\n" "$as_me: Added $DIR_SSH to CURL_LIBRARY_PATH" >&6;} fi fi LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libssh" else LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS fi elif test X"$OPT_WOLFSSH" != Xno; then CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" if test "$OPT_WOLFSSH" != yes; then WOLFCONFIG="$OPT_WOLFSSH/bin/wolfssh-config" WOLFSSH_LIBS=`$WOLFCONFIG --libs` LDFLAGS="$LDFLAGS $WOLFSSH_LIBS" LDFLAGSPC="$LDFLAGSPC $WOLFSSH_LIBS" CPPFLAGS="$CPPFLAGS `$WOLFCONFIG --cflags`" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wolfSSH_Init in -lwolfssh" >&5 printf %s "checking for wolfSSH_Init in -lwolfssh... " >&6; } if test ${ac_cv_lib_wolfssh_wolfSSH_Init+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lwolfssh $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char wolfSSH_Init (); int main(void) { return wolfSSH_Init (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_wolfssh_wolfSSH_Init=yes else $as_nop ac_cv_lib_wolfssh_wolfSSH_Init=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_wolfssh_wolfSSH_Init" >&5 printf "%s\n" "$ac_cv_lib_wolfssh_wolfSSH_Init" >&6; } if test "x$ac_cv_lib_wolfssh_wolfSSH_Init" = xyes then : printf "%s\n" "#define HAVE_LIBWOLFSSH 1" >>confdefs.h LIBS="-lwolfssh $LIBS" fi for ac_header in wolfssh/ssh.h do : ac_fn_c_check_header_compile "$LINENO" "wolfssh/ssh.h" "ac_cv_header_wolfssh_ssh_h" "$ac_includes_default" if test "x$ac_cv_header_wolfssh_ssh_h" = xyes then : printf "%s\n" "#define HAVE_WOLFSSH_SSH_H 1" >>confdefs.h curl_ssh_msg="enabled (wolfSSH)" printf "%s\n" "#define USE_WOLFSSH 1" >>confdefs.h USE_WOLFSSH=1 fi done fi OPT_LIBRTMP=off # Check whether --with-librtmp was given. if test ${with_librtmp+y} then : withval=$with_librtmp; OPT_LIBRTMP=$withval fi if test X"$OPT_LIBRTMP" != Xno; then CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" case "$OPT_LIBRTMP" in yes) if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for librtmp options with pkg-config" >&5 printf %s "checking for librtmp options with pkg-config... " >&6; } itexists=` if test -n ""; then PKG_CONFIG_LIBDIR="" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists librtmp >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no"; then LIB_RTMP=`$PKGCONFIG --libs-only-l librtmp` LD_RTMP=`$PKGCONFIG --libs-only-L librtmp` CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp` version=`$PKGCONFIG --modversion librtmp` DIR_RTMP=`echo $LD_RTMP | $SED -e 's/^-L//'` else as_fn_error $? "--librtmp was specified but could not find librtmp pkgconfig file." "$LINENO" 5 fi ;; off) LIB_RTMP="-lrtmp" ;; *) LIB_RTMP="-lrtmp" PREFIX_RTMP=$OPT_LIBRTMP ;; esac if test -n "$PREFIX_RTMP"; then LD_RTMP=-L${PREFIX_RTMP}/lib$libsuff CPP_RTMP=-I${PREFIX_RTMP}/include DIR_RTMP=${PREFIX_RTMP}/lib$libsuff fi LDFLAGS="$LDFLAGS $LD_RTMP" LDFLAGSPC="$LDFLAGSPC $LD_RTMP" CPPFLAGS="$CPPFLAGS $CPP_RTMP" LIBS="$LIB_RTMP $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for RTMP_Init in -lrtmp" >&5 printf %s "checking for RTMP_Init in -lrtmp... " >&6; } if test ${ac_cv_lib_rtmp_RTMP_Init+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lrtmp $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char RTMP_Init (); int main(void) { return RTMP_Init (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_rtmp_RTMP_Init=yes else $as_nop ac_cv_lib_rtmp_RTMP_Init=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rtmp_RTMP_Init" >&5 printf "%s\n" "$ac_cv_lib_rtmp_RTMP_Init" >&6; } if test "x$ac_cv_lib_rtmp_RTMP_Init" = xyes then : for ac_header in librtmp/rtmp.h do : ac_fn_c_check_header_compile "$LINENO" "librtmp/rtmp.h" "ac_cv_header_librtmp_rtmp_h" "$ac_includes_default" if test "x$ac_cv_header_librtmp_rtmp_h" = xyes then : printf "%s\n" "#define HAVE_LIBRTMP_RTMP_H 1" >>confdefs.h curl_rtmp_msg="enabled (librtmp)" printf "%s\n" "#define USE_LIBRTMP 1" >>confdefs.h USE_LIBRTMP=1 LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE librtmp" fi done else $as_nop LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS fi if test X"$OPT_LIBRTMP" != Xoff && test "$USE_LIBRTMP" != "1"; then as_fn_error $? "librtmp libs and/or directories were not found where specified!" "$LINENO" 5 fi fi versioned_symbols_flavour= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether versioned symbols are wanted" >&5 printf %s "checking whether versioned symbols are wanted... " >&6; } # Check whether --enable-versioned-symbols was given. if test ${enable_versioned_symbols+y} then : enableval=$enable_versioned_symbols; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libraries can be versioned" >&5 printf %s "checking if libraries can be versioned... " >&6; } GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script` if test -z "$GLD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: You need an ld version supporting the --version-script option" >&5 printf "%s\n" "$as_me: WARNING: You need an ld version supporting the --version-script option" >&2;} else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } if test "x$enableval" != "xyes"; then versioned_symbols_flavour="$enableval" elif test "x$CURL_WITH_MULTI_SSL" = "x1"; then versioned_symbols_flavour="MULTISSL_" elif test "x$OPENSSL_ENABLED" = "x1"; then versioned_symbols_flavour="OPENSSL_" elif test "x$MBEDTLS_ENABLED" = "x1"; then versioned_symbols_flavour="MBEDTLS_" elif test "x$BEARSSL_ENABLED" = "x1"; then versioned_symbols_flavour="BEARSSL_" elif test "x$WOLFSSL_ENABLED" = "x1"; then versioned_symbols_flavour="WOLFSSL_" elif test "x$GNUTLS_ENABLED" = "x1"; then versioned_symbols_flavour="GNUTLS_" elif test "x$RUSTLS_ENABLED" = "x1"; then versioned_symbols_flavour="RUSTLS_" else versioned_symbols_flavour="" fi versioned_symbols="yes" fi ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi CURL_LIBCURL_VERSIONED_SYMBOLS_PREFIX="$versioned_symbols_flavour" CURL_LIBCURL_VERSIONED_SYMBOLS_SONAME="4" if test "x$versioned_symbols" = 'xyes'; then CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_TRUE= CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_FALSE='#' else CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_TRUE='#' CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_FALSE= fi if test "$curl_cv_wince" = 'yes'; then want_winuni="yes" else want_winuni="no" fi if test "$curl_cv_native_windows" = "yes"; then if test "$curl_cv_winuwp" = 'yes'; then want_winuni="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Windows Unicode (Windows native builds only)" >&5 printf %s "checking whether to enable Windows Unicode (Windows native builds only)... " >&6; } # Check whether --enable-windows-unicode was given. if test ${enable_windows_unicode+y} then : enableval=$enable_windows_unicode; case "$enableval" in yes) want_winuni="yes" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test "$want_winuni" = "yes"; then CPPFLAGS="${CPPFLAGS} -DUNICODE -D_UNICODE" fi fi if test "$want_winuni" = "yes"; then USE_UNICODE_TRUE= USE_UNICODE_FALSE='#' else USE_UNICODE_TRUE='#' USE_UNICODE_FALSE= fi tst_links_winidn='no' if test "$curl_cv_native_windows" = 'yes'; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Windows native IDN (Windows native builds only)" >&5 printf %s "checking whether to enable Windows native IDN (Windows native builds only)... " >&6; } OPT_WINIDN="default" # Check whether --with-winidn was given. if test ${with_winidn+y} then : withval=$with_winidn; OPT_WINIDN=$withval fi case "$OPT_WINIDN" in no|default) want_winidn="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; yes) want_winidn="yes" want_winidn_path="default" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; *) want_winidn="yes" want_winidn_path="$withval" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes ($withval)" >&5 printf "%s\n" "yes ($withval)" >&6; } ;; esac if test "$want_winidn" = "yes"; then clean_CPPFLAGS="$CPPFLAGS" clean_LDFLAGS="$LDFLAGS" clean_LDFLAGSPC="$LDFLAGSPC" clean_LIBS="$LIBS" WINIDN_LIBS="-lnormaliz" WINIDN_CPPFLAGS="" # if test "$want_winidn_path" != "default"; then WINIDN_LDFLAGS="-L$want_winidn_path/lib$libsuff" WINIDN_CPPFLAGS="-I$want_winidn_path/include" fi # CPPFLAGS="$CPPFLAGS $WINIDN_CPPFLAGS" LDFLAGS="$LDFLAGS $WINIDN_LDFLAGS" LDFLAGSPC="$LDFLAGSPC $WINIDN_LDFLAGS" LIBS="$WINIDN_LIBS $LIBS" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IdnToUnicode can be linked" >&5 printf %s "checking if IdnToUnicode can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { #if (!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x600) && \ (!defined(WINVER) || WINVER < 0x600) WINBASEAPI int WINAPI IdnToUnicode(DWORD dwFlags, const WCHAR *lpASCIICharStr, int cchASCIIChar, WCHAR *lpUnicodeCharStr, int cchUnicodeChar); #endif IdnToUnicode(0, NULL, 0, NULL, 0); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_winidn="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_winidn="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_winidn" = "yes"; then printf "%s\n" "#define USE_WIN32_IDN 1" >>confdefs.h IDN_ENABLED=1 curl_idn_msg="enabled (Windows-native)" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find libraries for IDN support: IDN disabled" >&5 printf "%s\n" "$as_me: WARNING: Cannot find libraries for IDN support: IDN disabled" >&2;} CPPFLAGS="$clean_CPPFLAGS" LDFLAGS="$clean_LDFLAGS" LDFLAGSPC="$clean_LDFLAGSPC" LIBS="$clean_LIBS" fi fi fi tst_links_appleidn='no' if test "$curl_cv_apple" = 'yes'; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build with Apple IDN" >&5 printf %s "checking whether to build with Apple IDN... " >&6; } OPT_IDN="default" # Check whether --with-apple-idn was given. if test ${with_apple_idn+y} then : withval=$with_apple_idn; OPT_IDN=$withval fi case "$OPT_IDN" in yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes, check" >&5 printf "%s\n" "yes, check" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uidna_openUTS46 in -licucore" >&5 printf %s "checking for uidna_openUTS46 in -licucore... " >&6; } if test ${ac_cv_lib_icucore_uidna_openUTS46+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-licucore $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char uidna_openUTS46 (); int main(void) { return uidna_openUTS46 (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_icucore_uidna_openUTS46=yes else $as_nop ac_cv_lib_icucore_uidna_openUTS46=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_icucore_uidna_openUTS46" >&5 printf "%s\n" "$ac_cv_lib_icucore_uidna_openUTS46" >&6; } if test "x$ac_cv_lib_icucore_uidna_openUTS46" = xyes then : for ac_header in unicode/uidna.h do : ac_fn_c_check_header_compile "$LINENO" "unicode/uidna.h" "ac_cv_header_unicode_uidna_h" "$ac_includes_default" if test "x$ac_cv_header_unicode_uidna_h" = xyes then : printf "%s\n" "#define HAVE_UNICODE_UIDNA_H 1" >>confdefs.h curl_idn_msg="enabled (AppleIDN)" printf "%s\n" "#define USE_APPLE_IDN 1" >>confdefs.h USE_APPLE_IDN=1 IDN_ENABLED=1 LIBS="-licucore -liconv $LIBS" tst_links_appleidn='yes' fi done fi ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build with libidn2" >&5 printf %s "checking whether to build with libidn2... " >&6; } OPT_IDN="default" # Check whether --with-libidn2 was given. if test ${with_libidn2+y} then : withval=$with_libidn2; OPT_IDN=$withval fi if test "x$tst_links_winidn" = "xyes"; then want_idn="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (using WinIDN instead)" >&5 printf "%s\n" "no (using WinIDN instead)" >&6; } elif test "x$tst_links_appleidn" = "xyes"; then want_idn="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (using AppleIDN instead)" >&5 printf "%s\n" "no (using AppleIDN instead)" >&6; } else case "$OPT_IDN" in no) want_idn="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; default) want_idn="yes" want_idn_path="default" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (assumed) yes" >&5 printf "%s\n" "(assumed) yes" >&6; } ;; yes) want_idn="yes" want_idn_path="default" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; *) want_idn="yes" want_idn_path="$withval" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes ($withval)" >&5 printf "%s\n" "yes ($withval)" >&6; } ;; esac fi if test "$want_idn" = "yes"; then clean_CPPFLAGS="$CPPFLAGS" clean_LDFLAGS="$LDFLAGS" clean_LDFLAGSPC="$LDFLAGSPC" clean_LIBS="$LIBS" PKGCONFIG="no" # if test "$want_idn_path" != "default"; then IDN_PCDIR="$want_idn_path/lib$libsuff/pkgconfig" if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libidn2 options with pkg-config" >&5 printf %s "checking for libidn2 options with pkg-config... " >&6; } itexists=` if test -n "$IDN_PCDIR"; then PKG_CONFIG_LIBDIR="$IDN_PCDIR" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists libidn2 >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no"; then IDN_LIBS=` if test -n "$IDN_PCDIR"; then PKG_CONFIG_LIBDIR="$IDN_PCDIR" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-l libidn2 2>/dev/null` IDN_LDFLAGS=` if test -n "$IDN_PCDIR"; then PKG_CONFIG_LIBDIR="$IDN_PCDIR" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-L libidn2 2>/dev/null` IDN_CPPFLAGS=` if test -n "$IDN_PCDIR"; then PKG_CONFIG_LIBDIR="$IDN_PCDIR" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --cflags-only-I libidn2 2>/dev/null` IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/^-L//'` else IDN_LIBS="-lidn2" IDN_LDFLAGS="-L$want_idn_path/lib$libsuff" IDN_CPPFLAGS="-I$want_idn_path/include" IDN_DIR="$want_idn_path/lib$libsuff" fi else if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libidn2 options with pkg-config" >&5 printf %s "checking for libidn2 options with pkg-config... " >&6; } itexists=` if test -n ""; then PKG_CONFIG_LIBDIR="" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists libidn2 >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no"; then IDN_LIBS=`$PKGCONFIG --libs-only-l libidn2 2>/dev/null` IDN_LDFLAGS=`$PKGCONFIG --libs-only-L libidn2 2>/dev/null` IDN_CPPFLAGS=`$PKGCONFIG --cflags-only-I libidn2 2>/dev/null` IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/^-L//'` else IDN_LIBS="-lidn2" fi fi # if test "$PKGCONFIG" != "no"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: IDN_LIBS: \"$IDN_LIBS\"" >&5 printf "%s\n" "$as_me: pkg-config: IDN_LIBS: \"$IDN_LIBS\"" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: IDN_LDFLAGS: \"$IDN_LDFLAGS\"" >&5 printf "%s\n" "$as_me: pkg-config: IDN_LDFLAGS: \"$IDN_LDFLAGS\"" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: IDN_CPPFLAGS: \"$IDN_CPPFLAGS\"" >&5 printf "%s\n" "$as_me: pkg-config: IDN_CPPFLAGS: \"$IDN_CPPFLAGS\"" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: IDN_DIR: \"$IDN_DIR\"" >&5 printf "%s\n" "$as_me: pkg-config: IDN_DIR: \"$IDN_DIR\"" >&6;} else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: IDN_LIBS: \"$IDN_LIBS\"" >&5 printf "%s\n" "$as_me: IDN_LIBS: \"$IDN_LIBS\"" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: IDN_LDFLAGS: \"$IDN_LDFLAGS\"" >&5 printf "%s\n" "$as_me: IDN_LDFLAGS: \"$IDN_LDFLAGS\"" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: IDN_CPPFLAGS: \"$IDN_CPPFLAGS\"" >&5 printf "%s\n" "$as_me: IDN_CPPFLAGS: \"$IDN_CPPFLAGS\"" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: IDN_DIR: \"$IDN_DIR\"" >&5 printf "%s\n" "$as_me: IDN_DIR: \"$IDN_DIR\"" >&6;} fi # CPPFLAGS="$CPPFLAGS $IDN_CPPFLAGS" LDFLAGS="$LDFLAGS $IDN_LDFLAGS" LDFLAGSPC="$LDFLAGSPC $IDN_LDFLAGS" LIBS="$IDN_LIBS $LIBS" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if idn2_lookup_ul can be linked" >&5 printf %s "checking if idn2_lookup_ul can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define idn2_lookup_ul innocuous_idn2_lookup_ul #ifdef __STDC__ # include #else # include #endif #undef idn2_lookup_ul #ifdef __cplusplus extern "C" #endif char idn2_lookup_ul (); #if defined __stub_idn2_lookup_ul || defined __stub___idn2_lookup_ul #error force compilation error #endif int main(void) { return idn2_lookup_ul (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_libidn="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_libidn="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # ac_fn_c_check_header_compile "$LINENO" "idn2.h" "ac_cv_header_idn2_h" "$ac_includes_default" if test "x$ac_cv_header_idn2_h" = xyes then : printf "%s\n" "#define HAVE_IDN2_H 1" >>confdefs.h fi if test "$tst_links_libidn" = "yes"; then printf "%s\n" "#define HAVE_LIBIDN2 1" >>confdefs.h IDN_ENABLED=1 curl_idn_msg="enabled (libidn2)" if test -n "$IDN_DIR" -a "x$cross_compiling" != "xyes"; then CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$IDN_DIR" export CURL_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $IDN_DIR to CURL_LIBRARY_PATH" >&5 printf "%s\n" "$as_me: Added $IDN_DIR to CURL_LIBRARY_PATH" >&6;} fi LIBCURL_PC_REQUIRES_PRIVATE="libidn2 $LIBCURL_PC_REQUIRES_PRIVATE" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find libidn2" >&5 printf "%s\n" "$as_me: WARNING: Cannot find libidn2" >&2;} CPPFLAGS="$clean_CPPFLAGS" LDFLAGS="$clean_LDFLAGS" LDFLAGSPC="$clean_LDFLAGSPC" LIBS="$clean_LIBS" want_idn="no" fi fi OPT_H2="yes" if test "x$disable_http" = "xyes"; then # without HTTP nghttp2 is no use OPT_H2="no" fi # Check whether --with-nghttp2 was given. if test ${with_nghttp2+y} then : withval=$with_nghttp2; OPT_H2=$withval fi case "$OPT_H2" in no) want_nghttp2="no" ;; yes) want_nghttp2="default" want_nghttp2_path="" want_nghttp2_pkg_config_path="" ;; *) want_nghttp2="yes" want_nghttp2_path="$withval" want_nghttp2_pkg_config_path="$withval/lib/pkgconfig" ;; esac if test X"$want_nghttp2" != Xno; then CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libnghttp2 options with pkg-config" >&5 printf %s "checking for libnghttp2 options with pkg-config... " >&6; } itexists=` if test -n "$want_nghttp2_pkg_config_path"; then PKG_CONFIG_LIBDIR="$want_nghttp2_pkg_config_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists libnghttp2 >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no"; then LIB_H2=` if test -n "$want_nghttp2_pkg_config_path"; then PKG_CONFIG_LIBDIR="$want_nghttp2_pkg_config_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-l libnghttp2` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_H2" >&5 printf "%s\n" "$as_me: -l is $LIB_H2" >&6;} CPP_H2=` if test -n "$want_nghttp2_pkg_config_path"; then PKG_CONFIG_LIBDIR="$want_nghttp2_pkg_config_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --cflags-only-I libnghttp2` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_H2" >&5 printf "%s\n" "$as_me: -I is $CPP_H2" >&6;} LD_H2=` if test -n "$want_nghttp2_pkg_config_path"; then PKG_CONFIG_LIBDIR="$want_nghttp2_pkg_config_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-L libnghttp2` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_H2" >&5 printf "%s\n" "$as_me: -L is $LD_H2" >&6;} DIR_H2=`echo $LD_H2 | $SED -e 's/^-L//'` elif test x"$want_nghttp2_path" != x; then LIB_H2="-lnghttp2" LD_H2=-L${want_nghttp2_path}/lib$libsuff CPP_H2=-I${want_nghttp2_path}/include DIR_H2=${want_nghttp2_path}/lib$libsuff elif test X"$want_nghttp2" != Xdefault; then as_fn_error $? "--with-nghttp2 was specified but could not find libnghttp2 pkg-config file." "$LINENO" 5 else LIB_H2="-lnghttp2" fi LDFLAGS="$LDFLAGS $LD_H2" LDFLAGSPC="$LDFLAGSPC $LD_H2" CPPFLAGS="$CPPFLAGS $CPP_H2" LIBS="$LIB_H2 $LIBS" # use nghttp2_session_get_stream_local_window_size to require nghttp2 # >= 1.15.0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nghttp2_session_get_stream_local_window_size in -lnghttp2" >&5 printf %s "checking for nghttp2_session_get_stream_local_window_size in -lnghttp2... " >&6; } if test ${ac_cv_lib_nghttp2_nghttp2_session_get_stream_local_window_size+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lnghttp2 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char nghttp2_session_get_stream_local_window_size (); int main(void) { return nghttp2_session_get_stream_local_window_size (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_nghttp2_nghttp2_session_get_stream_local_window_size=yes else $as_nop ac_cv_lib_nghttp2_nghttp2_session_get_stream_local_window_size=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nghttp2_nghttp2_session_get_stream_local_window_size" >&5 printf "%s\n" "$ac_cv_lib_nghttp2_nghttp2_session_get_stream_local_window_size" >&6; } if test "x$ac_cv_lib_nghttp2_nghttp2_session_get_stream_local_window_size" = xyes then : for ac_header in nghttp2/nghttp2.h do : ac_fn_c_check_header_compile "$LINENO" "nghttp2/nghttp2.h" "ac_cv_header_nghttp2_nghttp2_h" "$ac_includes_default" if test "x$ac_cv_header_nghttp2_nghttp2_h" = xyes then : printf "%s\n" "#define HAVE_NGHTTP2_NGHTTP2_H 1" >>confdefs.h curl_h2_msg="enabled (nghttp2)" printf "%s\n" "#define USE_NGHTTP2 1" >>confdefs.h USE_NGHTTP2=1 LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libnghttp2" fi done CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_H2" export CURL_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_H2 to CURL_LIBRARY_PATH" >&5 printf "%s\n" "$as_me: Added $DIR_H2 to CURL_LIBRARY_PATH" >&6;} else $as_nop LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS fi fi OPT_TCP2="no" if test "x$disable_http" = "xyes"; then # without HTTP, ngtcp2 is no use OPT_TCP2="no" fi # Check whether --with-ngtcp2 was given. if test ${with_ngtcp2+y} then : withval=$with_ngtcp2; OPT_TCP2=$withval fi case "$OPT_TCP2" in no) want_tcp2="no" ;; yes) want_tcp2="default" want_tcp2_path="" ;; *) want_tcp2="yes" want_tcp2_path="$withval/lib/pkgconfig" ;; esac curl_tcp2_msg="no (--with-ngtcp2)" if test X"$want_tcp2" != Xno; then if test "$QUIC_ENABLED" != "yes"; then as_fn_error $? "the detected TLS library does not support QUIC, making --with-ngtcp2 a no-no" "$LINENO" 5 fi CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libngtcp2 options with pkg-config" >&5 printf %s "checking for libngtcp2 options with pkg-config... " >&6; } itexists=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists libngtcp2 >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no"; then LIB_TCP2=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-l libngtcp2` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_TCP2" >&5 printf "%s\n" "$as_me: -l is $LIB_TCP2" >&6;} CPP_TCP2=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --cflags-only-I libngtcp2` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_TCP2" >&5 printf "%s\n" "$as_me: -I is $CPP_TCP2" >&6;} LD_TCP2=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-L libngtcp2` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_TCP2" >&5 printf "%s\n" "$as_me: -L is $LD_TCP2" >&6;} LDFLAGS="$LDFLAGS $LD_TCP2" LDFLAGSPC="$LDFLAGSPC $LD_TCP2" CPPFLAGS="$CPPFLAGS $CPP_TCP2" LIBS="$LIB_TCP2 $LIBS" if test "x$cross_compiling" != "xyes"; then DIR_TCP2=`echo $LD_TCP2 | $SED -e 's/^-L//'` fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_conn_client_new_versioned in -lngtcp2" >&5 printf %s "checking for ngtcp2_conn_client_new_versioned in -lngtcp2... " >&6; } if test ${ac_cv_lib_ngtcp2_ngtcp2_conn_client_new_versioned+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lngtcp2 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char ngtcp2_conn_client_new_versioned (); int main(void) { return ngtcp2_conn_client_new_versioned (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_ngtcp2_ngtcp2_conn_client_new_versioned=yes else $as_nop ac_cv_lib_ngtcp2_ngtcp2_conn_client_new_versioned=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ngtcp2_ngtcp2_conn_client_new_versioned" >&5 printf "%s\n" "$ac_cv_lib_ngtcp2_ngtcp2_conn_client_new_versioned" >&6; } if test "x$ac_cv_lib_ngtcp2_ngtcp2_conn_client_new_versioned" = xyes then : for ac_header in ngtcp2/ngtcp2.h do : ac_fn_c_check_header_compile "$LINENO" "ngtcp2/ngtcp2.h" "ac_cv_header_ngtcp2_ngtcp2_h" "$ac_includes_default" if test "x$ac_cv_header_ngtcp2_ngtcp2_h" = xyes then : printf "%s\n" "#define HAVE_NGTCP2_NGTCP2_H 1" >>confdefs.h printf "%s\n" "#define USE_NGTCP2 1" >>confdefs.h USE_NGTCP2=1 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_TCP2" export CURL_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_TCP2 to CURL_LIBRARY_PATH" >&5 printf "%s\n" "$as_me: Added $DIR_TCP2 to CURL_LIBRARY_PATH" >&6;} LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libngtcp2" fi done else $as_nop LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS fi else if test X"$want_tcp2" != Xdefault; then as_fn_error $? "--with-ngtcp2 was specified but could not find ngtcp2 pkg-config file." "$LINENO" 5 fi fi fi if test "x$USE_NGTCP2" = "x1" -a "x$OPENSSL_ENABLED" = "x1" -a \ "x$OPENSSL_IS_BORINGSSL" != "x1" -a "x$OPENSSL_QUIC_API2" != "x1"; then CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libngtcp2_crypto_quictls options with pkg-config" >&5 printf %s "checking for libngtcp2_crypto_quictls options with pkg-config... " >&6; } itexists=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists libngtcp2_crypto_quictls >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no"; then LIB_NGTCP2_CRYPTO_QUICTLS=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-l libngtcp2_crypto_quictls` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_NGTCP2_CRYPTO_QUICTLS" >&5 printf "%s\n" "$as_me: -l is $LIB_NGTCP2_CRYPTO_QUICTLS" >&6;} CPP_NGTCP2_CRYPTO_QUICTLS=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --cflags-only-I libngtcp2_crypto_quictls` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_NGTCP2_CRYPTO_QUICTLS" >&5 printf "%s\n" "$as_me: -I is $CPP_NGTCP2_CRYPTO_QUICTLS" >&6;} LD_NGTCP2_CRYPTO_QUICTLS=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-L libngtcp2_crypto_quictls` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_NGTCP2_CRYPTO_QUICTLS" >&5 printf "%s\n" "$as_me: -L is $LD_NGTCP2_CRYPTO_QUICTLS" >&6;} LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_QUICTLS" LDFLAGSPC="$LDFLAGSPC $LD_NGTCP2_CRYPTO_QUICTLS" CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_QUICTLS" LIBS="$LIB_NGTCP2_CRYPTO_QUICTLS $LIBS" if test "x$cross_compiling" != "xyes"; then DIR_NGTCP2_CRYPTO_QUICTLS=`echo $LD_NGTCP2_CRYPTO_QUICTLS | $SED -e 's/^-L//'` fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_quictls" >&5 printf %s "checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_quictls... " >&6; } if test ${ac_cv_lib_ngtcp2_crypto_quictls_ngtcp2_crypto_recv_client_initial_cb+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lngtcp2_crypto_quictls $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char ngtcp2_crypto_recv_client_initial_cb (); int main(void) { return ngtcp2_crypto_recv_client_initial_cb (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_ngtcp2_crypto_quictls_ngtcp2_crypto_recv_client_initial_cb=yes else $as_nop ac_cv_lib_ngtcp2_crypto_quictls_ngtcp2_crypto_recv_client_initial_cb=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ngtcp2_crypto_quictls_ngtcp2_crypto_recv_client_initial_cb" >&5 printf "%s\n" "$ac_cv_lib_ngtcp2_crypto_quictls_ngtcp2_crypto_recv_client_initial_cb" >&6; } if test "x$ac_cv_lib_ngtcp2_crypto_quictls_ngtcp2_crypto_recv_client_initial_cb" = xyes then : for ac_header in ngtcp2/ngtcp2_crypto.h do : ac_fn_c_check_header_compile "$LINENO" "ngtcp2/ngtcp2_crypto.h" "ac_cv_header_ngtcp2_ngtcp2_crypto_h" "$ac_includes_default" if test "x$ac_cv_header_ngtcp2_ngtcp2_crypto_h" = xyes then : printf "%s\n" "#define HAVE_NGTCP2_NGTCP2_CRYPTO_H 1" >>confdefs.h USE_NGTCP2=1 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_QUICTLS" export CURL_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_NGTCP2_CRYPTO_QUICTLS to CURL_LIBRARY_PATH" >&5 printf "%s\n" "$as_me: Added $DIR_NGTCP2_CRYPTO_QUICTLS to CURL_LIBRARY_PATH" >&6;} LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libngtcp2_crypto_quictls" fi done else $as_nop LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS fi else if test X"$want_tcp2" != Xdefault; then as_fn_error $? "--with-ngtcp2 was specified but could not find ngtcp2_crypto_quictls pkg-config file." "$LINENO" 5 fi fi fi if test "x$USE_NGTCP2" = "x1" -a "x$OPENSSL_ENABLED" = "x1" -a \ "x$OPENSSL_IS_BORINGSSL" != "x1" -a "x$OPENSSL_QUIC_API2" = "x1"; then CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libngtcp2_crypto_ossl options with pkg-config" >&5 printf %s "checking for libngtcp2_crypto_ossl options with pkg-config... " >&6; } itexists=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists libngtcp2_crypto_ossl >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no"; then LIB_NGTCP2_CRYPTO_QUICTLS=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-l libngtcp2_crypto_ossl` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_NGTCP2_CRYPTO_QUICTLS" >&5 printf "%s\n" "$as_me: -l is $LIB_NGTCP2_CRYPTO_QUICTLS" >&6;} CPP_NGTCP2_CRYPTO_QUICTLS=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --cflags-only-I libngtcp2_crypto_ossl` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_NGTCP2_CRYPTO_QUICTLS" >&5 printf "%s\n" "$as_me: -I is $CPP_NGTCP2_CRYPTO_QUICTLS" >&6;} LD_NGTCP2_CRYPTO_QUICTLS=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-L libngtcp2_crypto_ossl` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_NGTCP2_CRYPTO_QUICTLS" >&5 printf "%s\n" "$as_me: -L is $LD_NGTCP2_CRYPTO_QUICTLS" >&6;} LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_QUICTLS" LDFLAGSPC="$LDFLAGSPC $LD_NGTCP2_CRYPTO_QUICTLS" CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_QUICTLS" LIBS="$LIB_NGTCP2_CRYPTO_QUICTLS $LIBS" if test "x$cross_compiling" != "xyes"; then DIR_NGTCP2_CRYPTO_QUICTLS=`echo $LD_NGTCP2_CRYPTO_QUICTLS | $SED -e 's/^-L//'` fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_ossl" >&5 printf %s "checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_ossl... " >&6; } if test ${ac_cv_lib_ngtcp2_crypto_ossl_ngtcp2_crypto_recv_client_initial_cb+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lngtcp2_crypto_ossl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char ngtcp2_crypto_recv_client_initial_cb (); int main(void) { return ngtcp2_crypto_recv_client_initial_cb (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_ngtcp2_crypto_ossl_ngtcp2_crypto_recv_client_initial_cb=yes else $as_nop ac_cv_lib_ngtcp2_crypto_ossl_ngtcp2_crypto_recv_client_initial_cb=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ngtcp2_crypto_ossl_ngtcp2_crypto_recv_client_initial_cb" >&5 printf "%s\n" "$ac_cv_lib_ngtcp2_crypto_ossl_ngtcp2_crypto_recv_client_initial_cb" >&6; } if test "x$ac_cv_lib_ngtcp2_crypto_ossl_ngtcp2_crypto_recv_client_initial_cb" = xyes then : for ac_header in ngtcp2/ngtcp2_crypto.h do : ac_fn_c_check_header_compile "$LINENO" "ngtcp2/ngtcp2_crypto.h" "ac_cv_header_ngtcp2_ngtcp2_crypto_h" "$ac_includes_default" if test "x$ac_cv_header_ngtcp2_ngtcp2_crypto_h" = xyes then : printf "%s\n" "#define HAVE_NGTCP2_NGTCP2_CRYPTO_H 1" >>confdefs.h USE_NGTCP2=1 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_QUICTLS" export CURL_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_NGTCP2_CRYPTO_QUICTLS to CURL_LIBRARY_PATH" >&5 printf "%s\n" "$as_me: Added $DIR_NGTCP2_CRYPTO_QUICTLS to CURL_LIBRARY_PATH" >&6;} LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libngtcp2_crypto_ossl" printf "%s\n" "#define OPENSSL_QUIC_API2 1" >>confdefs.h fi done else $as_nop LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS fi else if test X"$want_tcp2" != Xdefault; then as_fn_error $? "--with-ngtcp2 was specified but could not find ngtcp2_crypto_ossl pkg-config file." "$LINENO" 5 fi fi fi if test "x$USE_NGTCP2" = "x1" -a "x$OPENSSL_ENABLED" = "x1" -a "x$OPENSSL_IS_BORINGSSL" = "x1"; then CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libngtcp2_crypto_boringssl options with pkg-config" >&5 printf %s "checking for libngtcp2_crypto_boringssl options with pkg-config... " >&6; } itexists=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists libngtcp2_crypto_boringssl >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no"; then LIB_NGTCP2_CRYPTO_BORINGSSL=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-l libngtcp2_crypto_boringssl` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_NGTCP2_CRYPTO_BORINGSSL" >&5 printf "%s\n" "$as_me: -l is $LIB_NGTCP2_CRYPTO_BORINGSSL" >&6;} CPP_NGTCP2_CRYPTO_BORINGSSL=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --cflags-only-I libngtcp2_crypto_boringssl` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_NGTCP2_CRYPTO_BORINGSSL" >&5 printf "%s\n" "$as_me: -I is $CPP_NGTCP2_CRYPTO_BORINGSSL" >&6;} LD_NGTCP2_CRYPTO_BORINGSSL=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-L libngtcp2_crypto_boringssl` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_NGTCP2_CRYPTO_BORINGSSL" >&5 printf "%s\n" "$as_me: -L is $LD_NGTCP2_CRYPTO_BORINGSSL" >&6;} LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_BORINGSSL" LDFLAGSPC="$LDFLAGSPC $LD_NGTCP2_CRYPTO_BORINGSSL" CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_BORINGSSL" LIBS="$LIB_NGTCP2_CRYPTO_BORINGSSL $LIBS" if test "x$cross_compiling" != "xyes"; then DIR_NGTCP2_CRYPTO_BORINGSSL=`echo $LD_NGTCP2_CRYPTO_BORINGSSL | $SED -e 's/^-L//'` fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_boringssl" >&5 printf %s "checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_boringssl... " >&6; } if test ${ac_cv_lib_ngtcp2_crypto_boringssl_ngtcp2_crypto_recv_client_initial_cb+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lngtcp2_crypto_boringssl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char ngtcp2_crypto_recv_client_initial_cb (); int main(void) { return ngtcp2_crypto_recv_client_initial_cb (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_ngtcp2_crypto_boringssl_ngtcp2_crypto_recv_client_initial_cb=yes else $as_nop ac_cv_lib_ngtcp2_crypto_boringssl_ngtcp2_crypto_recv_client_initial_cb=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ngtcp2_crypto_boringssl_ngtcp2_crypto_recv_client_initial_cb" >&5 printf "%s\n" "$ac_cv_lib_ngtcp2_crypto_boringssl_ngtcp2_crypto_recv_client_initial_cb" >&6; } if test "x$ac_cv_lib_ngtcp2_crypto_boringssl_ngtcp2_crypto_recv_client_initial_cb" = xyes then : for ac_header in ngtcp2/ngtcp2_crypto.h do : ac_fn_c_check_header_compile "$LINENO" "ngtcp2/ngtcp2_crypto.h" "ac_cv_header_ngtcp2_ngtcp2_crypto_h" "$ac_includes_default" if test "x$ac_cv_header_ngtcp2_ngtcp2_crypto_h" = xyes then : printf "%s\n" "#define HAVE_NGTCP2_NGTCP2_CRYPTO_H 1" >>confdefs.h USE_NGTCP2=1 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_BORINGSSL" export CURL_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_NGTCP2_CRYPTO_BORINGSSL to CURL_LIBRARY_PATH" >&5 printf "%s\n" "$as_me: Added $DIR_NGTCP2_CRYPTO_BORINGSSL to CURL_LIBRARY_PATH" >&6;} LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libngtcp2_crypto_boringssl" fi done else $as_nop LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS fi else if test X"$want_tcp2" != Xdefault; then as_fn_error $? "--with-ngtcp2 was specified but could not find ngtcp2_crypto_boringssl pkg-config file." "$LINENO" 5 fi fi fi if test "x$USE_NGTCP2" = "x1" -a "x$GNUTLS_ENABLED" = "x1"; then CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libngtcp2_crypto_gnutls options with pkg-config" >&5 printf %s "checking for libngtcp2_crypto_gnutls options with pkg-config... " >&6; } itexists=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists libngtcp2_crypto_gnutls >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no"; then LIB_NGTCP2_CRYPTO_GNUTLS=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-l libngtcp2_crypto_gnutls` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_NGTCP2_CRYPTO_GNUTLS" >&5 printf "%s\n" "$as_me: -l is $LIB_NGTCP2_CRYPTO_GNUTLS" >&6;} CPP_NGTCP2_CRYPTO_GNUTLS=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --cflags-only-I libngtcp2_crypto_gnutls` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_NGTCP2_CRYPTO_GNUTLS" >&5 printf "%s\n" "$as_me: -I is $CPP_NGTCP2_CRYPTO_GNUTLS" >&6;} LD_NGTCP2_CRYPTO_GNUTLS=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-L libngtcp2_crypto_gnutls` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_NGTCP2_CRYPTO_GNUTLS" >&5 printf "%s\n" "$as_me: -L is $LD_NGTCP2_CRYPTO_GNUTLS" >&6;} LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_GNUTLS" LDFLAGSPC="$LDFLAGSPC $LD_NGTCP2_CRYPTO_GNUTLS" CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_GNUTLS" LIBS="$LIB_NGTCP2_CRYPTO_GNUTLS $LIBS" if test "x$cross_compiling" != "xyes"; then DIR_NGTCP2_CRYPTO_GNUTLS=`echo $LD_NGTCP2_CRYPTO_GNUTLS | $SED -e 's/^-L//'` fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_gnutls" >&5 printf %s "checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_gnutls... " >&6; } if test ${ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_recv_client_initial_cb+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lngtcp2_crypto_gnutls $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char ngtcp2_crypto_recv_client_initial_cb (); int main(void) { return ngtcp2_crypto_recv_client_initial_cb (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_recv_client_initial_cb=yes else $as_nop ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_recv_client_initial_cb=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_recv_client_initial_cb" >&5 printf "%s\n" "$ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_recv_client_initial_cb" >&6; } if test "x$ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_recv_client_initial_cb" = xyes then : for ac_header in ngtcp2/ngtcp2_crypto.h do : ac_fn_c_check_header_compile "$LINENO" "ngtcp2/ngtcp2_crypto.h" "ac_cv_header_ngtcp2_ngtcp2_crypto_h" "$ac_includes_default" if test "x$ac_cv_header_ngtcp2_ngtcp2_crypto_h" = xyes then : printf "%s\n" "#define HAVE_NGTCP2_NGTCP2_CRYPTO_H 1" >>confdefs.h USE_NGTCP2=1 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_GNUTLS" export CURL_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_NGTCP2_CRYPTO_GNUTLS to CURL_LIBRARY_PATH" >&5 printf "%s\n" "$as_me: Added $DIR_NGTCP2_CRYPTO_GNUTLS to CURL_LIBRARY_PATH" >&6;} LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libngtcp2_crypto_gnutls" fi done else $as_nop LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS fi else if test X"$want_tcp2" != Xdefault; then as_fn_error $? "--with-ngtcp2 was specified but could not find ngtcp2_crypto_gnutls pkg-config file." "$LINENO" 5 fi fi fi if test "x$USE_NGTCP2" = "x1" -a "x$WOLFSSL_ENABLED" = "x1"; then CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libngtcp2_crypto_wolfssl options with pkg-config" >&5 printf %s "checking for libngtcp2_crypto_wolfssl options with pkg-config... " >&6; } itexists=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists libngtcp2_crypto_wolfssl >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no"; then LIB_NGTCP2_CRYPTO_WOLFSSL=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-l libngtcp2_crypto_wolfssl` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_NGTCP2_CRYPTO_WOLFSSL" >&5 printf "%s\n" "$as_me: -l is $LIB_NGTCP2_CRYPTO_WOLFSSL" >&6;} CPP_NGTCP2_CRYPTO_WOLFSSL=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --cflags-only-I libngtcp2_crypto_wolfssl` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_NGTCP2_CRYPTO_WOLFSSL" >&5 printf "%s\n" "$as_me: -I is $CPP_NGTCP2_CRYPTO_WOLFSSL" >&6;} LD_NGTCP2_CRYPTO_WOLFSSL=` if test -n "$want_tcp2_path"; then PKG_CONFIG_LIBDIR="$want_tcp2_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-L libngtcp2_crypto_wolfssl` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_NGTCP2_CRYPTO_WOLFSSL" >&5 printf "%s\n" "$as_me: -L is $LD_NGTCP2_CRYPTO_WOLFSSL" >&6;} LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_WOLFSSL" LDFLAGSPC="$LDFLAGSPC $LD_NGTCP2_CRYPTO_WOLFSSL" CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_WOLFSSL" LIBS="$LIB_NGTCP2_CRYPTO_WOLFSSL $LIBS" if test "x$cross_compiling" != "xyes"; then DIR_NGTCP2_CRYPTO_WOLFSSL=`echo $LD_NGTCP2_CRYPTO_WOLFSSL | $SED -e 's/^-L//'` fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_wolfssl" >&5 printf %s "checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_wolfssl... " >&6; } if test ${ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lngtcp2_crypto_wolfssl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char ngtcp2_crypto_recv_client_initial_cb (); int main(void) { return ngtcp2_crypto_recv_client_initial_cb (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb=yes else $as_nop ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb" >&5 printf "%s\n" "$ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb" >&6; } if test "x$ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb" = xyes then : for ac_header in ngtcp2/ngtcp2_crypto.h do : ac_fn_c_check_header_compile "$LINENO" "ngtcp2/ngtcp2_crypto.h" "ac_cv_header_ngtcp2_ngtcp2_crypto_h" "$ac_includes_default" if test "x$ac_cv_header_ngtcp2_ngtcp2_crypto_h" = xyes then : printf "%s\n" "#define HAVE_NGTCP2_NGTCP2_CRYPTO_H 1" >>confdefs.h USE_NGTCP2=1 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_WOLFSSL" export CURL_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_NGTCP2_CRYPTO_WOLFSSL to CURL_LIBRARY_PATH" >&5 printf "%s\n" "$as_me: Added $DIR_NGTCP2_CRYPTO_WOLFSSL to CURL_LIBRARY_PATH" >&6;} LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libngtcp2_crypto_wolfssl" fi done else $as_nop LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS fi else if test X"$want_tcp2" != Xdefault; then as_fn_error $? "--with-ngtcp2 was specified but could not find ngtcp2_crypto_wolfssl pkg-config file." "$LINENO" 5 fi fi fi OPT_OPENSSL_QUIC="no" if test "x$disable_http" = "xyes" -o "x$OPENSSL_ENABLED" != "x1"; then # without HTTP or without openssl, no use OPT_OPENSSL_QUIC="no" fi # Check whether --with-openssl-quic was given. if test ${with_openssl_quic+y} then : withval=$with_openssl_quic; OPT_OPENSSL_QUIC=$withval fi case "$OPT_OPENSSL_QUIC" in no) want_openssl_quic="no" ;; yes) want_openssl_quic="yes" ;; esac curl_openssl_quic_msg="no (--with-openssl-quic)" if test "x$want_openssl_quic" = "xyes"; then if test "$USE_NGTCP2" = 1; then as_fn_error $? "--with-openssl-quic and --with-ngtcp2 are mutually exclusive" "$LINENO" 5 fi if test "$have_openssl_quic" != 1; then as_fn_error $? "--with-openssl-quic requires quic support and OpenSSL >= 3.3.0" "$LINENO" 5 fi printf "%s\n" "#define USE_OPENSSL_QUIC 1" >>confdefs.h USE_OPENSSL_QUIC=1 fi OPT_NGHTTP3="yes" if test "x$USE_NGTCP2" != "x1" -a "x$USE_OPENSSL_QUIC" != "x1"; then # without ngtcp2 or openssl quic, nghttp3 is of no use for us OPT_NGHTTP3="no" want_nghttp3="no" fi # Check whether --with-nghttp3 was given. if test ${with_nghttp3+y} then : withval=$with_nghttp3; OPT_NGHTTP3=$withval fi case "$OPT_NGHTTP3" in no) want_nghttp3="no" ;; yes) want_nghttp3="default" want_nghttp3_path="" ;; *) want_nghttp3="yes" want_nghttp3_path="$withval/lib/pkgconfig" ;; esac curl_http3_msg="no (--with-nghttp3)" if test X"$want_nghttp3" != Xno; then if test "x$USE_NGTCP2" != "x1" -a "x$USE_OPENSSL_QUIC" != "x1"; then # without ngtcp2 or openssl quic, nghttp3 is of no use for us as_fn_error $? "nghttp3 enabled without a QUIC library; enable ngtcp2 or OpenSSL-QUIC" "$LINENO" 5 fi CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libnghttp3 options with pkg-config" >&5 printf %s "checking for libnghttp3 options with pkg-config... " >&6; } itexists=` if test -n "$want_nghttp3_path"; then PKG_CONFIG_LIBDIR="$want_nghttp3_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists libnghttp3 >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no"; then LIB_NGHTTP3=` if test -n "$want_nghttp3_path"; then PKG_CONFIG_LIBDIR="$want_nghttp3_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-l libnghttp3` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_NGHTTP3" >&5 printf "%s\n" "$as_me: -l is $LIB_NGHTTP3" >&6;} CPP_NGHTTP3=` if test -n "$want_nghttp3_path"; then PKG_CONFIG_LIBDIR="$want_nghttp3_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --cflags-only-I libnghttp3` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_NGHTTP3" >&5 printf "%s\n" "$as_me: -I is $CPP_NGHTTP3" >&6;} LD_NGHTTP3=` if test -n "$want_nghttp3_path"; then PKG_CONFIG_LIBDIR="$want_nghttp3_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-L libnghttp3` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_NGHTTP3" >&5 printf "%s\n" "$as_me: -L is $LD_NGHTTP3" >&6;} LDFLAGS="$LDFLAGS $LD_NGHTTP3" LDFLAGSPC="$LDFLAGSPC $LD_NGHTTP3" CPPFLAGS="$CPPFLAGS $CPP_NGHTTP3" LIBS="$LIB_NGHTTP3 $LIBS" if test "x$cross_compiling" != "xyes"; then DIR_NGHTTP3=`echo $LD_NGHTTP3 | $SED -e 's/^-L//'` fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nghttp3_conn_client_new_versioned in -lnghttp3" >&5 printf %s "checking for nghttp3_conn_client_new_versioned in -lnghttp3... " >&6; } if test ${ac_cv_lib_nghttp3_nghttp3_conn_client_new_versioned+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lnghttp3 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char nghttp3_conn_client_new_versioned (); int main(void) { return nghttp3_conn_client_new_versioned (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_nghttp3_nghttp3_conn_client_new_versioned=yes else $as_nop ac_cv_lib_nghttp3_nghttp3_conn_client_new_versioned=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nghttp3_nghttp3_conn_client_new_versioned" >&5 printf "%s\n" "$ac_cv_lib_nghttp3_nghttp3_conn_client_new_versioned" >&6; } if test "x$ac_cv_lib_nghttp3_nghttp3_conn_client_new_versioned" = xyes then : for ac_header in nghttp3/nghttp3.h do : ac_fn_c_check_header_compile "$LINENO" "nghttp3/nghttp3.h" "ac_cv_header_nghttp3_nghttp3_h" "$ac_includes_default" if test "x$ac_cv_header_nghttp3_nghttp3_h" = xyes then : printf "%s\n" "#define HAVE_NGHTTP3_NGHTTP3_H 1" >>confdefs.h printf "%s\n" "#define USE_NGHTTP3 1" >>confdefs.h USE_NGHTTP3=1 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGHTTP3" export CURL_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_NGHTTP3 to CURL_LIBRARY_PATH" >&5 printf "%s\n" "$as_me: Added $DIR_NGHTTP3 to CURL_LIBRARY_PATH" >&6;} LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libnghttp3" fi done else $as_nop LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS fi else if test X"$want_nghttp3" != Xdefault; then as_fn_error $? "--with-nghttp3 was specified but could not find nghttp3 pkg-config file." "$LINENO" 5 fi fi fi if test "x$USE_NGTCP2" = "x1" -a "x$USE_NGHTTP3" = "x1"; then USE_NGTCP2_H3=1 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: HTTP3 support is experimental" >&5 printf "%s\n" "$as_me: HTTP3 support is experimental" >&6;} curl_h3_msg="enabled (ngtcp2 + nghttp3)" fi if test "x$USE_OPENSSL_QUIC" = "x1" -a "x$USE_NGHTTP3" = "x1"; then experimental="$experimental HTTP3" USE_OPENSSL_H3=1 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: HTTP3 support is experimental" >&5 printf "%s\n" "$as_me: HTTP3 support is experimental" >&6;} curl_h3_msg="enabled (openssl + nghttp3)" fi OPT_QUICHE="no" if test "x$disable_http" = "xyes" -o "x$USE_NGTCP" = "x1"; then # without HTTP or with ngtcp2, quiche is no use OPT_QUICHE="no" fi # Check whether --with-quiche was given. if test ${with_quiche+y} then : withval=$with_quiche; OPT_QUICHE=$withval fi case "$OPT_QUICHE" in no) want_quiche="no" ;; yes) want_quiche="default" want_quiche_path="" ;; *) want_quiche="yes" want_quiche_path="$withval" ;; esac if test X"$want_quiche" != Xno; then if test "$QUIC_ENABLED" != "yes"; then as_fn_error $? "the detected TLS library does not support QUIC, making --with-quiche a no-no" "$LINENO" 5 fi if test "$NGHTTP3_ENABLED" = 1; then as_fn_error $? "--with-quiche and --with-ngtcp2 are mutually exclusive" "$LINENO" 5 fi CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for quiche options with pkg-config" >&5 printf %s "checking for quiche options with pkg-config... " >&6; } itexists=` if test -n "$want_quiche_path"; then PKG_CONFIG_LIBDIR="$want_quiche_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists quiche >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no"; then LIB_QUICHE=` if test -n "$want_quiche_path"; then PKG_CONFIG_LIBDIR="$want_quiche_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-l quiche` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_QUICHE" >&5 printf "%s\n" "$as_me: -l is $LIB_QUICHE" >&6;} CPP_QUICHE=` if test -n "$want_quiche_path"; then PKG_CONFIG_LIBDIR="$want_quiche_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --cflags-only-I quiche` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_QUICHE" >&5 printf "%s\n" "$as_me: -I is $CPP_QUICHE" >&6;} LD_QUICHE=` if test -n "$want_quiche_path"; then PKG_CONFIG_LIBDIR="$want_quiche_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-L quiche` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_QUICHE" >&5 printf "%s\n" "$as_me: -L is $LD_QUICHE" >&6;} LDFLAGS="$LDFLAGS $LD_QUICHE" LDFLAGSPC="$LDFLAGSPC $LD_QUICHE" CPPFLAGS="$CPPFLAGS $CPP_QUICHE" LIBS="$LIB_QUICHE $LIBS" if test "x$cross_compiling" != "xyes"; then DIR_QUICHE=`echo $LD_QUICHE | $SED -e 's/^-L//'` fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for quiche_conn_send_ack_eliciting in -lquiche" >&5 printf %s "checking for quiche_conn_send_ack_eliciting in -lquiche... " >&6; } if test ${ac_cv_lib_quiche_quiche_conn_send_ack_eliciting+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lquiche $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char quiche_conn_send_ack_eliciting (); int main(void) { return quiche_conn_send_ack_eliciting (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_quiche_quiche_conn_send_ack_eliciting=yes else $as_nop ac_cv_lib_quiche_quiche_conn_send_ack_eliciting=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_quiche_quiche_conn_send_ack_eliciting" >&5 printf "%s\n" "$ac_cv_lib_quiche_quiche_conn_send_ack_eliciting" >&6; } if test "x$ac_cv_lib_quiche_quiche_conn_send_ack_eliciting" = xyes then : for ac_header in quiche.h do : ac_fn_c_check_header_compile "$LINENO" "quiche.h" "ac_cv_header_quiche_h" " $ac_includes_default #include " if test "x$ac_cv_header_quiche_h" = xyes then : printf "%s\n" "#define HAVE_QUICHE_H 1" >>confdefs.h experimental="$experimental HTTP3" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: HTTP3 support is experimental" >&5 printf "%s\n" "$as_me: HTTP3 support is experimental" >&6;} curl_h3_msg="enabled (quiche)" printf "%s\n" "#define USE_QUICHE 1" >>confdefs.h USE_QUICHE=1 ac_fn_c_check_func "$LINENO" "quiche_conn_set_qlog_fd" "ac_cv_func_quiche_conn_set_qlog_fd" if test "x$ac_cv_func_quiche_conn_set_qlog_fd" = xyes then : printf "%s\n" "#define HAVE_QUICHE_CONN_SET_QLOG_FD 1" >>confdefs.h fi CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_QUICHE" export CURL_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_QUICHE to CURL_LIBRARY_PATH" >&5 printf "%s\n" "$as_me: Added $DIR_QUICHE to CURL_LIBRARY_PATH" >&6;} LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE quiche" fi done else $as_nop as_fn_error $? "couldn't use quiche" "$LINENO" 5 fi else if test X"$want_quiche" != Xdefault; then as_fn_error $? "--with-quiche was specified but could not find quiche pkg-config file." "$LINENO" 5 fi fi fi OPT_MSH3="no" if test "x$disable_http" = "xyes" -o "x$USE_NGTCP" = "x1"; then # without HTTP or with ngtcp2, msh3 is no use OPT_MSH3="no" fi # Check whether --with-msh3 was given. if test ${with_msh3+y} then : withval=$with_msh3; OPT_MSH3=$withval fi case "$OPT_MSH3" in no) want_msh3="no" ;; yes) want_msh3="default" want_msh3_path="" ;; *) want_msh3="yes" want_msh3_path="$withval" ;; esac if test X"$want_msh3" != Xno; then if test "$curl_cv_native_windows" != "yes"; then if test "$QUIC_ENABLED" != "yes"; then as_fn_error $? "the detected TLS library does not support QUIC, making --with-msh3 a no-no" "$LINENO" 5 fi if test "$OPENSSL_ENABLED" != "1"; then as_fn_error $? "msh3/msquic requires OpenSSL" "$LINENO" 5 fi fi if test "$NGHTTP3_ENABLED" = 1; then as_fn_error $? "--with-msh3 and --with-ngtcp2 are mutually exclusive" "$LINENO" 5 fi if test "$USE_QUICHE" = 1; then as_fn_error $? "--with-msh3 and --with-quiche are mutually exclusive" "$LINENO" 5 fi CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" if test -n "$want_msh3_path"; then LD_MSH3="-L$want_msh3_path/lib" CPP_MSH3="-I$want_msh3_path/include" DIR_MSH3="$want_msh3_path/lib" LDFLAGS="$LDFLAGS $LD_MSH3" LDFLAGSPC="$LDFLAGSPC $LD_MSH3" CPPFLAGS="$CPPFLAGS $CPP_MSH3" fi LIBS="-lmsh3 $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MsH3ApiOpen in -lmsh3" >&5 printf %s "checking for MsH3ApiOpen in -lmsh3... " >&6; } if test ${ac_cv_lib_msh3_MsH3ApiOpen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lmsh3 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char MsH3ApiOpen (); int main(void) { return MsH3ApiOpen (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_msh3_MsH3ApiOpen=yes else $as_nop ac_cv_lib_msh3_MsH3ApiOpen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_msh3_MsH3ApiOpen" >&5 printf "%s\n" "$ac_cv_lib_msh3_MsH3ApiOpen" >&6; } if test "x$ac_cv_lib_msh3_MsH3ApiOpen" = xyes then : for ac_header in msh3.h do : ac_fn_c_check_header_compile "$LINENO" "msh3.h" "ac_cv_header_msh3_h" "$ac_includes_default" if test "x$ac_cv_header_msh3_h" = xyes then : printf "%s\n" "#define HAVE_MSH3_H 1" >>confdefs.h curl_h3_msg="enabled (msh3)" printf "%s\n" "#define USE_MSH3 1" >>confdefs.h USE_MSH3=1 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_MSH3" export CURL_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_MSH3 to CURL_LIBRARY_PATH" >&5 printf "%s\n" "$as_me: Added $DIR_MSH3 to CURL_LIBRARY_PATH" >&6;} if false; then LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libmsh3" fi experimental="$experimental HTTP3" fi done else $as_nop LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS fi fi OPT_LIBUV=no # Check whether --with-libuv was given. if test ${with_libuv+y} then : withval=$with_libuv; OPT_LIBUV=$withval fi case "$OPT_LIBUV" in no) want_libuv="no" ;; yes) want_libuv="default" want_libuv_path="" ;; *) want_libuv="yes" want_libuv_path="$withval" ;; esac if test X"$want_libuv" != Xno; then if test x$want_debug != xyes; then as_fn_error $? "Using libuv without debug support enabled is useless" "$LINENO" 5 fi CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libuv options with pkg-config" >&5 printf %s "checking for libuv options with pkg-config... " >&6; } itexists=` if test -n "$want_libuv_path"; then PKG_CONFIG_LIBDIR="$want_libuv_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists libuv >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no"; then LIB_LIBUV=` if test -n "$want_libuv_path"; then PKG_CONFIG_LIBDIR="$want_libuv_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-l libuv` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_LIBUV" >&5 printf "%s\n" "$as_me: -l is $LIB_LIBUV" >&6;} CPP_LIBUV=` if test -n "$want_libuv_path"; then PKG_CONFIG_LIBDIR="$want_libuv_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --cflags-only-I libuv` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_LIBUV" >&5 printf "%s\n" "$as_me: -I is $CPP_LIBUV" >&6;} LD_LIBUV=` if test -n "$want_libuv_path"; then PKG_CONFIG_LIBDIR="$want_libuv_path" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-L libuv` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_LIBUV" >&5 printf "%s\n" "$as_me: -L is $LD_LIBUV" >&6;} LDFLAGS="$LDFLAGS $LD_LIBUV" LDFLAGSPC="$LDFLAGSPC $LD_LIBUV" CPPFLAGS="$CPPFLAGS $CPP_LIBUV" LIBS="$LIB_LIBUV $LIBS" if test "x$cross_compiling" != "xyes"; then DIR_LIBUV=`echo $LD_LIBUV | $SED -e 's/^-L//'` fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uv_default_loop in -luv" >&5 printf %s "checking for uv_default_loop in -luv... " >&6; } if test ${ac_cv_lib_uv_uv_default_loop+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-luv $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char uv_default_loop (); int main(void) { return uv_default_loop (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_uv_uv_default_loop=yes else $as_nop ac_cv_lib_uv_uv_default_loop=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uv_uv_default_loop" >&5 printf "%s\n" "$ac_cv_lib_uv_uv_default_loop" >&6; } if test "x$ac_cv_lib_uv_uv_default_loop" = xyes then : for ac_header in uv.h do : ac_fn_c_check_header_compile "$LINENO" "uv.h" "ac_cv_header_uv_h" "$ac_includes_default" if test "x$ac_cv_header_uv_h" = xyes then : printf "%s\n" "#define HAVE_UV_H 1" >>confdefs.h printf "%s\n" "#define USE_LIBUV 1" >>confdefs.h USE_LIBUV=1 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_LIBUV" export CURL_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_LIBUV to CURL_LIBRARY_PATH" >&5 printf "%s\n" "$as_me: Added $DIR_LIBUV to CURL_LIBRARY_PATH" >&6;} LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libuv" fi done else $as_nop LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS fi else if test X"$want_libuv" != Xdefault; then as_fn_error $? "--with-libuv was specified but could not find libuv pkg-config file." "$LINENO" 5 fi fi fi OPT_ZSH_FPATH=default # Check whether --with-zsh-functions-dir was given. if test ${with_zsh_functions_dir+y} then : withval=$with_zsh_functions_dir; OPT_ZSH_FPATH=$withval fi case "$OPT_ZSH_FPATH" in default|no) ;; yes) ZSH_FUNCTIONS_DIR="$datarootdir/zsh/site-functions" ;; *) ZSH_FUNCTIONS_DIR="$withval" ;; esac if test x"$ZSH_FUNCTIONS_DIR" != x; then USE_ZSH_COMPLETION_TRUE= USE_ZSH_COMPLETION_FALSE='#' else USE_ZSH_COMPLETION_TRUE='#' USE_ZSH_COMPLETION_FALSE= fi OPT_FISH_FPATH=default # Check whether --with-fish-functions-dir was given. if test ${with_fish_functions_dir+y} then : withval=$with_fish_functions_dir; OPT_FISH_FPATH=$withval fi case "$OPT_FISH_FPATH" in default|no) ;; yes) if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fish options with pkg-config" >&5 printf %s "checking for fish options with pkg-config... " >&6; } itexists=` if test -n ""; then PKG_CONFIG_LIBDIR="" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists fish >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no"; then FISH_FUNCTIONS_DIR=`$PKGCONFIG --variable completionsdir fish` else FISH_FUNCTIONS_DIR="$datarootdir/fish/vendor_completions.d" fi ;; *) FISH_FUNCTIONS_DIR="$withval" ;; esac if test x"$FISH_FUNCTIONS_DIR" != x; then USE_FISH_COMPLETION_TRUE= USE_FISH_COMPLETION_FALSE='#' else USE_FISH_COMPLETION_TRUE='#' USE_FISH_COMPLETION_FALSE= fi ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_sys_types_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_sys_time_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_sys_select_h" = xyes then : printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_sys_socket_h" = xyes then : printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_sys_ioctl_h" = xyes then : printf "%s\n" "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_unistd_h" = xyes then : printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "arpa/inet.h" "ac_cv_header_arpa_inet_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_arpa_inet_h" = xyes then : printf "%s\n" "#define HAVE_ARPA_INET_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "net/if.h" "ac_cv_header_net_if_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_net_if_h" = xyes then : printf "%s\n" "#define HAVE_NET_IF_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "netinet/in.h" "ac_cv_header_netinet_in_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_netinet_in_h" = xyes then : printf "%s\n" "#define HAVE_NETINET_IN_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "netinet/in6.h" "ac_cv_header_netinet_in6_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_netinet_in6_h" = xyes then : printf "%s\n" "#define HAVE_NETINET_IN6_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/un.h" "ac_cv_header_sys_un_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_sys_un_h" = xyes then : printf "%s\n" "#define HAVE_SYS_UN_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "linux/tcp.h" "ac_cv_header_linux_tcp_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_linux_tcp_h" = xyes then : printf "%s\n" "#define HAVE_LINUX_TCP_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "netinet/tcp.h" "ac_cv_header_netinet_tcp_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_netinet_tcp_h" = xyes then : printf "%s\n" "#define HAVE_NETINET_TCP_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "netinet/udp.h" "ac_cv_header_netinet_udp_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_netinet_udp_h" = xyes then : printf "%s\n" "#define HAVE_NETINET_UDP_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "netdb.h" "ac_cv_header_netdb_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_netdb_h" = xyes then : printf "%s\n" "#define HAVE_NETDB_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/sockio.h" "ac_cv_header_sys_sockio_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_sys_sockio_h" = xyes then : printf "%s\n" "#define HAVE_SYS_SOCKIO_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/stat.h" "ac_cv_header_sys_stat_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_sys_stat_h" = xyes then : printf "%s\n" "#define HAVE_SYS_STAT_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_sys_param_h" = xyes then : printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "termios.h" "ac_cv_header_termios_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_termios_h" = xyes then : printf "%s\n" "#define HAVE_TERMIOS_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "termio.h" "ac_cv_header_termio_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_termio_h" = xyes then : printf "%s\n" "#define HAVE_TERMIO_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_fcntl_h" = xyes then : printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "io.h" "ac_cv_header_io_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_io_h" = xyes then : printf "%s\n" "#define HAVE_IO_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "pwd.h" "ac_cv_header_pwd_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_pwd_h" = xyes then : printf "%s\n" "#define HAVE_PWD_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "utime.h" "ac_cv_header_utime_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_utime_h" = xyes then : printf "%s\n" "#define HAVE_UTIME_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/utime.h" "ac_cv_header_sys_utime_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_sys_utime_h" = xyes then : printf "%s\n" "#define HAVE_SYS_UTIME_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/poll.h" "ac_cv_header_sys_poll_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_sys_poll_h" = xyes then : printf "%s\n" "#define HAVE_SYS_POLL_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "poll.h" "ac_cv_header_poll_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_poll_h" = xyes then : printf "%s\n" "#define HAVE_POLL_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_sys_resource_h" = xyes then : printf "%s\n" "#define HAVE_SYS_RESOURCE_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "libgen.h" "ac_cv_header_libgen_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_libgen_h" = xyes then : printf "%s\n" "#define HAVE_LIBGEN_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_locale_h" = xyes then : printf "%s\n" "#define HAVE_LOCALE_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "stdbool.h" "ac_cv_header_stdbool_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_stdbool_h" = xyes then : printf "%s\n" "#define HAVE_STDBOOL_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "stdint.h" "ac_cv_header_stdint_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_stdint_h" = xyes then : printf "%s\n" "#define HAVE_STDINT_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/filio.h" "ac_cv_header_sys_filio_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_sys_filio_h" = xyes then : printf "%s\n" "#define HAVE_SYS_FILIO_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/eventfd.h" "ac_cv_header_sys_eventfd_h" " #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif " if test "x$ac_cv_header_sys_eventfd_h" = xyes then : printf "%s\n" "#define HAVE_SYS_EVENTFD_H 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 printf %s "checking for an ANSI C-conforming const... " >&6; } if test ${ac_cv_c_const+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* IBM XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_const=yes else $as_nop ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 printf "%s\n" "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then printf "%s\n" "#define const /**/" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes then : else $as_nop printf "%s\n" "#define size_t unsigned int" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default" if test "x$ac_cv_header_sys_types_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" if test "x$ac_cv_header_sys_time_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default" if test "x$ac_cv_header_sys_socket_h" = xyes then : printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct timeval" >&5 printf %s "checking for struct timeval... " >&6; } if test ${curl_cv_struct_timeval+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #undef inline #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #include #ifdef HAVE_SYS_SOCKET_H #include #endif int main(void) { struct timeval ts; ts.tv_sec = 0; ts.tv_usec = 0; (void)ts; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : curl_cv_struct_timeval="yes" else $as_nop curl_cv_struct_timeval="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_struct_timeval" >&5 printf "%s\n" "$curl_cv_struct_timeval" >&6; } case "$curl_cv_struct_timeval" in yes) printf "%s\n" "#define HAVE_STRUCT_TIMEVAL 1" >>confdefs.h ;; esac if test "x$cross_compiling" != xyes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking run-time libs availability" >&5 printf %s "checking run-time libs availability... " >&6; } if test "$curl_cv_apple" = 'yes'; then if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: fine" >&5 printf "%s\n" "fine" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 printf "%s\n" "failed" >&6; } as_fn_error $? "one or more libs available at link-time are not available run-time. Libs used at link-time: $LIBS" "$LINENO" 5 fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else oldcc=$CC old=$LD_LIBRARY_PATH CC="sh ./run-compiler" LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old export LD_LIBRARY_PATH if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: fine" >&5 printf "%s\n" "fine" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 printf "%s\n" "failed" >&6; } as_fn_error $? "one or more libs available at link-time are not available run-time. Libs used at link-time: $LIBS" "$LINENO" 5 fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi LD_LIBRARY_PATH=$old # restore CC=$oldcc fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 printf %s "checking size of size_t... " >&6; } r=0 for typesize in 8 4 2 16 1; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { switch(0) { case 0: case (sizeof(size_t) == $typesize):; } return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : r=$typesize else $as_nop r=0 fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test $r -gt 0; then break; fi done if test $r -eq 0; then as_fn_error $? "Failed to find size of size_t" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5 printf "%s\n" "$r" >&6; } tname=`echo "ac_cv_sizeof_size_t" | tr A-Z a-z | tr " " "_"` eval "$tname=$r" printf "%s\n" "#define SIZEOF_SIZE_T $r" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 printf %s "checking size of long... " >&6; } r=0 for typesize in 8 4 2 16 1; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { switch(0) { case 0: case (sizeof(long) == $typesize):; } return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : r=$typesize else $as_nop r=0 fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test $r -gt 0; then break; fi done if test $r -eq 0; then as_fn_error $? "Failed to find size of long" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5 printf "%s\n" "$r" >&6; } tname=`echo "ac_cv_sizeof_long" | tr A-Z a-z | tr " " "_"` eval "$tname=$r" printf "%s\n" "#define SIZEOF_LONG $r" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 printf %s "checking size of int... " >&6; } r=0 for typesize in 8 4 2 16 1; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { switch(0) { case 0: case (sizeof(int) == $typesize):; } return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : r=$typesize else $as_nop r=0 fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test $r -gt 0; then break; fi done if test $r -eq 0; then as_fn_error $? "Failed to find size of int" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5 printf "%s\n" "$r" >&6; } tname=`echo "ac_cv_sizeof_int" | tr A-Z a-z | tr " " "_"` eval "$tname=$r" printf "%s\n" "#define SIZEOF_INT $r" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5 printf %s "checking size of time_t... " >&6; } r=0 for typesize in 8 4 2 16 1; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { switch(0) { case 0: case (sizeof(time_t) == $typesize):; } return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : r=$typesize else $as_nop r=0 fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test $r -gt 0; then break; fi done if test $r -eq 0; then as_fn_error $? "Failed to find size of time_t" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5 printf "%s\n" "$r" >&6; } tname=`echo "ac_cv_sizeof_time_t" | tr A-Z a-z | tr " " "_"` eval "$tname=$r" printf "%s\n" "#define SIZEOF_TIME_T $r" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5 printf %s "checking size of off_t... " >&6; } r=0 for typesize in 8 4 2 16 1; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { switch(0) { case 0: case (sizeof(off_t) == $typesize):; } return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : r=$typesize else $as_nop r=0 fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test $r -gt 0; then break; fi done if test $r -eq 0; then as_fn_error $? "Failed to find size of off_t" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5 printf "%s\n" "$r" >&6; } tname=`echo "ac_cv_sizeof_off_t" | tr A-Z a-z | tr " " "_"` eval "$tname=$r" printf "%s\n" "#define SIZEOF_OFF_T $r" >>confdefs.h o=$CPPFLAGS CPPFLAGS="-I$srcdir/include $CPPFLAGS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of curl_off_t" >&5 printf %s "checking size of curl_off_t... " >&6; } r=0 for typesize in 8 4 2 16 1; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main(void) { switch(0) { case 0: case (sizeof(curl_off_t) == $typesize):; } return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : r=$typesize else $as_nop r=0 fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test $r -gt 0; then break; fi done if test $r -eq 0; then as_fn_error $? "Failed to find size of curl_off_t" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5 printf "%s\n" "$r" >&6; } tname=`echo "ac_cv_sizeof_curl_off_t" | tr A-Z a-z | tr " " "_"` eval "$tname=$r" printf "%s\n" "#define SIZEOF_CURL_OFF_T $r" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of curl_socket_t" >&5 printf %s "checking size of curl_socket_t... " >&6; } r=0 for typesize in 8 4 2 16 1; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main(void) { switch(0) { case 0: case (sizeof(curl_socket_t) == $typesize):; } return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : r=$typesize else $as_nop r=0 fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test $r -gt 0; then break; fi done if test $r -eq 0; then as_fn_error $? "Failed to find size of curl_socket_t" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5 printf "%s\n" "$r" >&6; } tname=`echo "ac_cv_sizeof_curl_socket_t" | tr A-Z a-z | tr " " "_"` eval "$tname=$r" printf "%s\n" "#define SIZEOF_CURL_SOCKET_T $r" >>confdefs.h CPPFLAGS=$o ac_fn_c_check_type "$LINENO" "long long" "ac_cv_type_long_long" "$ac_includes_default" if test "x$ac_cv_type_long_long" = xyes then : printf "%s\n" "#define HAVE_LONGLONG 1" >>confdefs.h longlong="yes" fi if test ${ac_cv_sizeof_curl_off_t} -lt 8; then as_fn_error $? "64 bit curl_off_t is required" "$LINENO" 5 fi # check for ssize_t ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" if test "x$ac_cv_type_ssize_t" = xyes then : else $as_nop printf "%s\n" "#define ssize_t int" >>confdefs.h fi # check for bool type ac_fn_c_check_type "$LINENO" "bool" "ac_cv_type_bool" " #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_STDBOOL_H #include #endif " if test "x$ac_cv_type_bool" = xyes then : printf "%s\n" "#define HAVE_BOOL_T 1" >>confdefs.h fi # check for sa_family_t ac_fn_c_check_type "$LINENO" "sa_family_t" "ac_cv_type_sa_family_t" " #ifdef HAVE_SYS_SOCKET_H #include #endif " if test "x$ac_cv_type_sa_family_t" = xyes then : printf "%s\n" "#define HAVE_SA_FAMILY_T 1" >>confdefs.h else $as_nop # The Windows name? ac_fn_c_check_type "$LINENO" "ADDRESS_FAMILY" "ac_cv_type_ADDRESS_FAMILY" " #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif " if test "x$ac_cv_type_ADDRESS_FAMILY" = xyes then : printf "%s\n" "#define HAVE_ADDRESS_FAMILY 1" >>confdefs.h fi fi # check for suseconds_t ac_fn_c_check_type "$LINENO" "suseconds_t" "ac_cv_type_suseconds_t" " #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif " if test "x$ac_cv_type_suseconds_t" = xyes then : printf "%s\n" "#define HAVE_SUSECONDS_T 1" >>confdefs.h fi case $host_os in amigaos*|msdos*) printf "%s\n" "#define HAVE_TIME_T_UNSIGNED 1" >>confdefs.h ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if time_t is unsigned" >&5 printf %s "checking if time_t is unsigned... " >&6; } if test "$curl_cv_apple" = 'yes'; then if test "$cross_compiling" = yes then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { time_t t = -1; return t < 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_TIME_T_UNSIGNED 1" >>confdefs.h else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else oldcc=$CC old=$LD_LIBRARY_PATH CC="sh ./run-compiler" LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old export LD_LIBRARY_PATH if test "$cross_compiling" = yes then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { time_t t = -1; return t < 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_TIME_T_UNSIGNED 1" >>confdefs.h else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi LD_LIBRARY_PATH=$old # restore CC=$oldcc fi ;; esac ac_fn_c_check_type "$LINENO" "struct sockaddr_storage" "ac_cv_type_struct_sockaddr_storage" " #undef inline #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #else #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_ARPA_INET_H #include #endif #endif " if test "x$ac_cv_type_struct_sockaddr_storage" = xyes then : printf "%s\n" "#define HAVE_STRUCT_SOCKADDR_STORAGE 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" if test "x$ac_cv_header_sys_select_h" = xyes then : printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default" if test "x$ac_cv_header_sys_socket_h" = xyes then : printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for select" >&5 printf %s "checking for select... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #undef inline #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #include #ifndef _WIN32 #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif $curl_includes_bsdsocket #endif int main(void) { select(0, 0, 0, 0, 0); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } curl_cv_select="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_select="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$curl_cv_select" = "yes"; then printf "%s\n" "#define HAVE_SELECT 1" >>confdefs.h curl_cv_func_select="yes" fi ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default" if test "x$ac_cv_header_sys_types_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default" if test "x$ac_cv_header_sys_socket_h" = xyes then : printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for recv" >&5 printf %s "checking for recv... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #undef inline #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #else $curl_includes_bsdsocket #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #endif int main(void) { recv(0, 0, 0, 0); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } curl_cv_recv="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_recv="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$curl_cv_recv" = "yes"; then printf "%s\n" "#define HAVE_RECV 1" >>confdefs.h curl_cv_func_recv="yes" else as_fn_error $? "Unable to link function recv" "$LINENO" 5 fi ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default" if test "x$ac_cv_header_sys_types_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default" if test "x$ac_cv_header_sys_socket_h" = xyes then : printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for send" >&5 printf %s "checking for send... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #undef inline #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #else $curl_includes_bsdsocket #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #endif int main(void) { char s[] = ""; send(0, (void *)s, 0, 0); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } curl_cv_send="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_send="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$curl_cv_send" = "yes"; then printf "%s\n" "#define HAVE_SEND 1" >>confdefs.h curl_cv_func_send="yes" else as_fn_error $? "Unable to link function send" "$LINENO" 5 fi ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default" if test "x$ac_cv_header_sys_types_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default" if test "x$ac_cv_header_sys_socket_h" = xyes then : printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MSG_NOSIGNAL" >&5 printf %s "checking for MSG_NOSIGNAL... " >&6; } if test ${curl_cv_msg_nosignal+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #undef inline #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #else #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #endif int main(void) { int flag = MSG_NOSIGNAL; (void)flag; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : curl_cv_msg_nosignal="yes" else $as_nop curl_cv_msg_nosignal="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_msg_nosignal" >&5 printf "%s\n" "$curl_cv_msg_nosignal" >&6; } case "$curl_cv_msg_nosignal" in yes) printf "%s\n" "#define HAVE_MSG_NOSIGNAL 1" >>confdefs.h ;; esac curl_includes_unistd="\ /* includes start */ #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_UNISTD_H # include #endif /* includes end */" ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_unistd " if test "x$ac_cv_header_sys_types_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$curl_includes_unistd " if test "x$ac_cv_header_unistd_h" = xyes then : printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h fi # tst_links_alarm="unknown" tst_proto_alarm="unknown" tst_compi_alarm="unknown" tst_allow_alarm="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if alarm can be linked" >&5 printf %s "checking if alarm can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define alarm innocuous_alarm #ifdef __STDC__ # include #else # include #endif #undef alarm #ifdef __cplusplus extern "C" #endif char alarm (); #if defined __stub_alarm || defined __stub___alarm #error force compilation error #endif int main(void) { return alarm (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_alarm="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_alarm="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_alarm" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if alarm is prototyped" >&5 printf %s "checking if alarm is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_unistd _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "alarm" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_alarm="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_alarm="no" fi rm -rf conftest* fi # if test "$tst_proto_alarm" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if alarm is compilable" >&5 printf %s "checking if alarm is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_unistd int main(void) { if(0 != alarm(0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_alarm="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_alarm="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_alarm" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if alarm usage allowed" >&5 printf %s "checking if alarm usage allowed... " >&6; } if test "x$curl_disallow_alarm" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_alarm="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_alarm="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if alarm might be used" >&5 printf %s "checking if alarm might be used... " >&6; } if test "$tst_links_alarm" = "yes" && test "$tst_proto_alarm" = "yes" && test "$tst_compi_alarm" = "yes" && test "$tst_allow_alarm" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_ALARM 1" >>confdefs.h curl_cv_func_alarm="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_alarm="no" fi curl_includes_string="\ /* includes start */ #ifdef HAVE_SYS_TYPES_H # include #endif #include #ifdef HAVE_STRINGS_H # include #endif /* includes end */" ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_string " if test "x$ac_cv_header_sys_types_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "strings.h" "ac_cv_header_strings_h" "$curl_includes_string " if test "x$ac_cv_header_strings_h" = xyes then : printf "%s\n" "#define HAVE_STRINGS_H 1" >>confdefs.h fi curl_includes_libgen="\ /* includes start */ #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_LIBGEN_H # include #endif /* includes end */" ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_libgen " if test "x$ac_cv_header_sys_types_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "libgen.h" "ac_cv_header_libgen_h" "$curl_includes_libgen " if test "x$ac_cv_header_libgen_h" = xyes then : printf "%s\n" "#define HAVE_LIBGEN_H 1" >>confdefs.h fi # tst_links_basename="unknown" tst_proto_basename="unknown" tst_compi_basename="unknown" tst_allow_basename="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if basename can be linked" >&5 printf %s "checking if basename can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define basename innocuous_basename #ifdef __STDC__ # include #else # include #endif #undef basename #ifdef __cplusplus extern "C" #endif char basename (); #if defined __stub_basename || defined __stub___basename #error force compilation error #endif int main(void) { return basename (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_basename="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_basename="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_basename" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if basename is prototyped" >&5 printf %s "checking if basename is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_string $curl_includes_libgen $curl_includes_unistd _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "basename" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_basename="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_basename="no" fi rm -rf conftest* fi # if test "$tst_proto_basename" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if basename is compilable" >&5 printf %s "checking if basename is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_string $curl_includes_libgen $curl_includes_unistd int main(void) { if(0 != basename(0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_basename="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_basename="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_basename" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if basename usage allowed" >&5 printf %s "checking if basename usage allowed... " >&6; } if test "x$curl_disallow_basename" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_basename="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_basename="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if basename might be used" >&5 printf %s "checking if basename might be used... " >&6; } if test "$tst_links_basename" = "yes" && test "$tst_proto_basename" = "yes" && test "$tst_compi_basename" = "yes" && test "$tst_allow_basename" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_BASENAME 1" >>confdefs.h curl_cv_func_basename="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_basename="no" fi # tst_links_closesocket="unknown" tst_proto_closesocket="unknown" tst_compi_closesocket="unknown" tst_allow_closesocket="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if closesocket can be linked" >&5 printf %s "checking if closesocket can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_winsock2 int main(void) { if(0 != closesocket(0)) return 1; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_closesocket="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_closesocket="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_closesocket" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if closesocket is prototyped" >&5 printf %s "checking if closesocket is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_winsock2 _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "closesocket" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_closesocket="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_closesocket="no" fi rm -rf conftest* fi # if test "$tst_proto_closesocket" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if closesocket is compilable" >&5 printf %s "checking if closesocket is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_winsock2 int main(void) { if(0 != closesocket(0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_closesocket="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_closesocket="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_closesocket" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if closesocket usage allowed" >&5 printf %s "checking if closesocket usage allowed... " >&6; } if test "x$curl_disallow_closesocket" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_closesocket="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_closesocket="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if closesocket might be used" >&5 printf %s "checking if closesocket might be used... " >&6; } if test "$tst_links_closesocket" = "yes" && test "$tst_proto_closesocket" = "yes" && test "$tst_compi_closesocket" = "yes" && test "$tst_allow_closesocket" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_CLOSESOCKET 1" >>confdefs.h curl_cv_func_closesocket="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_closesocket="no" fi curl_includes_sys_socket="\ /* includes start */ #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_SOCKET_H # include #endif /* includes end */" ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_sys_socket " if test "x$ac_cv_header_sys_types_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$curl_includes_sys_socket " if test "x$ac_cv_header_sys_socket_h" = xyes then : printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h fi # tst_links_closesocket_camel="unknown" tst_compi_closesocket_camel="unknown" tst_allow_closesocket_camel="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if CloseSocket can be linked" >&5 printf %s "checking if CloseSocket can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_bsdsocket $curl_includes_sys_socket int main(void) { if(0 != CloseSocket(0)) return 1; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_closesocket_camel="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_closesocket_camel="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_closesocket_camel" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if CloseSocket is compilable" >&5 printf %s "checking if CloseSocket is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_bsdsocket $curl_includes_sys_socket int main(void) { if(0 != CloseSocket(0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_closesocket_camel="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_closesocket_camel="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_closesocket_camel" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if CloseSocket usage allowed" >&5 printf %s "checking if CloseSocket usage allowed... " >&6; } if test "x$curl_disallow_closesocket_camel" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_closesocket_camel="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_closesocket_camel="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if CloseSocket might be used" >&5 printf %s "checking if CloseSocket might be used... " >&6; } if test "$tst_links_closesocket_camel" = "yes" && test "$tst_compi_closesocket_camel" = "yes" && test "$tst_allow_closesocket_camel" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_CLOSESOCKET_CAMEL 1" >>confdefs.h curl_cv_func_closesocket_camel="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_closesocket_camel="no" fi curl_includes_fcntl="\ /* includes start */ #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_UNISTD_H # include #endif #ifdef HAVE_FCNTL_H # include #endif /* includes end */" ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_fcntl " if test "x$ac_cv_header_sys_types_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$curl_includes_fcntl " if test "x$ac_cv_header_unistd_h" = xyes then : printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$curl_includes_fcntl " if test "x$ac_cv_header_fcntl_h" = xyes then : printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h fi # tst_links_fcntl="unknown" tst_proto_fcntl="unknown" tst_compi_fcntl="unknown" tst_allow_fcntl="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fcntl can be linked" >&5 printf %s "checking if fcntl can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define fcntl innocuous_fcntl #ifdef __STDC__ # include #else # include #endif #undef fcntl #ifdef __cplusplus extern "C" #endif char fcntl (); #if defined __stub_fcntl || defined __stub___fcntl #error force compilation error #endif int main(void) { return fcntl (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_fcntl="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_fcntl="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_fcntl" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fcntl is prototyped" >&5 printf %s "checking if fcntl is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_fcntl _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "fcntl" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_fcntl="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_fcntl="no" fi rm -rf conftest* fi # if test "$tst_proto_fcntl" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fcntl is compilable" >&5 printf %s "checking if fcntl is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_fcntl int main(void) { if(0 != fcntl(0, 0, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_fcntl="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_fcntl="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_fcntl" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fcntl usage allowed" >&5 printf %s "checking if fcntl usage allowed... " >&6; } if test "x$curl_disallow_fcntl" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_fcntl="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_fcntl="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fcntl might be used" >&5 printf %s "checking if fcntl might be used... " >&6; } if test "$tst_links_fcntl" = "yes" && test "$tst_proto_fcntl" = "yes" && test "$tst_compi_fcntl" = "yes" && test "$tst_allow_fcntl" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_FCNTL 1" >>confdefs.h curl_cv_func_fcntl="yes" # tst_compi_fcntl_o_nonblock="unknown" tst_allow_fcntl_o_nonblock="unknown" # case $host_os in sunos4* | aix3*) curl_disallow_fcntl_o_nonblock="yes" ;; esac # if test "$curl_cv_func_fcntl" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fcntl O_NONBLOCK is compilable" >&5 printf %s "checking if fcntl O_NONBLOCK is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_fcntl int main(void) { int flags = 0; if(0 != fcntl(0, F_SETFL, flags | O_NONBLOCK)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_fcntl_o_nonblock="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_fcntl_o_nonblock="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_fcntl_o_nonblock" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fcntl O_NONBLOCK usage allowed" >&5 printf %s "checking if fcntl O_NONBLOCK usage allowed... " >&6; } if test "x$curl_disallow_fcntl_o_nonblock" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_fcntl_o_nonblock="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_fcntl_o_nonblock="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fcntl O_NONBLOCK might be used" >&5 printf %s "checking if fcntl O_NONBLOCK might be used... " >&6; } if test "$tst_compi_fcntl_o_nonblock" = "yes" && test "$tst_allow_fcntl_o_nonblock" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_FCNTL_O_NONBLOCK 1" >>confdefs.h curl_cv_func_fcntl_o_nonblock="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_fcntl_o_nonblock="no" fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_fcntl="no" fi curl_includes_ws2tcpip="\ /* includes start */ #ifdef _WIN32 # ifndef WIN32_LEAN_AND_MEAN # define WIN32_LEAN_AND_MEAN # endif # include # include #endif /* includes end */" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build target is a native Windows one" >&5 printf %s "checking whether build target is a native Windows one... " >&6; } if test ${curl_cv_native_windows+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { #ifdef _WIN32 int dummy = 1; (void)dummy; #else #error Not a native Windows build target. #endif return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : curl_cv_native_windows="yes" else $as_nop curl_cv_native_windows="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_native_windows" >&5 printf "%s\n" "$curl_cv_native_windows" >&6; } if test "x$curl_cv_native_windows" = xyes; then DOING_NATIVE_WINDOWS_TRUE= DOING_NATIVE_WINDOWS_FALSE='#' else DOING_NATIVE_WINDOWS_TRUE='#' DOING_NATIVE_WINDOWS_FALSE= fi curl_includes_netdb="\ /* includes start */ #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_NETDB_H # include #endif /* includes end */" ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_netdb " if test "x$ac_cv_header_sys_types_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "netdb.h" "ac_cv_header_netdb_h" "$curl_includes_netdb " if test "x$ac_cv_header_netdb_h" = xyes then : printf "%s\n" "#define HAVE_NETDB_H 1" >>confdefs.h fi # tst_links_freeaddrinfo="unknown" tst_proto_freeaddrinfo="unknown" tst_compi_freeaddrinfo="unknown" tst_allow_freeaddrinfo="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if freeaddrinfo can be linked" >&5 printf %s "checking if freeaddrinfo can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_ws2tcpip $curl_includes_sys_socket $curl_includes_netdb int main(void) { freeaddrinfo(0); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_freeaddrinfo="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_freeaddrinfo="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_freeaddrinfo" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if freeaddrinfo is prototyped" >&5 printf %s "checking if freeaddrinfo is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_ws2tcpip $curl_includes_sys_socket $curl_includes_netdb _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "freeaddrinfo" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_freeaddrinfo="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_freeaddrinfo="no" fi rm -rf conftest* fi # if test "$tst_proto_freeaddrinfo" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if freeaddrinfo is compilable" >&5 printf %s "checking if freeaddrinfo is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_ws2tcpip $curl_includes_sys_socket $curl_includes_netdb int main(void) { freeaddrinfo(0); return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_freeaddrinfo="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_freeaddrinfo="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_freeaddrinfo" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if freeaddrinfo usage allowed" >&5 printf %s "checking if freeaddrinfo usage allowed... " >&6; } if test "x$curl_disallow_freeaddrinfo" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_freeaddrinfo="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_freeaddrinfo="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if freeaddrinfo might be used" >&5 printf %s "checking if freeaddrinfo might be used... " >&6; } if test "$tst_links_freeaddrinfo" = "yes" && test "$tst_proto_freeaddrinfo" = "yes" && test "$tst_compi_freeaddrinfo" = "yes" && test "$tst_allow_freeaddrinfo" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_FREEADDRINFO 1" >>confdefs.h curl_cv_func_freeaddrinfo="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_freeaddrinfo="no" fi curl_includes_sys_xattr="\ /* includes start */ #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_XATTR_H # include #endif /* includes end */" ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_sys_xattr " if test "x$ac_cv_header_sys_types_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/xattr.h" "ac_cv_header_sys_xattr_h" "$curl_includes_sys_xattr " if test "x$ac_cv_header_sys_xattr_h" = xyes then : printf "%s\n" "#define HAVE_SYS_XATTR_H 1" >>confdefs.h fi # tst_links_fsetxattr="unknown" tst_proto_fsetxattr="unknown" tst_compi_fsetxattr="unknown" tst_allow_fsetxattr="unknown" tst_nargs_fsetxattr="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fsetxattr can be linked" >&5 printf %s "checking if fsetxattr can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define fsetxattr innocuous_fsetxattr #ifdef __STDC__ # include #else # include #endif #undef fsetxattr #ifdef __cplusplus extern "C" #endif char fsetxattr (); #if defined __stub_fsetxattr || defined __stub___fsetxattr #error force compilation error #endif int main(void) { return fsetxattr (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_fsetxattr="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_fsetxattr="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_fsetxattr" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fsetxattr is prototyped" >&5 printf %s "checking if fsetxattr is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_sys_xattr _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "fsetxattr" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_fsetxattr="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_fsetxattr="no" fi rm -rf conftest* fi # if test "$tst_proto_fsetxattr" = "yes"; then if test "$tst_nargs_fsetxattr" = "unknown"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fsetxattr takes 5 args." >&5 printf %s "checking if fsetxattr takes 5 args.... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_sys_xattr int main(void) { if(0 != fsetxattr(0, "", 0, 0, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_fsetxattr="yes" tst_nargs_fsetxattr="5" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_fsetxattr="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test "$tst_nargs_fsetxattr" = "unknown"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fsetxattr takes 6 args." >&5 printf %s "checking if fsetxattr takes 6 args.... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_sys_xattr int main(void) { if(0 != fsetxattr(0, 0, 0, 0, 0, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_fsetxattr="yes" tst_nargs_fsetxattr="6" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_fsetxattr="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fsetxattr is compilable" >&5 printf %s "checking if fsetxattr is compilable... " >&6; } if test "$tst_compi_fsetxattr" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi # if test "$tst_compi_fsetxattr" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fsetxattr usage allowed" >&5 printf %s "checking if fsetxattr usage allowed... " >&6; } if test "x$curl_disallow_fsetxattr" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_fsetxattr="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_fsetxattr="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fsetxattr might be used" >&5 printf %s "checking if fsetxattr might be used... " >&6; } if test "$tst_links_fsetxattr" = "yes" && test "$tst_proto_fsetxattr" = "yes" && test "$tst_compi_fsetxattr" = "yes" && test "$tst_allow_fsetxattr" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_FSETXATTR 1" >>confdefs.h # if test "$tst_nargs_fsetxattr" -eq "5"; then printf "%s\n" "#define HAVE_FSETXATTR_5 1" >>confdefs.h elif test "$tst_nargs_fsetxattr" -eq "6"; then printf "%s\n" "#define HAVE_FSETXATTR_6 1" >>confdefs.h fi # curl_cv_func_fsetxattr="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_fsetxattr="no" fi # tst_links_ftruncate="unknown" tst_proto_ftruncate="unknown" tst_compi_ftruncate="unknown" tst_allow_ftruncate="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ftruncate can be linked" >&5 printf %s "checking if ftruncate can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define ftruncate innocuous_ftruncate #ifdef __STDC__ # include #else # include #endif #undef ftruncate #ifdef __cplusplus extern "C" #endif char ftruncate (); #if defined __stub_ftruncate || defined __stub___ftruncate #error force compilation error #endif int main(void) { return ftruncate (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_ftruncate="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_ftruncate="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_ftruncate" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ftruncate is prototyped" >&5 printf %s "checking if ftruncate is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_unistd _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "ftruncate" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_ftruncate="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_ftruncate="no" fi rm -rf conftest* fi # if test "$tst_proto_ftruncate" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ftruncate is compilable" >&5 printf %s "checking if ftruncate is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_unistd int main(void) { if(0 != ftruncate(0, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_ftruncate="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_ftruncate="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_ftruncate" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ftruncate usage allowed" >&5 printf %s "checking if ftruncate usage allowed... " >&6; } if test "x$curl_disallow_ftruncate" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_ftruncate="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_ftruncate="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ftruncate might be used" >&5 printf %s "checking if ftruncate might be used... " >&6; } if test "$tst_links_ftruncate" = "yes" && test "$tst_proto_ftruncate" = "yes" && test "$tst_compi_ftruncate" = "yes" && test "$tst_allow_ftruncate" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_FTRUNCATE 1" >>confdefs.h curl_cv_func_ftruncate="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_ftruncate="no" fi curl_includes_stdlib="\ /* includes start */ #ifdef HAVE_SYS_TYPES_H # include #endif #include /* includes end */" ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_stdlib " if test "x$ac_cv_header_sys_types_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h fi # tst_links_getaddrinfo="unknown" tst_proto_getaddrinfo="unknown" tst_compi_getaddrinfo="unknown" tst_works_getaddrinfo="unknown" tst_allow_getaddrinfo="unknown" tst_tsafe_getaddrinfo="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getaddrinfo can be linked" >&5 printf %s "checking if getaddrinfo can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_ws2tcpip $curl_includes_sys_socket $curl_includes_netdb int main(void) { struct addrinfo *ai = 0; if(0 != getaddrinfo(0, 0, 0, &ai)) return 1; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_getaddrinfo="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_getaddrinfo="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_getaddrinfo" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getaddrinfo is prototyped" >&5 printf %s "checking if getaddrinfo is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_ws2tcpip $curl_includes_sys_socket $curl_includes_netdb _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "getaddrinfo" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_getaddrinfo="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_getaddrinfo="no" fi rm -rf conftest* fi # if test "$tst_proto_getaddrinfo" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getaddrinfo is compilable" >&5 printf %s "checking if getaddrinfo is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_ws2tcpip $curl_includes_sys_socket $curl_includes_netdb int main(void) { struct addrinfo *ai = 0; if(0 != getaddrinfo(0, 0, 0, &ai)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_getaddrinfo="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_getaddrinfo="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "x$cross_compiling" != "xyes" && test "$tst_compi_getaddrinfo" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getaddrinfo seems to work" >&5 printf %s "checking if getaddrinfo seems to work... " >&6; } if test "$curl_cv_apple" = 'yes'; then if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_ws2tcpip $curl_includes_stdlib $curl_includes_string $curl_includes_sys_socket $curl_includes_netdb int main(void) { struct addrinfo hints; struct addrinfo *ai = 0; int error; int exitcode; #ifdef _WIN32 WSADATA wsa; if(WSAStartup(MAKEWORD(2, 2), &wsa)) return 2; #endif memset(&hints, 0, sizeof(hints)); hints.ai_flags = AI_NUMERICHOST; hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; error = getaddrinfo("127.0.0.1", 0, &hints, &ai); if(error || !ai) exitcode = 1; /* fail */ else { freeaddrinfo(ai); exitcode = 0; } #ifdef _WIN32 WSACleanup(); #endif return exitcode; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_works_getaddrinfo="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_works_getaddrinfo="no" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else oldcc=$CC old=$LD_LIBRARY_PATH CC="sh ./run-compiler" LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old export LD_LIBRARY_PATH if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_ws2tcpip $curl_includes_stdlib $curl_includes_string $curl_includes_sys_socket $curl_includes_netdb int main(void) { struct addrinfo hints; struct addrinfo *ai = 0; int error; int exitcode; #ifdef _WIN32 WSADATA wsa; if(WSAStartup(MAKEWORD(2, 2), &wsa)) return 2; #endif memset(&hints, 0, sizeof(hints)); hints.ai_flags = AI_NUMERICHOST; hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; error = getaddrinfo("127.0.0.1", 0, &hints, &ai); if(error || !ai) exitcode = 1; /* fail */ else { freeaddrinfo(ai); exitcode = 0; } #ifdef _WIN32 WSACleanup(); #endif return exitcode; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_works_getaddrinfo="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_works_getaddrinfo="no" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi LD_LIBRARY_PATH=$old # restore CC=$oldcc fi fi # if test "$tst_compi_getaddrinfo" = "yes" && test "$tst_works_getaddrinfo" != "no"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getaddrinfo usage allowed" >&5 printf %s "checking if getaddrinfo usage allowed... " >&6; } if test "x$curl_disallow_getaddrinfo" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_getaddrinfo="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_getaddrinfo="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getaddrinfo might be used" >&5 printf %s "checking if getaddrinfo might be used... " >&6; } if test "$tst_proto_getaddrinfo" = "yes" && test "$tst_compi_getaddrinfo" = "yes" && test "$tst_allow_getaddrinfo" = "yes" && test "$tst_works_getaddrinfo" != "no"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_GETADDRINFO 1" >>confdefs.h curl_cv_func_getaddrinfo="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_getaddrinfo="no" curl_cv_func_getaddrinfo_threadsafe="no" fi # if test "$curl_cv_func_getaddrinfo" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getaddrinfo is threadsafe" >&5 printf %s "checking if getaddrinfo is threadsafe... " >&6; } if test "$curl_cv_apple" = 'yes'; then tst_tsafe_getaddrinfo="yes" fi case $host_os in aix[1234].* | aix5.[01].*) tst_tsafe_getaddrinfo="no" ;; aix*) tst_tsafe_getaddrinfo="yes" ;; darwin[12345].*) tst_tsafe_getaddrinfo="no" ;; freebsd[1234].* | freebsd5.[1234]*) tst_tsafe_getaddrinfo="no" ;; freebsd*) tst_tsafe_getaddrinfo="yes" ;; hpux[123456789].* | hpux10.* | hpux11.0* | hpux11.10*) tst_tsafe_getaddrinfo="no" ;; hpux*) tst_tsafe_getaddrinfo="yes" ;; midnightbsd*) tst_tsafe_getaddrinfo="yes" ;; netbsd[123].*) tst_tsafe_getaddrinfo="no" ;; netbsd*) tst_tsafe_getaddrinfo="yes" ;; *bsd*) tst_tsafe_getaddrinfo="no" ;; solaris2*) tst_tsafe_getaddrinfo="yes" ;; esac if test "$tst_tsafe_getaddrinfo" = "unknown" && test "$curl_cv_native_windows" = "yes"; then tst_tsafe_getaddrinfo="yes" fi if test "$tst_tsafe_getaddrinfo" = "unknown"; then tst_tsafe_getaddrinfo="yes" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tst_tsafe_getaddrinfo" >&5 printf "%s\n" "$tst_tsafe_getaddrinfo" >&6; } if test "$tst_tsafe_getaddrinfo" = "yes"; then printf "%s\n" "#define HAVE_GETADDRINFO_THREADSAFE 1" >>confdefs.h curl_cv_func_getaddrinfo_threadsafe="yes" else curl_cv_func_getaddrinfo_threadsafe="no" fi fi # tst_links_gethostbyname_r="unknown" tst_proto_gethostbyname_r="unknown" tst_compi_gethostbyname_r="unknown" tst_allow_gethostbyname_r="unknown" tst_nargs_gethostbyname_r="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname_r can be linked" >&5 printf %s "checking if gethostbyname_r can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define gethostbyname_r innocuous_gethostbyname_r #ifdef __STDC__ # include #else # include #endif #undef gethostbyname_r #ifdef __cplusplus extern "C" #endif char gethostbyname_r (); #if defined __stub_gethostbyname_r || defined __stub___gethostbyname_r #error force compilation error #endif int main(void) { return gethostbyname_r (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_gethostbyname_r="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_gethostbyname_r="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_gethostbyname_r" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname_r is prototyped" >&5 printf %s "checking if gethostbyname_r is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_netdb _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "gethostbyname_r" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_gethostbyname_r="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_gethostbyname_r="no" fi rm -rf conftest* fi # if test "$tst_proto_gethostbyname_r" = "yes"; then if test "$tst_nargs_gethostbyname_r" = "unknown"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname_r takes 3 args." >&5 printf %s "checking if gethostbyname_r takes 3 args.... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_netdb $curl_includes_bsdsocket int main(void) { if(0 != gethostbyname_r(0, 0, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_gethostbyname_r="yes" tst_nargs_gethostbyname_r="3" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_gethostbyname_r="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test "$tst_nargs_gethostbyname_r" = "unknown"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname_r takes 5 args." >&5 printf %s "checking if gethostbyname_r takes 5 args.... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_netdb $curl_includes_bsdsocket int main(void) { if(0 != gethostbyname_r(0, 0, 0, 0, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_gethostbyname_r="yes" tst_nargs_gethostbyname_r="5" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_gethostbyname_r="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test "$tst_nargs_gethostbyname_r" = "unknown"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname_r takes 6 args." >&5 printf %s "checking if gethostbyname_r takes 6 args.... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_netdb $curl_includes_bsdsocket int main(void) { if(0 != gethostbyname_r(0, 0, 0, 0, 0, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_gethostbyname_r="yes" tst_nargs_gethostbyname_r="6" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_gethostbyname_r="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname_r is compilable" >&5 printf %s "checking if gethostbyname_r is compilable... " >&6; } if test "$tst_compi_gethostbyname_r" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi # if test "$tst_compi_gethostbyname_r" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname_r usage allowed" >&5 printf %s "checking if gethostbyname_r usage allowed... " >&6; } if test "x$curl_disallow_gethostbyname_r" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_gethostbyname_r="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_gethostbyname_r="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname_r might be used" >&5 printf %s "checking if gethostbyname_r might be used... " >&6; } if test "$tst_links_gethostbyname_r" = "yes" && test "$tst_proto_gethostbyname_r" = "yes" && test "$tst_compi_gethostbyname_r" = "yes" && test "$tst_allow_gethostbyname_r" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_GETHOSTBYNAME_R 1" >>confdefs.h # if test "$tst_nargs_gethostbyname_r" -eq "3"; then printf "%s\n" "#define HAVE_GETHOSTBYNAME_R_3 1" >>confdefs.h elif test "$tst_nargs_gethostbyname_r" -eq "5"; then printf "%s\n" "#define HAVE_GETHOSTBYNAME_R_5 1" >>confdefs.h elif test "$tst_nargs_gethostbyname_r" -eq "6"; then printf "%s\n" "#define HAVE_GETHOSTBYNAME_R_6 1" >>confdefs.h fi # curl_cv_func_gethostbyname_r="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_gethostbyname_r="no" fi curl_preprocess_callconv="\ /* preprocess start */ #ifdef _WIN32 # define FUNCALLCONV __stdcall #else # define FUNCALLCONV #endif /* preprocess end */" # tst_links_gethostname="unknown" tst_proto_gethostname="unknown" tst_compi_gethostname="unknown" tst_allow_gethostname="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostname can be linked" >&5 printf %s "checking if gethostname can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_winsock2 $curl_includes_unistd $curl_includes_bsdsocket int main(void) { char s[1]; if(0 != gethostname((void *)s, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_gethostname="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_gethostname="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_gethostname" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostname is prototyped" >&5 printf %s "checking if gethostname is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_winsock2 $curl_includes_unistd $curl_includes_bsdsocket _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "gethostname" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_gethostname="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_gethostname="no" fi rm -rf conftest* fi # if test "$tst_proto_gethostname" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostname is compilable" >&5 printf %s "checking if gethostname is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_winsock2 $curl_includes_unistd $curl_includes_bsdsocket int main(void) { char s[1]; if(0 != gethostname((void *)s, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_gethostname="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_gethostname="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_gethostname" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostname arg 2 data type" >&5 printf %s "checking for gethostname arg 2 data type... " >&6; } tst_gethostname_type_arg2="unknown" for tst_arg1 in 'char *' 'unsigned char *' 'void *'; do for tst_arg2 in 'int' 'unsigned int' 'size_t'; do if test "$tst_gethostname_type_arg2" = "unknown"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_winsock2 $curl_includes_unistd $curl_includes_bsdsocket $curl_preprocess_callconv #if defined(_WIN32) && defined(WINSOCK_API_LINKAGE) WINSOCK_API_LINKAGE #else extern #endif int FUNCALLCONV gethostname($tst_arg1, $tst_arg2); int main(void) { char s[1]; if(0 != gethostname(($tst_arg1)s, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : tst_gethostname_type_arg2="$tst_arg2" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi done done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tst_gethostname_type_arg2" >&5 printf "%s\n" "$tst_gethostname_type_arg2" >&6; } if test "$tst_gethostname_type_arg2" != "unknown"; then printf "%s\n" "#define GETHOSTNAME_TYPE_ARG2 $tst_gethostname_type_arg2" >>confdefs.h fi fi # if test "$tst_compi_gethostname" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostname usage allowed" >&5 printf %s "checking if gethostname usage allowed... " >&6; } if test "x$curl_disallow_gethostname" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_gethostname="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_gethostname="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostname might be used" >&5 printf %s "checking if gethostname might be used... " >&6; } if test "$tst_links_gethostname" = "yes" && test "$tst_proto_gethostname" = "yes" && test "$tst_compi_gethostname" = "yes" && test "$tst_allow_gethostname" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_GETHOSTNAME 1" >>confdefs.h curl_cv_func_gethostname="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_gethostname="no" fi curl_includes_ifaddrs="\ /* includes start */ #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_SOCKET_H # include #endif #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_IFADDRS_H # include #endif /* includes end */" ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_ifaddrs " if test "x$ac_cv_header_sys_types_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$curl_includes_ifaddrs " if test "x$ac_cv_header_sys_socket_h" = xyes then : printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "netinet/in.h" "ac_cv_header_netinet_in_h" "$curl_includes_ifaddrs " if test "x$ac_cv_header_netinet_in_h" = xyes then : printf "%s\n" "#define HAVE_NETINET_IN_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "ifaddrs.h" "ac_cv_header_ifaddrs_h" "$curl_includes_ifaddrs " if test "x$ac_cv_header_ifaddrs_h" = xyes then : printf "%s\n" "#define HAVE_IFADDRS_H 1" >>confdefs.h fi # tst_links_getifaddrs="unknown" tst_proto_getifaddrs="unknown" tst_compi_getifaddrs="unknown" tst_works_getifaddrs="unknown" tst_allow_getifaddrs="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getifaddrs can be linked" >&5 printf %s "checking if getifaddrs can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define getifaddrs innocuous_getifaddrs #ifdef __STDC__ # include #else # include #endif #undef getifaddrs #ifdef __cplusplus extern "C" #endif char getifaddrs (); #if defined __stub_getifaddrs || defined __stub___getifaddrs #error force compilation error #endif int main(void) { return getifaddrs (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_getifaddrs="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_getifaddrs="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_getifaddrs" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getifaddrs is prototyped" >&5 printf %s "checking if getifaddrs is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_ifaddrs _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "getifaddrs" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_getifaddrs="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_getifaddrs="no" fi rm -rf conftest* fi # if test "$tst_proto_getifaddrs" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getifaddrs is compilable" >&5 printf %s "checking if getifaddrs is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_ifaddrs int main(void) { if(0 != getifaddrs(0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_getifaddrs="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_getifaddrs="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "x$cross_compiling" != "xyes" && test "$tst_compi_getifaddrs" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getifaddrs seems to work" >&5 printf %s "checking if getifaddrs seems to work... " >&6; } if test "$curl_cv_apple" = 'yes'; then if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_stdlib $curl_includes_ifaddrs int main(void) { struct ifaddrs *ifa = 0; int error; error = getifaddrs(&ifa); if(error || !ifa) return 1; /* fail */ else { freeifaddrs(ifa); return 0; } return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_works_getifaddrs="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_works_getifaddrs="no" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else oldcc=$CC old=$LD_LIBRARY_PATH CC="sh ./run-compiler" LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old export LD_LIBRARY_PATH if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_stdlib $curl_includes_ifaddrs int main(void) { struct ifaddrs *ifa = 0; int error; error = getifaddrs(&ifa); if(error || !ifa) return 1; /* fail */ else { freeifaddrs(ifa); return 0; } return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_works_getifaddrs="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_works_getifaddrs="no" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi LD_LIBRARY_PATH=$old # restore CC=$oldcc fi fi # if test "$tst_compi_getifaddrs" = "yes" && test "$tst_works_getifaddrs" != "no"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getifaddrs usage allowed" >&5 printf %s "checking if getifaddrs usage allowed... " >&6; } if test "x$curl_disallow_getifaddrs" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_getifaddrs="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_getifaddrs="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getifaddrs might be used" >&5 printf %s "checking if getifaddrs might be used... " >&6; } if test "$tst_links_getifaddrs" = "yes" && test "$tst_proto_getifaddrs" = "yes" && test "$tst_compi_getifaddrs" = "yes" && test "$tst_allow_getifaddrs" = "yes" && test "$tst_works_getifaddrs" != "no"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_GETIFADDRS 1" >>confdefs.h curl_cv_func_getifaddrs="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_getifaddrs="no" fi # tst_links_getpeername="unknown" tst_proto_getpeername="unknown" tst_compi_getpeername="unknown" tst_allow_getpeername="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getpeername can be linked" >&5 printf %s "checking if getpeername can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_winsock2 $curl_includes_bsdsocket $curl_includes_sys_socket int main(void) { if(0 != getpeername(0, (void *)0, (void *)0)) return 1; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_getpeername="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_getpeername="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_getpeername" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getpeername is prototyped" >&5 printf %s "checking if getpeername is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_winsock2 $curl_includes_bsdsocket $curl_includes_sys_socket _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "getpeername" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_getpeername="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_getpeername="no" fi rm -rf conftest* fi # if test "$tst_proto_getpeername" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getpeername is compilable" >&5 printf %s "checking if getpeername is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_winsock2 $curl_includes_bsdsocket $curl_includes_sys_socket int main(void) { if(0 != getpeername(0, (void *)0, (void *)0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_getpeername="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_getpeername="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_getpeername" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getpeername usage allowed" >&5 printf %s "checking if getpeername usage allowed... " >&6; } if test "x$curl_disallow_getpeername" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_getpeername="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_getpeername="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getpeername might be used" >&5 printf %s "checking if getpeername might be used... " >&6; } if test "$tst_links_getpeername" = "yes" && test "$tst_proto_getpeername" = "yes" && test "$tst_compi_getpeername" = "yes" && test "$tst_allow_getpeername" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_GETPEERNAME 1" >>confdefs.h curl_cv_func_getpeername="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_getpeername="no" fi # tst_links_getsockname="unknown" tst_proto_getsockname="unknown" tst_compi_getsockname="unknown" tst_allow_getsockname="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getsockname can be linked" >&5 printf %s "checking if getsockname can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_winsock2 $curl_includes_bsdsocket $curl_includes_sys_socket int main(void) { if(0 != getsockname(0, (void *)0, (void *)0)) return 1; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_getsockname="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_getsockname="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_getsockname" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getsockname is prototyped" >&5 printf %s "checking if getsockname is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_winsock2 $curl_includes_bsdsocket $curl_includes_sys_socket _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "getsockname" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_getsockname="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_getsockname="no" fi rm -rf conftest* fi # if test "$tst_proto_getsockname" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getsockname is compilable" >&5 printf %s "checking if getsockname is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_winsock2 $curl_includes_bsdsocket $curl_includes_sys_socket int main(void) { if(0 != getsockname(0, (void *)0, (void *)0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_getsockname="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_getsockname="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_getsockname" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getsockname usage allowed" >&5 printf %s "checking if getsockname usage allowed... " >&6; } if test "x$curl_disallow_getsockname" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_getsockname="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_getsockname="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getsockname might be used" >&5 printf %s "checking if getsockname might be used... " >&6; } if test "$tst_links_getsockname" = "yes" && test "$tst_proto_getsockname" = "yes" && test "$tst_compi_getsockname" = "yes" && test "$tst_allow_getsockname" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_GETSOCKNAME 1" >>confdefs.h curl_cv_func_getsockname="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_getsockname="no" fi curl_includes_time="\ /* includes start */ #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_TIME_H # include #endif #include /* includes end */" ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_time " if test "x$ac_cv_header_sys_types_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$curl_includes_time " if test "x$ac_cv_header_sys_time_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h fi # tst_links_gmtime_r="unknown" tst_proto_gmtime_r="unknown" tst_compi_gmtime_r="unknown" tst_works_gmtime_r="unknown" tst_allow_gmtime_r="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gmtime_r can be linked" >&5 printf %s "checking if gmtime_r can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define gmtime_r innocuous_gmtime_r #ifdef __STDC__ # include #else # include #endif #undef gmtime_r #ifdef __cplusplus extern "C" #endif char gmtime_r (); #if defined __stub_gmtime_r || defined __stub___gmtime_r #error force compilation error #endif int main(void) { return gmtime_r (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_gmtime_r="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_gmtime_r="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_gmtime_r" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gmtime_r is prototyped" >&5 printf %s "checking if gmtime_r is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_time _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "gmtime_r" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_gmtime_r="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_gmtime_r="no" fi rm -rf conftest* fi # if test "$tst_proto_gmtime_r" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gmtime_r is compilable" >&5 printf %s "checking if gmtime_r is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_time int main(void) { time_t tm = 1170352587; struct tm result; if(0 != gmtime_r(&tm, &result)) return 1; (void)result; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_gmtime_r="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_gmtime_r="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "x$cross_compiling" != "xyes" && test "$tst_compi_gmtime_r" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gmtime_r seems to work" >&5 printf %s "checking if gmtime_r seems to work... " >&6; } if test "$curl_cv_apple" = 'yes'; then if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_stdlib $curl_includes_time int main(void) { time_t local = 1170352587; struct tm *gmt = 0; struct tm result; gmt = gmtime_r(&local, &result); (void)result; if(gmt) return 0; else return 1; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_works_gmtime_r="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_works_gmtime_r="no" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else oldcc=$CC old=$LD_LIBRARY_PATH CC="sh ./run-compiler" LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old export LD_LIBRARY_PATH if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_stdlib $curl_includes_time int main(void) { time_t local = 1170352587; struct tm *gmt = 0; struct tm result; gmt = gmtime_r(&local, &result); (void)result; if(gmt) return 0; else return 1; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_works_gmtime_r="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_works_gmtime_r="no" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi LD_LIBRARY_PATH=$old # restore CC=$oldcc fi fi # if test "$tst_compi_gmtime_r" = "yes" && test "$tst_works_gmtime_r" != "no"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gmtime_r usage allowed" >&5 printf %s "checking if gmtime_r usage allowed... " >&6; } if test "x$curl_disallow_gmtime_r" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_gmtime_r="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_gmtime_r="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gmtime_r might be used" >&5 printf %s "checking if gmtime_r might be used... " >&6; } if test "$tst_links_gmtime_r" = "yes" && test "$tst_proto_gmtime_r" = "yes" && test "$tst_compi_gmtime_r" = "yes" && test "$tst_allow_gmtime_r" = "yes" && test "$tst_works_gmtime_r" != "no"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_GMTIME_R 1" >>confdefs.h curl_cv_func_gmtime_r="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_gmtime_r="no" fi curl_includes_stropts="\ /* includes start */ #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_UNISTD_H # include #endif #ifdef HAVE_SYS_SOCKET_H # include #endif #ifdef HAVE_SYS_IOCTL_H # include #endif #ifdef HAVE_STROPTS_H # include #endif /* includes end */" ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_stropts " if test "x$ac_cv_header_sys_types_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$curl_includes_stropts " if test "x$ac_cv_header_unistd_h" = xyes then : printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$curl_includes_stropts " if test "x$ac_cv_header_sys_socket_h" = xyes then : printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" "$curl_includes_stropts " if test "x$ac_cv_header_sys_ioctl_h" = xyes then : printf "%s\n" "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "stropts.h" "ac_cv_header_stropts_h" "$curl_includes_stropts " if test "x$ac_cv_header_stropts_h" = xyes then : printf "%s\n" "#define HAVE_STROPTS_H 1" >>confdefs.h fi # tst_links_ioctl="unknown" tst_proto_ioctl="unknown" tst_compi_ioctl="unknown" tst_allow_ioctl="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl can be linked" >&5 printf %s "checking if ioctl can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define ioctl innocuous_ioctl #ifdef __STDC__ # include #else # include #endif #undef ioctl #ifdef __cplusplus extern "C" #endif char ioctl (); #if defined __stub_ioctl || defined __stub___ioctl #error force compilation error #endif int main(void) { return ioctl (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_ioctl="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_ioctl="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_ioctl" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl is prototyped" >&5 printf %s "checking if ioctl is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_stropts _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "ioctl" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_ioctl="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_ioctl="no" fi rm -rf conftest* fi # if test "$tst_proto_ioctl" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl is compilable" >&5 printf %s "checking if ioctl is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_stropts int main(void) { if(0 != ioctl(0, 0, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_ioctl="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_ioctl="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_ioctl" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl usage allowed" >&5 printf %s "checking if ioctl usage allowed... " >&6; } if test "x$curl_disallow_ioctl" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_ioctl="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_ioctl="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl might be used" >&5 printf %s "checking if ioctl might be used... " >&6; } if test "$tst_links_ioctl" = "yes" && test "$tst_proto_ioctl" = "yes" && test "$tst_compi_ioctl" = "yes" && test "$tst_allow_ioctl" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } curl_cv_func_ioctl="yes" # tst_compi_ioctl_fionbio="unknown" tst_allow_ioctl_fionbio="unknown" # if test "$curl_cv_func_ioctl" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl FIONBIO is compilable" >&5 printf %s "checking if ioctl FIONBIO is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_stropts int main(void) { int flags = 0; if(0 != ioctl(0, FIONBIO, &flags)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_ioctl_fionbio="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_ioctl_fionbio="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_ioctl_fionbio" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl FIONBIO usage allowed" >&5 printf %s "checking if ioctl FIONBIO usage allowed... " >&6; } if test "x$curl_disallow_ioctl_fionbio" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_ioctl_fionbio="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_ioctl_fionbio="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl FIONBIO might be used" >&5 printf %s "checking if ioctl FIONBIO might be used... " >&6; } if test "$tst_compi_ioctl_fionbio" = "yes" && test "$tst_allow_ioctl_fionbio" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_IOCTL_FIONBIO 1" >>confdefs.h curl_cv_func_ioctl_fionbio="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_ioctl_fionbio="no" fi # tst_compi_ioctl_siocgifaddr="unknown" tst_allow_ioctl_siocgifaddr="unknown" # if test "$curl_cv_func_ioctl" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl SIOCGIFADDR is compilable" >&5 printf %s "checking if ioctl SIOCGIFADDR is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_stropts #include int main(void) { struct ifreq ifr; if(0 != ioctl(0, SIOCGIFADDR, &ifr)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_ioctl_siocgifaddr="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_ioctl_siocgifaddr="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_ioctl_siocgifaddr" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl SIOCGIFADDR usage allowed" >&5 printf %s "checking if ioctl SIOCGIFADDR usage allowed... " >&6; } if test "x$curl_disallow_ioctl_siocgifaddr" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_ioctl_siocgifaddr="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_ioctl_siocgifaddr="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl SIOCGIFADDR might be used" >&5 printf %s "checking if ioctl SIOCGIFADDR might be used... " >&6; } if test "$tst_compi_ioctl_siocgifaddr" = "yes" && test "$tst_allow_ioctl_siocgifaddr" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_IOCTL_SIOCGIFADDR 1" >>confdefs.h curl_cv_func_ioctl_siocgifaddr="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_ioctl_siocgifaddr="no" fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_ioctl="no" fi # tst_links_ioctlsocket="unknown" tst_proto_ioctlsocket="unknown" tst_compi_ioctlsocket="unknown" tst_allow_ioctlsocket="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket can be linked" >&5 printf %s "checking if ioctlsocket can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_winsock2 int main(void) { if(0 != ioctlsocket(0, 0, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_ioctlsocket="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_ioctlsocket="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_ioctlsocket" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket is prototyped" >&5 printf %s "checking if ioctlsocket is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_winsock2 _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "ioctlsocket" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_ioctlsocket="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_ioctlsocket="no" fi rm -rf conftest* fi # if test "$tst_proto_ioctlsocket" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket is compilable" >&5 printf %s "checking if ioctlsocket is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_winsock2 int main(void) { if(0 != ioctlsocket(0, 0, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_ioctlsocket="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_ioctlsocket="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_ioctlsocket" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket usage allowed" >&5 printf %s "checking if ioctlsocket usage allowed... " >&6; } if test "x$curl_disallow_ioctlsocket" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_ioctlsocket="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_ioctlsocket="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket might be used" >&5 printf %s "checking if ioctlsocket might be used... " >&6; } if test "$tst_links_ioctlsocket" = "yes" && test "$tst_proto_ioctlsocket" = "yes" && test "$tst_compi_ioctlsocket" = "yes" && test "$tst_allow_ioctlsocket" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_IOCTLSOCKET 1" >>confdefs.h curl_cv_func_ioctlsocket="yes" # tst_compi_ioctlsocket_fionbio="unknown" tst_allow_ioctlsocket_fionbio="unknown" # if test "$curl_cv_func_ioctlsocket" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket FIONBIO is compilable" >&5 printf %s "checking if ioctlsocket FIONBIO is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_winsock2 int main(void) { unsigned long flags = 0; if(0 != ioctlsocket(0, FIONBIO, &flags)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_ioctlsocket_fionbio="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_ioctlsocket_fionbio="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_ioctlsocket_fionbio" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket FIONBIO usage allowed" >&5 printf %s "checking if ioctlsocket FIONBIO usage allowed... " >&6; } if test "x$curl_disallow_ioctlsocket_fionbio" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_ioctlsocket_fionbio="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_ioctlsocket_fionbio="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket FIONBIO might be used" >&5 printf %s "checking if ioctlsocket FIONBIO might be used... " >&6; } if test "$tst_compi_ioctlsocket_fionbio" = "yes" && test "$tst_allow_ioctlsocket_fionbio" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_IOCTLSOCKET_FIONBIO 1" >>confdefs.h curl_cv_func_ioctlsocket_fionbio="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_ioctlsocket_fionbio="no" fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_ioctlsocket="no" fi # tst_links_ioctlsocket_camel="unknown" tst_compi_ioctlsocket_camel="unknown" tst_allow_ioctlsocket_camel="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IoctlSocket can be linked" >&5 printf %s "checking if IoctlSocket can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_bsdsocket int main(void) { if(0 != IoctlSocket(0, 0, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_ioctlsocket_camel="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_ioctlsocket_camel="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_ioctlsocket_camel" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IoctlSocket is compilable" >&5 printf %s "checking if IoctlSocket is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_bsdsocket int main(void) { if(0 != IoctlSocket(0, 0, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_ioctlsocket_camel="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_ioctlsocket_camel="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_ioctlsocket_camel" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IoctlSocket usage allowed" >&5 printf %s "checking if IoctlSocket usage allowed... " >&6; } if test "x$curl_disallow_ioctlsocket_camel" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_ioctlsocket_camel="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_ioctlsocket_camel="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IoctlSocket might be used" >&5 printf %s "checking if IoctlSocket might be used... " >&6; } if test "$tst_links_ioctlsocket_camel" = "yes" && test "$tst_compi_ioctlsocket_camel" = "yes" && test "$tst_allow_ioctlsocket_camel" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_IOCTLSOCKET_CAMEL 1" >>confdefs.h curl_cv_func_ioctlsocket_camel="yes" # tst_compi_ioctlsocket_camel_fionbio="unknown" tst_allow_ioctlsocket_camel_fionbio="unknown" # if test "$curl_cv_func_ioctlsocket_camel" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IoctlSocket FIONBIO is compilable" >&5 printf %s "checking if IoctlSocket FIONBIO is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_bsdsocket int main(void) { long flags = 0; if(0 != IoctlSocket(0, FIONBIO, &flags)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_ioctlsocket_camel_fionbio="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_ioctlsocket_camel_fionbio="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_ioctlsocket_camel_fionbio" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IoctlSocket FIONBIO usage allowed" >&5 printf %s "checking if IoctlSocket FIONBIO usage allowed... " >&6; } if test "x$curl_disallow_ioctlsocket_camel_fionbio" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_ioctlsocket_camel_fionbio="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_ioctlsocket_camel_fionbio="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IoctlSocket FIONBIO might be used" >&5 printf %s "checking if IoctlSocket FIONBIO might be used... " >&6; } if test "$tst_compi_ioctlsocket_camel_fionbio" = "yes" && test "$tst_allow_ioctlsocket_camel_fionbio" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_IOCTLSOCKET_CAMEL_FIONBIO 1" >>confdefs.h curl_cv_func_ioctlsocket_camel_fionbio="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_ioctlsocket_camel_fionbio="no" fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_ioctlsocket_camel="no" fi # tst_links_memrchr="unknown" tst_macro_memrchr="unknown" tst_proto_memrchr="unknown" tst_compi_memrchr="unknown" tst_allow_memrchr="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if memrchr can be linked" >&5 printf %s "checking if memrchr can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define memrchr innocuous_memrchr #ifdef __STDC__ # include #else # include #endif #undef memrchr #ifdef __cplusplus extern "C" #endif char memrchr (); #if defined __stub_memrchr || defined __stub___memrchr #error force compilation error #endif int main(void) { return memrchr (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_memrchr="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_memrchr="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_memrchr" = "no"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if memrchr seems a macro" >&5 printf %s "checking if memrchr seems a macro... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_string int main(void) { if(0 != memrchr("", 0, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_macro_memrchr="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_macro_memrchr="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi # if test "$tst_links_memrchr" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if memrchr is prototyped" >&5 printf %s "checking if memrchr is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_string _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memrchr" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_memrchr="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_memrchr="no" fi rm -rf conftest* fi # if test "$tst_proto_memrchr" = "yes" || test "$tst_macro_memrchr" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if memrchr is compilable" >&5 printf %s "checking if memrchr is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_string int main(void) { if(0 != memrchr("", 0, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_memrchr="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_memrchr="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_memrchr" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if memrchr usage allowed" >&5 printf %s "checking if memrchr usage allowed... " >&6; } if test "x$curl_disallow_memrchr" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_memrchr="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_memrchr="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if memrchr might be used" >&5 printf %s "checking if memrchr might be used... " >&6; } if (test "$tst_proto_memrchr" = "yes" || test "$tst_macro_memrchr" = "yes") && test "$tst_compi_memrchr" = "yes" && test "$tst_allow_memrchr" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_MEMRCHR 1" >>confdefs.h curl_cv_func_memrchr="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_memrchr="no" fi curl_includes_signal="\ /* includes start */ #ifdef HAVE_SYS_TYPES_H # include #endif #include /* includes end */" ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_signal " if test "x$ac_cv_header_sys_types_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h fi # tst_links_sigaction="unknown" tst_proto_sigaction="unknown" tst_compi_sigaction="unknown" tst_allow_sigaction="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sigaction can be linked" >&5 printf %s "checking if sigaction can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define sigaction innocuous_sigaction #ifdef __STDC__ # include #else # include #endif #undef sigaction #ifdef __cplusplus extern "C" #endif char sigaction (); #if defined __stub_sigaction || defined __stub___sigaction #error force compilation error #endif int main(void) { return sigaction (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_sigaction="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_sigaction="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_sigaction" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sigaction is prototyped" >&5 printf %s "checking if sigaction is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_signal _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "sigaction" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_sigaction="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_sigaction="no" fi rm -rf conftest* fi # if test "$tst_proto_sigaction" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sigaction is compilable" >&5 printf %s "checking if sigaction is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_signal int main(void) { if(0 != sigaction(0, 0, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_sigaction="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_sigaction="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_sigaction" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sigaction usage allowed" >&5 printf %s "checking if sigaction usage allowed... " >&6; } if test "x$curl_disallow_sigaction" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_sigaction="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_sigaction="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sigaction might be used" >&5 printf %s "checking if sigaction might be used... " >&6; } if test "$tst_links_sigaction" = "yes" && test "$tst_proto_sigaction" = "yes" && test "$tst_compi_sigaction" = "yes" && test "$tst_allow_sigaction" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_SIGACTION 1" >>confdefs.h curl_cv_func_sigaction="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_sigaction="no" fi # tst_links_siginterrupt="unknown" tst_proto_siginterrupt="unknown" tst_compi_siginterrupt="unknown" tst_allow_siginterrupt="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if siginterrupt can be linked" >&5 printf %s "checking if siginterrupt can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define siginterrupt innocuous_siginterrupt #ifdef __STDC__ # include #else # include #endif #undef siginterrupt #ifdef __cplusplus extern "C" #endif char siginterrupt (); #if defined __stub_siginterrupt || defined __stub___siginterrupt #error force compilation error #endif int main(void) { return siginterrupt (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_siginterrupt="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_siginterrupt="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_siginterrupt" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if siginterrupt is prototyped" >&5 printf %s "checking if siginterrupt is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_signal _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "siginterrupt" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_siginterrupt="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_siginterrupt="no" fi rm -rf conftest* fi # if test "$tst_proto_siginterrupt" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if siginterrupt is compilable" >&5 printf %s "checking if siginterrupt is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_signal int main(void) { if(0 != siginterrupt(0, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_siginterrupt="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_siginterrupt="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_siginterrupt" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if siginterrupt usage allowed" >&5 printf %s "checking if siginterrupt usage allowed... " >&6; } if test "x$curl_disallow_siginterrupt" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_siginterrupt="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_siginterrupt="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if siginterrupt might be used" >&5 printf %s "checking if siginterrupt might be used... " >&6; } if test "$tst_links_siginterrupt" = "yes" && test "$tst_proto_siginterrupt" = "yes" && test "$tst_compi_siginterrupt" = "yes" && test "$tst_allow_siginterrupt" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_SIGINTERRUPT 1" >>confdefs.h curl_cv_func_siginterrupt="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_siginterrupt="no" fi # tst_links_signal="unknown" tst_proto_signal="unknown" tst_compi_signal="unknown" tst_allow_signal="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if signal can be linked" >&5 printf %s "checking if signal can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define signal innocuous_signal #ifdef __STDC__ # include #else # include #endif #undef signal #ifdef __cplusplus extern "C" #endif char signal (); #if defined __stub_signal || defined __stub___signal #error force compilation error #endif int main(void) { return signal (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_signal="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_signal="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_signal" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if signal is prototyped" >&5 printf %s "checking if signal is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_signal _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "signal" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_signal="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_signal="no" fi rm -rf conftest* fi # if test "$tst_proto_signal" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if signal is compilable" >&5 printf %s "checking if signal is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_signal int main(void) { if(0 != signal(0, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_signal="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_signal="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_signal" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if signal usage allowed" >&5 printf %s "checking if signal usage allowed... " >&6; } if test "x$curl_disallow_signal" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_signal="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_signal="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if signal might be used" >&5 printf %s "checking if signal might be used... " >&6; } if test "$tst_links_signal" = "yes" && test "$tst_proto_signal" = "yes" && test "$tst_compi_signal" = "yes" && test "$tst_allow_signal" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_SIGNAL 1" >>confdefs.h curl_cv_func_signal="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_signal="no" fi curl_includes_setjmp="\ /* includes start */ #ifdef HAVE_SYS_TYPES_H # include #endif #include /* includes end */" ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_setjmp " if test "x$ac_cv_header_sys_types_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h fi # tst_links_sigsetjmp="unknown" tst_macro_sigsetjmp="unknown" tst_proto_sigsetjmp="unknown" tst_compi_sigsetjmp="unknown" tst_allow_sigsetjmp="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sigsetjmp can be linked" >&5 printf %s "checking if sigsetjmp can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define sigsetjmp innocuous_sigsetjmp #ifdef __STDC__ # include #else # include #endif #undef sigsetjmp #ifdef __cplusplus extern "C" #endif char sigsetjmp (); #if defined __stub_sigsetjmp || defined __stub___sigsetjmp #error force compilation error #endif int main(void) { return sigsetjmp (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_sigsetjmp="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_sigsetjmp="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_sigsetjmp" = "no"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sigsetjmp seems a macro" >&5 printf %s "checking if sigsetjmp seems a macro... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_setjmp int main(void) { sigjmp_buf env; if(0 != sigsetjmp(env, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_macro_sigsetjmp="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_macro_sigsetjmp="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi # if test "$tst_links_sigsetjmp" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sigsetjmp is prototyped" >&5 printf %s "checking if sigsetjmp is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_setjmp _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "sigsetjmp" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_sigsetjmp="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_sigsetjmp="no" fi rm -rf conftest* fi # if test "$tst_proto_sigsetjmp" = "yes" || test "$tst_macro_sigsetjmp" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sigsetjmp is compilable" >&5 printf %s "checking if sigsetjmp is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_setjmp int main(void) { sigjmp_buf env; if(0 != sigsetjmp(env, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_sigsetjmp="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_sigsetjmp="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_sigsetjmp" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sigsetjmp usage allowed" >&5 printf %s "checking if sigsetjmp usage allowed... " >&6; } if test "x$curl_disallow_sigsetjmp" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_sigsetjmp="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_sigsetjmp="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sigsetjmp might be used" >&5 printf %s "checking if sigsetjmp might be used... " >&6; } if (test "$tst_proto_sigsetjmp" = "yes" || test "$tst_macro_sigsetjmp" = "yes") && test "$tst_compi_sigsetjmp" = "yes" && test "$tst_allow_sigsetjmp" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_SIGSETJMP 1" >>confdefs.h curl_cv_func_sigsetjmp="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_sigsetjmp="no" fi # tst_links_socket="unknown" tst_proto_socket="unknown" tst_compi_socket="unknown" tst_allow_socket="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if socket can be linked" >&5 printf %s "checking if socket can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_winsock2 $curl_includes_bsdsocket $curl_includes_sys_socket int main(void) { if(0 != socket(0, 0, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_socket="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_socket="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_socket" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if socket is prototyped" >&5 printf %s "checking if socket is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_winsock2 $curl_includes_bsdsocket $curl_includes_sys_socket _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "socket" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_socket="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_socket="no" fi rm -rf conftest* fi # if test "$tst_proto_socket" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if socket is compilable" >&5 printf %s "checking if socket is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_winsock2 $curl_includes_bsdsocket $curl_includes_sys_socket int main(void) { if(0 != socket(0, 0, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_socket="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_socket="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_socket" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if socket usage allowed" >&5 printf %s "checking if socket usage allowed... " >&6; } if test "x$curl_disallow_socket" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_socket="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_socket="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if socket might be used" >&5 printf %s "checking if socket might be used... " >&6; } if test "$tst_links_socket" = "yes" && test "$tst_proto_socket" = "yes" && test "$tst_compi_socket" = "yes" && test "$tst_allow_socket" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_SOCKET 1" >>confdefs.h curl_cv_func_socket="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_socket="no" fi # tst_links_socketpair="unknown" tst_proto_socketpair="unknown" tst_compi_socketpair="unknown" tst_allow_socketpair="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if socketpair can be linked" >&5 printf %s "checking if socketpair can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define socketpair innocuous_socketpair #ifdef __STDC__ # include #else # include #endif #undef socketpair #ifdef __cplusplus extern "C" #endif char socketpair (); #if defined __stub_socketpair || defined __stub___socketpair #error force compilation error #endif int main(void) { return socketpair (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_socketpair="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_socketpair="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_socketpair" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if socketpair is prototyped" >&5 printf %s "checking if socketpair is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_sys_socket _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "socketpair" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_socketpair="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_socketpair="no" fi rm -rf conftest* fi # if test "$tst_proto_socketpair" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if socketpair is compilable" >&5 printf %s "checking if socketpair is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_sys_socket int main(void) { int sv[2]; if(0 != socketpair(0, 0, 0, sv)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_socketpair="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_socketpair="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_socketpair" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if socketpair usage allowed" >&5 printf %s "checking if socketpair usage allowed... " >&6; } if test "x$curl_disallow_socketpair" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_socketpair="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_socketpair="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if socketpair might be used" >&5 printf %s "checking if socketpair might be used... " >&6; } if test "$tst_links_socketpair" = "yes" && test "$tst_proto_socketpair" = "yes" && test "$tst_compi_socketpair" = "yes" && test "$tst_allow_socketpair" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_SOCKETPAIR 1" >>confdefs.h curl_cv_func_socketpair="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_socketpair="no" fi # tst_links_strdup="unknown" tst_proto_strdup="unknown" tst_compi_strdup="unknown" tst_allow_strdup="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strdup can be linked" >&5 printf %s "checking if strdup can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define strdup innocuous_strdup #ifdef __STDC__ # include #else # include #endif #undef strdup #ifdef __cplusplus extern "C" #endif char strdup (); #if defined __stub_strdup || defined __stub___strdup #error force compilation error #endif int main(void) { return strdup (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_strdup="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_strdup="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_strdup" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strdup is prototyped" >&5 printf %s "checking if strdup is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_string _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "strdup" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_strdup="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_strdup="no" fi rm -rf conftest* fi # if test "$tst_proto_strdup" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strdup is compilable" >&5 printf %s "checking if strdup is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_string $curl_includes_stdlib int main(void) { free(strdup("")); return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_strdup="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_strdup="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_strdup" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strdup usage allowed" >&5 printf %s "checking if strdup usage allowed... " >&6; } if test "x$curl_disallow_strdup" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_strdup="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_strdup="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strdup might be used" >&5 printf %s "checking if strdup might be used... " >&6; } if test "$tst_links_strdup" = "yes" && test "$tst_proto_strdup" = "yes" && test "$tst_compi_strdup" = "yes" && test "$tst_allow_strdup" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_STRDUP 1" >>confdefs.h curl_cv_func_strdup="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_strdup="no" fi # tst_links_strerror_r="unknown" tst_proto_strerror_r="unknown" tst_compi_strerror_r="unknown" tst_glibc_strerror_r="unknown" tst_posix_strerror_r="unknown" tst_allow_strerror_r="unknown" tst_works_glibc_strerror_r="unknown" tst_works_posix_strerror_r="unknown" tst_glibc_strerror_r_type_arg3="unknown" tst_posix_strerror_r_type_arg3="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strerror_r can be linked" >&5 printf %s "checking if strerror_r can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define strerror_r innocuous_strerror_r #ifdef __STDC__ # include #else # include #endif #undef strerror_r #ifdef __cplusplus extern "C" #endif char strerror_r (); #if defined __stub_strerror_r || defined __stub___strerror_r #error force compilation error #endif int main(void) { return strerror_r (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_strerror_r="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_strerror_r="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_strerror_r" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strerror_r is prototyped" >&5 printf %s "checking if strerror_r is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_string _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "strerror_r" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_strerror_r="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_strerror_r="no" fi rm -rf conftest* fi # if test "$tst_proto_strerror_r" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strerror_r is compilable" >&5 printf %s "checking if strerror_r is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_string int main(void) { char s[1]; if(0 != strerror_r(0, s, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_strerror_r="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_strerror_r="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_strerror_r" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strerror_r is glibc like" >&5 printf %s "checking if strerror_r is glibc like... " >&6; } tst_glibc_strerror_r_type_arg3="unknown" for arg3 in 'size_t' 'int' 'unsigned int'; do if test "$tst_glibc_strerror_r_type_arg3" = "unknown"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_string char *strerror_r(int errnum, char *workbuf, $arg3 bufsize); int main(void) { char s[1]; if(0 != strerror_r(0, s, 0)) return 1; (void)s; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : tst_glibc_strerror_r_type_arg3="$arg3" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi done case "$tst_glibc_strerror_r_type_arg3" in unknown) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_glibc_strerror_r="no" ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_glibc_strerror_r="yes" ;; esac fi # if test "x$cross_compiling" != "xyes" && test "$tst_glibc_strerror_r" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strerror_r seems to work" >&5 printf %s "checking if strerror_r seems to work... " >&6; } if test "$curl_cv_apple" = 'yes'; then if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_stdlib $curl_includes_string #include int main(void) { char buffer[1024]; char *string = 0; buffer[0] = '\0'; string = strerror_r(EACCES, buffer, sizeof(buffer)); if(!string) return 1; /* fail */ if(!string[0]) return 1; /* fail */ else return 0; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_works_glibc_strerror_r="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_works_glibc_strerror_r="no" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else oldcc=$CC old=$LD_LIBRARY_PATH CC="sh ./run-compiler" LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old export LD_LIBRARY_PATH if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_stdlib $curl_includes_string #include int main(void) { char buffer[1024]; char *string = 0; buffer[0] = '\0'; string = strerror_r(EACCES, buffer, sizeof(buffer)); if(!string) return 1; /* fail */ if(!string[0]) return 1; /* fail */ else return 0; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_works_glibc_strerror_r="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_works_glibc_strerror_r="no" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi LD_LIBRARY_PATH=$old # restore CC=$oldcc fi fi # if test "$tst_compi_strerror_r" = "yes" && test "$tst_works_glibc_strerror_r" != "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strerror_r is POSIX like" >&5 printf %s "checking if strerror_r is POSIX like... " >&6; } tst_posix_strerror_r_type_arg3="unknown" for arg3 in 'size_t' 'int' 'unsigned int'; do if test "$tst_posix_strerror_r_type_arg3" = "unknown"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_string int strerror_r(int errnum, char *resultbuf, $arg3 bufsize); int main(void) { char s[1]; if(0 != strerror_r(0, s, 0)) return 1; (void)s; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : tst_posix_strerror_r_type_arg3="$arg3" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi done case "$tst_posix_strerror_r_type_arg3" in unknown) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_posix_strerror_r="no" ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_posix_strerror_r="yes" ;; esac fi # if test "x$cross_compiling" != "xyes" && test "$tst_posix_strerror_r" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strerror_r seems to work" >&5 printf %s "checking if strerror_r seems to work... " >&6; } if test "$curl_cv_apple" = 'yes'; then if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_stdlib $curl_includes_string #include int main(void) { char buffer[1024]; int error = 1; buffer[0] = '\0'; error = strerror_r(EACCES, buffer, sizeof(buffer)); if(error) return 1; /* fail */ if(buffer[0] == '\0') return 1; /* fail */ else return 0; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_works_posix_strerror_r="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_works_posix_strerror_r="no" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else oldcc=$CC old=$LD_LIBRARY_PATH CC="sh ./run-compiler" LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old export LD_LIBRARY_PATH if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_stdlib $curl_includes_string #include int main(void) { char buffer[1024]; int error = 1; buffer[0] = '\0'; error = strerror_r(EACCES, buffer, sizeof(buffer)); if(error) return 1; /* fail */ if(buffer[0] == '\0') return 1; /* fail */ else return 0; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_works_posix_strerror_r="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_works_posix_strerror_r="no" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi LD_LIBRARY_PATH=$old # restore CC=$oldcc fi fi # if test "$tst_works_glibc_strerror_r" = "yes"; then tst_posix_strerror_r="no" fi if test "$tst_works_posix_strerror_r" = "yes"; then tst_glibc_strerror_r="no" fi if test "$tst_glibc_strerror_r" = "yes" && test "$tst_works_glibc_strerror_r" != "no" && test "$tst_posix_strerror_r" != "yes"; then tst_allow_strerror_r="check" fi if test "$tst_posix_strerror_r" = "yes" && test "$tst_works_posix_strerror_r" != "no" && test "$tst_glibc_strerror_r" != "yes"; then tst_allow_strerror_r="check" fi if test "$tst_allow_strerror_r" = "check"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strerror_r usage allowed" >&5 printf %s "checking if strerror_r usage allowed... " >&6; } if test "x$curl_disallow_strerror_r" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_strerror_r="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_strerror_r="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strerror_r might be used" >&5 printf %s "checking if strerror_r might be used... " >&6; } if test "$tst_links_strerror_r" = "yes" && test "$tst_proto_strerror_r" = "yes" && test "$tst_compi_strerror_r" = "yes" && test "$tst_allow_strerror_r" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } if test "$tst_glibc_strerror_r" = "yes"; then printf "%s\n" "#define HAVE_STRERROR_R 1" >>confdefs.h printf "%s\n" "#define HAVE_GLIBC_STRERROR_R 1" >>confdefs.h fi if test "$tst_posix_strerror_r" = "yes"; then printf "%s\n" "#define HAVE_STRERROR_R 1" >>confdefs.h printf "%s\n" "#define HAVE_POSIX_STRERROR_R 1" >>confdefs.h fi curl_cv_func_strerror_r="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_strerror_r="no" fi # if test "$tst_compi_strerror_r" = "yes" && test "$tst_allow_strerror_r" = "unknown"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine strerror_r() style: edit lib/curl_config.h manually." >&5 printf "%s\n" "$as_me: WARNING: cannot determine strerror_r() style: edit lib/curl_config.h manually." >&2;} fi # case $host in *msdosdjgpp) ac_cv_func_pipe=no skipcheck_pipe=yes { printf "%s\n" "$as_me:${as_lineno-$LINENO}: skip check for pipe on msdosdjgpp" >&5 printf "%s\n" "$as_me: skip check for pipe on msdosdjgpp" >&6;} ;; esac ac_fn_c_check_func "$LINENO" "accept4" "ac_cv_func_accept4" if test "x$ac_cv_func_accept4" = xyes then : printf "%s\n" "#define HAVE_ACCEPT4 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "eventfd" "ac_cv_func_eventfd" if test "x$ac_cv_func_eventfd" = xyes then : printf "%s\n" "#define HAVE_EVENTFD 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "fnmatch" "ac_cv_func_fnmatch" if test "x$ac_cv_func_fnmatch" = xyes then : printf "%s\n" "#define HAVE_FNMATCH 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "geteuid" "ac_cv_func_geteuid" if test "x$ac_cv_func_geteuid" = xyes then : printf "%s\n" "#define HAVE_GETEUID 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getpass_r" "ac_cv_func_getpass_r" if test "x$ac_cv_func_getpass_r" = xyes then : printf "%s\n" "#define HAVE_GETPASS_R 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getppid" "ac_cv_func_getppid" if test "x$ac_cv_func_getppid" = xyes then : printf "%s\n" "#define HAVE_GETPPID 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getpwuid" "ac_cv_func_getpwuid" if test "x$ac_cv_func_getpwuid" = xyes then : printf "%s\n" "#define HAVE_GETPWUID 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getpwuid_r" "ac_cv_func_getpwuid_r" if test "x$ac_cv_func_getpwuid_r" = xyes then : printf "%s\n" "#define HAVE_GETPWUID_R 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit" if test "x$ac_cv_func_getrlimit" = xyes then : printf "%s\n" "#define HAVE_GETRLIMIT 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday" if test "x$ac_cv_func_gettimeofday" = xyes then : printf "%s\n" "#define HAVE_GETTIMEOFDAY 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mach_absolute_time" "ac_cv_func_mach_absolute_time" if test "x$ac_cv_func_mach_absolute_time" = xyes then : printf "%s\n" "#define HAVE_MACH_ABSOLUTE_TIME 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "pipe" "ac_cv_func_pipe" if test "x$ac_cv_func_pipe" = xyes then : printf "%s\n" "#define HAVE_PIPE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "pipe2" "ac_cv_func_pipe2" if test "x$ac_cv_func_pipe2" = xyes then : printf "%s\n" "#define HAVE_PIPE2 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "poll" "ac_cv_func_poll" if test "x$ac_cv_func_poll" = xyes then : printf "%s\n" "#define HAVE_POLL 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "sendmmsg" "ac_cv_func_sendmmsg" if test "x$ac_cv_func_sendmmsg" = xyes then : printf "%s\n" "#define HAVE_SENDMMSG 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "sendmsg" "ac_cv_func_sendmsg" if test "x$ac_cv_func_sendmsg" = xyes then : printf "%s\n" "#define HAVE_SENDMSG 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale" if test "x$ac_cv_func_setlocale" = xyes then : printf "%s\n" "#define HAVE_SETLOCALE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "setrlimit" "ac_cv_func_setrlimit" if test "x$ac_cv_func_setrlimit" = xyes then : printf "%s\n" "#define HAVE_SETRLIMIT 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf" if test "x$ac_cv_func_snprintf" = xyes then : printf "%s\n" "#define HAVE_SNPRINTF 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "utime" "ac_cv_func_utime" if test "x$ac_cv_func_utime" = xyes then : printf "%s\n" "#define HAVE_UTIME 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "utimes" "ac_cv_func_utimes" if test "x$ac_cv_func_utimes" = xyes then : printf "%s\n" "#define HAVE_UTIMES 1" >>confdefs.h fi if test "$curl_cv_native_windows" != 'yes'; then ac_fn_c_check_func "$LINENO" "if_nametoindex" "ac_cv_func_if_nametoindex" if test "x$ac_cv_func_if_nametoindex" = xyes then : printf "%s\n" "#define HAVE_IF_NAMETOINDEX 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "realpath" "ac_cv_func_realpath" if test "x$ac_cv_func_realpath" = xyes then : printf "%s\n" "#define HAVE_REALPATH 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "sched_yield" "ac_cv_func_sched_yield" if test "x$ac_cv_func_sched_yield" = xyes then : printf "%s\n" "#define HAVE_SCHED_YIELD 1" >>confdefs.h fi curl_includes_arpa_inet="\ /* includes start */ #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_SOCKET_H # include #endif #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_ARPA_INET_H # include #endif #ifdef _WIN32 #include #include #endif /* includes end */" ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_arpa_inet " if test "x$ac_cv_header_sys_types_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$curl_includes_arpa_inet " if test "x$ac_cv_header_sys_socket_h" = xyes then : printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "netinet/in.h" "ac_cv_header_netinet_in_h" "$curl_includes_arpa_inet " if test "x$ac_cv_header_netinet_in_h" = xyes then : printf "%s\n" "#define HAVE_NETINET_IN_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "arpa/inet.h" "ac_cv_header_arpa_inet_h" "$curl_includes_arpa_inet " if test "x$ac_cv_header_arpa_inet_h" = xyes then : printf "%s\n" "#define HAVE_ARPA_INET_H 1" >>confdefs.h fi # tst_links_inet_ntop="unknown" tst_proto_inet_ntop="unknown" tst_compi_inet_ntop="unknown" tst_works_inet_ntop="unknown" tst_allow_inet_ntop="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_ntop can be linked" >&5 printf %s "checking if inet_ntop can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define inet_ntop innocuous_inet_ntop #ifdef __STDC__ # include #else # include #endif #undef inet_ntop #ifdef __cplusplus extern "C" #endif char inet_ntop (); #if defined __stub_inet_ntop || defined __stub___inet_ntop #error force compilation error #endif int main(void) { return inet_ntop (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_inet_ntop="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_inet_ntop="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_inet_ntop" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_ntop is prototyped" >&5 printf %s "checking if inet_ntop is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_arpa_inet _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "inet_ntop" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_inet_ntop="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_inet_ntop="no" fi rm -rf conftest* fi # if test "$tst_proto_inet_ntop" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_ntop is compilable" >&5 printf %s "checking if inet_ntop is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_arpa_inet int main(void) { char ipv4res[sizeof("255.255.255.255")]; unsigned char ipv4a[5] = ""; if(0 != inet_ntop(0, ipv4a, ipv4res, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_inet_ntop="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_inet_ntop="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "x$cross_compiling" != "xyes" && test "$tst_compi_inet_ntop" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_ntop seems to work" >&5 printf %s "checking if inet_ntop seems to work... " >&6; } if test "$curl_cv_apple" = 'yes'; then if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_stdlib $curl_includes_arpa_inet $curl_includes_string int main(void) { char ipv6res[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")]; char ipv4res[sizeof("255.255.255.255")]; unsigned char ipv6a[26]; unsigned char ipv4a[5]; const char *ipv6ptr = 0; const char *ipv4ptr = 0; /* - */ ipv4res[0] = '\0'; ipv4a[0] = 0xc0; ipv4a[1] = 0xa8; ipv4a[2] = 0x64; ipv4a[3] = 0x01; ipv4a[4] = 0x01; /* - */ ipv4ptr = inet_ntop(AF_INET, ipv4a, ipv4res, sizeof(ipv4res)); if(!ipv4ptr) return 1; /* fail */ if(ipv4ptr != ipv4res) return 1; /* fail */ if(!ipv4ptr[0]) return 1; /* fail */ if(memcmp(ipv4res, "192.168.100.1", 13) != 0) return 1; /* fail */ /* - */ ipv6res[0] = '\0'; memset(ipv6a, 0, sizeof(ipv6a)); ipv6a[0] = 0xfe; ipv6a[1] = 0x80; ipv6a[8] = 0x02; ipv6a[9] = 0x14; ipv6a[10] = 0x4f; ipv6a[11] = 0xff; ipv6a[12] = 0xfe; ipv6a[13] = 0x0b; ipv6a[14] = 0x76; ipv6a[15] = 0xc8; ipv6a[25] = 0x01; /* - */ ipv6ptr = inet_ntop(AF_INET6, ipv6a, ipv6res, sizeof(ipv6res)); if(!ipv6ptr) return 1; /* fail */ if(ipv6ptr != ipv6res) return 1; /* fail */ if(!ipv6ptr[0]) return 1; /* fail */ if(memcmp(ipv6res, "fe80::214:4fff:fe0b:76c8", 24) != 0) return 1; /* fail */ /* - */ return 0; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_works_inet_ntop="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_works_inet_ntop="no" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else oldcc=$CC old=$LD_LIBRARY_PATH CC="sh ./run-compiler" LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old export LD_LIBRARY_PATH if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_stdlib $curl_includes_arpa_inet $curl_includes_string int main(void) { char ipv6res[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")]; char ipv4res[sizeof("255.255.255.255")]; unsigned char ipv6a[26]; unsigned char ipv4a[5]; const char *ipv6ptr = 0; const char *ipv4ptr = 0; /* - */ ipv4res[0] = '\0'; ipv4a[0] = 0xc0; ipv4a[1] = 0xa8; ipv4a[2] = 0x64; ipv4a[3] = 0x01; ipv4a[4] = 0x01; /* - */ ipv4ptr = inet_ntop(AF_INET, ipv4a, ipv4res, sizeof(ipv4res)); if(!ipv4ptr) return 1; /* fail */ if(ipv4ptr != ipv4res) return 1; /* fail */ if(!ipv4ptr[0]) return 1; /* fail */ if(memcmp(ipv4res, "192.168.100.1", 13) != 0) return 1; /* fail */ /* - */ ipv6res[0] = '\0'; memset(ipv6a, 0, sizeof(ipv6a)); ipv6a[0] = 0xfe; ipv6a[1] = 0x80; ipv6a[8] = 0x02; ipv6a[9] = 0x14; ipv6a[10] = 0x4f; ipv6a[11] = 0xff; ipv6a[12] = 0xfe; ipv6a[13] = 0x0b; ipv6a[14] = 0x76; ipv6a[15] = 0xc8; ipv6a[25] = 0x01; /* - */ ipv6ptr = inet_ntop(AF_INET6, ipv6a, ipv6res, sizeof(ipv6res)); if(!ipv6ptr) return 1; /* fail */ if(ipv6ptr != ipv6res) return 1; /* fail */ if(!ipv6ptr[0]) return 1; /* fail */ if(memcmp(ipv6res, "fe80::214:4fff:fe0b:76c8", 24) != 0) return 1; /* fail */ /* - */ return 0; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_works_inet_ntop="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_works_inet_ntop="no" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi LD_LIBRARY_PATH=$old # restore CC=$oldcc fi fi # if test "$tst_compi_inet_ntop" = "yes" && test "$tst_works_inet_ntop" != "no"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_ntop usage allowed" >&5 printf %s "checking if inet_ntop usage allowed... " >&6; } if test "x$curl_disallow_inet_ntop" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_inet_ntop="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_inet_ntop="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_ntop might be used" >&5 printf %s "checking if inet_ntop might be used... " >&6; } if test "$tst_links_inet_ntop" = "yes" && test "$tst_proto_inet_ntop" = "yes" && test "$tst_compi_inet_ntop" = "yes" && test "$tst_allow_inet_ntop" = "yes" && test "$tst_works_inet_ntop" != "no"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_INET_NTOP 1" >>confdefs.h curl_cv_func_inet_ntop="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_inet_ntop="no" fi # tst_links_inet_pton="unknown" tst_proto_inet_pton="unknown" tst_compi_inet_pton="unknown" tst_works_inet_pton="unknown" tst_allow_inet_pton="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_pton can be linked" >&5 printf %s "checking if inet_pton can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define inet_pton innocuous_inet_pton #ifdef __STDC__ # include #else # include #endif #undef inet_pton #ifdef __cplusplus extern "C" #endif char inet_pton (); #if defined __stub_inet_pton || defined __stub___inet_pton #error force compilation error #endif int main(void) { return inet_pton (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_inet_pton="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_inet_pton="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_inet_pton" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_pton is prototyped" >&5 printf %s "checking if inet_pton is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_arpa_inet _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "inet_pton" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_inet_pton="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_inet_pton="no" fi rm -rf conftest* fi # if test "$tst_proto_inet_pton" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_pton is compilable" >&5 printf %s "checking if inet_pton is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_arpa_inet int main(void) { unsigned char ipv4a[4+1] = ""; const char *ipv4src = "192.168.100.1"; if(0 != inet_pton(0, ipv4src, ipv4a)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_inet_pton="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_inet_pton="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "x$cross_compiling" != "xyes" && test "$tst_compi_inet_pton" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_pton seems to work" >&5 printf %s "checking if inet_pton seems to work... " >&6; } if test "$curl_cv_apple" = 'yes'; then if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_stdlib $curl_includes_arpa_inet $curl_includes_string int main(void) { unsigned char ipv6a[16+1]; unsigned char ipv4a[4+1]; const char *ipv6src = "fe80::214:4fff:fe0b:76c8"; const char *ipv4src = "192.168.100.1"; /* - */ memset(ipv4a, 1, sizeof(ipv4a)); if(1 != inet_pton(AF_INET, ipv4src, ipv4a)) return 1; /* fail */ /* - */ if( (ipv4a[0] != 0xc0) || (ipv4a[1] != 0xa8) || (ipv4a[2] != 0x64) || (ipv4a[3] != 0x01) || (ipv4a[4] != 0x01) ) return 1; /* fail */ /* - */ memset(ipv6a, 1, sizeof(ipv6a)); if(1 != inet_pton(AF_INET6, ipv6src, ipv6a)) return 1; /* fail */ /* - */ if( (ipv6a[0] != 0xfe) || (ipv6a[1] != 0x80) || (ipv6a[8] != 0x02) || (ipv6a[9] != 0x14) || (ipv6a[10] != 0x4f) || (ipv6a[11] != 0xff) || (ipv6a[12] != 0xfe) || (ipv6a[13] != 0x0b) || (ipv6a[14] != 0x76) || (ipv6a[15] != 0xc8) || (ipv6a[16] != 0x01) ) return 1; /* fail */ /* - */ if( (ipv6a[2] != 0x0) || (ipv6a[3] != 0x0) || (ipv6a[4] != 0x0) || (ipv6a[5] != 0x0) || (ipv6a[6] != 0x0) || (ipv6a[7] != 0x0) ) return 1; /* fail */ /* - */ return 0; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_works_inet_pton="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_works_inet_pton="no" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else oldcc=$CC old=$LD_LIBRARY_PATH CC="sh ./run-compiler" LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old export LD_LIBRARY_PATH if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_stdlib $curl_includes_arpa_inet $curl_includes_string int main(void) { unsigned char ipv6a[16+1]; unsigned char ipv4a[4+1]; const char *ipv6src = "fe80::214:4fff:fe0b:76c8"; const char *ipv4src = "192.168.100.1"; /* - */ memset(ipv4a, 1, sizeof(ipv4a)); if(1 != inet_pton(AF_INET, ipv4src, ipv4a)) return 1; /* fail */ /* - */ if( (ipv4a[0] != 0xc0) || (ipv4a[1] != 0xa8) || (ipv4a[2] != 0x64) || (ipv4a[3] != 0x01) || (ipv4a[4] != 0x01) ) return 1; /* fail */ /* - */ memset(ipv6a, 1, sizeof(ipv6a)); if(1 != inet_pton(AF_INET6, ipv6src, ipv6a)) return 1; /* fail */ /* - */ if( (ipv6a[0] != 0xfe) || (ipv6a[1] != 0x80) || (ipv6a[8] != 0x02) || (ipv6a[9] != 0x14) || (ipv6a[10] != 0x4f) || (ipv6a[11] != 0xff) || (ipv6a[12] != 0xfe) || (ipv6a[13] != 0x0b) || (ipv6a[14] != 0x76) || (ipv6a[15] != 0xc8) || (ipv6a[16] != 0x01) ) return 1; /* fail */ /* - */ if( (ipv6a[2] != 0x0) || (ipv6a[3] != 0x0) || (ipv6a[4] != 0x0) || (ipv6a[5] != 0x0) || (ipv6a[6] != 0x0) || (ipv6a[7] != 0x0) ) return 1; /* fail */ /* - */ return 0; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_works_inet_pton="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_works_inet_pton="no" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi LD_LIBRARY_PATH=$old # restore CC=$oldcc fi fi # if test "$tst_compi_inet_pton" = "yes" && test "$tst_works_inet_pton" != "no"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_pton usage allowed" >&5 printf %s "checking if inet_pton usage allowed... " >&6; } if test "x$curl_disallow_inet_pton" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_inet_pton="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_inet_pton="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_pton might be used" >&5 printf %s "checking if inet_pton might be used... " >&6; } if test "$tst_links_inet_pton" = "yes" && test "$tst_proto_inet_pton" = "yes" && test "$tst_compi_inet_pton" = "yes" && test "$tst_allow_inet_pton" = "yes" && test "$tst_works_inet_pton" != "no"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_INET_PTON 1" >>confdefs.h curl_cv_func_inet_pton="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_inet_pton="no" fi # tst_links_strcasecmp="unknown" tst_proto_strcasecmp="unknown" tst_compi_strcasecmp="unknown" tst_allow_strcasecmp="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strcasecmp can be linked" >&5 printf %s "checking if strcasecmp can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define strcasecmp innocuous_strcasecmp #ifdef __STDC__ # include #else # include #endif #undef strcasecmp #ifdef __cplusplus extern "C" #endif char strcasecmp (); #if defined __stub_strcasecmp || defined __stub___strcasecmp #error force compilation error #endif int main(void) { return strcasecmp (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_strcasecmp="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_strcasecmp="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_strcasecmp" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strcasecmp is prototyped" >&5 printf %s "checking if strcasecmp is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_string _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "strcasecmp" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_strcasecmp="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_strcasecmp="no" fi rm -rf conftest* fi # if test "$tst_proto_strcasecmp" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strcasecmp is compilable" >&5 printf %s "checking if strcasecmp is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_string int main(void) { if(0 != strcasecmp("", "")) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_strcasecmp="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_strcasecmp="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_strcasecmp" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strcasecmp usage allowed" >&5 printf %s "checking if strcasecmp usage allowed... " >&6; } if test "x$curl_disallow_strcasecmp" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_strcasecmp="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_strcasecmp="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strcasecmp might be used" >&5 printf %s "checking if strcasecmp might be used... " >&6; } if test "$tst_links_strcasecmp" = "yes" && test "$tst_proto_strcasecmp" = "yes" && test "$tst_compi_strcasecmp" = "yes" && test "$tst_allow_strcasecmp" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_STRCASECMP 1" >>confdefs.h curl_cv_func_strcasecmp="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_strcasecmp="no" fi # tst_links_strcmpi="unknown" tst_proto_strcmpi="unknown" tst_compi_strcmpi="unknown" tst_allow_strcmpi="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strcmpi can be linked" >&5 printf %s "checking if strcmpi can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define strcmpi innocuous_strcmpi #ifdef __STDC__ # include #else # include #endif #undef strcmpi #ifdef __cplusplus extern "C" #endif char strcmpi (); #if defined __stub_strcmpi || defined __stub___strcmpi #error force compilation error #endif int main(void) { return strcmpi (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_strcmpi="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_strcmpi="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_strcmpi" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strcmpi is prototyped" >&5 printf %s "checking if strcmpi is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_string _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "strcmpi" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_strcmpi="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_strcmpi="no" fi rm -rf conftest* fi # if test "$tst_proto_strcmpi" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strcmpi is compilable" >&5 printf %s "checking if strcmpi is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_string int main(void) { if(0 != strcmpi(0, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_strcmpi="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_strcmpi="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_strcmpi" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strcmpi usage allowed" >&5 printf %s "checking if strcmpi usage allowed... " >&6; } if test "x$curl_disallow_strcmpi" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_strcmpi="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_strcmpi="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strcmpi might be used" >&5 printf %s "checking if strcmpi might be used... " >&6; } if test "$tst_links_strcmpi" = "yes" && test "$tst_proto_strcmpi" = "yes" && test "$tst_compi_strcmpi" = "yes" && test "$tst_allow_strcmpi" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_STRCMPI 1" >>confdefs.h curl_cv_func_strcmpi="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_strcmpi="no" fi # tst_links_stricmp="unknown" tst_proto_stricmp="unknown" tst_compi_stricmp="unknown" tst_allow_stricmp="unknown" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if stricmp can be linked" >&5 printf %s "checking if stricmp can be linked... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define stricmp innocuous_stricmp #ifdef __STDC__ # include #else # include #endif #undef stricmp #ifdef __cplusplus extern "C" #endif char stricmp (); #if defined __stub_stricmp || defined __stub___stricmp #error force compilation error #endif int main(void) { return stricmp (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_links_stricmp="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_links_stricmp="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_stricmp" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if stricmp is prototyped" >&5 printf %s "checking if stricmp is prototyped... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_string _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "stricmp" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_proto_stricmp="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_proto_stricmp="no" fi rm -rf conftest* fi # if test "$tst_proto_stricmp" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if stricmp is compilable" >&5 printf %s "checking if stricmp is compilable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $curl_includes_string int main(void) { if(0 != stricmp(0, 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_compi_stricmp="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_compi_stricmp="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi # if test "$tst_compi_stricmp" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if stricmp usage allowed" >&5 printf %s "checking if stricmp usage allowed... " >&6; } if test "x$curl_disallow_stricmp" != "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tst_allow_stricmp="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } tst_allow_stricmp="no" fi fi # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if stricmp might be used" >&5 printf %s "checking if stricmp might be used... " >&6; } if test "$tst_links_stricmp" = "yes" && test "$tst_proto_stricmp" = "yes" && test "$tst_compi_stricmp" = "yes" && test "$tst_allow_stricmp" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAVE_STRICMP 1" >>confdefs.h curl_cv_func_stricmp="yes" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_cv_func_stricmp="no" fi fi if test "$curl_cv_wince" = 'no'; then ac_fn_c_check_func "$LINENO" "setmode" "ac_cv_func_setmode" if test "x$ac_cv_func_setmode" = xyes then : printf "%s\n" "#define HAVE_SETMODE 1" >>confdefs.h fi if test "$curl_cv_native_windows" = 'yes' -o "$curl_cv_cygwin" = 'yes'; then ac_fn_c_check_func "$LINENO" "_setmode" "ac_cv_func__setmode" if test "x$ac_cv_func__setmode" = xyes then : printf "%s\n" "#define HAVE__SETMODE 1" >>confdefs.h fi fi fi if test -z "$ssl_backends"; then ac_fn_c_check_func "$LINENO" "arc4random" "ac_cv_func_arc4random" if test "x$ac_cv_func_arc4random" = xyes then : printf "%s\n" "#define HAVE_ARC4RANDOM 1" >>confdefs.h fi fi if test "$curl_cv_native_windows" != 'yes'; then ac_fn_c_check_func "$LINENO" "fseeko" "ac_cv_func_fseeko" if test "x$ac_cv_func_fseeko" = xyes then : printf "%s\n" "#define HAVE_FSEEKO 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5 printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; } if test ${ac_cv_c_undeclared_builtin_options+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_CFLAGS=$CFLAGS ac_cv_c_undeclared_builtin_options='cannot detect' for ac_arg in '' -fno-builtin; do CFLAGS="$ac_save_CFLAGS $ac_arg" # This test program should *not* compile successfully. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void) { (void) strchr; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop # This test program should compile successfully. # No library function is consistently available on # freestanding implementations, so test against a dummy # declaration. Include always-available headers on the # off chance that they somehow elicit warnings. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include extern void ac_decl (int, char *); int main(void) { (void) ac_decl (0, (char *) 0); (void) ac_decl; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : if test x"$ac_arg" = x then : ac_cv_c_undeclared_builtin_options='none needed' else $as_nop ac_cv_c_undeclared_builtin_options=$ac_arg fi break fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done CFLAGS=$ac_save_CFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; } case $ac_cv_c_undeclared_builtin_options in #( 'cannot detect') : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot make $CC report undeclared builtins See \`config.log' for more details" "$LINENO" 5; } ;; #( 'none needed') : ac_c_undeclared_builtin_options='' ;; #( *) : ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; esac ac_fn_check_decl "$LINENO" "fseeko" "ac_cv_have_decl_fseeko" "#include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_fseeko" = xyes then : printf "%s\n" "#define HAVE_DECL_FSEEKO 1" >>confdefs.h fi fi # tst_method="unknown" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to set a socket into non-blocking mode" >&5 printf %s "checking how to set a socket into non-blocking mode... " >&6; } if test "x$curl_cv_func_fcntl_o_nonblock" = "xyes"; then tst_method="fcntl O_NONBLOCK" elif test "x$curl_cv_func_ioctl_fionbio" = "xyes"; then tst_method="ioctl FIONBIO" elif test "x$curl_cv_func_ioctlsocket_fionbio" = "xyes"; then tst_method="ioctlsocket FIONBIO" elif test "x$curl_cv_func_ioctlsocket_camel_fionbio" = "xyes"; then tst_method="IoctlSocket FIONBIO" elif test "x$curl_cv_func_setsockopt_so_nonblock" = "xyes"; then tst_method="setsockopt SO_NONBLOCK" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tst_method" >&5 printf "%s\n" "$tst_method" >&6; } if test "$tst_method" = "unknown"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine non-blocking socket method." >&5 printf "%s\n" "$as_me: WARNING: cannot determine non-blocking socket method." >&2;} fi # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PERL+y} then : printf %s "(cached) " >&6 else $as_nop case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PERL="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 printf "%s\n" "$PERL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$BUILD_DOCS" != "x0" -o "x$USE_MANUAL" != "x0" -o "x$CURL_CA_EMBED" != "x"; then if test -z "$PERL"; then as_fn_error $? "perl was not found, needed for docs, manual and CA embed" "$LINENO" 5 fi fi if test x"$BUILD_DOCS" = x1; then BUILD_DOCS_TRUE= BUILD_DOCS_FALSE='#' else BUILD_DOCS_TRUE='#' BUILD_DOCS_FALSE= fi if test "$USE_MANUAL" = "1"; then curl_manual_msg="enabled" fi if test x"$USE_MANUAL" = x1; then USE_MANUAL_TRUE= USE_MANUAL_FALSE='#' else USE_MANUAL_TRUE='#' USE_MANUAL_FALSE= fi # if test "$want_ares" = "yes"; then clean_CPPFLAGS="$CPPFLAGS" clean_LDFLAGS="$LDFLAGS" clean_LDFLAGSPC="$LDFLAGSPC" clean_LIBS="$LIBS" configure_runpath=`pwd` if test -n "$want_ares_path"; then ARES_PCDIR="$want_ares_path/lib/pkgconfig" if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libcares options with pkg-config" >&5 printf %s "checking for libcares options with pkg-config... " >&6; } itexists=` if test -n "$ARES_PCDIR"; then PKG_CONFIG_LIBDIR="$ARES_PCDIR" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists libcares >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no" ; then ares_LIBS=` if test -n "$ARES_PCDIR"; then PKG_CONFIG_LIBDIR="$ARES_PCDIR" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-l libcares` ares_LDFLAGS=` if test -n "$ARES_PCDIR"; then PKG_CONFIG_LIBDIR="$ARES_PCDIR" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --libs-only-L libcares` ares_CPPFLAGS=` if test -n "$ARES_PCDIR"; then PKG_CONFIG_LIBDIR="$ARES_PCDIR" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --cflags-only-I libcares` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares LIBS: \"$ares_LIBS\"" >&5 printf "%s\n" "$as_me: pkg-config: ares LIBS: \"$ares_LIBS\"" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares LDFLAGS: \"$ares_LDFLAGS\"" >&5 printf "%s\n" "$as_me: pkg-config: ares LDFLAGS: \"$ares_LDFLAGS\"" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares CPPFLAGS: \"$ares_CPPFLAGS\"" >&5 printf "%s\n" "$as_me: pkg-config: ares CPPFLAGS: \"$ares_CPPFLAGS\"" >&6;} else ares_CPPFLAGS="-I$want_ares_path/include" ares_LDFLAGS="-L$want_ares_path/lib" ares_LIBS="-lcares" fi else if test -n "$PKG_CONFIG"; then PKGCONFIG="$PKG_CONFIG" else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/bin:/usr/local/bin" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi fi if test "x$PKGCONFIG" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libcares options with pkg-config" >&5 printf %s "checking for libcares options with pkg-config... " >&6; } itexists=` if test -n ""; then PKG_CONFIG_LIBDIR="" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists libcares >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 printf "%s\n" "found" >&6; } fi fi if test "$PKGCONFIG" != "no" ; then ares_LIBS=`$PKGCONFIG --libs-only-l libcares` ares_LDFLAGS=`$PKGCONFIG --libs-only-L libcares` ares_CPPFLAGS=`$PKGCONFIG --cflags-only-I libcares` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares_LIBS: \"$ares_LIBS\"" >&5 printf "%s\n" "$as_me: pkg-config: ares_LIBS: \"$ares_LIBS\"" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares_LDFLAGS: \"$ares_LDFLAGS\"" >&5 printf "%s\n" "$as_me: pkg-config: ares_LDFLAGS: \"$ares_LDFLAGS\"" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares_CPPFLAGS: \"$ares_CPPFLAGS\"" >&5 printf "%s\n" "$as_me: pkg-config: ares_CPPFLAGS: \"$ares_CPPFLAGS\"" >&6;} else ares_CPPFLAGS="" ares_LDFLAGS="" ares_LIBS="-lcares" fi fi # CPPFLAGS="$clean_CPPFLAGS $ares_CPPFLAGS" LDFLAGS="$clean_LDFLAGS $ares_LDFLAGS" LDFLAGSPC="$clean_LDFLAGSPC $ares_LDFLAGS" LIBS="$ares_LIBS $clean_LIBS" # { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that c-ares is good and recent enough" >&5 printf %s "checking that c-ares is good and recent enough... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* set of dummy functions in case c-ares was built with debug */ void curl_dofree(void); void curl_dofree(void) {} void curl_sclose(void); void curl_sclose(void) {} void curl_domalloc(void); void curl_domalloc(void) {} void curl_docalloc(void); void curl_docalloc(void) {} void curl_socket(void); void curl_socket(void) {} int main(void) { ares_channel channel; ares_cancel(channel); /* added in 1.2.0 */ ares_process_fd(channel, 0, 0); /* added in 1.4.0 */ ares_dup(&channel, channel); /* added in 1.6.0 */ return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "c-ares library defective or too old" "$LINENO" 5 CPPFLAGS="$clean_CPPFLAGS" LDFLAGS="$clean_LDFLAGS" LDFLAGSPC="$clean_LDFLAGSPC" LIBS="$clean_LIBS" # prevent usage want_ares="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$want_ares" = "yes"; then printf "%s\n" "#define USE_ARES 1" >>confdefs.h USE_ARES=1 LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libcares" curl_res_msg="c-ares" fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable the threaded resolver" >&5 printf %s "checking whether to enable the threaded resolver... " >&6; } OPT_THRES="default" # Check whether --enable-threaded_resolver was given. if test ${enable_threaded_resolver+y} then : enableval=$enable_threaded_resolver; OPT_THRES=$enableval fi case "$OPT_THRES" in no) want_threaded_resolver="no" ;; yes) want_threaded_resolver="yes" ;; *) case $host_os in msdos* | amiga*) want_threaded_resolver="no" ;; *) if test "$want_ares" = "yes"; then want_threaded_resolver="no" else want_threaded_resolver="yes" fi ;; esac ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $want_threaded_resolver" >&5 printf "%s\n" "$want_threaded_resolver" >&6; } if test "$ipv6" = yes -a "$curl_cv_apple" = 'yes'; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to link macOS CoreFoundation, CoreServices, and SystemConfiguration frameworks" >&5 printf %s "checking whether to link macOS CoreFoundation, CoreServices, and SystemConfiguration frameworks... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main(void) { #if TARGET_OS_MAC && !(defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) return 0; #else #error Not macOS #endif return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : build_for_macos="yes" else $as_nop build_for_macos="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test "x$build_for_macos" != xno; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } SYSCONFIG_LDFLAGS='-framework CoreFoundation -framework CoreServices -framework SystemConfiguration' LDFLAGS="$LDFLAGS $SYSCONFIG_LDFLAGS" LDFLAGSPC="$LDFLAGSPC $SYSCONFIG_LDFLAGS" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test "$want_threaded_resolver" = "yes" && test "$curl_cv_native_windows" = "yes"; then USE_THREADS_WIN32=1 printf "%s\n" "#define USE_THREADS_WIN32 1" >>confdefs.h curl_res_msg="Win32 threaded" fi if test "$want_threaded_resolver" = "yes" && test "$USE_THREADS_WIN32" != "1"; then ac_fn_c_check_header_compile "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" if test "x$ac_cv_header_pthread_h" = xyes then : printf "%s\n" "#define HAVE_PTHREAD_H 1" >>confdefs.h save_CFLAGS="$CFLAGS" save_LIBS="$LIBS" LIBS= ac_fn_c_check_func "$LINENO" "pthread_create" "ac_cv_func_pthread_create" if test "x$ac_cv_func_pthread_create" = xyes then : USE_THREADS_POSIX=1 fi LIBS="$save_LIBS" case $host in *-hp-hpux*) USE_THREADS_POSIX="" ;; *) ;; esac if test "$USE_THREADS_POSIX" != "1"; then # assign PTHREAD for pkg-config use PTHREAD=" -pthread" case $host in *-ibm-aix*) COMPILER_VERSION=`"$CC" -qversion 2>/dev/null` if test x"$COMPILER_VERSION" = "x"; then CFLAGS="$CFLAGS -pthread" else CFLAGS="$CFLAGS -qthreaded" fi ;; powerpc-*amigaos*) PTHREAD=" -lpthread" ;; *) CFLAGS="$CFLAGS -pthread" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 printf %s "checking for pthread_create in -lpthread... " >&6; } if test ${ac_cv_lib_pthread_pthread_create+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __cplusplus extern "C" #endif char pthread_create (); int main(void) { return pthread_create (); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_pthread_pthread_create=yes else $as_nop ac_cv_lib_pthread_pthread_create=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5 printf "%s\n" "$ac_cv_lib_pthread_pthread_create" >&6; } if test "x$ac_cv_lib_pthread_pthread_create" = xyes then : USE_THREADS_POSIX=1 else $as_nop CFLAGS="$save_CFLAGS" fi fi if test "x$USE_THREADS_POSIX" = "x1"; then printf "%s\n" "#define USE_THREADS_POSIX 1" >>confdefs.h curl_res_msg="POSIX threaded" fi fi fi if test "$want_threaded_resolver" != "no" -a "x$USE_THREADS_POSIX" != "x1" -a "x$USE_THREADS_WIN32" != "x1"; then as_fn_error $? "Threaded resolver enabled but no thread library found" "$LINENO" 5 fi ac_fn_c_check_header_compile "$LINENO" "dirent.h" "ac_cv_header_dirent_h" "$ac_includes_default" if test "x$ac_cv_header_dirent_h" = xyes then : printf "%s\n" "#define HAVE_DIRENT_H 1" >>confdefs.h ac_fn_c_check_func "$LINENO" "opendir" "ac_cv_func_opendir" if test "x$ac_cv_func_opendir" = xyes then : printf "%s\n" "#define HAVE_OPENDIR 1" >>confdefs.h fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking convert -I options to -isystem" >&5 printf %s "checking convert -I options to -isystem... " >&6; } if test "$compiler_id" = "GNU_C" || test "$compiler_id" = "CLANG" -o "$compiler_id" = "APPLECLANG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } tmp_has_include="no" tmp_chg_FLAGS="$CFLAGS" for word1 in $tmp_chg_FLAGS; do case "$word1" in -I*) tmp_has_include="yes" ;; esac done if test "$tmp_has_include" = "yes"; then tmp_chg_FLAGS=`echo "$tmp_chg_FLAGS" | "$SED" 's/^-I/ -isystem /g'` tmp_chg_FLAGS=`echo "$tmp_chg_FLAGS" | "$SED" 's/ -I/ -isystem /g'` CFLAGS="$tmp_chg_FLAGS" squeeze CFLAGS fi tmp_has_include="no" tmp_chg_FLAGS="$CPPFLAGS" for word1 in $tmp_chg_FLAGS; do case "$word1" in -I*) tmp_has_include="yes" ;; esac done if test "$tmp_has_include" = "yes"; then tmp_chg_FLAGS=`echo "$tmp_chg_FLAGS" | "$SED" 's/^-I/ -isystem /g'` tmp_chg_FLAGS=`echo "$tmp_chg_FLAGS" | "$SED" 's/ -I/ -isystem /g'` CPPFLAGS="$tmp_chg_FLAGS" squeeze CPPFLAGS fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable verbose strings" >&5 printf %s "checking whether to enable verbose strings... " >&6; } # Check whether --enable-verbose was given. if test ${enable_verbose+y} then : enableval=$enable_verbose; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_VERBOSE_STRINGS 1" >>confdefs.h curl_verbose_msg="no" ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable SSPI support (Windows native builds only)" >&5 printf %s "checking whether to enable SSPI support (Windows native builds only)... " >&6; } # Check whether --enable-sspi was given. if test ${enable_sspi+y} then : enableval=$enable_sspi; case "$enableval" in yes) if test "$curl_cv_native_windows" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define USE_WINDOWS_SSPI 1" >>confdefs.h USE_WINDOWS_SSPI=1 curl_sspi_msg="enabled" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --enable-sspi Ignored. Only supported on native Windows builds." >&5 printf "%s\n" "$as_me: WARNING: --enable-sspi Ignored. Only supported on native Windows builds." >&2;} fi ;; *) if test "x$SCHANNEL_ENABLED" = "x1"; then # --with-schannel implies --enable-sspi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi ;; esac else $as_nop if test "x$SCHANNEL_ENABLED" = "x1"; then # --with-schannel implies --enable-sspi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable basic authentication method" >&5 printf %s "checking whether to enable basic authentication method... " >&6; } # Check whether --enable-basic-auth was given. if test ${enable_basic_auth+y} then : enableval=$enable_basic_auth; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_BASIC_AUTH 1" >>confdefs.h ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable bearer authentication method" >&5 printf %s "checking whether to enable bearer authentication method... " >&6; } # Check whether --enable-bearer-auth was given. if test ${enable_bearer_auth+y} then : enableval=$enable_bearer_auth; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_BEARER_AUTH 1" >>confdefs.h ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable digest authentication method" >&5 printf %s "checking whether to enable digest authentication method... " >&6; } # Check whether --enable-digest-auth was given. if test ${enable_digest_auth+y} then : enableval=$enable_digest_auth; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_DIGEST_AUTH 1" >>confdefs.h ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable kerberos authentication method" >&5 printf %s "checking whether to enable kerberos authentication method... " >&6; } # Check whether --enable-kerberos-auth was given. if test ${enable_kerberos_auth+y} then : enableval=$enable_kerberos_auth; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_KERBEROS_AUTH 1" >>confdefs.h CURL_DISABLE_KERBEROS_AUTH=1 ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable negotiate authentication method" >&5 printf %s "checking whether to enable negotiate authentication method... " >&6; } # Check whether --enable-negotiate-auth was given. if test ${enable_negotiate_auth+y} then : enableval=$enable_negotiate_auth; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_NEGOTIATE_AUTH 1" >>confdefs.h CURL_DISABLE_NEGOTIATE_AUTH=1 ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable aws sig methods" >&5 printf %s "checking whether to enable aws sig methods... " >&6; } # Check whether --enable-aws was given. if test ${enable_aws+y} then : enableval=$enable_aws; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_AWS 1" >>confdefs.h ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support NTLM" >&5 printf %s "checking whether to support NTLM... " >&6; } # Check whether --enable-ntlm was given. if test ${enable_ntlm+y} then : enableval=$enable_ntlm; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_NTLM 1" >>confdefs.h CURL_DISABLE_NTLM=1 ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable TLS-SRP authentication" >&5 printf %s "checking whether to enable TLS-SRP authentication... " >&6; } # Check whether --enable-tls-srp was given. if test ${enable_tls_srp+y} then : enableval=$enable_tls_srp; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } want_tls_srp=no ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } want_tls_srp=yes ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } want_tls_srp=yes fi if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_OPENSSL_SRP" = "x1"); then printf "%s\n" "#define USE_TLS_SRP 1" >>confdefs.h USE_TLS_SRP=1 curl_tls_srp_msg="enabled" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Unix domain sockets" >&5 printf %s "checking whether to enable Unix domain sockets... " >&6; } # Check whether --enable-unix-sockets was given. if test ${enable_unix_sockets+y} then : enableval=$enable_unix_sockets; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } want_unix_sockets=no ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } want_unix_sockets=yes ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: auto" >&5 printf "%s\n" "auto" >&6; } want_unix_sockets=auto fi if test "x$want_unix_sockets" != "xno" -a "$curl_cv_wince" = 'no'; then if test "x$curl_cv_native_windows" = "xyes"; then USE_UNIX_SOCKETS=1 printf "%s\n" "#define USE_UNIX_SOCKETS 1" >>confdefs.h curl_unix_sockets_msg="enabled" else ac_fn_c_check_member "$LINENO" "struct sockaddr_un" "sun_path" "ac_cv_member_struct_sockaddr_un_sun_path" " #include " if test "x$ac_cv_member_struct_sockaddr_un_sun_path" = xyes then : printf "%s\n" "#define USE_UNIX_SOCKETS 1" >>confdefs.h USE_UNIX_SOCKETS=1 curl_unix_sockets_msg="enabled" else $as_nop if test "x$want_unix_sockets" = "xyes"; then as_fn_error $? "--enable-unix-sockets is not available on this platform!" "$LINENO" 5 fi fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support cookies" >&5 printf %s "checking whether to support cookies... " >&6; } # Check whether --enable-cookies was given. if test ${enable_cookies+y} then : enableval=$enable_cookies; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_COOKIES 1" >>confdefs.h ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support socketpair" >&5 printf %s "checking whether to support socketpair... " >&6; } # Check whether --enable-socketpair was given. if test ${enable_socketpair+y} then : enableval=$enable_socketpair; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_SOCKETPAIR 1" >>confdefs.h ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support HTTP authentication" >&5 printf %s "checking whether to support HTTP authentication... " >&6; } # Check whether --enable-http-auth was given. if test ${enable_http_auth+y} then : enableval=$enable_http_auth; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_HTTP_AUTH 1" >>confdefs.h ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support DoH" >&5 printf %s "checking whether to support DoH... " >&6; } # Check whether --enable-doh was given. if test ${enable_doh+y} then : enableval=$enable_doh; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_DOH 1" >>confdefs.h ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support the MIME API" >&5 printf %s "checking whether to support the MIME API... " >&6; } # Check whether --enable-mime was given. if test ${enable_mime+y} then : enableval=$enable_mime; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_MIME 1" >>confdefs.h ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support binding connections locally" >&5 printf %s "checking whether to support binding connections locally... " >&6; } # Check whether --enable-bindlocal was given. if test ${enable_bindlocal+y} then : enableval=$enable_bindlocal; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_BINDLOCAL 1" >>confdefs.h ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support the form API" >&5 printf %s "checking whether to support the form API... " >&6; } # Check whether --enable-form-api was given. if test ${enable_form_api+y} then : enableval=$enable_form_api; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_FORM_API 1" >>confdefs.h ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } test "$enable_mime" = no && as_fn_error $? "MIME support needs to be enabled in order to enable form API support" "$LINENO" 5 ;; esac else $as_nop if test "$enable_mime" = no; then enable_form_api=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_FORM_API 1" >>confdefs.h else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support date parsing" >&5 printf %s "checking whether to support date parsing... " >&6; } # Check whether --enable-dateparse was given. if test ${enable_dateparse+y} then : enableval=$enable_dateparse; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_PARSEDATE 1" >>confdefs.h ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support netrc parsing" >&5 printf %s "checking whether to support netrc parsing... " >&6; } # Check whether --enable-netrc was given. if test ${enable_netrc+y} then : enableval=$enable_netrc; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_NETRC 1" >>confdefs.h ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support progress-meter" >&5 printf %s "checking whether to support progress-meter... " >&6; } # Check whether --enable-progress-meter was given. if test ${enable_progress_meter+y} then : enableval=$enable_progress_meter; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_PROGRESS_METER 1" >>confdefs.h ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support the SHA-512/256 hash algorithm" >&5 printf %s "checking whether to support the SHA-512/256 hash algorithm... " >&6; } # Check whether --enable-sha512-256 was given. if test ${enable_sha512_256+y} then : enableval=$enable_sha512_256; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_SHA512_256 1" >>confdefs.h ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support DNS shuffling" >&5 printf %s "checking whether to support DNS shuffling... " >&6; } # Check whether --enable-dnsshuffle was given. if test ${enable_dnsshuffle+y} then : enableval=$enable_dnsshuffle; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_SHUFFLE_DNS 1" >>confdefs.h ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support curl_easy_option*" >&5 printf %s "checking whether to support curl_easy_option*... " >&6; } # Check whether --enable-get-easy-options was given. if test ${enable_get_easy_options+y} then : enableval=$enable_get_easy_options; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_GETOPTIONS 1" >>confdefs.h ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support alt-svc" >&5 printf %s "checking whether to support alt-svc... " >&6; } # Check whether --enable-alt-svc was given. if test ${enable_alt_svc+y} then : enableval=$enable_alt_svc; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_ALTSVC 1" >>confdefs.h curl_altsvc_msg="no"; enable_altsvc="no" ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support headers-api" >&5 printf %s "checking whether to support headers-api... " >&6; } # Check whether --enable-headers-api was given. if test ${enable_headers_api+y} then : enableval=$enable_headers_api; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } curl_headers_msg="no (--enable-headers-api)" printf "%s\n" "#define CURL_DISABLE_HEADERS_API 1" >>confdefs.h ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi if test -n "$SSL_ENABLED"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support HSTS" >&5 printf %s "checking whether to support HSTS... " >&6; } # Check whether --enable-hsts was given. if test ${enable_hsts+y} then : enableval=$enable_hsts; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } hsts="no" ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hsts" >&5 printf "%s\n" "$hsts" >&6; } fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: disables HSTS due to lack of SSL" >&5 printf "%s\n" "$as_me: disables HSTS due to lack of SSL" >&6;} hsts="no" fi if test "x$hsts" != "xyes"; then curl_hsts_msg="no (--enable-hsts)"; printf "%s\n" "#define CURL_DISABLE_HSTS 1" >>confdefs.h fi if test "x$want_ech" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ECH support is available" >&5 printf %s "checking whether ECH support is available... " >&6; } ECH_ENABLED=0 ECH_ENABLED_OPENSSL=0 ECH_ENABLED_WOLFSSL=0 ECH_ENABLED_RUSTLS=0 ECH_SUPPORT='' if test "x$OPENSSL_ENABLED" = "x1"; then for ac_func in SSL_set1_ech_config_list do : ac_fn_c_check_func "$LINENO" "SSL_set1_ech_config_list" "ac_cv_func_SSL_set1_ech_config_list" if test "x$ac_cv_func_SSL_set1_ech_config_list" = xyes then : printf "%s\n" "#define HAVE_SSL_SET1_ECH_CONFIG_LIST 1" >>confdefs.h ECH_SUPPORT="$ECH_SUPPORT OpenSSL" ECH_ENABLED_OPENSSL=1 fi done fi if test "x$WOLFSSL_ENABLED" = "x1"; then for ac_func in wolfSSL_CTX_GenerateEchConfig do : ac_fn_c_check_func "$LINENO" "wolfSSL_CTX_GenerateEchConfig" "ac_cv_func_wolfSSL_CTX_GenerateEchConfig" if test "x$ac_cv_func_wolfSSL_CTX_GenerateEchConfig" = xyes then : printf "%s\n" "#define HAVE_WOLFSSL_CTX_GENERATEECHCONFIG 1" >>confdefs.h ECH_SUPPORT="$ECH_SUPPORT wolfSSL" ECH_ENABLED_WOLFSSL=1 fi done fi if test "x$RUSTLS_ENABLED" = "x1"; then ECH_SUPPORT="$ECH_SUPPORT rustls-ffi" ECH_ENABLED_RUSTLS=1 fi if test "x$ECH_ENABLED_OPENSSL" = "x1" -o \ "x$ECH_ENABLED_WOLFSSL" = "x1" -o \ "x$ECH_ENABLED_RUSTLS" = "x1"; then printf "%s\n" "#define USE_ECH 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ECH support available via:$ECH_SUPPORT" >&5 printf "%s\n" "ECH support available via:$ECH_SUPPORT" >&6; } experimental="$experimental ECH" ECH_ENABLED=1 want_httpsrr="yes" else as_fn_error $? "--enable-ech ignored: No ECH support found" "$LINENO" 5 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable HTTPS-RR support" >&5 printf %s "checking whether to enable HTTPS-RR support... " >&6; } if test "x$want_httpsrr" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } printf "%s\n" "#define USE_HTTPSRR 1" >>confdefs.h experimental="$experimental HTTPSRR" curl_httpsrr_msg="enabled (--disable-httpsrr)" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } # no HTTPSRR wanted if test "$want_threaded_resolver" = "yes"; then # and using the threaded resolver if test "x$USE_ARES" = "x1"; then as_fn_error $? "without HTTPS-RR support, asking for both threaded resolver and c-ares support is ambivalent. Please drop one of them." "$LINENO" 5 fi fi fi if test "x$OPENSSL_ENABLED" = "x1"; then ac_fn_c_check_func "$LINENO" "SSL_set0_wbio" "ac_cv_func_SSL_set0_wbio" if test "x$ac_cv_func_SSL_set0_wbio" = xyes then : printf "%s\n" "#define HAVE_SSL_SET0_WBIO 1" >>confdefs.h fi fi if test "x$CURL_DISABLE_HTTP" != "x1"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support WebSockets" >&5 printf %s "checking whether to support WebSockets... " >&6; } # Check whether --enable-websockets was given. if test ${enable_websockets+y} then : enableval=$enable_websockets; case "$enableval" in no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "#define CURL_DISABLE_WEBSOCKETS 1" >>confdefs.h CURL_DISABLE_WEBSOCKETS=1 ;; *) if test ${ac_cv_sizeof_curl_off_t} -gt 4; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: WebSockets disabled due to lack of >32 bit curl_off_t" >&5 printf "%s\n" "$as_me: WARNING: WebSockets disabled due to lack of >32 bit curl_off_t" >&2;} printf "%s\n" "#define CURL_DISABLE_WEBSOCKETS 1" >>confdefs.h CURL_DISABLE_WEBSOCKETS=1 fi ;; esac else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: WebSockets disabled because HTTP is disabled" >&5 printf "%s\n" "$as_me: WARNING: WebSockets disabled because HTTP is disabled" >&2;} printf "%s\n" "#define CURL_DISABLE_WEBSOCKETS 1" >>confdefs.h CURL_DISABLE_WEBSOCKETS=1 fi if test "x$want_ssls_export" != "xno"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether SSL session export support is available" >&5 printf %s "checking whether SSL session export support is available... " >&6; } SSLS_EXPORT_ENABLED=0 SSLS_EXPORT_SUPPORT='' if test "x$SSL_ENABLED" != "x1"; then as_fn_error $? "--enable-ssls-export ignored: No SSL support" "$LINENO" 5 else SSLS_EXPORT_ENABLED=1 printf "%s\n" "#define USE_SSLS_EXPORT 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"SSL session im-/export enabled\"" >&5 printf "%s\n" "\"SSL session im-/export enabled\"" >&6; } experimental="$experimental SSLS-EXPORT" fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether hiding of library internal symbols will actually happen" >&5 printf %s "checking whether hiding of library internal symbols will actually happen... " >&6; } CFLAG_CURL_SYMBOL_HIDING="" doing_symbol_hiding="no" if test "$want_symbol_hiding" = "yes" && test "$supports_symbol_hiding" = "yes"; then doing_symbol_hiding="yes" CFLAG_CURL_SYMBOL_HIDING="$symbol_hiding_CFLAGS" printf "%s\n" "#define CURL_EXTERN_SYMBOL $symbol_hiding_EXTERN" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test x$doing_symbol_hiding = xyes; then DOING_CURL_SYMBOL_HIDING_TRUE= DOING_CURL_SYMBOL_HIDING_FALSE='#' else DOING_CURL_SYMBOL_HIDING_TRUE='#' DOING_CURL_SYMBOL_HIDING_FALSE= fi LIBCURL_PC_LDFLAGS_PRIVATE='' set -- $INITIAL_LDFLAGS while test -n "$1"; do case "$1" in -L* | --library-path=* | -F*) LIBCURL_PC_LDFLAGS_PRIVATE="$LIBCURL_PC_LDFLAGS_PRIVATE $1" ;; -framework) if test -n "$2"; then LIBCURL_PC_LDFLAGS_PRIVATE="$LIBCURL_PC_LDFLAGS_PRIVATE $1 $2" shift fi ;; esac shift done LIBCURL_PC_LDFLAGS_PRIVATE="$LIBCURL_PC_LDFLAGS_PRIVATE $LDFLAGSPC" LIBCURL_PC_LIBS_PRIVATE="$LIBS$PTHREAD" BLANK_AT_MAKETIME= if test x$cross_compiling = xyes; then CROSSCOMPILING_TRUE= CROSSCOMPILING_FALSE='#' else CROSSCOMPILING_TRUE='#' CROSSCOMPILING_FALSE= fi ENABLE_SHARED="$enable_shared" ENABLE_STATIC="$enable_static" squeeze LIBCURL_PC_REQUIRES_PRIVATE LIBCURL_PC_REQUIRES_PRIVATE=`echo $LIBCURL_PC_REQUIRES_PRIVATE | tr ' ' ','` if test "x$enable_shared" = "xno"; then LIBCURL_PC_REQUIRES=$LIBCURL_PC_REQUIRES_PRIVATE LIBCURL_PC_LIBS=$LIBCURL_PC_LIBS_PRIVATE else LIBCURL_PC_REQUIRES= LIBCURL_PC_LIBS= fi rm $compilersh if test "x$OPENSSL_ENABLED" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES SSL" elif test -n "$SSL_ENABLED"; then SUPPORT_FEATURES="$SUPPORT_FEATURES SSL" fi if test "x$IPV6_ENABLED" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6" fi if test "x$USE_UNIX_SOCKETS" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES UnixSockets" fi if test "x$HAVE_LIBZ" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES libz" fi if test "x$HAVE_BROTLI" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES brotli" fi if test "x$HAVE_ZSTD" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES zstd" fi if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1" \ -o "x$USE_THREADS_WIN32" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS" fi if test "x$USE_ARES" = "x1" -a "$want_threaded_resolver" = "yes" -a "x$want_httpsrr" != "xno"; then SUPPORT_FEATURES="$SUPPORT_FEATURES asyn-rr" fi if test "x$IDN_ENABLED" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES IDN" fi if test "x$USE_WINDOWS_SSPI" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI" fi if test "x$HAVE_GSSAPI" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES GSS-API" fi if test "x$curl_psl_msg" = "xenabled"; then SUPPORT_FEATURES="$SUPPORT_FEATURES PSL" fi if test "x$curl_gsasl_msg" = "xenabled"; then SUPPORT_FEATURES="$SUPPORT_FEATURES gsasl" fi if test "x$enable_altsvc" = "xyes"; then SUPPORT_FEATURES="$SUPPORT_FEATURES alt-svc" fi if test "x$hsts" = "xyes"; then SUPPORT_FEATURES="$SUPPORT_FEATURES HSTS" fi if test "x$CURL_DISABLE_NEGOTIATE_AUTH" != "x1" -a \ \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then SUPPORT_FEATURES="$SUPPORT_FEATURES SPNEGO" fi if test "x$CURL_DISABLE_KERBEROS_AUTH" != "x1" -a \ \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then SUPPORT_FEATURES="$SUPPORT_FEATURES Kerberos" fi use_curl_ntlm_core=no if test "x$CURL_DISABLE_NTLM" != "x1"; then if test "x$OPENSSL_ENABLED" = "x1" -o "x$MBEDTLS_ENABLED" = "x1" \ -o "x$GNUTLS_ENABLED" = "x1" \ -o "x$SECURETRANSPORT_ENABLED" = "x1" \ -o "x$USE_WIN32_CRYPTO" = "x1" \ -o "x$HAVE_WOLFSSL_DES_ECB_ENCRYPT" = "x1"; then use_curl_ntlm_core=yes fi if test "x$use_curl_ntlm_core" = "xyes" \ -o "x$USE_WINDOWS_SSPI" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM" fi fi if test "x$USE_TLS_SRP" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP" fi if test "x$USE_NGHTTP2" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2" fi if test "x$USE_NGTCP2_H3" = "x1" -o "x$USE_QUICHE" = "x1" \ -o "x$USE_OPENSSL_H3" = "x1" -o "x$USE_MSH3" = "x1"; then if test "x$CURL_WITH_MULTI_SSL" = "x1"; then as_fn_error $? "MultiSSL cannot be enabled with HTTP/3 and vice versa" "$LINENO" 5 fi SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP3" fi if test "x$CURL_WITH_MULTI_SSL" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES MultiSSL" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if this build supports HTTPS-proxy" >&5 printf %s "checking if this build supports HTTPS-proxy... " >&6; } if test "x$CURL_DISABLE_HTTP" != "x1"; then if test "x$https_proxy" != "xno"; then if test "x$OPENSSL_ENABLED" = "x1" \ -o "x$GNUTLS_ENABLED" = "x1" \ -o "x$SECURETRANSPORT_ENABLED" = "x1" \ -o "x$RUSTLS_ENABLED" = "x1" \ -o "x$BEARSSL_ENABLED" = "x1" \ -o "x$SCHANNEL_ENABLED" = "x1" \ -o "x$GNUTLS_ENABLED" = "x1" \ -o "x$MBEDTLS_ENABLED" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } elif test "x$WOLFSSL_ENABLED" = "x1" -a "x$HAVE_WOLFSSL_BIO_NEW" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$OPENSSL_ENABLED" = "x1" -o -n "$SSL_ENABLED"; then if test "x$ECH_ENABLED" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES ECH" fi fi if test "x$want_httpsrr" != "xno"; then SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPSRR" fi if test "x$SSLS_EXPORT_ENABLED" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES SSLS-EXPORT" fi if test ${ac_cv_sizeof_curl_off_t} -gt 4; then if test ${ac_cv_sizeof_off_t} -gt 4 -o \ "$curl_win32_file_api" = "win32_large_files"; then SUPPORT_FEATURES="$SUPPORT_FEATURES Largefile" fi fi if test "$tst_atomic" = "yes"; then SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe" elif test "x$USE_THREADS_POSIX" = "x1" -a \ "x$ac_cv_header_pthread_h" = "xyes"; then SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { #if (WINVER < 0x600) && (_WIN32_WINNT < 0x600) #error #endif return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test "x$want_winuni" = "xyes"; then SUPPORT_FEATURES="$SUPPORT_FEATURES Unicode" fi if test "x$want_debug" = "xyes"; then SUPPORT_FEATURES="$SUPPORT_FEATURES Debug" fi if test "x$want_curldebug" = "xyes"; then SUPPORT_FEATURES="$SUPPORT_FEATURES TrackMemory" fi if test "x$CURL_CA_EMBED" != "x"; then SUPPORT_FEATURES="$SUPPORT_FEATURES CAcert" CURL_CA_EMBED_msg="$CURL_CA_EMBED" else CURL_CA_EMBED_msg='no' fi if sort -f /dev/null 2>&1; then SUPPORT_FEATURES=`echo $SUPPORT_FEATURES | tr ' ' '\012' | sort -f | tr '\012' ' '` else SUPPORT_FEATURES=`echo $SUPPORT_FEATURES | tr ' ' '\012' | sort | tr '\012' ' '` fi if test "x$CURL_DISABLE_HTTP" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP" if test "x$SSL_ENABLED" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS" fi fi if test "x$CURL_DISABLE_FTP" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTP" if test "x$SSL_ENABLED" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTPS" fi fi if test "x$CURL_DISABLE_FILE" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE" fi if test "x$CURL_DISABLE_TELNET" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET" fi if test "x$CURL_DISABLE_LDAP" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP" if test "x$CURL_DISABLE_LDAPS" != "x1"; then if (test "x$USE_OPENLDAP" = "x1" && test "x$SSL_ENABLED" = "x1") || (test "x$USE_OPENLDAP" != "x1" && test "x$HAVE_LDAP_SSL" = "x1"); then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS" fi fi fi if test "x$CURL_DISABLE_DICT" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT" fi if test "x$CURL_DISABLE_TFTP" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP" fi if test "x$CURL_DISABLE_GOPHER" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER" if test "x$SSL_ENABLED" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHERS" fi fi if test "x$CURL_DISABLE_MQTT" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS MQTT" fi if test "x$CURL_DISABLE_POP3" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3" if test "x$SSL_ENABLED" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S" fi fi if test "x$CURL_DISABLE_IMAP" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP" if test "x$SSL_ENABLED" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS" fi fi if test "x$CURL_DISABLE_SMB" != "x1" \ -a "x$use_curl_ntlm_core" = "xyes"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMB" if test "x$SSL_ENABLED" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMBS" fi fi if test "x$CURL_DISABLE_SMTP" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP" if test "x$SSL_ENABLED" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS" fi fi if test "x$USE_LIBSSH2" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP" SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP" fi if test "x$USE_LIBSSH" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP" SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP" fi if test "x$USE_WOLFSSH" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP" fi if test "x$CURL_DISABLE_IPFS" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IPFS IPNS" fi if test "x$CURL_DISABLE_RTSP" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP" fi if test "x$USE_LIBRTMP" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP" fi if test "x$CURL_DISABLE_WEBSOCKETS" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS WS" if test "x$SSL_ENABLED" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS WSS" fi fi SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '` squeeze CFLAGS squeeze CPPFLAGS squeeze DEFS squeeze LDFLAGS squeeze LIBS squeeze LIBCURL_PC_LDFLAGS_PRIVATE squeeze LIBCURL_PC_LIBS_PRIVATE squeeze CURL_NETWORK_AND_TIME_LIBS squeeze SUPPORT_FEATURES squeeze SUPPORT_PROTOCOLS xc_bad_var_libs=no for xc_word in $LIBS; do case "$xc_word" in -l* | --library=*) : ;; *) xc_bad_var_libs=yes ;; esac done if test $xc_bad_var_libs = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: using LIBS: $LIBS" >&5 printf "%s\n" "$as_me: using LIBS: $LIBS" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: LIBS note: LIBS should only be used to specify libraries (-lname)." >&5 printf "%s\n" "$as_me: LIBS note: LIBS should only be used to specify libraries (-lname)." >&6;} fi xc_bad_var_ldflags=no for xc_word in $LDFLAGS; do case "$xc_word" in -D*) xc_bad_var_ldflags=yes ;; -U*) xc_bad_var_ldflags=yes ;; -I*) xc_bad_var_ldflags=yes ;; -l* | --library=*) xc_bad_var_ldflags=yes ;; esac done if test $xc_bad_var_ldflags = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: using LDFLAGS: $LDFLAGS" >&5 printf "%s\n" "$as_me: using LDFLAGS: $LDFLAGS" >&6;} xc_bad_var_msg="LDFLAGS note: LDFLAGS should only be used to specify linker flags, not" for xc_word in $LDFLAGS; do case "$xc_word" in -D*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg macro definitions. Use CPPFLAGS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg macro definitions. Use CPPFLAGS for: $xc_word" >&6;} ;; -U*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg macro suppressions. Use CPPFLAGS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg macro suppressions. Use CPPFLAGS for: $xc_word" >&6;} ;; -I*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg include directories. Use CPPFLAGS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg include directories. Use CPPFLAGS for: $xc_word" >&6;} ;; -l* | --library=*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&6;} ;; esac done fi xc_bad_var_cppflags=no for xc_word in $CPPFLAGS; do case "$xc_word" in -rpath*) xc_bad_var_cppflags=yes ;; -L* | --library-path=*) xc_bad_var_cppflags=yes ;; -l* | --library=*) xc_bad_var_cppflags=yes ;; esac done if test $xc_bad_var_cppflags = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: using CPPFLAGS: $CPPFLAGS" >&5 printf "%s\n" "$as_me: using CPPFLAGS: $CPPFLAGS" >&6;} xc_bad_var_msg="CPPFLAGS note: CPPFLAGS should only be used to specify C preprocessor flags, not" for xc_word in $CPPFLAGS; do case "$xc_word" in -rpath*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg library runtime directories. Use LDFLAGS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg library runtime directories. Use LDFLAGS for: $xc_word" >&6;} ;; -L* | --library-path=*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg library directories. Use LDFLAGS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg library directories. Use LDFLAGS for: $xc_word" >&6;} ;; -l* | --library=*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&6;} ;; esac done fi xc_bad_var_cflags=no for xc_word in $CFLAGS; do case "$xc_word" in -D*) xc_bad_var_cflags=yes ;; -U*) xc_bad_var_cflags=yes ;; -I*) xc_bad_var_cflags=yes ;; -rpath*) xc_bad_var_cflags=yes ;; -L* | --library-path=*) xc_bad_var_cflags=yes ;; -l* | --library=*) xc_bad_var_cflags=yes ;; esac done if test $xc_bad_var_cflags = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: using CFLAGS: $CFLAGS" >&5 printf "%s\n" "$as_me: using CFLAGS: $CFLAGS" >&6;} xc_bad_var_msg="CFLAGS note: CFLAGS should only be used to specify C compiler flags, not" for xc_word in $CFLAGS; do case "$xc_word" in -D*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg macro definitions. Use CPPFLAGS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg macro definitions. Use CPPFLAGS for: $xc_word" >&6;} ;; -U*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg macro suppressions. Use CPPFLAGS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg macro suppressions. Use CPPFLAGS for: $xc_word" >&6;} ;; -I*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg include directories. Use CPPFLAGS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg include directories. Use CPPFLAGS for: $xc_word" >&6;} ;; -rpath*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg library runtime directories. Use LDFLAGS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg library runtime directories. Use LDFLAGS for: $xc_word" >&6;} ;; -L* | --library-path=*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg library directories. Use LDFLAGS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg library directories. Use LDFLAGS for: $xc_word" >&6;} ;; -l* | --library=*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&5 printf "%s\n" "$as_me: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&6;} ;; esac done fi if test $xc_bad_var_libs = yes || test $xc_bad_var_cflags = yes || test $xc_bad_var_ldflags = yes || test $xc_bad_var_cppflags = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Continuing even with errors mentioned immediately above this line." >&5 printf "%s\n" "$as_me: WARNING: Continuing even with errors mentioned immediately above this line." >&2;} fi SSL_BACKENDS=${ssl_backends} if test "x$want_curldebug_assumed" = "xyes" && test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then ac_configure_args="$ac_configure_args --enable-curldebug" fi tmp_cpp=`eval echo "$ac_cpp" 2>/dev/null` if test -z "$tmp_cpp"; then tmp_cpp='cpp' fi CURL_CPP=$tmp_cpp ac_config_files="$ac_config_files Makefile docs/Makefile docs/examples/Makefile docs/libcurl/Makefile docs/libcurl/opts/Makefile docs/cmdline-opts/Makefile include/Makefile include/curl/Makefile src/Makefile lib/Makefile scripts/Makefile lib/libcurl.vers tests/Makefile tests/config tests/configurehelp.pm tests/certs/Makefile tests/data/Makefile tests/server/Makefile tests/libtest/Makefile tests/unit/Makefile tests/tunit/Makefile tests/http/config.ini tests/http/Makefile tests/http/clients/Makefile packages/Makefile packages/vms/Makefile curl-config libcurl.pc" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${DEBUGBUILD_TRUE}" && test -z "${DEBUGBUILD_FALSE}"; then as_fn_error $? "conditional \"DEBUGBUILD\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${CURLDEBUG_TRUE}" && test -z "${CURLDEBUG_FALSE}"; then as_fn_error $? "conditional \"CURLDEBUG\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 printf %s "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 printf "%s\n" "done" >&6; } if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${NOT_CURL_CI_TRUE}" && test -z "${NOT_CURL_CI_FALSE}"; then as_fn_error $? "conditional \"NOT_CURL_CI\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${CURL_LT_SHLIB_USE_VERSION_INFO_TRUE}" && test -z "${CURL_LT_SHLIB_USE_VERSION_INFO_FALSE}"; then as_fn_error $? "conditional \"CURL_LT_SHLIB_USE_VERSION_INFO\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE}" && test -z "${CURL_LT_SHLIB_USE_NO_UNDEFINED_FALSE}"; then as_fn_error $? "conditional \"CURL_LT_SHLIB_USE_NO_UNDEFINED\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${CURL_LT_SHLIB_USE_MIMPURE_TEXT_TRUE}" && test -z "${CURL_LT_SHLIB_USE_MIMPURE_TEXT_FALSE}"; then as_fn_error $? "conditional \"CURL_LT_SHLIB_USE_MIMPURE_TEXT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_CPPFLAG_CURL_STATICLIB_TRUE}" && test -z "${USE_CPPFLAG_CURL_STATICLIB_FALSE}"; then as_fn_error $? "conditional \"USE_CPPFLAG_CURL_STATICLIB\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${DOING_NATIVE_WINDOWS_TRUE}" && test -z "${DOING_NATIVE_WINDOWS_FALSE}"; then as_fn_error $? "conditional \"DOING_NATIVE_WINDOWS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${CURL_WERROR_TRUE}" && test -z "${CURL_WERROR_FALSE}"; then as_fn_error $? "conditional \"CURL_WERROR\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_UNITTESTS_TRUE}" && test -z "${BUILD_UNITTESTS_FALSE}"; then as_fn_error $? "conditional \"BUILD_UNITTESTS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_SERVER_DEBUG_TRUE}" && test -z "${ENABLE_SERVER_DEBUG_FALSE}"; then as_fn_error $? "conditional \"ENABLE_SERVER_DEBUG\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_WINDRES_TRUE}" && test -z "${HAVE_WINDRES_FALSE}"; then as_fn_error $? "conditional \"HAVE_WINDRES\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_UNITY_TRUE}" && test -z "${USE_UNITY_FALSE}"; then as_fn_error $? "conditional \"USE_UNITY\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_TEST_BUNDLES_TRUE}" && test -z "${USE_TEST_BUNDLES_FALSE}"; then as_fn_error $? "conditional \"USE_TEST_BUNDLES\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${DOING_NATIVE_WINDOWS_TRUE}" && test -z "${DOING_NATIVE_WINDOWS_FALSE}"; then as_fn_error $? "conditional \"DOING_NATIVE_WINDOWS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBZ_TRUE}" && test -z "${HAVE_LIBZ_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBZ\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_STUB_GSS_TRUE}" && test -z "${BUILD_STUB_GSS_FALSE}"; then as_fn_error $? "conditional \"BUILD_STUB_GSS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${CURL_CA_EMBED_SET_TRUE}" && test -z "${CURL_CA_EMBED_SET_FALSE}"; then as_fn_error $? "conditional \"CURL_CA_EMBED_SET\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_LIBPSL_TRUE}" && test -z "${USE_LIBPSL_FALSE}"; then as_fn_error $? "conditional \"USE_LIBPSL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_GSASL_TRUE}" && test -z "${USE_GSASL_FALSE}"; then as_fn_error $? "conditional \"USE_GSASL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_TRUE}" && test -z "${CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_FALSE}"; then as_fn_error $? "conditional \"CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_UNICODE_TRUE}" && test -z "${USE_UNICODE_FALSE}"; then as_fn_error $? "conditional \"USE_UNICODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_ZSH_COMPLETION_TRUE}" && test -z "${USE_ZSH_COMPLETION_FALSE}"; then as_fn_error $? "conditional \"USE_ZSH_COMPLETION\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_FISH_COMPLETION_TRUE}" && test -z "${USE_FISH_COMPLETION_FALSE}"; then as_fn_error $? "conditional \"USE_FISH_COMPLETION\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${DOING_NATIVE_WINDOWS_TRUE}" && test -z "${DOING_NATIVE_WINDOWS_FALSE}"; then as_fn_error $? "conditional \"DOING_NATIVE_WINDOWS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_DOCS_TRUE}" && test -z "${BUILD_DOCS_FALSE}"; then as_fn_error $? "conditional \"BUILD_DOCS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_MANUAL_TRUE}" && test -z "${USE_MANUAL_FALSE}"; then as_fn_error $? "conditional \"USE_MANUAL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${DOING_CURL_SYMBOL_HIDING_TRUE}" && test -z "${DOING_CURL_SYMBOL_HIDING_FALSE}"; then as_fn_error $? "conditional \"DOING_CURL_SYMBOL_HIDING\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${CROSSCOMPILING_TRUE}" && test -z "${CROSSCOMPILING_FALSE}"; then as_fn_error $? "conditional \"CROSSCOMPILING\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by curl $as_me -, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ curl config.status - configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' FILECMD='`$ECHO "$FILECMD" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' lt_ar_flags='`$ECHO "$lt_ar_flags" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' LD_RC='`$ECHO "$LD_RC" | $SED "$delay_single_quote_subst"`' reload_flag_RC='`$ECHO "$reload_flag_RC" | $SED "$delay_single_quote_subst"`' reload_cmds_RC='`$ECHO "$reload_cmds_RC" | $SED "$delay_single_quote_subst"`' old_archive_cmds_RC='`$ECHO "$old_archive_cmds_RC" | $SED "$delay_single_quote_subst"`' compiler_RC='`$ECHO "$compiler_RC" | $SED "$delay_single_quote_subst"`' GCC_RC='`$ECHO "$GCC_RC" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_RC='`$ECHO "$lt_prog_compiler_no_builtin_flag_RC" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_RC='`$ECHO "$lt_prog_compiler_pic_RC" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_RC='`$ECHO "$lt_prog_compiler_wl_RC" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_RC='`$ECHO "$lt_prog_compiler_static_RC" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_RC='`$ECHO "$lt_cv_prog_compiler_c_o_RC" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_RC='`$ECHO "$archive_cmds_need_lc_RC" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_RC='`$ECHO "$enable_shared_with_static_runtimes_RC" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_RC='`$ECHO "$export_dynamic_flag_spec_RC" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_RC='`$ECHO "$whole_archive_flag_spec_RC" | $SED "$delay_single_quote_subst"`' compiler_needs_object_RC='`$ECHO "$compiler_needs_object_RC" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_RC='`$ECHO "$old_archive_from_new_cmds_RC" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_RC='`$ECHO "$old_archive_from_expsyms_cmds_RC" | $SED "$delay_single_quote_subst"`' archive_cmds_RC='`$ECHO "$archive_cmds_RC" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_RC='`$ECHO "$archive_expsym_cmds_RC" | $SED "$delay_single_quote_subst"`' module_cmds_RC='`$ECHO "$module_cmds_RC" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_RC='`$ECHO "$module_expsym_cmds_RC" | $SED "$delay_single_quote_subst"`' with_gnu_ld_RC='`$ECHO "$with_gnu_ld_RC" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_RC='`$ECHO "$allow_undefined_flag_RC" | $SED "$delay_single_quote_subst"`' no_undefined_flag_RC='`$ECHO "$no_undefined_flag_RC" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_RC='`$ECHO "$hardcode_libdir_flag_spec_RC" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_RC='`$ECHO "$hardcode_libdir_separator_RC" | $SED "$delay_single_quote_subst"`' hardcode_direct_RC='`$ECHO "$hardcode_direct_RC" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_RC='`$ECHO "$hardcode_direct_absolute_RC" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_RC='`$ECHO "$hardcode_minus_L_RC" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_RC='`$ECHO "$hardcode_shlibpath_var_RC" | $SED "$delay_single_quote_subst"`' hardcode_automatic_RC='`$ECHO "$hardcode_automatic_RC" | $SED "$delay_single_quote_subst"`' inherit_rpath_RC='`$ECHO "$inherit_rpath_RC" | $SED "$delay_single_quote_subst"`' link_all_deplibs_RC='`$ECHO "$link_all_deplibs_RC" | $SED "$delay_single_quote_subst"`' always_export_symbols_RC='`$ECHO "$always_export_symbols_RC" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_RC='`$ECHO "$export_symbols_cmds_RC" | $SED "$delay_single_quote_subst"`' exclude_expsyms_RC='`$ECHO "$exclude_expsyms_RC" | $SED "$delay_single_quote_subst"`' include_expsyms_RC='`$ECHO "$include_expsyms_RC" | $SED "$delay_single_quote_subst"`' prelink_cmds_RC='`$ECHO "$prelink_cmds_RC" | $SED "$delay_single_quote_subst"`' postlink_cmds_RC='`$ECHO "$postlink_cmds_RC" | $SED "$delay_single_quote_subst"`' file_list_spec_RC='`$ECHO "$file_list_spec_RC" | $SED "$delay_single_quote_subst"`' hardcode_action_RC='`$ECHO "$hardcode_action_RC" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in AS \ DLLTOOL \ OBJDUMP \ SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ FILECMD \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ sharedlib_from_linklib_cmd \ AR \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ LD_RC \ reload_flag_RC \ compiler_RC \ lt_prog_compiler_no_builtin_flag_RC \ lt_prog_compiler_pic_RC \ lt_prog_compiler_wl_RC \ lt_prog_compiler_static_RC \ lt_cv_prog_compiler_c_o_RC \ export_dynamic_flag_spec_RC \ whole_archive_flag_spec_RC \ compiler_needs_object_RC \ with_gnu_ld_RC \ allow_undefined_flag_RC \ no_undefined_flag_RC \ hardcode_libdir_flag_spec_RC \ hardcode_libdir_separator_RC \ exclude_expsyms_RC \ include_expsyms_RC \ file_list_spec_RC; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ configure_time_dlsearch_path \ configure_time_lt_sys_library_path \ reload_cmds_RC \ old_archive_cmds_RC \ old_archive_from_new_cmds_RC \ old_archive_from_expsyms_cmds_RC \ archive_cmds_RC \ archive_expsym_cmds_RC \ module_cmds_RC \ module_expsym_cmds_RC \ export_symbols_cmds_RC \ prelink_cmds_RC \ postlink_cmds_RC; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "lib/curl_config.h") CONFIG_HEADERS="$CONFIG_HEADERS lib/curl_config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;; "docs/examples/Makefile") CONFIG_FILES="$CONFIG_FILES docs/examples/Makefile" ;; "docs/libcurl/Makefile") CONFIG_FILES="$CONFIG_FILES docs/libcurl/Makefile" ;; "docs/libcurl/opts/Makefile") CONFIG_FILES="$CONFIG_FILES docs/libcurl/opts/Makefile" ;; "docs/cmdline-opts/Makefile") CONFIG_FILES="$CONFIG_FILES docs/cmdline-opts/Makefile" ;; "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; "include/curl/Makefile") CONFIG_FILES="$CONFIG_FILES include/curl/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; "scripts/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;; "lib/libcurl.vers") CONFIG_FILES="$CONFIG_FILES lib/libcurl.vers" ;; "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; "tests/config") CONFIG_FILES="$CONFIG_FILES tests/config" ;; "tests/configurehelp.pm") CONFIG_FILES="$CONFIG_FILES tests/configurehelp.pm" ;; "tests/certs/Makefile") CONFIG_FILES="$CONFIG_FILES tests/certs/Makefile" ;; "tests/data/Makefile") CONFIG_FILES="$CONFIG_FILES tests/data/Makefile" ;; "tests/server/Makefile") CONFIG_FILES="$CONFIG_FILES tests/server/Makefile" ;; "tests/libtest/Makefile") CONFIG_FILES="$CONFIG_FILES tests/libtest/Makefile" ;; "tests/unit/Makefile") CONFIG_FILES="$CONFIG_FILES tests/unit/Makefile" ;; "tests/tunit/Makefile") CONFIG_FILES="$CONFIG_FILES tests/tunit/Makefile" ;; "tests/http/config.ini") CONFIG_FILES="$CONFIG_FILES tests/http/config.ini" ;; "tests/http/Makefile") CONFIG_FILES="$CONFIG_FILES tests/http/Makefile" ;; "tests/http/clients/Makefile") CONFIG_FILES="$CONFIG_FILES tests/http/clients/Makefile" ;; "packages/Makefile") CONFIG_FILES="$CONFIG_FILES packages/Makefile" ;; "packages/vms/Makefile") CONFIG_FILES="$CONFIG_FILES packages/vms/Makefile" ;; "curl-config") CONFIG_FILES="$CONFIG_FILES curl-config" ;; "libcurl.pc") CONFIG_FILES="$CONFIG_FILES libcurl.pc" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. case $CONFIG_FILES in #( *\'*) : eval set x "$CONFIG_FILES" ;; #( *) : set x $CONFIG_FILES ;; #( *) : ;; esac shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`$as_dirname -- "$am_mf" || $as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` am_filepart=`$as_basename -- "$am_mf" || $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` { echo "$as_me:$LINENO: cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles" >&5 (cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE=\"gmake\" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking). See \`config.log' for more details" "$LINENO" 5; } fi { am_dirpart=; unset am_dirpart;} { am_filepart=; unset am_filepart;} { am_mf=; unset am_mf;} { am_rc=; unset am_rc;} rm -f conftest-deps.mk } ;; "libtool":C) # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 # Copyright (C) 2014 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # The names of the tagged configurations supported by this script. available_tags='RC ' # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Assembler program. AS=$lt_AS # DLL creation program. DLLTOOL=$lt_DLLTOOL # Object dumper program. OBJDUMP=$lt_OBJDUMP # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec=$shared_archive_member_spec # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # A file(cmd) program that detects file types. FILECMD=$lt_FILECMD # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive (by configure). lt_ar_flags=$lt_ar_flags # Flags to create an archive. AR_FLAGS=\${ARFLAGS-"\$lt_ar_flags"} # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm into a list of symbols to manually relocate. global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name lister interface. nm_interface=$lt_lt_cv_nm_interface # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot # Command to truncate a binary pipe. lt_truncate_bin=$lt_lt_cv_truncate_bin # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain=$ac_aux_dir/ltmain.sh # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? $SED '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: RC # The linker used to build libraries. LD=$lt_LD_RC # How to create reloadable object files. reload_flag=$lt_reload_flag_RC reload_cmds=$lt_reload_cmds_RC # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_RC # A language specific compiler. CC=$lt_compiler_RC # Is the compiler the GNU compiler? with_gcc=$GCC_RC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_RC # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_RC # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_RC # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_RC # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_RC # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_RC archive_expsym_cmds=$lt_archive_expsym_cmds_RC # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_RC module_expsym_cmds=$lt_module_expsym_cmds_RC # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_RC # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_RC # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_RC # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_RC # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_RC # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_RC # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_RC # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_RC # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_RC # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_RC # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_RC # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_RC # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_RC # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_RC # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_RC # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_RC # Specify filename containing input files. file_list_spec=$lt_file_list_spec_RC # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_RC # ### END LIBTOOL TAG CONFIG: RC _LT_EOF ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi SUPPORT_PROTOCOLS_LOWER=`echo "$SUPPORT_PROTOCOLS" | tr A-Z a-z` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Configured to build curl/libcurl: Host setup: ${host} Install prefix: ${prefix} Compiler: ${CC} CFLAGS: ${CFLAGS} CFLAGS extras: ${CURL_CFLAG_EXTRAS} CPPFLAGS: ${CPPFLAGS} LDFLAGS: ${LDFLAGS} curl-config: ${LIBCURL_PC_LDFLAGS_PRIVATE} LIBS: ${LIBS} curl version: ${CURLVERSION} SSL: ${curl_ssl_msg} SSH: ${curl_ssh_msg} zlib: ${curl_zlib_msg} brotli: ${curl_brotli_msg} zstd: ${curl_zstd_msg} GSS-API: ${curl_gss_msg} GSASL: ${curl_gsasl_msg} TLS-SRP: ${curl_tls_srp_msg} resolver: ${curl_res_msg} IPv6: ${curl_ipv6_msg} Unix sockets: ${curl_unix_sockets_msg} IDN: ${curl_idn_msg} Build docs: ${curl_docs_msg} Build libcurl: Shared=${enable_shared}, Static=${enable_static} Built-in manual: ${curl_manual_msg} --libcurl option: ${curl_libcurl_msg} Verbose errors: ${curl_verbose_msg} Code coverage: ${curl_coverage_msg} SSPI: ${curl_sspi_msg} ca cert bundle: ${ca}${ca_warning} ca cert path: ${capath}${capath_warning} ca cert embed: ${CURL_CA_EMBED_msg} ca fallback: ${with_ca_fallback} LDAP: ${curl_ldap_msg} LDAPS: ${curl_ldaps_msg} IPFS/IPNS: ${curl_ipfs_msg} RTSP: ${curl_rtsp_msg} RTMP: ${curl_rtmp_msg} PSL: ${curl_psl_msg} Alt-svc: ${curl_altsvc_msg} Headers API: ${curl_headers_msg} HSTS: ${curl_hsts_msg} HTTP1: ${curl_h1_msg} HTTP2: ${curl_h2_msg} HTTP3: ${curl_h3_msg} ECH: ${curl_ech_msg} HTTPS RR: ${curl_httpsrr_msg} SSLS-EXPORT: ${curl_ssls_export_msg} Protocols: ${SUPPORT_PROTOCOLS_LOWER} Features: ${SUPPORT_FEATURES} " >&5 printf "%s\n" "$as_me: Configured to build curl/libcurl: Host setup: ${host} Install prefix: ${prefix} Compiler: ${CC} CFLAGS: ${CFLAGS} CFLAGS extras: ${CURL_CFLAG_EXTRAS} CPPFLAGS: ${CPPFLAGS} LDFLAGS: ${LDFLAGS} curl-config: ${LIBCURL_PC_LDFLAGS_PRIVATE} LIBS: ${LIBS} curl version: ${CURLVERSION} SSL: ${curl_ssl_msg} SSH: ${curl_ssh_msg} zlib: ${curl_zlib_msg} brotli: ${curl_brotli_msg} zstd: ${curl_zstd_msg} GSS-API: ${curl_gss_msg} GSASL: ${curl_gsasl_msg} TLS-SRP: ${curl_tls_srp_msg} resolver: ${curl_res_msg} IPv6: ${curl_ipv6_msg} Unix sockets: ${curl_unix_sockets_msg} IDN: ${curl_idn_msg} Build docs: ${curl_docs_msg} Build libcurl: Shared=${enable_shared}, Static=${enable_static} Built-in manual: ${curl_manual_msg} --libcurl option: ${curl_libcurl_msg} Verbose errors: ${curl_verbose_msg} Code coverage: ${curl_coverage_msg} SSPI: ${curl_sspi_msg} ca cert bundle: ${ca}${ca_warning} ca cert path: ${capath}${capath_warning} ca cert embed: ${CURL_CA_EMBED_msg} ca fallback: ${with_ca_fallback} LDAP: ${curl_ldap_msg} LDAPS: ${curl_ldaps_msg} IPFS/IPNS: ${curl_ipfs_msg} RTSP: ${curl_rtsp_msg} RTMP: ${curl_rtmp_msg} PSL: ${curl_psl_msg} Alt-svc: ${curl_altsvc_msg} Headers API: ${curl_headers_msg} HSTS: ${curl_hsts_msg} HTTP1: ${curl_h1_msg} HTTP2: ${curl_h2_msg} HTTP3: ${curl_h3_msg} ECH: ${curl_ech_msg} HTTPS RR: ${curl_httpsrr_msg} SSLS-EXPORT: ${curl_ssls_export_msg} Protocols: ${SUPPORT_PROTOCOLS_LOWER} Features: ${SUPPORT_FEATURES} " >&6;} # grep -o would simplify this, but is nonportable non13=`echo "$TLSCHOICE" | $AWK '{split("bearssl secure-transport", a); for (i in a) if(match(tolower($0), a[i])) print a[i];}'` if test -n "$non13"; then for a in $non13; do { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $a is enabled for TLS but it does not support TLS 1.3" >&5 printf "%s\n" "$as_me: WARNING: $a is enabled for TLS but it does not support TLS 1.3" >&2;} done fi if test -n "$experimental"; then for a in $experimental; do { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $a is enabled but marked EXPERIMENTAL. Use with caution!" >&5 printf "%s\n" "$as_me: WARNING: $a is enabled but marked EXPERIMENTAL. Use with caution!" >&2;} done fi curl_pflags="" if test "$curl_cv_apple" = 'yes'; then curl_pflags="${curl_pflags} APPLE" fi case $host in *-*-*bsd*|*-*-aix*|*-*-hpux*|*-*-interix*|*-*-irix*|*-*-linux*|*-*-solaris*|*-*-sunos*|*-apple-*|*-*-cygwin*|*-*-msys*) curl_pflags="${curl_pflags} UNIX";; esac case $host in *-*-*bsd*) curl_pflags="${curl_pflags} BSD";; esac case $host in *-*-android*) curl_pflags="${curl_pflags} ANDROID" ANDROID_PLATFORM_LEVEL=`echo "$host_os" | $SED -ne 's/.*android\([0-9]*\).*/\1/p'` if test -n "${ANDROID_PLATFORM_LEVEL}"; then curl_pflags="${curl_pflags}-${ANDROID_PLATFORM_LEVEL}" fi ;; esac if test "$curl_cv_native_windows" = 'yes'; then curl_pflags="${curl_pflags} WIN32" fi if test "$curl_cv_wince" = 'yes'; then curl_pflags="${curl_pflags} WINCE" fi if test "$curl_cv_winuwp" = 'yes'; then curl_pflags="${curl_pflags} UWP" fi case $host in *-*-*bsd*|*-*-aix*|*-*-hpux*|*-*-interix*|*-*-irix*|*-*-linux*|*-*-solaris*|*-*-sunos*|*-apple-*|*-*-cygwin*|*-*-msys*) curl_pflags="${curl_pflags} UNIX";; esac case $host in *-*-*bsd*) curl_pflags="${curl_pflags} BSD";; esac if test "$curl_cv_cygwin" = 'yes'; then curl_pflags="${curl_pflags} CYGWIN" fi case $host_os in msdos*) curl_pflags="${curl_pflags} DOS";; amiga*) curl_pflags="${curl_pflags} AMIGA";; esac if test "x$compiler_id" = 'xGNU_C'; then curl_pflags="${curl_pflags} GCC" fi case $host_os in mingw*) curl_pflags="${curl_pflags} MINGW";; esac if test "x$cross_compiling" = 'xyes'; then curl_pflags="${curl_pflags} CROSS" fi squeeze curl_pflags curl_buildinfo=" buildinfo.configure.tool: configure buildinfo.configure.args: $ac_configure_args buildinfo.host: $build buildinfo.host.cpu: $build_cpu buildinfo.host.os: $build_os buildinfo.target: $host buildinfo.target.cpu: $host_cpu buildinfo.target.os: $host_os buildinfo.target.flags: $curl_pflags buildinfo.compiler: $compiler_id buildinfo.compiler.version: $compiler_ver buildinfo.sysroot: $lt_sysroot" echo "# This is a generated file. Do not edit.${curl_buildinfo}" > ./buildinfo.txt if test -n "$CURL_BUILDINFO$CURL_CI$CI"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${curl_buildinfo}" >&5 printf "%s\n" "$as_me: ${curl_buildinfo}" >&6;} fi curl-8.14.1/configure.ac0000644000000000000000000050066215017756261013251 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # #*************************************************************************** dnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.59) dnl We don't know the version number "statically" so we use a dash here AC_INIT([curl], [-], [a suitable curl mailing list: https://curl.se/mail/]) XC_OVR_ZZ50 XC_OVR_ZZ60 CURL_OVERRIDE_AUTOCONF dnl configure script copyright AC_COPYRIGHT([Copyright (C) Daniel Stenberg, This configure script may be copied, distributed and modified under the terms of the curl license; see COPYING for more details]) AC_CONFIG_SRCDIR([lib/urldata.h]) AC_CONFIG_HEADERS(lib/curl_config.h) AH_TOP([/* !checksrc! disable COPYRIGHT all */]) AC_CONFIG_MACRO_DIR([m4]) AM_MAINTAINER_MODE m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) CURL_CHECK_OPTION_DEBUG AM_CONDITIONAL(DEBUGBUILD, test x$want_debug = xyes) CURL_CHECK_OPTION_OPTIMIZE CURL_CHECK_OPTION_WARNINGS CURL_CHECK_OPTION_WERROR CURL_CHECK_OPTION_CURLDEBUG AM_CONDITIONAL(CURLDEBUG, test x$want_curldebug = xyes) CURL_CHECK_OPTION_SYMBOL_HIDING CURL_CHECK_OPTION_ARES CURL_CHECK_OPTION_RT CURL_CHECK_OPTION_HTTPSRR CURL_CHECK_OPTION_ECH CURL_CHECK_OPTION_SSLS_EXPORT XC_CHECK_PATH_SEPARATOR # # save the configure arguments # CONFIGURE_OPTIONS="\"$ac_configure_args\"" AC_SUBST(CONFIGURE_OPTIONS) dnl SED is mandatory for configure process and libtool. dnl Set it now, allowing it to be changed later. if test -z "$SED"; then dnl allow it to be overridden AC_PATH_PROG([SED], [sed], [not_found], [$PATH:/usr/bin:/usr/local/bin]) if test -z "$SED" || test "$SED" = "not_found"; then AC_MSG_ERROR([sed not found in PATH. Cannot continue without sed.]) fi fi AC_SUBST([SED]) dnl GREP is mandatory for configure process and libtool. dnl Set it now, allowing it to be changed later. if test -z "$GREP"; then dnl allow it to be overridden AC_PATH_PROG([GREP], [grep], [not_found], [$PATH:/usr/bin:/usr/local/bin]) if test -z "$GREP" || test "$GREP" = "not_found"; then AC_MSG_ERROR([grep not found in PATH. Cannot continue without grep.]) fi fi AC_SUBST([GREP]) dnl 'grep -E' is mandatory for configure process and libtool. dnl Set it now, allowing it to be changed later. if test -z "$EGREP"; then dnl allow it to be overridden AC_MSG_CHECKING([that grep -E works]) if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then EGREP="$GREP -E" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) AC_PATH_PROG([EGREP], [egrep], [not_found], [$PATH:/usr/bin:/usr/local/bin]) fi fi if test -z "$EGREP" || test "$EGREP" = "not_found"; then AC_MSG_ERROR([grep -E is not working and egrep is not found in PATH. Cannot continue.]) fi AC_SUBST([EGREP]) dnl AR is mandatory for configure process and libtool. dnl This is target dependent, so check it as a tool. if test -z "$AR"; then dnl allow it to be overridden AC_PATH_TOOL([AR], [ar], [not_found], [$PATH:/usr/bin:/usr/local/bin]) if test -z "$AR" || test "$AR" = "not_found"; then AC_MSG_ERROR([ar not found in PATH. Cannot continue without ar.]) fi fi AC_SUBST([AR]) AC_SUBST(libext) dnl figure out the libcurl version CURLVERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)".*/\1/p' ${srcdir}/include/curl/curlver.h` XC_CHECK_PROG_CC CURL_ATOMIC dnl for --enable-code-coverage CURL_COVERAGE XC_AUTOMAKE AC_MSG_CHECKING([curl version]) AC_MSG_RESULT($CURLVERSION) AC_SUBST(CURLVERSION) dnl dnl we extract the numerical version for curl-config only VERSIONNUM=`$SED -ne 's/^#define LIBCURL_VERSION_NUM 0x\([0-9A-Fa-f]*\).*/\1/p' ${srcdir}/include/curl/curlver.h` AC_SUBST(VERSIONNUM) dnl dnl initialize all the info variables curl_ssl_msg="no (--with-{openssl,gnutls,mbedtls,wolfssl,schannel,secure-transport,amissl,bearssl,rustls} )" curl_ssh_msg="no (--with-{libssh,libssh2})" curl_zlib_msg="no (--with-zlib)" curl_brotli_msg="no (--with-brotli)" curl_zstd_msg="no (--with-zstd)" curl_gss_msg="no (--with-gssapi)" curl_gsasl_msg="no (--with-gsasl)" curl_tls_srp_msg="no (--enable-tls-srp)" curl_res_msg="blocking (--enable-ares / --enable-threaded-resolver)" curl_ipv6_msg="no (--enable-ipv6)" curl_unix_sockets_msg="no (--enable-unix-sockets)" curl_idn_msg="no (--with-{libidn2,winidn})" curl_docs_msg="enabled (--disable-docs)" curl_manual_msg="no (--enable-manual)" curl_libcurl_msg="enabled (--disable-libcurl-option)" curl_verbose_msg="enabled (--disable-verbose)" curl_sspi_msg="no (--enable-sspi)" curl_ldap_msg="no (--enable-ldap / --with-ldap-lib / --with-lber-lib)" curl_ldaps_msg="no (--enable-ldaps)" curl_ipfs_msg="no (--enable-ipfs)" curl_rtsp_msg="no (--enable-rtsp)" curl_rtmp_msg="no (--with-librtmp)" curl_psl_msg="no (--with-libpsl)" curl_altsvc_msg="enabled (--disable-alt-svc)" curl_headers_msg="enabled (--disable-headers-api)" curl_hsts_msg="enabled (--disable-hsts)" ssl_backends= curl_h1_msg="enabled (internal)" curl_h2_msg="no (--with-nghttp2)" curl_h3_msg="no (--with-ngtcp2 --with-nghttp3, --with-quiche, --with-openssl-quic, --with-msh3)" enable_altsvc="yes" hsts="yes" dnl dnl Save some initial values the user might have provided dnl INITIAL_LDFLAGS=$LDFLAGS INITIAL_LIBS=$LIBS dnl dnl Generates a shell script to run the compiler with LD_LIBRARY_PATH set to dnl the value used right now. This lets CURL_RUN_IFELSE set LD_LIBRARY_PATH to dnl something different but only have that affect the execution of the results dnl of the compile, not change the libraries for the compiler itself. dnl compilersh="run-compiler" CURL_SAVED_CC="$CC" export CURL_SAVED_CC CURL_SAVED_LD_LIBRARY_PATH="$LD_LIBRARY_PATH" export CURL_SAVED_LD_LIBRARY_PATH cat <<\EOF > "$compilersh" CC="$CURL_SAVED_CC" export CC LD_LIBRARY_PATH="$CURL_SAVED_LD_LIBRARY_PATH" export LD_LIBRARY_PATH exec $CC "$@" EOF dnl ********************************************************************** dnl See which TLS backend(s) that are requested. Just do all the dnl TLS AC_ARG_WITH() invokes here and do the checks later dnl ********************************************************************** OPT_SCHANNEL=no AC_ARG_WITH(schannel,dnl AS_HELP_STRING([--with-schannel],[enable Windows native SSL/TLS]), OPT_SCHANNEL=$withval TLSCHOICE="schannel") OPT_SECURETRANSPORT=no AC_ARG_WITH(secure-transport,dnl AS_HELP_STRING([--with-secure-transport],[enable Apple OS native SSL/TLS]),[ OPT_SECURETRANSPORT=$withval TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }Secure-Transport" ]) OPT_AMISSL=no AC_ARG_WITH(amissl,dnl AS_HELP_STRING([--with-amissl],[enable Amiga native SSL/TLS (AmiSSL)]),[ OPT_AMISSL=$withval TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }AmiSSL" ]) OPT_OPENSSL=no dnl Default to no CA bundle ca="no" AC_ARG_WITH(ssl,dnl AS_HELP_STRING([--with-ssl=PATH],[old version of --with-openssl]) AS_HELP_STRING([--without-ssl], [build without any TLS library]),[ OPT_SSL=$withval OPT_OPENSSL=$withval if test X"$withval" != Xno; then TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL" else SSL_DISABLED="D" fi ]) AC_ARG_WITH(openssl,dnl AS_HELP_STRING([--with-openssl=PATH],[Where to look for OpenSSL, PATH points to the SSL installation (default: /usr/local/ssl); when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]),[ OPT_OPENSSL=$withval if test X"$withval" != Xno; then TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL" fi ]) OPT_GNUTLS=no AC_ARG_WITH(gnutls,dnl AS_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root]),[ OPT_GNUTLS=$withval if test X"$withval" != Xno; then TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }GnuTLS" fi ]) OPT_MBEDTLS=no AC_ARG_WITH(mbedtls,dnl AS_HELP_STRING([--with-mbedtls=PATH],[where to look for mbedTLS, PATH points to the installation root]),[ OPT_MBEDTLS=$withval if test X"$withval" != Xno; then TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }mbedTLS" fi ]) OPT_WOLFSSL=no AC_ARG_WITH(wolfssl,dnl AS_HELP_STRING([--with-wolfssl=PATH],[where to look for wolfSSL, PATH points to the installation root (default: system lib default)]),[ OPT_WOLFSSL=$withval if test X"$withval" != Xno; then TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }wolfSSL" fi ]) OPT_BEARSSL=no AC_ARG_WITH(bearssl,dnl AS_HELP_STRING([--with-bearssl=PATH],[where to look for BearSSL, PATH points to the installation root]),[ OPT_BEARSSL=$withval if test X"$withval" != Xno; then TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }BearSSL" fi ]) OPT_RUSTLS=no AC_ARG_WITH(rustls,dnl AS_HELP_STRING([--with-rustls=PATH],[where to look for Rustls, PATH points to the installation root]),[ OPT_RUSTLS=$withval if test X"$withval" != Xno; then TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }rustls" experimental="$experimental rustls" fi ]) TEST_NGHTTPX=nghttpx AC_ARG_WITH(test-nghttpx,dnl AS_HELP_STRING([--with-test-nghttpx=PATH],[where to find nghttpx for testing]), TEST_NGHTTPX=$withval if test X"$TEST_NGHTTPX" = "Xno"; then TEST_NGHTTPX="" fi ) AC_SUBST(TEST_NGHTTPX) if test -x /usr/bin/caddy; then CADDY=/usr/bin/caddy elif test -x /usr/local/bin/caddy; then CADDY=/usr/local/bin/caddy elif test -x "`brew --prefix 2>/dev/null`/bin/caddy"; then CADDY=`brew --prefix`/bin/caddy fi AC_ARG_WITH(test-caddy,dnl AS_HELP_STRING([--with-test-caddy=PATH],[where to find caddy for testing]), CADDY=$withval if test X"$CADDY" = "Xno"; then CADDY="" fi ) AC_SUBST(CADDY) if test -x /usr/sbin/vsftpd; then VSFTPD=/usr/sbin/vsftpd elif test -x /usr/local/sbin/vsftpd; then VSFTPD=/usr/local/sbin/vsftpd elif test -x "`brew --prefix 2>/dev/null`/sbin/vsftpd"; then VSFTPD=`brew --prefix`/sbin/vsftpd fi AC_ARG_WITH(test-vsftpd,dnl AS_HELP_STRING([--with-test-vsftpd=PATH],[where to find vsftpd for testing]), VSFTPD=$withval if test X"$VSFTPD" = "Xno"; then VSFTPD="" fi ) AC_SUBST(VSFTPD) dnl we'd like a httpd as test server dnl HTTPD_ENABLED="maybe" AC_ARG_WITH(test-httpd, [AS_HELP_STRING([--with-test-httpd=PATH], [where to find httpd/apache2 for testing])], [request_httpd=$withval], [request_httpd=check]) if test x"$request_httpd" = "xcheck" -o x"$request_httpd" = "xyes"; then if test -x "/usr/sbin/apache2"; then # common location on distros (debian/ubuntu) HTTPD="/usr/sbin/apache2" AC_PATH_PROG([APXS], [apxs]) if test "x$APXS" = "x"; then AC_MSG_NOTICE([apache2-dev not installed, httpd tests disabled]) HTTPD_ENABLED="no" fi else AC_PATH_PROG([HTTPD], [httpd]) if test "x$HTTPD" = "x"; then AC_PATH_PROG([HTTPD], [apache2]) fi AC_PATH_PROG([APXS], [apxs]) if test "x$HTTPD" = "x"; then AC_MSG_NOTICE([httpd/apache2 not in PATH, http tests disabled]) HTTPD_ENABLED="no" fi if test "x$APXS" = "x"; then AC_MSG_NOTICE([apxs not in PATH, http tests disabled]) HTTPD_ENABLED="no" fi fi elif test x"$request_httpd" != "xno"; then HTTPD="${request_httpd}/bin/httpd" APXS="${request_httpd}/bin/apxs" if test ! -x "${HTTPD}"; then AC_MSG_NOTICE([httpd not found as ${HTTPD}, http tests disabled]) HTTPD_ENABLED="no" elif test ! -x "${APXS}"; then AC_MSG_NOTICE([apxs not found as ${APXS}, http tests disabled]) HTTPD_ENABLED="no" else AC_MSG_NOTICE([using HTTPD=$HTTPD for tests]) fi fi if test x"$HTTPD_ENABLED" = "xno"; then HTTPD="" APXS="" fi AC_SUBST(HTTPD) AC_SUBST(APXS) dnl the nghttpx we might use in httpd testing if test "x$TEST_NGHTTPX" != "x" -a "x$TEST_NGHTTPX" != "xnghttpx"; then HTTPD_NGHTTPX="$TEST_NGHTTPX" else AC_PATH_PROG([HTTPD_NGHTTPX], [nghttpx], [], [$PATH:/usr/bin:/usr/local/bin]) fi AC_SUBST(HTTPD_NGHTTPX) dnl the Caddy server we might use in testing if test "x$TEST_CADDY" != "x"; then CADDY="$TEST_CADDY" else AC_PATH_PROG([CADDY], [caddy]) fi AC_SUBST(CADDY) dnl If no TLS choice has been made, check if it was explicitly disabled or dnl error out to force the user to decide. if test -z "$TLSCHOICE"; then if test "x$OPT_SSL" != "xno"; then AC_MSG_ERROR([select TLS backend(s) or disable TLS with --without-ssl. Select from these: --with-amissl --with-bearssl --with-gnutls --with-mbedtls --with-openssl (also works for BoringSSL and LibreSSL) --with-rustls --with-schannel --with-secure-transport --with-wolfssl ]) fi fi AC_ARG_WITH(darwinssl,, AC_MSG_ERROR([--with-darwin-ssl and --without-darwin-ssl no longer work!])) dnl dnl Detect the canonical host and target build environment dnl AC_CANONICAL_HOST dnl Get system canonical name AC_DEFINE_UNQUOTED(CURL_OS, "${host}", [cpu-machine-OS]) # Silence warning: ar: 'u' modifier ignored since 'D' is the default AC_SUBST(AR_FLAGS, [cr]) dnl This defines _ALL_SOURCE for AIX CURL_CHECK_AIX_ALL_SOURCE dnl Our configure and build reentrant settings CURL_CONFIGURE_THREAD_SAFE CURL_CONFIGURE_REENTRANT dnl check for how to do large files AC_SYS_LARGEFILE XC_LIBTOOL LT_LANG([Windows Resource]) AM_CONDITIONAL(NOT_CURL_CI, test -z "$CURL_CI") # # Automake conditionals based on libtool related checks # AM_CONDITIONAL([CURL_LT_SHLIB_USE_VERSION_INFO], [test "x$xc_lt_shlib_use_version_info" = 'xyes']) AM_CONDITIONAL([CURL_LT_SHLIB_USE_NO_UNDEFINED], [test "x$xc_lt_shlib_use_no_undefined" = 'xyes']) AM_CONDITIONAL([CURL_LT_SHLIB_USE_MIMPURE_TEXT], [test "x$xc_lt_shlib_use_mimpure_text" = 'xyes']) # # Due to libtool and automake machinery limitations of not allowing # specifying separate CPPFLAGS or CFLAGS when compiling objects for # inclusion of these in shared or static libraries, we are forced to # build using separate configure runs for shared and static libraries # on systems where different CPPFLAGS or CFLAGS are mandatory in order # to compile objects for each kind of library. Notice that relying on # the '-DPIC' CFLAG that libtool provides is not valid given that the # user might for example choose to build static libraries with PIC. # # # Make our Makefile.am files use the staticlib CPPFLAG only when strictly # targeting a static library and not building its shared counterpart. # AM_CONDITIONAL([USE_CPPFLAG_CURL_STATICLIB], [test "x$xc_lt_build_static_only" = 'xyes']) # # Make staticlib CPPFLAG variable and its definition visible in output # files unconditionally, providing an empty definition unless strictly # targeting a static library and not building its shared counterpart. # LIBCURL_PC_CFLAGS_PRIVATE='-DCURL_STATICLIB' AC_SUBST(LIBCURL_PC_CFLAGS_PRIVATE) LIBCURL_PC_CFLAGS= if test "x$xc_lt_build_static_only" = 'xyes'; then LIBCURL_PC_CFLAGS="${LIBCURL_PC_CFLAGS_PRIVATE}" fi AC_SUBST([LIBCURL_PC_CFLAGS]) dnl ********************************************************************** dnl platform/compiler/architecture specific checks/flags dnl ********************************************************************** CURL_CHECK_COMPILER CURL_CHECK_NATIVE_WINDOWS curl_cv_wince='no' curl_cv_winuwp='no' if test "$curl_cv_native_windows" = "yes"; then case $host_os in mingw32ce*) curl_cv_wince='yes';; esac case "$CPPFLAGS" in *-DWINSTORECOMPAT*) curl_cv_winuwp='yes';; esac fi CURL_SET_COMPILER_BASIC_OPTS CURL_SET_COMPILER_DEBUG_OPTS CURL_SET_COMPILER_OPTIMIZE_OPTS CURL_SET_COMPILER_WARNING_OPTS if test "$compiler_id" = "INTEL_UNIX_C"; then # if test "$compiler_num" -ge "1000"; then dnl icc 10.X or later CFLAGS="$CFLAGS -shared-intel" elif test "$compiler_num" -ge "900"; then dnl icc 9.X specific CFLAGS="$CFLAGS -i-dynamic" fi # fi CURL_CFLAG_EXTRAS="" if test X"$want_werror" = Xyes; then CURL_CFLAG_EXTRAS="-Werror" if test "$compiler_id" = "GNU_C"; then dnl enable -pedantic-errors for GCC 5 and later, dnl as before that it was the same as -Werror=pedantic if test "$compiler_num" -ge "500"; then CURL_CFLAG_EXTRAS="$CURL_CFLAG_EXTRAS -pedantic-errors" fi elif test "$compiler_id" = "CLANG" -o "$compiler_id" = "APPLECLANG"; then CURL_CFLAG_EXTRAS="$CURL_CFLAG_EXTRAS -pedantic-errors" fi fi AC_SUBST(CURL_CFLAG_EXTRAS) AM_CONDITIONAL(CURL_WERROR, test X"$want_werror" = Xyes) CURL_CHECK_COMPILER_HALT_ON_ERROR CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE CURL_CHECK_COMPILER_PROTOTYPE_MISMATCH CURL_CHECK_COMPILER_SYMBOL_HIDING supports_unittests=yes # cross-compilation of unit tests static library/programs fails when # libcurl shared library is built. This might be due to a libtool or # automake issue. In this case we disable unit tests. if test "x$cross_compiling" != "xno" && test "x$enable_shared" != "xno"; then supports_unittests=no fi # IRIX 6.5.24 gcc 3.3 autobuilds fail unittests library compilation due to # a problem related with OpenSSL headers and library versions not matching. # Disable unit tests while time to further investigate this is found. case $host in mips-sgi-irix6.5) if test "$compiler_id" = "GNU_C"; then supports_unittests=no fi ;; esac # All AIX autobuilds fails unit tests linking against unittests library # due to unittests library being built with no symbols or members. Libtool ? # Disable unit tests while time to further investigate this is found. case $host_os in aix*) supports_unittests=no ;; esac AM_CONDITIONAL(BUILD_UNITTESTS, test x$supports_unittests = xyes) # In order to detect support of sendmmsg() and accept4(), we need to escape the POSIX # jail by defining _GNU_SOURCE or will not expose it. case $host_os in *linux*|cygwin*|msys*) CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" ;; esac dnl Apply curl debug options to test servers OPT_SERVER_DEBUG="default" AC_ARG_ENABLE(server-debug, AS_HELP_STRING([--enable-server-debug],[Enable debug options for test servers]) AS_HELP_STRING([--disable-server-debug],[Disable debug options for test servers]), OPT_SERVER_DEBUG=$enableval) case "$OPT_SERVER_DEBUG" in no) dnl --disable-server-debug option used want_server_debug="no" ;; *) dnl --enable-server-debug option used or not specified want_server_debug="no" ;; esac AC_MSG_RESULT([$want_server_debug]) AM_CONDITIONAL(ENABLE_SERVER_DEBUG, test x$want_server_debug = xyes) dnl ********************************************************************** dnl Compilation based checks should not be done before this point. dnl ********************************************************************** CURL_CHECK_WIN32_LARGEFILE CURL_CHECK_WIN32_CRYPTO curl_cv_apple='no' case $host in *-apple-*) curl_cv_apple='yes';; esac if test "$curl_cv_apple" = 'yes'; then CURL_DARWIN_CFLAGS CURL_SUPPORTS_BUILTIN_AVAILABLE fi curl_cv_cygwin='no' case $host_os in cygwin*|msys*) curl_cv_cygwin='yes';; esac AM_CONDITIONAL([HAVE_WINDRES], [test "$curl_cv_native_windows" = "yes" && test -n "${RC}"]) if test "$curl_cv_native_windows" = "yes"; then AM_COND_IF([HAVE_WINDRES],, [AC_MSG_ERROR([windres not found in PATH. Windows builds require windres. Cannot continue.])]) fi dnl ---------------------------------------- dnl whether use "unity" mode for lib and src dnl ---------------------------------------- want_unity='no' AC_MSG_CHECKING([whether to build libcurl and curl in "unity" mode]) AC_ARG_ENABLE(unity, AS_HELP_STRING([--enable-unity],[Enable unity mode]) AS_HELP_STRING([--disable-unity],[Disable unity (default)]), [ case "$enableval" in yes) want_unity='yes' AC_MSG_RESULT([yes]) ;; *) AC_MSG_RESULT([no]) ;; esac ], AC_MSG_RESULT([no]) ) AM_CONDITIONAL([USE_UNITY], [test "$want_unity" = 'yes']) dnl ----------------------- dnl whether to bundle tests dnl ----------------------- want_test_bundles='no' AC_MSG_CHECKING([whether to build tests into single-binary bundles]) AC_ARG_ENABLE(test-bundles, AS_HELP_STRING([--enable-test-bundles],[Enable test bundles]) AS_HELP_STRING([--disable-test-bundles],[Disable test bundles (default)]), [ case "$enableval" in yes) want_test_bundles='yes' AC_MSG_RESULT([yes]) ;; *) AC_MSG_RESULT([no]) ;; esac ], AC_MSG_RESULT([no]) ) AM_CONDITIONAL([USE_TEST_BUNDLES], [test "$want_test_bundles" = 'yes']) dnl ************************************************************ dnl switch off particular protocols dnl AC_MSG_CHECKING([whether to support http]) AC_ARG_ENABLE(http, AS_HELP_STRING([--enable-http],[Enable HTTP support]) AS_HELP_STRING([--disable-http],[Disable HTTP support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP]) disable_http="yes" AC_MSG_WARN([disable HTTP disables FTP over proxy, IPFS and RTSP]) CURL_DISABLE_HTTP=1 AC_DEFINE(CURL_DISABLE_IPFS, 1, [to disable IPFS]) CURL_DISABLE_IPFS=1 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP]) CURL_DISABLE_RTSP=1 dnl toggle off alt-svc too when HTTP is disabled AC_DEFINE(CURL_DISABLE_ALTSVC, 1, [disable alt-svc]) AC_DEFINE(CURL_DISABLE_HSTS, 1, [disable HSTS]) curl_h1_msg="no (--enable-http)" curl_altsvc_msg="no"; curl_hsts_msg="no (--enable-hsts)"; enable_altsvc="no" hsts="no" ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) AC_MSG_CHECKING([whether to support ftp]) AC_ARG_ENABLE(ftp, AS_HELP_STRING([--enable-ftp],[Enable FTP support]) AS_HELP_STRING([--disable-ftp],[Disable FTP support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_FTP, 1, [to disable FTP]) CURL_DISABLE_FTP=1 ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) AC_MSG_CHECKING([whether to support file]) AC_ARG_ENABLE(file, AS_HELP_STRING([--enable-file],[Enable FILE support]) AS_HELP_STRING([--disable-file],[Disable FILE support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_FILE, 1, [to disable FILE]) CURL_DISABLE_FILE=1 ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) AC_MSG_CHECKING([whether to support IPFS]) AC_ARG_ENABLE(ipfs, AS_HELP_STRING([--enable-ipfs],[Enable IPFS support]) AS_HELP_STRING([--disable-ipfs],[Disable IPFS support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_IPFS, 1, [to disable IPFS]) CURL_DISABLE_IPFS=1 ;; *) if test x$CURL_DISABLE_HTTP = x1; then AC_MSG_ERROR(HTTP support needs to be enabled in order to enable IPFS support!) else AC_MSG_RESULT(yes) curl_ipfs_msg="enabled" fi ;; esac ], if test "x$CURL_DISABLE_HTTP" != "x1"; then AC_MSG_RESULT(yes) curl_ipfs_msg="enabled" else AC_MSG_RESULT(no) fi ) AC_MSG_CHECKING([whether to support ldap]) AC_ARG_ENABLE(ldap, AS_HELP_STRING([--enable-ldap],[Enable LDAP support]) AS_HELP_STRING([--disable-ldap],[Disable LDAP support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP]) CURL_DISABLE_LDAP=1 ;; yes) ldap_askedfor="yes" AC_MSG_RESULT(yes) ;; *) AC_MSG_RESULT(yes) ;; esac ],[ AC_MSG_RESULT(yes) ] ) AC_MSG_CHECKING([whether to support ldaps]) AC_ARG_ENABLE(ldaps, AS_HELP_STRING([--enable-ldaps],[Enable LDAPS support]) AS_HELP_STRING([--disable-ldaps],[Disable LDAPS support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) CURL_DISABLE_LDAPS=1 ;; *) if test "x$CURL_DISABLE_LDAP" = "x1"; then AC_MSG_RESULT(LDAP needs to be enabled to support LDAPS) AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) CURL_DISABLE_LDAPS=1 else AC_MSG_RESULT(yes) AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation]) HAVE_LDAP_SSL=1 fi ;; esac ],[ if test "x$CURL_DISABLE_LDAP" = "x1"; then AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) CURL_DISABLE_LDAPS=1 else AC_MSG_RESULT(yes) AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation]) HAVE_LDAP_SSL=1 fi ] ) AC_MSG_CHECKING([whether to support rtsp]) AC_ARG_ENABLE(rtsp, AS_HELP_STRING([--enable-rtsp],[Enable RTSP support]) AS_HELP_STRING([--disable-rtsp],[Disable RTSP support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP]) CURL_DISABLE_RTSP=1 ;; *) if test x$CURL_DISABLE_HTTP = x1; then AC_MSG_ERROR(HTTP support needs to be enabled in order to enable RTSP support!) else AC_MSG_RESULT(yes) curl_rtsp_msg="enabled" fi ;; esac ], if test "x$CURL_DISABLE_HTTP" != "x1"; then AC_MSG_RESULT(yes) curl_rtsp_msg="enabled" else AC_MSG_RESULT(no) fi ) AC_MSG_CHECKING([whether to support proxies]) AC_ARG_ENABLE(proxy, AS_HELP_STRING([--enable-proxy],[Enable proxy support]) AS_HELP_STRING([--disable-proxy],[Disable proxy support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_PROXY, 1, [to disable proxies]) CURL_DISABLE_PROXY=1 https_proxy="no" ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) AC_MSG_CHECKING([whether to support dict]) AC_ARG_ENABLE(dict, AS_HELP_STRING([--enable-dict],[Enable DICT support]) AS_HELP_STRING([--disable-dict],[Disable DICT support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_DICT, 1, [to disable DICT]) CURL_DISABLE_DICT=1 ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) AC_MSG_CHECKING([whether to support telnet]) AC_ARG_ENABLE(telnet, AS_HELP_STRING([--enable-telnet],[Enable TELNET support]) AS_HELP_STRING([--disable-telnet],[Disable TELNET support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET]) CURL_DISABLE_TELNET=1 ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) if test "$curl_cv_winuwp" = 'yes' -o "$curl_cv_wince" = 'yes'; then AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET]) CURL_DISABLE_TELNET=1 fi AC_MSG_CHECKING([whether to support tftp]) AC_ARG_ENABLE(tftp, AS_HELP_STRING([--enable-tftp],[Enable TFTP support]) AS_HELP_STRING([--disable-tftp],[Disable TFTP support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_TFTP, 1, [to disable TFTP]) CURL_DISABLE_TFTP=1 ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) AC_MSG_CHECKING([whether to support pop3]) AC_ARG_ENABLE(pop3, AS_HELP_STRING([--enable-pop3],[Enable POP3 support]) AS_HELP_STRING([--disable-pop3],[Disable POP3 support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_POP3, 1, [to disable POP3]) CURL_DISABLE_POP3=1 ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) AC_MSG_CHECKING([whether to support imap]) AC_ARG_ENABLE(imap, AS_HELP_STRING([--enable-imap],[Enable IMAP support]) AS_HELP_STRING([--disable-imap],[Disable IMAP support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_IMAP, 1, [to disable IMAP]) CURL_DISABLE_IMAP=1 ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) AC_MSG_CHECKING([whether to support smb]) AC_ARG_ENABLE(smb, AS_HELP_STRING([--enable-smb],[Enable SMB/CIFS support]) AS_HELP_STRING([--disable-smb],[Disable SMB/CIFS support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_SMB, 1, [to disable SMB/CIFS]) CURL_DISABLE_SMB=1 ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) AC_MSG_CHECKING([whether to support smtp]) AC_ARG_ENABLE(smtp, AS_HELP_STRING([--enable-smtp],[Enable SMTP support]) AS_HELP_STRING([--disable-smtp],[Disable SMTP support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_SMTP, 1, [to disable SMTP]) CURL_DISABLE_SMTP=1 ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) AC_MSG_CHECKING([whether to support gopher]) AC_ARG_ENABLE(gopher, AS_HELP_STRING([--enable-gopher],[Enable Gopher support]) AS_HELP_STRING([--disable-gopher],[Disable Gopher support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_GOPHER, 1, [to disable Gopher]) CURL_DISABLE_GOPHER=1 ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) AC_MSG_CHECKING([whether to support mqtt]) AC_ARG_ENABLE(mqtt, AS_HELP_STRING([--enable-mqtt],[Enable MQTT support]) AS_HELP_STRING([--disable-mqtt],[Disable MQTT support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_MQTT, 1, [to disable MQTT]) CURL_DISABLE_MQTT=1 ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(no) ) dnl ********************************************************************** dnl Check for built-in manual dnl ********************************************************************** AC_MSG_CHECKING([whether to provide built-in manual]) AC_ARG_ENABLE(manual, AS_HELP_STRING([--enable-manual],[Enable built-in manual]) AS_HELP_STRING([--disable-manual],[Disable built-in manual]), [ case "$enableval" in no) AC_MSG_RESULT(no) ;; *) AC_MSG_RESULT(yes) USE_MANUAL="1" ;; esac ], AC_MSG_RESULT(yes) USE_MANUAL="1" ) dnl The actual use of the USE_MANUAL variable is done much later in this dnl script to allow other actions to disable it as well. dnl ********************************************************************** dnl Check whether to build documentation dnl ********************************************************************** AC_MSG_CHECKING([whether to build documentation]) AC_ARG_ENABLE(docs, AS_HELP_STRING([--enable-docs],[Enable documentation]) AS_HELP_STRING([--disable-docs],[Disable documentation]), [ case "$enableval" in no) AC_MSG_RESULT(no) BUILD_DOCS=0 dnl disable manual too because it needs built documentation USE_MANUAL=0 curl_docs_msg="no" ;; *) AC_MSG_RESULT(yes) BUILD_DOCS=1 ;; esac ], AC_MSG_RESULT(yes) BUILD_DOCS=1 ) dnl ************************************************************ dnl disable C code generation support dnl AC_MSG_CHECKING([whether to enable generation of C code]) AC_ARG_ENABLE(libcurl_option, AS_HELP_STRING([--enable-libcurl-option],[Enable --libcurl C code generation support]) AS_HELP_STRING([--disable-libcurl-option],[Disable --libcurl C code generation support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_LIBCURL_OPTION, 1, [to disable --libcurl C code generation option]) curl_libcurl_msg="no" ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) dnl ********************************************************************** dnl Checks for libraries. dnl ********************************************************************** AC_MSG_CHECKING([whether to use libgcc]) AC_ARG_ENABLE(libgcc, AS_HELP_STRING([--enable-libgcc],[use libgcc when linking]), [ case "$enableval" in yes) LIBS="-lgcc $LIBS" AC_MSG_RESULT(yes) ;; *) AC_MSG_RESULT(no) ;; esac ], AC_MSG_RESULT(no) ) CURL_CHECK_LIB_XNET dnl gethostbyname without lib or in the nsl lib? AC_CHECK_FUNC(gethostbyname, [ HAVE_GETHOSTBYNAME="1" ], [ AC_CHECK_LIB(nsl, gethostbyname, [ HAVE_GETHOSTBYNAME="1" LIBS="-lnsl $LIBS" ] ) ] ) if test "$HAVE_GETHOSTBYNAME" != "1"; then dnl gethostbyname in the socket lib? AC_CHECK_LIB(socket, gethostbyname, [ HAVE_GETHOSTBYNAME="1" LIBS="-lsocket $LIBS" ] ) fi if test "$HAVE_GETHOSTBYNAME" != "1"; then dnl gethostbyname in the watt lib? clean_CPPFLAGS=$CPPFLAGS clean_LDFLAGS=$LDFLAGS CPPFLAGS="-I${WATT_ROOT}/inc" LDFLAGS="-L${WATT_ROOT}/lib" AC_CHECK_LIB(watt, gethostbyname, [ HAVE_GETHOSTBYNAME="1" LIBS="-lwatt $LIBS" AC_DEFINE(USE_WATT32, 1, [if Watt-32 is in use]) ], [ CPPFLAGS=$clean_CPPFLAGS LDFLAGS=$clean_LDFLAGS ] ) fi dnl At least one system has been identified to require BOTH nsl and socket dnl libs at the same time to link properly. if test "$HAVE_GETHOSTBYNAME" != "1"; then AC_MSG_CHECKING([for gethostbyname with both nsl and socket libs]) my_ac_save_LIBS=$LIBS LIBS="-lnsl -lsocket $LIBS" AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ ]],[[ gethostbyname(); ]]) ],[ AC_MSG_RESULT([yes]) HAVE_GETHOSTBYNAME="1" ],[ AC_MSG_RESULT([no]) LIBS=$my_ac_save_LIBS ]) fi if test "$HAVE_GETHOSTBYNAME" != "1"; then if test "$curl_cv_wince" = 'yes'; then dnl This is for Windows CE systems winsock_LIB="-lws2" if test ! -z "$winsock_LIB"; then my_ac_save_LIBS=$LIBS LIBS="$winsock_LIB $LIBS" AC_MSG_CHECKING([for gethostbyname in $winsock_LIB]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #endif ]],[[ gethostbyname("localhost"); ]]) ],[ AC_MSG_RESULT([yes]) HAVE_GETHOSTBYNAME="1" ],[ AC_MSG_RESULT([no]) winsock_LIB="" LIBS=$my_ac_save_LIBS ]) fi fi fi # In UWP mode gethostbyname gets detected via the core libs, but some # code (in6addr_any) still need ws2_32, so let us detect and add it. if test "$HAVE_GETHOSTBYNAME" != "1" -o "$curl_cv_winuwp" = "yes"; then if test "$curl_cv_native_windows" = "yes"; then dnl This is for Winsock systems winsock_LIB="-lws2_32" if test ! -z "$winsock_LIB"; then my_ac_save_LIBS=$LIBS LIBS="$winsock_LIB $LIBS" AC_MSG_CHECKING([for gethostbyname in $winsock_LIB]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #endif ]],[[ gethostbyname("localhost"); ]]) ],[ AC_MSG_RESULT([yes]) HAVE_GETHOSTBYNAME="1" ],[ AC_MSG_RESULT([no]) winsock_LIB="" LIBS=$my_ac_save_LIBS ]) fi fi fi if test "$HAVE_GETHOSTBYNAME" != "1"; then dnl This is for Minix 3.1 AC_MSG_CHECKING([for gethostbyname for Minix 3]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ /* Older Minix versions may need here instead */ #include ]],[[ gethostbyname("localhost"); ]]) ],[ AC_MSG_RESULT([yes]) HAVE_GETHOSTBYNAME="1" ],[ AC_MSG_RESULT([no]) ]) fi if test "$HAVE_GETHOSTBYNAME" != "1"; then dnl This is for eCos with a stubbed DNS implementation AC_MSG_CHECKING([for gethostbyname for eCos]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #include #include ]],[[ gethostbyname("localhost"); ]]) ],[ AC_MSG_RESULT([yes]) HAVE_GETHOSTBYNAME="1" ],[ AC_MSG_RESULT([no]) ]) fi if test "$HAVE_GETHOSTBYNAME" != "1" -o "${with_amissl+set}" = set; then dnl This is for AmigaOS with bsdsocket.library - needs testing before -lnet AC_MSG_CHECKING([for gethostbyname for AmigaOS bsdsocket.library]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #define __USE_INLINE__ #include #ifdef __amigaos4__ struct SocketIFace *ISocket = NULL; #else struct Library *SocketBase = NULL; #endif ]],[[ unsigned char host[] = "localhost"; gethostbyname(host); ]]) ],[ AC_MSG_RESULT([yes]) HAVE_GETHOSTBYNAME="1" HAVE_PROTO_BSDSOCKET_H="1" AC_DEFINE(HAVE_PROTO_BSDSOCKET_H, 1, [if Amiga bsdsocket.library is in use]) ],[ AC_MSG_RESULT([no]) ]) fi if test "$HAVE_GETHOSTBYNAME" != "1"; then dnl gethostbyname in the network lib - for Haiku OS AC_CHECK_LIB(network, gethostbyname, [ HAVE_GETHOSTBYNAME="1" LIBS="-lnetwork $LIBS" ] ) fi CURL_CHECK_LIBS_CONNECT dnl ********************************************************************** dnl In case that function clock_gettime with monotonic timer is available, dnl check for additional required libraries. dnl ********************************************************************** CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC dnl Check for even better option CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC_RAW dnl ********************************************************************** dnl The preceding library checks are all potentially useful for test dnl servers and libtest cases which require networking and clock_gettime dnl support. Save the list of required libraries at this point for use dnl while linking those test servers and programs. dnl ********************************************************************** CURL_NETWORK_AND_TIME_LIBS=$LIBS dnl ********************************************************************** dnl Check for the presence of ZLIB libraries and headers dnl ********************************************************************** dnl Check for & handle argument to --with-zlib. clean_CPPFLAGS=$CPPFLAGS clean_LDFLAGS=$LDFLAGS clean_LIBS=$LIBS ZLIB_LIBS="" AC_ARG_WITH(zlib, AS_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH]) AS_HELP_STRING([--without-zlib],[disable use of zlib]), [OPT_ZLIB="$withval"]) if test "$OPT_ZLIB" = "no"; then AC_MSG_WARN([zlib disabled]) else if test "$OPT_ZLIB" = "yes"; then OPT_ZLIB="" fi if test -z "$OPT_ZLIB"; then CURL_CHECK_PKGCONFIG(zlib) if test "$PKGCONFIG" != "no"; then ZLIB_LIBS="`$PKGCONFIG --libs-only-l zlib`" if test -n "$ZLIB_LIBS"; then LDFLAGS="$LDFLAGS `$PKGCONFIG --libs-only-L zlib`" else ZLIB_LIBS="`$PKGCONFIG --libs zlib`" fi LIBS="$ZLIB_LIBS $LIBS" CPPFLAGS="$CPPFLAGS `$PKGCONFIG --cflags zlib`" OPT_ZLIB="" HAVE_LIBZ="1" fi if test -z "$HAVE_LIBZ"; then dnl Check for the lib without setting any new path, since many dnl people have it in the default path AC_CHECK_LIB(z, inflateEnd, dnl libz found, set the variable [ HAVE_LIBZ="1" ZLIB_LIBS="-lz" LIBS="$ZLIB_LIBS $LIBS" ], dnl if no lib found, try /usr/local [ OPT_ZLIB="/usr/local" ] ) fi fi dnl Add a nonempty path to the compiler flags if test -n "$OPT_ZLIB"; then CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include" LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib$libsuff" fi AC_CHECK_HEADER(zlib.h, [ dnl zlib.h was found HAVE_ZLIB_H="1" dnl if the lib wasn't found already, try again with the new paths if test "$HAVE_LIBZ" != "1"; then AC_CHECK_LIB(z, gzread, [ dnl the lib was found! HAVE_LIBZ="1" ZLIB_LIBS="-lz" LIBS="$ZLIB_LIBS $LIBS" ], [ CPPFLAGS=$clean_CPPFLAGS LDFLAGS=$clean_LDFLAGS ] ) fi ], [ dnl zlib.h was not found, restore the flags CPPFLAGS=$clean_CPPFLAGS LDFLAGS=$clean_LDFLAGS] ) if test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" != "1"; then AC_MSG_WARN([configure found only the libz lib, not the header file!]) HAVE_LIBZ="" CPPFLAGS=$clean_CPPFLAGS LDFLAGS=$clean_LDFLAGS LIBS=$clean_LIBS ZLIB_LIBS="" elif test "$HAVE_LIBZ" != "1" && test "$HAVE_ZLIB_H" = "1"; then AC_MSG_WARN([configure found only the libz header file, not the lib!]) CPPFLAGS=$clean_CPPFLAGS LDFLAGS=$clean_LDFLAGS LIBS=$clean_LIBS ZLIB_LIBS="" elif test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" = "1"; then dnl both header and lib were found! AC_SUBST(HAVE_LIBZ) AC_DEFINE(HAVE_LIBZ, 1, [if zlib is available]) LIBS="$ZLIB_LIBS $clean_LIBS" dnl replace 'HAVE_LIBZ' in the automake makefile.ams AMFIXLIB="1" AC_MSG_NOTICE([found both libz and libz.h header]) LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE zlib" curl_zlib_msg="enabled" fi fi dnl set variable for use in automakefile(s) AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1) AC_SUBST(ZLIB_LIBS) dnl ********************************************************************** dnl Check for the presence of BROTLI decoder libraries and headers dnl ********************************************************************** dnl Brotli project home page: https://github.com/google/brotli dnl Default to compiler & linker defaults for BROTLI files & libraries. OPT_BROTLI=off AC_ARG_WITH(brotli,dnl AS_HELP_STRING([--with-brotli=PATH],[Where to look for brotli, PATH points to the BROTLI installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]) AS_HELP_STRING([--without-brotli], [disable BROTLI]), OPT_BROTLI=$withval) if test X"$OPT_BROTLI" != Xno; then dnl backup the pre-brotli variables CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" case "$OPT_BROTLI" in yes) dnl --with-brotli (without path) used CURL_CHECK_PKGCONFIG(libbrotlidec) if test "$PKGCONFIG" != "no"; then LIB_BROTLI=`$PKGCONFIG --libs-only-l libbrotlidec` LD_BROTLI=`$PKGCONFIG --libs-only-L libbrotlidec` CPP_BROTLI=`$PKGCONFIG --cflags-only-I libbrotlidec` version=`$PKGCONFIG --modversion libbrotlidec` DIR_BROTLI=`echo $LD_BROTLI | $SED -e 's/^-L//'` fi ;; off) dnl no --with-brotli option given, just check default places ;; *) dnl use the given --with-brotli spot PREFIX_BROTLI=$OPT_BROTLI ;; esac dnl if given with a prefix, we set -L and -I based on that if test -n "$PREFIX_BROTLI"; then LIB_BROTLI="-lbrotlidec" LD_BROTLI=-L${PREFIX_BROTLI}/lib$libsuff CPP_BROTLI=-I${PREFIX_BROTLI}/include DIR_BROTLI=${PREFIX_BROTLI}/lib$libsuff fi LDFLAGS="$LDFLAGS $LD_BROTLI" LDFLAGSPC="$LDFLAGSPC $LD_BROTLI" CPPFLAGS="$CPPFLAGS $CPP_BROTLI" LIBS="$LIB_BROTLI $LIBS" AC_CHECK_LIB(brotlidec, BrotliDecoderDecompress) AC_CHECK_HEADERS(brotli/decode.h, curl_brotli_msg="enabled (libbrotlidec)" HAVE_BROTLI=1 AC_DEFINE(HAVE_BROTLI, 1, [if BROTLI is in use]) ) if test X"$OPT_BROTLI" != Xoff && test "$HAVE_BROTLI" != "1"; then AC_MSG_ERROR([BROTLI libs and/or directories were not found where specified!]) fi if test "$HAVE_BROTLI" = "1"; then if test -n "$DIR_BROTLI"; then dnl when the brotli shared libs were found in a path that the run-time dnl linker doesn't search through, we need to add it to CURL_LIBRARY_PATH dnl to prevent further configure tests to fail due to this if test "x$cross_compiling" != "xyes"; then CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_BROTLI" export CURL_LIBRARY_PATH AC_MSG_NOTICE([Added $DIR_BROTLI to CURL_LIBRARY_PATH]) fi fi LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libbrotlidec libbrotlicommon" else dnl no brotli, revert back to clean variables LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS fi fi dnl ********************************************************************** dnl Check for libzstd dnl ********************************************************************** dnl Default to compiler & linker defaults for libzstd OPT_ZSTD=off AC_ARG_WITH(zstd,dnl AS_HELP_STRING([--with-zstd=PATH],[Where to look for libzstd, PATH points to the libzstd installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]) AS_HELP_STRING([--without-zstd], [disable libzstd]), OPT_ZSTD=$withval) if test X"$OPT_ZSTD" != Xno; then dnl backup the pre-zstd variables CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" case "$OPT_ZSTD" in yes) dnl --with-zstd (without path) used CURL_CHECK_PKGCONFIG(libzstd) if test "$PKGCONFIG" != "no"; then LIB_ZSTD=`$PKGCONFIG --libs-only-l libzstd` LD_ZSTD=`$PKGCONFIG --libs-only-L libzstd` CPP_ZSTD=`$PKGCONFIG --cflags-only-I libzstd` version=`$PKGCONFIG --modversion libzstd` DIR_ZSTD=`echo $LD_ZSTD | $SED -e 's/-L//'` fi ;; off) dnl no --with-zstd option given, just check default places ;; *) dnl use the given --with-zstd spot PREFIX_ZSTD=$OPT_ZSTD ;; esac dnl if given with a prefix, we set -L and -I based on that if test -n "$PREFIX_ZSTD"; then LIB_ZSTD="-lzstd" LD_ZSTD=-L${PREFIX_ZSTD}/lib$libsuff CPP_ZSTD=-I${PREFIX_ZSTD}/include DIR_ZSTD=${PREFIX_ZSTD}/lib$libsuff fi LDFLAGS="$LDFLAGS $LD_ZSTD" LDFLAGSPC="$LDFLAGSPC $LD_ZSTD" CPPFLAGS="$CPPFLAGS $CPP_ZSTD" LIBS="$LIB_ZSTD $LIBS" AC_CHECK_LIB(zstd, ZSTD_createDStream) AC_CHECK_HEADERS(zstd.h, curl_zstd_msg="enabled (libzstd)" HAVE_ZSTD=1 AC_DEFINE(HAVE_ZSTD, 1, [if libzstd is in use]) ) if test X"$OPT_ZSTD" != Xoff && test "$HAVE_ZSTD" != "1"; then AC_MSG_ERROR([libzstd was not found where specified!]) fi if test "$HAVE_ZSTD" = "1"; then if test -n "$DIR_ZSTD"; then dnl when the zstd shared lib were found in a path that the run-time dnl linker doesn't search through, we need to add it to dnl CURL_LIBRARY_PATH to prevent further configure tests to fail due to dnl this if test "x$cross_compiling" != "xyes"; then CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_ZSTD" export CURL_LIBRARY_PATH AC_MSG_NOTICE([Added $DIR_ZSTD to CURL_LIBRARY_PATH]) fi fi LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libzstd" else dnl no zstd, revert back to clean variables LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS fi fi dnl ********************************************************************** dnl Check for LDAP dnl ********************************************************************** LDAPLIBNAME="" AC_ARG_WITH(ldap-lib, AS_HELP_STRING([--with-ldap-lib=libname],[Specify name of ldap lib file]), [LDAPLIBNAME="$withval"]) LBERLIBNAME="" AC_ARG_WITH(lber-lib, AS_HELP_STRING([--with-lber-lib=libname],[Specify name of lber lib file]), [LBERLIBNAME="$withval"]) if test x$CURL_DISABLE_LDAP != x1; then CURL_CHECK_HEADER_LBER CURL_CHECK_HEADER_LDAP CURL_CHECK_HEADER_LDAP_SSL if test -z "$LDAPLIBNAME"; then if test "$curl_cv_native_windows" = "yes" -a "$curl_cv_winuwp" != "yes"; then dnl Windows uses a single and unique LDAP library name LDAPLIBNAME="wldap32" LBERLIBNAME="no" fi fi if test "$LDAPLIBNAME"; then AC_CHECK_LIB("$LDAPLIBNAME", ldap_init,, [ if test -n "$ldap_askedfor"; then AC_MSG_ERROR([couldn't detect the LDAP libraries]) fi AC_MSG_WARN(["$LDAPLIBNAME" is not an LDAP library: LDAP disabled]) AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP]) CURL_DISABLE_LDAP=1 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) CURL_DISABLE_LDAPS=1 ] ) else dnl Try to find the right ldap libraries for this system CURL_CHECK_LIBS_LDAP case X-"$curl_cv_ldap_LIBS" in X-unknown) if test -n "$ldap_askedfor"; then AC_MSG_ERROR([couldn't detect the LDAP libraries]) fi AC_MSG_WARN([Cannot find libraries for LDAP support: LDAP disabled]) AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP]) CURL_DISABLE_LDAP=1 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) CURL_DISABLE_LDAPS=1 ;; esac fi fi if test x$CURL_DISABLE_LDAP != x1; then if test "$LBERLIBNAME"; then dnl If name is "no" then don't define this library at all dnl (it's only needed if libldap.so's dependencies are broken). if test "$LBERLIBNAME" != "no"; then AC_CHECK_LIB("$LBERLIBNAME", ber_free,, [ AC_MSG_WARN(["$LBERLIBNAME" is not an LBER library: LDAP disabled]) AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP]) CURL_DISABLE_LDAP=1 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) CURL_DISABLE_LDAPS=1 ] ) fi fi fi if test x$CURL_DISABLE_LDAP != x1; then AC_CHECK_FUNCS([ldap_url_parse \ ldap_init_fd]) if test "$LDAPLIBNAME" = "wldap32"; then curl_ldap_msg="enabled (winldap)" AC_DEFINE(USE_WIN32_LDAP, 1, [Use Windows LDAP implementation]) else if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then curl_ldap_msg="enabled (OpenLDAP)" AC_DEFINE(USE_OPENLDAP, 1, [Use OpenLDAP-specific code]) USE_OPENLDAP=1 else curl_ldap_msg="enabled (ancient OpenLDAP)" fi fi fi if test x$CURL_DISABLE_LDAPS != x1; then curl_ldaps_msg="enabled" fi dnl ********************************************************************** dnl Checks for IPv6 dnl ********************************************************************** AC_MSG_CHECKING([whether to enable IPv6]) AC_ARG_ENABLE(ipv6, AS_HELP_STRING([--enable-ipv6],[Enable IPv6 (with IPv4) support]) AS_HELP_STRING([--disable-ipv6],[Disable IPv6 support]), [ case "$enableval" in no) AC_MSG_RESULT(no) ipv6=no ;; *) AC_MSG_RESULT(yes) ipv6=yes ;; esac ], AC_COMPILE_IFELSE([ AC_LANG_SOURCE([[ /* are AF_INET6 and sockaddr_in6 available? */ #include #ifdef _WIN32 #include #include #else #include #include #ifdef __TANDEM #include #endif #endif int main(void) { int s = (int)sizeof(struct sockaddr_in6); (void)s; return socket(AF_INET6, SOCK_STREAM, 0) > 0; } ]]) ], AC_MSG_RESULT(yes) ipv6=yes, AC_MSG_RESULT(no) ipv6=no ) ) if test "$curl_cv_wince" = 'yes'; then ipv6=no fi if test "$ipv6" = yes; then curl_ipv6_msg="enabled" AC_DEFINE(USE_IPV6, 1, [Define if you want to enable IPv6 support]) IPV6_ENABLED=1 AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member]) AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ #include #ifdef _WIN32 #include #include #else #include #ifdef __TANDEM #include #endif #endif ]], [[ struct sockaddr_in6 s; s.sin6_scope_id = 0; (void)s; ]]) ],[ AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID, 1, [Define to 1 if struct sockaddr_in6 has the sin6_scope_id member]) ],[ AC_MSG_RESULT([no]) ]) fi dnl ********************************************************************** dnl Check if the operating system allows programs to write to their own argv[] dnl ********************************************************************** AC_MSG_CHECKING([if argv can be written to]) CURL_RUN_IFELSE([[ int main(int argc, char **argv) { #ifdef _WIN32 /* on Windows, writing to the argv does not hide the argument in process lists so it can just be skipped */ (void)argc; (void)argv; return 1; #else (void)argc; argv[0][0] = ' '; return (argv[0][0] == ' ')?0:1; #endif } ]],[ curl_cv_writable_argv=yes ],[ curl_cv_writable_argv=no ],[ curl_cv_writable_argv=cross ]) if test "$curl_cv_writable_argv" = 'cross' -a "$curl_cv_apple" = 'yes'; then curl_cv_writable_argv=yes fi case $curl_cv_writable_argv in yes) AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv]) AC_MSG_RESULT(yes) ;; no) AC_MSG_RESULT(no) ;; *) AC_MSG_RESULT(no) AC_MSG_WARN([the previous check could not be made default was used]) ;; esac dnl ********************************************************************** dnl Check for GSS-API libraries dnl ********************************************************************** dnl check for GSS-API stuff in the /usr as default GSSAPI_ROOT="/usr" AC_ARG_WITH(gssapi-includes, AS_HELP_STRING([--with-gssapi-includes=DIR], [Specify location of GSS-API headers]), [ GSSAPI_INCS="-I$withval" want_gss="yes" ] ) AC_ARG_WITH(gssapi-libs, AS_HELP_STRING([--with-gssapi-libs=DIR], [Specify location of GSS-API libs]), [ GSSAPI_LIB_DIR="-L$withval" want_gss="yes" ] ) AC_ARG_WITH(gssapi, AS_HELP_STRING([--with-gssapi=DIR], [Where to look for GSS-API]), [ GSSAPI_ROOT="$withval" if test x"$GSSAPI_ROOT" != xno; then want_gss="yes" if test x"$GSSAPI_ROOT" = xyes; then dnl if yes, then use default root GSSAPI_ROOT="/usr" fi fi ] ) : ${KRB5CONFIG:="$GSSAPI_ROOT/bin/krb5-config"} save_CPPFLAGS="$CPPFLAGS" AC_MSG_CHECKING([if GSS-API support is requested]) if test x"$want_gss" = xyes; then AC_MSG_RESULT(yes) if test $GSSAPI_ROOT != "/usr"; then CURL_CHECK_PKGCONFIG(mit-krb5-gssapi, $GSSAPI_ROOT/lib/pkgconfig) else CURL_CHECK_PKGCONFIG(mit-krb5-gssapi) fi if test -z "$GSSAPI_INCS"; then if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then GSSAPI_INCS=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --cflags gssapi` elif test "$PKGCONFIG" != "no"; then GSSAPI_INCS=`$PKGCONFIG --cflags mit-krb5-gssapi` elif test -f "$KRB5CONFIG"; then GSSAPI_INCS=`$KRB5CONFIG --cflags gssapi` elif test "$GSSAPI_ROOT" != "yes"; then GSSAPI_INCS="-I$GSSAPI_ROOT/include" fi fi CPPFLAGS="$CPPFLAGS $GSSAPI_INCS" AC_CHECK_HEADER(gss.h, [ dnl found in the given dirs AC_DEFINE(HAVE_GSSGNU, 1, [if you have GNU GSS]) gnu_gss=yes ], [ dnl not found, check Heimdal or MIT AC_CHECK_HEADERS([gssapi/gssapi.h], [], [not_mit=1]) AC_CHECK_HEADERS( [gssapi/gssapi_generic.h gssapi/gssapi_krb5.h], [], [not_mit=1], [ AC_INCLUDES_DEFAULT #ifdef HAVE_GSSAPI_GSSAPI_H #include #endif ]) if test "x$not_mit" = "x1"; then dnl MIT not found, check for Heimdal AC_CHECK_HEADER(gssapi.h, [], [ dnl no header found, disabling GSS want_gss=no AC_MSG_WARN(disabling GSS-API support since no header files were found) ] ) else dnl MIT found dnl check if we have a really old MIT Kerberos version (<= 1.2) AC_MSG_CHECKING([if GSS-API headers declare GSS_C_NT_HOSTBASED_SERVICE]) AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ #include #include #include ]],[[ gss_import_name( (OM_uint32 *)0, (gss_buffer_t)0, GSS_C_NT_HOSTBASED_SERVICE, (gss_name_t *)0); ]]) ],[ AC_MSG_RESULT([yes]) ],[ AC_MSG_RESULT([no]) AC_DEFINE(HAVE_OLD_GSSMIT, 1, [if you have an old MIT Kerberos version, lacking GSS_C_NT_HOSTBASED_SERVICE]) ]) fi ] ) else AC_MSG_RESULT(no) fi if test x"$want_gss" = xyes; then AC_DEFINE(HAVE_GSSAPI, 1, [if you have GSS-API libraries]) HAVE_GSSAPI=1 curl_gss_msg="enabled (MIT Kerberos/Heimdal)" link_pkgconfig='' if test -n "$gnu_gss"; then curl_gss_msg="enabled (GNU GSS)" LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR" LDFLAGSPC="$LDFLAGSPC $GSSAPI_LIB_DIR" LIBS="-lgss $LIBS" link_pkgconfig=1 elif test -z "$GSSAPI_LIB_DIR"; then if test "$curl_cv_apple" = 'yes'; then LIBS="-lgssapi_krb5 -lresolv $LIBS" else if test $GSSAPI_ROOT != "/usr"; then CURL_CHECK_PKGCONFIG(mit-krb5-gssapi, $GSSAPI_ROOT/lib/pkgconfig) else CURL_CHECK_PKGCONFIG(mit-krb5-gssapi) fi if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then dnl krb5-config doesn't have --libs-only-L or similar, put everything dnl into LIBS gss_libs=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --libs gssapi` LIBS="$gss_libs $LIBS" elif test "$PKGCONFIG" != "no"; then gss_libs=`$PKGCONFIG --libs mit-krb5-gssapi` LIBS="$gss_libs $LIBS" link_pkgconfig=1 elif test -f "$KRB5CONFIG"; then dnl krb5-config doesn't have --libs-only-L or similar, put everything dnl into LIBS gss_libs=`$KRB5CONFIG --libs gssapi` LIBS="$gss_libs $LIBS" link_pkgconfig=1 else case $host in *-hp-hpux*) gss_libname="gss" ;; *) gss_libname="gssapi" ;; esac if test "$GSSAPI_ROOT" != "yes"; then LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff" LDFLAGSPC="$LDFLAGSPC -L$GSSAPI_ROOT/lib$libsuff" LIBS="-l$gss_libname $LIBS" else LIBS="-l$gss_libname $LIBS" fi fi fi else LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR" LDFLAGSPC="$LDFLAGSPC $GSSAPI_LIB_DIR" case $host in *-hp-hpux*) LIBS="-lgss $LIBS" ;; *) LIBS="-lgssapi $LIBS" ;; esac fi if test -n "$link_pkgconfig"; then if test -n "$gnu_gss"; then LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE gss" elif test "x$not_mit" = "x1"; then LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE heimdal-gssapi" else LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE mit-krb5-gssapi" fi fi else CPPFLAGS="$save_CPPFLAGS" fi if test x"$want_gss" = xyes; then AC_MSG_CHECKING([if we can link against GSS-API library]) AC_LINK_IFELSE([ AC_LANG_FUNC_LINK_TRY([gss_init_sec_context]) ],[ AC_MSG_RESULT([yes]) ],[ AC_MSG_RESULT([no]) AC_MSG_ERROR([--with-gssapi was specified, but a GSS-API library was not found.]) ]) fi build_libstubgss=no if test x"$want_gss" = "xyes"; then build_libstubgss=yes fi AM_CONDITIONAL(BUILD_STUB_GSS, test "x$build_libstubgss" = "xyes") dnl ------------------------------------------------------------- dnl parse --with-default-ssl-backend so it can be validated below dnl ------------------------------------------------------------- DEFAULT_SSL_BACKEND=no VALID_DEFAULT_SSL_BACKEND= AC_ARG_WITH(default-ssl-backend, AS_HELP_STRING([--with-default-ssl-backend=NAME],[Use NAME as default SSL backend]) AS_HELP_STRING([--without-default-ssl-backend],[Use implicit default SSL backend]), [DEFAULT_SSL_BACKEND=$withval]) case "$DEFAULT_SSL_BACKEND" in no) dnl --without-default-ssl-backend option used ;; default|yes) dnl --with-default-ssl-backend option used without name AC_MSG_ERROR([The name of the default SSL backend is required.]) ;; *) dnl --with-default-ssl-backend option used with name dnl needs to be validated below VALID_DEFAULT_SSL_BACKEND=no ;; esac CURL_WITH_SCHANNEL CURL_WITH_SECURETRANSPORT CURL_WITH_AMISSL CURL_WITH_OPENSSL CURL_WITH_GNUTLS CURL_WITH_MBEDTLS CURL_WITH_WOLFSSL CURL_WITH_BEARSSL CURL_WITH_RUSTLS dnl link required libraries for USE_WIN32_CRYPTO or SCHANNEL_ENABLED if test "x$USE_WIN32_CRYPTO" = "x1" -o "x$SCHANNEL_ENABLED" = "x1"; then LIBS="-lcrypt32 $LIBS" if test "$curl_cv_wince" = 'no'; then LIBS="-ladvapi32 $LIBS" fi fi dnl link bcrypt for BCryptGenRandom() (used when building for Vista or newer) if test "x$curl_cv_native_windows" = "xyes" -a "$curl_cv_wince" = 'no'; then LIBS="-lbcrypt $LIBS" fi case "x$SSL_DISABLED$OPENSSL_ENABLED$GNUTLS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$SCHANNEL_ENABLED$SECURETRANSPORT_ENABLED$BEARSSL_ENABLED$RUSTLS_ENABLED" in x) AC_MSG_ERROR([TLS not detected, you will not be able to use HTTPS, FTPS, NTLM and more. Use --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-schannel, --with-secure-transport, --with-amissl, --with-bearssl or --with-rustls to address this.]) ;; x1) # one SSL backend is enabled SSL_ENABLED="1" AC_MSG_NOTICE([built with one SSL backend]) ;; xD) # explicitly built without TLS ;; xD*) AC_MSG_ERROR([--without-ssl has been set together with an explicit option to use an ssl library (e.g. --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-schannel, --with-secure-transport, --with-amissl, --with-bearssl, --with-rustls). Since these are conflicting parameters, verify which is the desired one and drop the other.]) ;; *) # more than one SSL backend is enabled SSL_ENABLED="1" CURL_WITH_MULTI_SSL="1" AC_DEFINE(CURL_WITH_MULTI_SSL, 1, [built with multiple SSL backends]) AC_MSG_NOTICE([built with multiple SSL backends]) ;; esac if test -n "$ssl_backends"; then curl_ssl_msg="enabled ($ssl_backends)" fi if test no = "$VALID_DEFAULT_SSL_BACKEND"; then if test -n "$SSL_ENABLED"; then AC_MSG_ERROR([Default SSL backend $DEFAULT_SSL_BACKEND not enabled!]) else AC_MSG_ERROR([Default SSL backend requires SSL!]) fi elif test yes = "$VALID_DEFAULT_SSL_BACKEND"; then AC_DEFINE_UNQUOTED([CURL_DEFAULT_SSL_BACKEND], ["$DEFAULT_SSL_BACKEND"], [Default SSL backend]) fi dnl ********************************************************************** dnl Check for the CA bundle dnl ********************************************************************** if test -n "$check_for_ca_bundle"; then CURL_CHECK_CA_BUNDLE CURL_CHECK_CA_EMBED fi AM_CONDITIONAL(CURL_CA_EMBED_SET, test "x$CURL_CA_EMBED" != "x") dnl ---------------------- dnl check unsafe CA search dnl ---------------------- if test "$curl_cv_native_windows" = "yes"; then AC_MSG_CHECKING([whether to enable unsafe CA bundle search in PATH on Windows]) AC_ARG_ENABLE(ca-search, AS_HELP_STRING([--enable-ca-search],[Enable unsafe CA bundle search in PATH on Windows (default)]) AS_HELP_STRING([--disable-ca-search],[Disable unsafe CA bundle search in PATH on Windows]), [ case "$enableval" in no) AC_MSG_RESULT([no]) AC_DEFINE(CURL_DISABLE_CA_SEARCH, 1, [If unsafe CA bundle search in PATH on Windows is disabled]) ;; *) AC_MSG_RESULT([yes]) ;; esac ], AC_MSG_RESULT([yes]) ) fi dnl -------------------- dnl check safe CA search dnl -------------------- if test "$curl_cv_native_windows" = "yes"; then AC_MSG_CHECKING([whether to enable safe CA bundle search (within the curl tool directory) on Windows]) AC_ARG_ENABLE(ca-search-safe, AS_HELP_STRING([--enable-ca-search-safe],[Enable safe CA bundle search]) AS_HELP_STRING([--disable-ca-search-safe],[Disable safe CA bundle search (default)]), [ case "$enableval" in yes) AC_MSG_RESULT([yes]) AC_DEFINE(CURL_CA_SEARCH_SAFE, 1, [If safe CA bundle search is enabled]) ;; *) AC_MSG_RESULT([no]) ;; esac ], AC_MSG_RESULT([no]) ) fi dnl ********************************************************************** dnl Check for libpsl dnl ********************************************************************** dnl Default to compiler & linker defaults for LIBPSL files & libraries. OPT_LIBPSL=off AC_ARG_WITH(libpsl,dnl AS_HELP_STRING([--with-libpsl=PATH],[Where to look for libpsl, PATH points to the LIBPSL installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]) AS_HELP_STRING([--without-libpsl], [disable LIBPSL]), OPT_LIBPSL=$withval) if test X"$OPT_LIBPSL" != Xno; then dnl backup the pre-libpsl variables CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" case "$OPT_LIBPSL" in yes|off) dnl --with-libpsl (without path) used CURL_CHECK_PKGCONFIG(libpsl) if test "$PKGCONFIG" != "no"; then LIB_PSL=`$PKGCONFIG --libs-only-l libpsl` LD_PSL=`$PKGCONFIG --libs-only-L libpsl` CPP_PSL=`$PKGCONFIG --cflags-only-I libpsl` else dnl no libpsl pkg-config found LIB_PSL="-lpsl" fi ;; *) dnl use the given --with-libpsl spot LIB_PSL="-lpsl" PREFIX_PSL=$OPT_LIBPSL ;; esac dnl if given with a prefix, we set -L and -I based on that if test -n "$PREFIX_PSL"; then LD_PSL=-L${PREFIX_PSL}/lib$libsuff CPP_PSL=-I${PREFIX_PSL}/include fi LDFLAGS="$LDFLAGS $LD_PSL" LDFLAGSPC="$LDFLAGSPC $LD_PSL" CPPFLAGS="$CPPFLAGS $CPP_PSL" LIBS="$LIB_PSL $LIBS" AC_CHECK_LIB(psl, psl_builtin, [ AC_CHECK_HEADERS(libpsl.h, curl_psl_msg="enabled" AC_DEFINE(USE_LIBPSL, 1, [if libpsl is in use]) USE_LIBPSL=1 LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libpsl" ) ], dnl not found, revert back to clean variables LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS ) if test "$USE_LIBPSL" != "1"; then AC_MSG_ERROR([libpsl libs and/or directories were not found where specified!]) fi fi AM_CONDITIONAL([USE_LIBPSL], [test "$curl_psl_msg" = "enabled"]) dnl ********************************************************************** dnl Check for libgsasl dnl ********************************************************************** AC_ARG_WITH(libgsasl, AS_HELP_STRING([--without-libgsasl], [disable libgsasl support for SCRAM]), with_libgsasl=$withval, with_libgsasl=yes) if test $with_libgsasl != "no"; then AC_SEARCH_LIBS(gsasl_init, gsasl, [curl_gsasl_msg="enabled"; AC_DEFINE([USE_GSASL], [1], [GSASL support enabled]) LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libgsasl" ], [curl_gsasl_msg="no (libgsasl not found)"; AC_MSG_WARN([libgsasl was not found]) ] ) fi AM_CONDITIONAL([USE_GSASL], [test "$curl_gsasl_msg" = "enabled"]) AC_ARG_WITH(libmetalink,, AC_MSG_ERROR([--with-libmetalink and --without-libmetalink no longer work!])) dnl ********************************************************************** dnl Check for the presence of libssh2 libraries and headers dnl ********************************************************************** dnl Default to compiler & linker defaults for libssh2 files & libraries. OPT_LIBSSH2=off AC_ARG_WITH(libssh2,dnl AS_HELP_STRING([--with-libssh2=PATH],[Where to look for libssh2, PATH points to the libssh2 installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]) AS_HELP_STRING([--with-libssh2], [enable libssh2]), OPT_LIBSSH2=$withval, OPT_LIBSSH2=no) OPT_LIBSSH=off AC_ARG_WITH(libssh,dnl AS_HELP_STRING([--with-libssh=PATH],[Where to look for libssh, PATH points to the libssh installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]) AS_HELP_STRING([--with-libssh], [enable libssh]), OPT_LIBSSH=$withval, OPT_LIBSSH=no) OPT_WOLFSSH=off AC_ARG_WITH(wolfssh,dnl AS_HELP_STRING([--with-wolfssh=PATH],[Where to look for wolfssh, PATH points to the wolfSSH installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]) AS_HELP_STRING([--with-wolfssh], [enable wolfssh]), OPT_WOLFSSH=$withval, OPT_WOLFSSH=no) if test X"$OPT_LIBSSH2" != Xno; then dnl backup the pre-libssh2 variables CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" case "$OPT_LIBSSH2" in yes) dnl --with-libssh2 (without path) used CURL_CHECK_PKGCONFIG(libssh2) if test "$PKGCONFIG" != "no"; then LIB_SSH2=`$PKGCONFIG --libs-only-l libssh2` LD_SSH2=`$PKGCONFIG --libs-only-L libssh2` CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2` version=`$PKGCONFIG --modversion libssh2` DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/^-L//'` fi ;; off) dnl no --with-libssh2 option given, just check default places ;; *) dnl use the given --with-libssh2 spot PREFIX_SSH2=$OPT_LIBSSH2 ;; esac dnl if given with a prefix, we set -L and -I based on that if test -n "$PREFIX_SSH2"; then LIB_SSH2="-lssh2" LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff CPP_SSH2=-I${PREFIX_SSH2}/include DIR_SSH2=${PREFIX_SSH2}/lib$libsuff fi LDFLAGS="$LDFLAGS $LD_SSH2" LDFLAGSPC="$LDFLAGSPC $LD_SSH2" CPPFLAGS="$CPPFLAGS $CPP_SSH2" LIBS="$LIB_SSH2 $LIBS" dnl check for function added in libssh2 version 1.2.8 AC_CHECK_LIB(ssh2, libssh2_free) AC_CHECK_HEADER(libssh2.h, curl_ssh_msg="enabled (libssh2)" AC_DEFINE(USE_LIBSSH2, 1, [if libssh2 is in use]) USE_LIBSSH2=1 ) if test X"$OPT_LIBSSH2" != Xoff && test "$USE_LIBSSH2" != "1"; then AC_MSG_ERROR([libssh2 libs and/or directories were not found where specified!]) fi if test "$USE_LIBSSH2" = "1"; then if test -n "$DIR_SSH2"; then dnl when the libssh2 shared libs were found in a path that the run-time dnl linker doesn't search through, we need to add it to CURL_LIBRARY_PATH dnl to prevent further configure tests to fail due to this if test "x$cross_compiling" != "xyes"; then CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_SSH2" export CURL_LIBRARY_PATH AC_MSG_NOTICE([Added $DIR_SSH2 to CURL_LIBRARY_PATH]) fi fi LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libssh2" else dnl no libssh2, revert back to clean variables LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS fi elif test X"$OPT_LIBSSH" != Xno; then dnl backup the pre-libssh variables CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" case "$OPT_LIBSSH" in yes) dnl --with-libssh (without path) used CURL_CHECK_PKGCONFIG(libssh) if test "$PKGCONFIG" != "no"; then LIB_SSH=`$PKGCONFIG --libs-only-l libssh` LD_SSH=`$PKGCONFIG --libs-only-L libssh` CPP_SSH=`$PKGCONFIG --cflags-only-I libssh` version=`$PKGCONFIG --modversion libssh` DIR_SSH=`echo $LD_SSH | $SED -e 's/^-L//'` fi ;; off) dnl no --with-libssh option given, just check default places ;; *) dnl use the given --with-libssh spot PREFIX_SSH=$OPT_LIBSSH ;; esac dnl if given with a prefix, we set -L and -I based on that if test -n "$PREFIX_SSH"; then LIB_SSH="-lssh" LD_SSH=-L${PREFIX_SSH}/lib$libsuff CPP_SSH=-I${PREFIX_SSH}/include DIR_SSH=${PREFIX_SSH}/lib$libsuff fi LDFLAGS="$LDFLAGS $LD_SSH" LDFLAGSPC="$LDFLAGSPC $LD_SSH" CPPFLAGS="$CPPFLAGS $CPP_SSH" LIBS="$LIB_SSH $LIBS" AC_CHECK_LIB(ssh, ssh_new) AC_CHECK_HEADER(libssh/libssh.h, curl_ssh_msg="enabled (libssh)" AC_DEFINE(USE_LIBSSH, 1, [if libssh is in use]) USE_LIBSSH=1 ) if test X"$OPT_LIBSSH" != Xoff && test "$USE_LIBSSH" != "1"; then AC_MSG_ERROR([libssh libs and/or directories were not found where specified!]) fi if test "$USE_LIBSSH" = "1"; then if test "$curl_cv_native_windows" = "yes"; then dnl for if_nametoindex LIBS="-liphlpapi $LIBS" fi if test -n "$DIR_SSH"; then dnl when the libssh shared libs were found in a path that the run-time dnl linker doesn't search through, we need to add it to CURL_LIBRARY_PATH dnl to prevent further configure tests to fail due to this if test "x$cross_compiling" != "xyes"; then CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_SSH" export CURL_LIBRARY_PATH AC_MSG_NOTICE([Added $DIR_SSH to CURL_LIBRARY_PATH]) fi fi LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libssh" else dnl no libssh, revert back to clean variables LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS fi elif test X"$OPT_WOLFSSH" != Xno; then dnl backup the pre-wolfssh variables CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" if test "$OPT_WOLFSSH" != yes; then WOLFCONFIG="$OPT_WOLFSSH/bin/wolfssh-config" WOLFSSH_LIBS=`$WOLFCONFIG --libs` LDFLAGS="$LDFLAGS $WOLFSSH_LIBS" LDFLAGSPC="$LDFLAGSPC $WOLFSSH_LIBS" CPPFLAGS="$CPPFLAGS `$WOLFCONFIG --cflags`" fi AC_CHECK_LIB(wolfssh, wolfSSH_Init) AC_CHECK_HEADERS(wolfssh/ssh.h, curl_ssh_msg="enabled (wolfSSH)" AC_DEFINE(USE_WOLFSSH, 1, [if wolfSSH is in use]) USE_WOLFSSH=1 ) fi dnl ********************************************************************** dnl Check for the presence of LIBRTMP libraries and headers dnl ********************************************************************** dnl Default to compiler & linker defaults for LIBRTMP files & libraries. OPT_LIBRTMP=off AC_ARG_WITH(librtmp,dnl AS_HELP_STRING([--with-librtmp=PATH],[Where to look for librtmp, PATH points to the LIBRTMP installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]) AS_HELP_STRING([--without-librtmp], [disable LIBRTMP]), OPT_LIBRTMP=$withval) if test X"$OPT_LIBRTMP" != Xno; then dnl backup the pre-librtmp variables CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" case "$OPT_LIBRTMP" in yes) dnl --with-librtmp (without path) used CURL_CHECK_PKGCONFIG(librtmp) if test "$PKGCONFIG" != "no"; then LIB_RTMP=`$PKGCONFIG --libs-only-l librtmp` LD_RTMP=`$PKGCONFIG --libs-only-L librtmp` CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp` version=`$PKGCONFIG --modversion librtmp` DIR_RTMP=`echo $LD_RTMP | $SED -e 's/^-L//'` else dnl To avoid link errors, we do not allow --librtmp without dnl a pkgconfig file AC_MSG_ERROR([--librtmp was specified but could not find librtmp pkgconfig file.]) fi ;; off) dnl no --with-librtmp option given, just check default places LIB_RTMP="-lrtmp" ;; *) dnl use the given --with-librtmp spot LIB_RTMP="-lrtmp" PREFIX_RTMP=$OPT_LIBRTMP ;; esac dnl if given with a prefix, we set -L and -I based on that if test -n "$PREFIX_RTMP"; then LD_RTMP=-L${PREFIX_RTMP}/lib$libsuff CPP_RTMP=-I${PREFIX_RTMP}/include DIR_RTMP=${PREFIX_RTMP}/lib$libsuff fi LDFLAGS="$LDFLAGS $LD_RTMP" LDFLAGSPC="$LDFLAGSPC $LD_RTMP" CPPFLAGS="$CPPFLAGS $CPP_RTMP" LIBS="$LIB_RTMP $LIBS" AC_CHECK_LIB(rtmp, RTMP_Init, [ AC_CHECK_HEADERS(librtmp/rtmp.h, curl_rtmp_msg="enabled (librtmp)" AC_DEFINE(USE_LIBRTMP, 1, [if librtmp is in use]) USE_LIBRTMP=1 LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE librtmp" ) ], dnl not found, revert back to clean variables LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS ) if test X"$OPT_LIBRTMP" != Xoff && test "$USE_LIBRTMP" != "1"; then AC_MSG_ERROR([librtmp libs and/or directories were not found where specified!]) fi fi dnl ********************************************************************** dnl Check for linker switch for versioned symbols dnl ********************************************************************** versioned_symbols_flavour= AC_MSG_CHECKING([whether versioned symbols are wanted]) AC_ARG_ENABLE(versioned-symbols, AS_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library]) AS_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]), [ case "$enableval" in no) AC_MSG_RESULT(no) ;; *) AC_MSG_RESULT(yes) AC_MSG_CHECKING([if libraries can be versioned]) GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script` if test -z "$GLD"; then AC_MSG_RESULT(no) AC_MSG_WARN([You need an ld version supporting the --version-script option]) else AC_MSG_RESULT(yes) if test "x$enableval" != "xyes"; then versioned_symbols_flavour="$enableval" elif test "x$CURL_WITH_MULTI_SSL" = "x1"; then versioned_symbols_flavour="MULTISSL_" elif test "x$OPENSSL_ENABLED" = "x1"; then versioned_symbols_flavour="OPENSSL_" elif test "x$MBEDTLS_ENABLED" = "x1"; then versioned_symbols_flavour="MBEDTLS_" elif test "x$BEARSSL_ENABLED" = "x1"; then versioned_symbols_flavour="BEARSSL_" elif test "x$WOLFSSL_ENABLED" = "x1"; then versioned_symbols_flavour="WOLFSSL_" elif test "x$GNUTLS_ENABLED" = "x1"; then versioned_symbols_flavour="GNUTLS_" elif test "x$RUSTLS_ENABLED" = "x1"; then versioned_symbols_flavour="RUSTLS_" else versioned_symbols_flavour="" fi versioned_symbols="yes" fi ;; esac ], [ AC_MSG_RESULT(no) ] ) AC_SUBST([CURL_LIBCURL_VERSIONED_SYMBOLS_PREFIX], ["$versioned_symbols_flavour"]) AC_SUBST([CURL_LIBCURL_VERSIONED_SYMBOLS_SONAME], ["4"]) dnl Keep in sync with VERSIONCHANGE - VERSIONDEL in lib/Makefile.soname AM_CONDITIONAL([CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS], [test "x$versioned_symbols" = 'xyes']) dnl ---------------------------- dnl check Windows Unicode option dnl ---------------------------- if test "$curl_cv_wince" = 'yes'; then want_winuni="yes" else want_winuni="no" fi if test "$curl_cv_native_windows" = "yes"; then if test "$curl_cv_winuwp" = 'yes'; then want_winuni="yes" else AC_MSG_CHECKING([whether to enable Windows Unicode (Windows native builds only)]) AC_ARG_ENABLE(windows-unicode, AS_HELP_STRING([--enable-windows-unicode],[Enable Windows Unicode]) AS_HELP_STRING([--disable-windows-unicode],[Disable Windows Unicode (default)]), [ case "$enableval" in yes) want_winuni="yes" AC_MSG_RESULT([yes]) ;; *) AC_MSG_RESULT([no]) ;; esac ], AC_MSG_RESULT([no]) ) fi if test "$want_winuni" = "yes"; then CPPFLAGS="${CPPFLAGS} -DUNICODE -D_UNICODE" fi fi AM_CONDITIONAL([USE_UNICODE], [test "$want_winuni" = "yes"]) dnl ------------------------------------------------- dnl check WinIDN option before other IDN libraries dnl ------------------------------------------------- tst_links_winidn='no' if test "$curl_cv_native_windows" = 'yes'; then AC_MSG_CHECKING([whether to enable Windows native IDN (Windows native builds only)]) OPT_WINIDN="default" AC_ARG_WITH(winidn, AS_HELP_STRING([--with-winidn=PATH],[enable Windows native IDN]) AS_HELP_STRING([--without-winidn], [disable Windows native IDN]), OPT_WINIDN=$withval) case "$OPT_WINIDN" in no|default) dnl --without-winidn option used or configure option not specified want_winidn="no" AC_MSG_RESULT([no]) ;; yes) dnl --with-winidn option used without path want_winidn="yes" want_winidn_path="default" AC_MSG_RESULT([yes]) ;; *) dnl --with-winidn option used with path want_winidn="yes" want_winidn_path="$withval" AC_MSG_RESULT([yes ($withval)]) ;; esac if test "$want_winidn" = "yes"; then dnl WinIDN library support has been requested clean_CPPFLAGS="$CPPFLAGS" clean_LDFLAGS="$LDFLAGS" clean_LDFLAGSPC="$LDFLAGSPC" clean_LIBS="$LIBS" WINIDN_LIBS="-lnormaliz" WINIDN_CPPFLAGS="" # if test "$want_winidn_path" != "default"; then dnl path has been specified dnl pkg-config not available or provides no info WINIDN_LDFLAGS="-L$want_winidn_path/lib$libsuff" WINIDN_CPPFLAGS="-I$want_winidn_path/include" fi # CPPFLAGS="$CPPFLAGS $WINIDN_CPPFLAGS" LDFLAGS="$LDFLAGS $WINIDN_LDFLAGS" LDFLAGSPC="$LDFLAGSPC $WINIDN_LDFLAGS" LIBS="$WINIDN_LIBS $LIBS" # AC_MSG_CHECKING([if IdnToUnicode can be linked]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #include ]],[[ #if (!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x600) && \ (!defined(WINVER) || WINVER < 0x600) WINBASEAPI int WINAPI IdnToUnicode(DWORD dwFlags, const WCHAR *lpASCIICharStr, int cchASCIIChar, WCHAR *lpUnicodeCharStr, int cchUnicodeChar); #endif IdnToUnicode(0, NULL, 0, NULL, 0); ]]) ],[ AC_MSG_RESULT([yes]) tst_links_winidn="yes" ],[ AC_MSG_RESULT([no]) tst_links_winidn="no" ]) # if test "$tst_links_winidn" = "yes"; then AC_DEFINE(USE_WIN32_IDN, 1, [Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz).]) IDN_ENABLED=1 curl_idn_msg="enabled (Windows-native)" else AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled]) CPPFLAGS="$clean_CPPFLAGS" LDFLAGS="$clean_LDFLAGS" LDFLAGSPC="$clean_LDFLAGSPC" LIBS="$clean_LIBS" fi fi fi dnl ********************************************************************** dnl Check for the presence of AppleIDN dnl ********************************************************************** tst_links_appleidn='no' if test "$curl_cv_apple" = 'yes'; then AC_MSG_CHECKING([whether to build with Apple IDN]) OPT_IDN="default" AC_ARG_WITH(apple-idn, AS_HELP_STRING([--with-apple-idn],[Enable AppleIDN]) AS_HELP_STRING([--without-apple-idn],[Disable AppleIDN]), [OPT_IDN=$withval]) case "$OPT_IDN" in yes) dnl --with-apple-idn option used AC_MSG_RESULT([yes, check]) AC_CHECK_LIB(icucore, uidna_openUTS46, [ AC_CHECK_HEADERS(unicode/uidna.h, curl_idn_msg="enabled (AppleIDN)" AC_DEFINE(USE_APPLE_IDN, 1, [if AppleIDN]) USE_APPLE_IDN=1 IDN_ENABLED=1 LIBS="-licucore -liconv $LIBS" tst_links_appleidn='yes' ) ]) ;; *) AC_MSG_RESULT([no]) ;; esac fi dnl ********************************************************************** dnl Check for the presence of libidn2 dnl ********************************************************************** AC_MSG_CHECKING([whether to build with libidn2]) OPT_IDN="default" AC_ARG_WITH(libidn2, AS_HELP_STRING([--with-libidn2=PATH],[Enable libidn2 usage]) AS_HELP_STRING([--without-libidn2],[Disable libidn2 usage]), [OPT_IDN=$withval]) if test "x$tst_links_winidn" = "xyes"; then want_idn="no" AC_MSG_RESULT([no (using WinIDN instead)]) elif test "x$tst_links_appleidn" = "xyes"; then want_idn="no" AC_MSG_RESULT([no (using AppleIDN instead)]) else case "$OPT_IDN" in no) dnl --without-libidn2 option used want_idn="no" AC_MSG_RESULT([no]) ;; default) dnl configure option not specified want_idn="yes" want_idn_path="default" AC_MSG_RESULT([(assumed) yes]) ;; yes) dnl --with-libidn2 option used without path want_idn="yes" want_idn_path="default" AC_MSG_RESULT([yes]) ;; *) dnl --with-libidn2 option used with path want_idn="yes" want_idn_path="$withval" AC_MSG_RESULT([yes ($withval)]) ;; esac fi if test "$want_idn" = "yes"; then dnl idn library support has been requested clean_CPPFLAGS="$CPPFLAGS" clean_LDFLAGS="$LDFLAGS" clean_LDFLAGSPC="$LDFLAGSPC" clean_LIBS="$LIBS" PKGCONFIG="no" # if test "$want_idn_path" != "default"; then dnl path has been specified IDN_PCDIR="$want_idn_path/lib$libsuff/pkgconfig" CURL_CHECK_PKGCONFIG(libidn2, [$IDN_PCDIR]) if test "$PKGCONFIG" != "no"; then IDN_LIBS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl $PKGCONFIG --libs-only-l libidn2 2>/dev/null` IDN_LDFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl $PKGCONFIG --libs-only-L libidn2 2>/dev/null` IDN_CPPFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl $PKGCONFIG --cflags-only-I libidn2 2>/dev/null` IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/^-L//'` else dnl pkg-config not available or provides no info IDN_LIBS="-lidn2" IDN_LDFLAGS="-L$want_idn_path/lib$libsuff" IDN_CPPFLAGS="-I$want_idn_path/include" IDN_DIR="$want_idn_path/lib$libsuff" fi else dnl path not specified CURL_CHECK_PKGCONFIG(libidn2) if test "$PKGCONFIG" != "no"; then IDN_LIBS=`$PKGCONFIG --libs-only-l libidn2 2>/dev/null` IDN_LDFLAGS=`$PKGCONFIG --libs-only-L libidn2 2>/dev/null` IDN_CPPFLAGS=`$PKGCONFIG --cflags-only-I libidn2 2>/dev/null` IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/^-L//'` else dnl pkg-config not available or provides no info IDN_LIBS="-lidn2" fi fi # if test "$PKGCONFIG" != "no"; then AC_MSG_NOTICE([pkg-config: IDN_LIBS: "$IDN_LIBS"]) AC_MSG_NOTICE([pkg-config: IDN_LDFLAGS: "$IDN_LDFLAGS"]) AC_MSG_NOTICE([pkg-config: IDN_CPPFLAGS: "$IDN_CPPFLAGS"]) AC_MSG_NOTICE([pkg-config: IDN_DIR: "$IDN_DIR"]) else AC_MSG_NOTICE([IDN_LIBS: "$IDN_LIBS"]) AC_MSG_NOTICE([IDN_LDFLAGS: "$IDN_LDFLAGS"]) AC_MSG_NOTICE([IDN_CPPFLAGS: "$IDN_CPPFLAGS"]) AC_MSG_NOTICE([IDN_DIR: "$IDN_DIR"]) fi # CPPFLAGS="$CPPFLAGS $IDN_CPPFLAGS" LDFLAGS="$LDFLAGS $IDN_LDFLAGS" LDFLAGSPC="$LDFLAGSPC $IDN_LDFLAGS" LIBS="$IDN_LIBS $LIBS" # AC_MSG_CHECKING([if idn2_lookup_ul can be linked]) AC_LINK_IFELSE([ AC_LANG_FUNC_LINK_TRY([idn2_lookup_ul]) ],[ AC_MSG_RESULT([yes]) tst_links_libidn="yes" ],[ AC_MSG_RESULT([no]) tst_links_libidn="no" ]) # AC_CHECK_HEADERS( idn2.h ) if test "$tst_links_libidn" = "yes"; then AC_DEFINE(HAVE_LIBIDN2, 1, [Define to 1 if you have the `idn2' library (-lidn2).]) dnl different versions of libidn have different setups of these: IDN_ENABLED=1 curl_idn_msg="enabled (libidn2)" if test -n "$IDN_DIR" -a "x$cross_compiling" != "xyes"; then CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$IDN_DIR" export CURL_LIBRARY_PATH AC_MSG_NOTICE([Added $IDN_DIR to CURL_LIBRARY_PATH]) fi LIBCURL_PC_REQUIRES_PRIVATE="libidn2 $LIBCURL_PC_REQUIRES_PRIVATE" else AC_MSG_WARN([Cannot find libidn2]) CPPFLAGS="$clean_CPPFLAGS" LDFLAGS="$clean_LDFLAGS" LDFLAGSPC="$clean_LDFLAGSPC" LIBS="$clean_LIBS" want_idn="no" fi fi dnl ********************************************************************** dnl Check for nghttp2 dnl ********************************************************************** OPT_H2="yes" if test "x$disable_http" = "xyes"; then # without HTTP nghttp2 is no use OPT_H2="no" fi AC_ARG_WITH(nghttp2, AS_HELP_STRING([--with-nghttp2=PATH],[Enable nghttp2 usage]) AS_HELP_STRING([--without-nghttp2],[Disable nghttp2 usage]), [OPT_H2=$withval]) case "$OPT_H2" in no) dnl --without-nghttp2 option used want_nghttp2="no" ;; yes) dnl --with-nghttp2 option used without path want_nghttp2="default" want_nghttp2_path="" want_nghttp2_pkg_config_path="" ;; *) dnl --with-nghttp2 option used with path want_nghttp2="yes" want_nghttp2_path="$withval" want_nghttp2_pkg_config_path="$withval/lib/pkgconfig" ;; esac if test X"$want_nghttp2" != Xno; then dnl backup the pre-nghttp2 variables CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" CURL_CHECK_PKGCONFIG(libnghttp2, $want_nghttp2_pkg_config_path) if test "$PKGCONFIG" != "no"; then LIB_H2=`CURL_EXPORT_PCDIR([$want_nghttp2_pkg_config_path]) $PKGCONFIG --libs-only-l libnghttp2` AC_MSG_NOTICE([-l is $LIB_H2]) CPP_H2=`CURL_EXPORT_PCDIR([$want_nghttp2_pkg_config_path]) dnl $PKGCONFIG --cflags-only-I libnghttp2` AC_MSG_NOTICE([-I is $CPP_H2]) LD_H2=`CURL_EXPORT_PCDIR([$want_nghttp2_pkg_config_path]) $PKGCONFIG --libs-only-L libnghttp2` AC_MSG_NOTICE([-L is $LD_H2]) DIR_H2=`echo $LD_H2 | $SED -e 's/^-L//'` elif test x"$want_nghttp2_path" != x; then LIB_H2="-lnghttp2" LD_H2=-L${want_nghttp2_path}/lib$libsuff CPP_H2=-I${want_nghttp2_path}/include DIR_H2=${want_nghttp2_path}/lib$libsuff elif test X"$want_nghttp2" != Xdefault; then dnl no nghttp2 pkg-config found and no custom directory specified, dnl deal with it AC_MSG_ERROR([--with-nghttp2 was specified but could not find libnghttp2 pkg-config file.]) else LIB_H2="-lnghttp2" fi LDFLAGS="$LDFLAGS $LD_H2" LDFLAGSPC="$LDFLAGSPC $LD_H2" CPPFLAGS="$CPPFLAGS $CPP_H2" LIBS="$LIB_H2 $LIBS" # use nghttp2_session_get_stream_local_window_size to require nghttp2 # >= 1.15.0 AC_CHECK_LIB(nghttp2, nghttp2_session_get_stream_local_window_size, [ AC_CHECK_HEADERS(nghttp2/nghttp2.h, curl_h2_msg="enabled (nghttp2)" AC_DEFINE(USE_NGHTTP2, 1, [if nghttp2 is in use]) USE_NGHTTP2=1 LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libnghttp2" ) CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_H2" export CURL_LIBRARY_PATH AC_MSG_NOTICE([Added $DIR_H2 to CURL_LIBRARY_PATH]) ], dnl not found, revert back to clean variables LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS ) fi dnl ********************************************************************** dnl Check for ngtcp2 (QUIC) dnl ********************************************************************** OPT_TCP2="no" if test "x$disable_http" = "xyes"; then # without HTTP, ngtcp2 is no use OPT_TCP2="no" fi AC_ARG_WITH(ngtcp2, AS_HELP_STRING([--with-ngtcp2=PATH],[Enable ngtcp2 usage]) AS_HELP_STRING([--without-ngtcp2],[Disable ngtcp2 usage]), [OPT_TCP2=$withval]) case "$OPT_TCP2" in no) dnl --without-ngtcp2 option used want_tcp2="no" ;; yes) dnl --with-ngtcp2 option used without path want_tcp2="default" want_tcp2_path="" ;; *) dnl --with-ngtcp2 option used with path want_tcp2="yes" want_tcp2_path="$withval/lib/pkgconfig" ;; esac curl_tcp2_msg="no (--with-ngtcp2)" if test X"$want_tcp2" != Xno; then if test "$QUIC_ENABLED" != "yes"; then AC_MSG_ERROR([the detected TLS library does not support QUIC, making --with-ngtcp2 a no-no]) fi dnl backup the pre-ngtcp2 variables CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" CURL_CHECK_PKGCONFIG(libngtcp2, $want_tcp2_path) if test "$PKGCONFIG" != "no"; then LIB_TCP2=`CURL_EXPORT_PCDIR([$want_tcp2_path]) $PKGCONFIG --libs-only-l libngtcp2` AC_MSG_NOTICE([-l is $LIB_TCP2]) CPP_TCP2=`CURL_EXPORT_PCDIR([$want_tcp2_path]) dnl $PKGCONFIG --cflags-only-I libngtcp2` AC_MSG_NOTICE([-I is $CPP_TCP2]) LD_TCP2=`CURL_EXPORT_PCDIR([$want_tcp2_path]) $PKGCONFIG --libs-only-L libngtcp2` AC_MSG_NOTICE([-L is $LD_TCP2]) LDFLAGS="$LDFLAGS $LD_TCP2" LDFLAGSPC="$LDFLAGSPC $LD_TCP2" CPPFLAGS="$CPPFLAGS $CPP_TCP2" LIBS="$LIB_TCP2 $LIBS" if test "x$cross_compiling" != "xyes"; then DIR_TCP2=`echo $LD_TCP2 | $SED -e 's/^-L//'` fi AC_CHECK_LIB(ngtcp2, ngtcp2_conn_client_new_versioned, [ AC_CHECK_HEADERS(ngtcp2/ngtcp2.h, AC_DEFINE(USE_NGTCP2, 1, [if ngtcp2 is in use]) USE_NGTCP2=1 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_TCP2" export CURL_LIBRARY_PATH AC_MSG_NOTICE([Added $DIR_TCP2 to CURL_LIBRARY_PATH]) LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libngtcp2" ) ], dnl not found, revert back to clean variables LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS ) else dnl no ngtcp2 pkg-config found, deal with it if test X"$want_tcp2" != Xdefault; then dnl To avoid link errors, we do not allow --with-ngtcp2 without dnl a pkgconfig file AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2 pkg-config file.]) fi fi fi if test "x$USE_NGTCP2" = "x1" -a "x$OPENSSL_ENABLED" = "x1" -a \ "x$OPENSSL_IS_BORINGSSL" != "x1" -a "x$OPENSSL_QUIC_API2" != "x1"; then dnl backup the pre-ngtcp2_crypto_quictls variables CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" CURL_CHECK_PKGCONFIG(libngtcp2_crypto_quictls, $want_tcp2_path) if test "$PKGCONFIG" != "no"; then LIB_NGTCP2_CRYPTO_QUICTLS=`CURL_EXPORT_PCDIR([$want_tcp2_path]) $PKGCONFIG --libs-only-l libngtcp2_crypto_quictls` AC_MSG_NOTICE([-l is $LIB_NGTCP2_CRYPTO_QUICTLS]) CPP_NGTCP2_CRYPTO_QUICTLS=`CURL_EXPORT_PCDIR([$want_tcp2_path]) dnl $PKGCONFIG --cflags-only-I libngtcp2_crypto_quictls` AC_MSG_NOTICE([-I is $CPP_NGTCP2_CRYPTO_QUICTLS]) LD_NGTCP2_CRYPTO_QUICTLS=`CURL_EXPORT_PCDIR([$want_tcp2_path]) $PKGCONFIG --libs-only-L libngtcp2_crypto_quictls` AC_MSG_NOTICE([-L is $LD_NGTCP2_CRYPTO_QUICTLS]) LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_QUICTLS" LDFLAGSPC="$LDFLAGSPC $LD_NGTCP2_CRYPTO_QUICTLS" CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_QUICTLS" LIBS="$LIB_NGTCP2_CRYPTO_QUICTLS $LIBS" if test "x$cross_compiling" != "xyes"; then DIR_NGTCP2_CRYPTO_QUICTLS=`echo $LD_NGTCP2_CRYPTO_QUICTLS | $SED -e 's/^-L//'` fi AC_CHECK_LIB(ngtcp2_crypto_quictls, ngtcp2_crypto_recv_client_initial_cb, [ AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h, USE_NGTCP2=1 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_QUICTLS" export CURL_LIBRARY_PATH AC_MSG_NOTICE([Added $DIR_NGTCP2_CRYPTO_QUICTLS to CURL_LIBRARY_PATH]) LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libngtcp2_crypto_quictls" ) ], dnl not found, revert back to clean variables LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS ) else dnl no ngtcp2_crypto_quictls pkg-config found, deal with it if test X"$want_tcp2" != Xdefault; then dnl To avoid link errors, we do not allow --with-ngtcp2 without dnl a pkgconfig file AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2_crypto_quictls pkg-config file.]) fi fi fi if test "x$USE_NGTCP2" = "x1" -a "x$OPENSSL_ENABLED" = "x1" -a \ "x$OPENSSL_IS_BORINGSSL" != "x1" -a "x$OPENSSL_QUIC_API2" = "x1"; then dnl backup the pre-ngtcp2_crypto_ossl variables CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" CURL_CHECK_PKGCONFIG(libngtcp2_crypto_ossl, $want_tcp2_path) if test "$PKGCONFIG" != "no"; then LIB_NGTCP2_CRYPTO_QUICTLS=`CURL_EXPORT_PCDIR([$want_tcp2_path]) $PKGCONFIG --libs-only-l libngtcp2_crypto_ossl` AC_MSG_NOTICE([-l is $LIB_NGTCP2_CRYPTO_QUICTLS]) CPP_NGTCP2_CRYPTO_QUICTLS=`CURL_EXPORT_PCDIR([$want_tcp2_path]) dnl $PKGCONFIG --cflags-only-I libngtcp2_crypto_ossl` AC_MSG_NOTICE([-I is $CPP_NGTCP2_CRYPTO_QUICTLS]) LD_NGTCP2_CRYPTO_QUICTLS=`CURL_EXPORT_PCDIR([$want_tcp2_path]) $PKGCONFIG --libs-only-L libngtcp2_crypto_ossl` AC_MSG_NOTICE([-L is $LD_NGTCP2_CRYPTO_QUICTLS]) LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_QUICTLS" LDFLAGSPC="$LDFLAGSPC $LD_NGTCP2_CRYPTO_QUICTLS" CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_QUICTLS" LIBS="$LIB_NGTCP2_CRYPTO_QUICTLS $LIBS" if test "x$cross_compiling" != "xyes"; then DIR_NGTCP2_CRYPTO_QUICTLS=`echo $LD_NGTCP2_CRYPTO_QUICTLS | $SED -e 's/^-L//'` fi AC_CHECK_LIB(ngtcp2_crypto_ossl, ngtcp2_crypto_recv_client_initial_cb, [ AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h, USE_NGTCP2=1 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_QUICTLS" export CURL_LIBRARY_PATH AC_MSG_NOTICE([Added $DIR_NGTCP2_CRYPTO_QUICTLS to CURL_LIBRARY_PATH]) LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libngtcp2_crypto_ossl" AC_DEFINE(OPENSSL_QUIC_API2, 1, [openssl with new QUIC API]) ) ], dnl not found, revert back to clean variables LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS ) else dnl no ngtcp2_crypto_ossl pkg-config found, deal with it if test X"$want_tcp2" != Xdefault; then dnl To avoid link errors, we do not allow --with-ngtcp2 without dnl a pkgconfig file AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2_crypto_ossl pkg-config file.]) fi fi fi if test "x$USE_NGTCP2" = "x1" -a "x$OPENSSL_ENABLED" = "x1" -a "x$OPENSSL_IS_BORINGSSL" = "x1"; then dnl backup the pre-ngtcp2_crypto_boringssl variables CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" CURL_CHECK_PKGCONFIG(libngtcp2_crypto_boringssl, $want_tcp2_path) if test "$PKGCONFIG" != "no"; then LIB_NGTCP2_CRYPTO_BORINGSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path]) $PKGCONFIG --libs-only-l libngtcp2_crypto_boringssl` AC_MSG_NOTICE([-l is $LIB_NGTCP2_CRYPTO_BORINGSSL]) CPP_NGTCP2_CRYPTO_BORINGSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path]) dnl $PKGCONFIG --cflags-only-I libngtcp2_crypto_boringssl` AC_MSG_NOTICE([-I is $CPP_NGTCP2_CRYPTO_BORINGSSL]) LD_NGTCP2_CRYPTO_BORINGSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path]) $PKGCONFIG --libs-only-L libngtcp2_crypto_boringssl` AC_MSG_NOTICE([-L is $LD_NGTCP2_CRYPTO_BORINGSSL]) LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_BORINGSSL" LDFLAGSPC="$LDFLAGSPC $LD_NGTCP2_CRYPTO_BORINGSSL" CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_BORINGSSL" LIBS="$LIB_NGTCP2_CRYPTO_BORINGSSL $LIBS" if test "x$cross_compiling" != "xyes"; then DIR_NGTCP2_CRYPTO_BORINGSSL=`echo $LD_NGTCP2_CRYPTO_BORINGSSL | $SED -e 's/^-L//'` fi AC_CHECK_LIB(ngtcp2_crypto_boringssl, ngtcp2_crypto_recv_client_initial_cb, [ AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h, USE_NGTCP2=1 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_BORINGSSL" export CURL_LIBRARY_PATH AC_MSG_NOTICE([Added $DIR_NGTCP2_CRYPTO_BORINGSSL to CURL_LIBRARY_PATH]) LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libngtcp2_crypto_boringssl" ) ], dnl not found, revert back to clean variables LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS ) else dnl no ngtcp2_crypto_boringssl pkg-config found, deal with it if test X"$want_tcp2" != Xdefault; then dnl To avoid link errors, we do not allow --with-ngtcp2 without dnl a pkgconfig file AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2_crypto_boringssl pkg-config file.]) fi fi fi if test "x$USE_NGTCP2" = "x1" -a "x$GNUTLS_ENABLED" = "x1"; then dnl backup the pre-ngtcp2_crypto_gnutls variables CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" CURL_CHECK_PKGCONFIG(libngtcp2_crypto_gnutls, $want_tcp2_path) if test "$PKGCONFIG" != "no"; then LIB_NGTCP2_CRYPTO_GNUTLS=`CURL_EXPORT_PCDIR([$want_tcp2_path]) $PKGCONFIG --libs-only-l libngtcp2_crypto_gnutls` AC_MSG_NOTICE([-l is $LIB_NGTCP2_CRYPTO_GNUTLS]) CPP_NGTCP2_CRYPTO_GNUTLS=`CURL_EXPORT_PCDIR([$want_tcp2_path]) dnl $PKGCONFIG --cflags-only-I libngtcp2_crypto_gnutls` AC_MSG_NOTICE([-I is $CPP_NGTCP2_CRYPTO_GNUTLS]) LD_NGTCP2_CRYPTO_GNUTLS=`CURL_EXPORT_PCDIR([$want_tcp2_path]) $PKGCONFIG --libs-only-L libngtcp2_crypto_gnutls` AC_MSG_NOTICE([-L is $LD_NGTCP2_CRYPTO_GNUTLS]) LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_GNUTLS" LDFLAGSPC="$LDFLAGSPC $LD_NGTCP2_CRYPTO_GNUTLS" CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_GNUTLS" LIBS="$LIB_NGTCP2_CRYPTO_GNUTLS $LIBS" if test "x$cross_compiling" != "xyes"; then DIR_NGTCP2_CRYPTO_GNUTLS=`echo $LD_NGTCP2_CRYPTO_GNUTLS | $SED -e 's/^-L//'` fi AC_CHECK_LIB(ngtcp2_crypto_gnutls, ngtcp2_crypto_recv_client_initial_cb, [ AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h, USE_NGTCP2=1 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_GNUTLS" export CURL_LIBRARY_PATH AC_MSG_NOTICE([Added $DIR_NGTCP2_CRYPTO_GNUTLS to CURL_LIBRARY_PATH]) LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libngtcp2_crypto_gnutls" ) ], dnl not found, revert back to clean variables LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS ) else dnl no ngtcp2_crypto_gnutls pkg-config found, deal with it if test X"$want_tcp2" != Xdefault; then dnl To avoid link errors, we do not allow --with-ngtcp2 without dnl a pkgconfig file AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2_crypto_gnutls pkg-config file.]) fi fi fi if test "x$USE_NGTCP2" = "x1" -a "x$WOLFSSL_ENABLED" = "x1"; then dnl backup the pre-ngtcp2_crypto_wolfssl variables CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" CURL_CHECK_PKGCONFIG(libngtcp2_crypto_wolfssl, $want_tcp2_path) if test "$PKGCONFIG" != "no"; then LIB_NGTCP2_CRYPTO_WOLFSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path]) $PKGCONFIG --libs-only-l libngtcp2_crypto_wolfssl` AC_MSG_NOTICE([-l is $LIB_NGTCP2_CRYPTO_WOLFSSL]) CPP_NGTCP2_CRYPTO_WOLFSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path]) dnl $PKGCONFIG --cflags-only-I libngtcp2_crypto_wolfssl` AC_MSG_NOTICE([-I is $CPP_NGTCP2_CRYPTO_WOLFSSL]) LD_NGTCP2_CRYPTO_WOLFSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path]) $PKGCONFIG --libs-only-L libngtcp2_crypto_wolfssl` AC_MSG_NOTICE([-L is $LD_NGTCP2_CRYPTO_WOLFSSL]) LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_WOLFSSL" LDFLAGSPC="$LDFLAGSPC $LD_NGTCP2_CRYPTO_WOLFSSL" CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_WOLFSSL" LIBS="$LIB_NGTCP2_CRYPTO_WOLFSSL $LIBS" if test "x$cross_compiling" != "xyes"; then DIR_NGTCP2_CRYPTO_WOLFSSL=`echo $LD_NGTCP2_CRYPTO_WOLFSSL | $SED -e 's/^-L//'` fi AC_CHECK_LIB(ngtcp2_crypto_wolfssl, ngtcp2_crypto_recv_client_initial_cb, [ AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h, USE_NGTCP2=1 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_WOLFSSL" export CURL_LIBRARY_PATH AC_MSG_NOTICE([Added $DIR_NGTCP2_CRYPTO_WOLFSSL to CURL_LIBRARY_PATH]) LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libngtcp2_crypto_wolfssl" ) ], dnl not found, revert back to clean variables LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS ) else dnl no ngtcp2_crypto_wolfssl pkg-config found, deal with it if test X"$want_tcp2" != Xdefault; then dnl To avoid link errors, we do not allow --with-ngtcp2 without dnl a pkgconfig file AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2_crypto_wolfssl pkg-config file.]) fi fi fi dnl ********************************************************************** dnl Check for OpenSSL QUIC dnl ********************************************************************** OPT_OPENSSL_QUIC="no" if test "x$disable_http" = "xyes" -o "x$OPENSSL_ENABLED" != "x1"; then # without HTTP or without openssl, no use OPT_OPENSSL_QUIC="no" fi AC_ARG_WITH(openssl-quic, AS_HELP_STRING([--with-openssl-quic],[Enable OpenSSL QUIC usage]) AS_HELP_STRING([--without-openssl-quic],[Disable OpenSSL QUIC usage]), [OPT_OPENSSL_QUIC=$withval]) case "$OPT_OPENSSL_QUIC" in no) dnl --without-openssl-quic option used want_openssl_quic="no" ;; yes) dnl --with-openssl-quic option used want_openssl_quic="yes" ;; esac curl_openssl_quic_msg="no (--with-openssl-quic)" if test "x$want_openssl_quic" = "xyes"; then if test "$USE_NGTCP2" = 1; then AC_MSG_ERROR([--with-openssl-quic and --with-ngtcp2 are mutually exclusive]) fi if test "$have_openssl_quic" != 1; then AC_MSG_ERROR([--with-openssl-quic requires quic support and OpenSSL >= 3.3.0]) fi AC_DEFINE(USE_OPENSSL_QUIC, 1, [if openssl QUIC is in use]) USE_OPENSSL_QUIC=1 fi dnl ********************************************************************** dnl Check for nghttp3 (HTTP/3 with ngtcp2) dnl ********************************************************************** OPT_NGHTTP3="yes" if test "x$USE_NGTCP2" != "x1" -a "x$USE_OPENSSL_QUIC" != "x1"; then # without ngtcp2 or openssl quic, nghttp3 is of no use for us OPT_NGHTTP3="no" want_nghttp3="no" fi AC_ARG_WITH(nghttp3, AS_HELP_STRING([--with-nghttp3=PATH],[Enable nghttp3 usage]) AS_HELP_STRING([--without-nghttp3],[Disable nghttp3 usage]), [OPT_NGHTTP3=$withval]) case "$OPT_NGHTTP3" in no) dnl --without-nghttp3 option used want_nghttp3="no" ;; yes) dnl --with-nghttp3 option used without path want_nghttp3="default" want_nghttp3_path="" ;; *) dnl --with-nghttp3 option used with path want_nghttp3="yes" want_nghttp3_path="$withval/lib/pkgconfig" ;; esac curl_http3_msg="no (--with-nghttp3)" if test X"$want_nghttp3" != Xno; then if test "x$USE_NGTCP2" != "x1" -a "x$USE_OPENSSL_QUIC" != "x1"; then # without ngtcp2 or openssl quic, nghttp3 is of no use for us AC_MSG_ERROR([nghttp3 enabled without a QUIC library; enable ngtcp2 or OpenSSL-QUIC]) fi dnl backup the pre-nghttp3 variables CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" CURL_CHECK_PKGCONFIG(libnghttp3, $want_nghttp3_path) if test "$PKGCONFIG" != "no"; then LIB_NGHTTP3=`CURL_EXPORT_PCDIR([$want_nghttp3_path]) $PKGCONFIG --libs-only-l libnghttp3` AC_MSG_NOTICE([-l is $LIB_NGHTTP3]) CPP_NGHTTP3=`CURL_EXPORT_PCDIR([$want_nghttp3_path]) dnl $PKGCONFIG --cflags-only-I libnghttp3` AC_MSG_NOTICE([-I is $CPP_NGHTTP3]) LD_NGHTTP3=`CURL_EXPORT_PCDIR([$want_nghttp3_path]) $PKGCONFIG --libs-only-L libnghttp3` AC_MSG_NOTICE([-L is $LD_NGHTTP3]) LDFLAGS="$LDFLAGS $LD_NGHTTP3" LDFLAGSPC="$LDFLAGSPC $LD_NGHTTP3" CPPFLAGS="$CPPFLAGS $CPP_NGHTTP3" LIBS="$LIB_NGHTTP3 $LIBS" if test "x$cross_compiling" != "xyes"; then DIR_NGHTTP3=`echo $LD_NGHTTP3 | $SED -e 's/^-L//'` fi AC_CHECK_LIB(nghttp3, nghttp3_conn_client_new_versioned, [ AC_CHECK_HEADERS(nghttp3/nghttp3.h, AC_DEFINE(USE_NGHTTP3, 1, [if nghttp3 is in use]) USE_NGHTTP3=1 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGHTTP3" export CURL_LIBRARY_PATH AC_MSG_NOTICE([Added $DIR_NGHTTP3 to CURL_LIBRARY_PATH]) LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libnghttp3" ) ], dnl not found, revert back to clean variables LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS ) else dnl no nghttp3 pkg-config found, deal with it if test X"$want_nghttp3" != Xdefault; then dnl To avoid link errors, we do not allow --with-nghttp3 without dnl a pkgconfig file AC_MSG_ERROR([--with-nghttp3 was specified but could not find nghttp3 pkg-config file.]) fi fi fi dnl ********************************************************************** dnl Check for ngtcp2 and nghttp3 (HTTP/3 with ngtcp2 + nghttp3) dnl ********************************************************************** if test "x$USE_NGTCP2" = "x1" -a "x$USE_NGHTTP3" = "x1"; then USE_NGTCP2_H3=1 AC_MSG_NOTICE([HTTP3 support is experimental]) curl_h3_msg="enabled (ngtcp2 + nghttp3)" fi dnl ********************************************************************** dnl Check for OpenSSL and nghttp3 (HTTP/3 with nghttp3 using OpenSSL QUIC) dnl ********************************************************************** if test "x$USE_OPENSSL_QUIC" = "x1" -a "x$USE_NGHTTP3" = "x1"; then experimental="$experimental HTTP3" USE_OPENSSL_H3=1 AC_MSG_NOTICE([HTTP3 support is experimental]) curl_h3_msg="enabled (openssl + nghttp3)" fi dnl ********************************************************************** dnl Check for quiche (QUIC) dnl ********************************************************************** OPT_QUICHE="no" if test "x$disable_http" = "xyes" -o "x$USE_NGTCP" = "x1"; then # without HTTP or with ngtcp2, quiche is no use OPT_QUICHE="no" fi AC_ARG_WITH(quiche, AS_HELP_STRING([--with-quiche=PATH],[Enable quiche usage]) AS_HELP_STRING([--without-quiche],[Disable quiche usage]), [OPT_QUICHE=$withval]) case "$OPT_QUICHE" in no) dnl --without-quiche option used want_quiche="no" ;; yes) dnl --with-quiche option used without path want_quiche="default" want_quiche_path="" ;; *) dnl --with-quiche option used with path want_quiche="yes" want_quiche_path="$withval" ;; esac if test X"$want_quiche" != Xno; then if test "$QUIC_ENABLED" != "yes"; then AC_MSG_ERROR([the detected TLS library does not support QUIC, making --with-quiche a no-no]) fi if test "$NGHTTP3_ENABLED" = 1; then AC_MSG_ERROR([--with-quiche and --with-ngtcp2 are mutually exclusive]) fi dnl backup the pre-quiche variables CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" CURL_CHECK_PKGCONFIG(quiche, $want_quiche_path) if test "$PKGCONFIG" != "no"; then LIB_QUICHE=`CURL_EXPORT_PCDIR([$want_quiche_path]) $PKGCONFIG --libs-only-l quiche` AC_MSG_NOTICE([-l is $LIB_QUICHE]) CPP_QUICHE=`CURL_EXPORT_PCDIR([$want_quiche_path]) dnl $PKGCONFIG --cflags-only-I quiche` AC_MSG_NOTICE([-I is $CPP_QUICHE]) LD_QUICHE=`CURL_EXPORT_PCDIR([$want_quiche_path]) $PKGCONFIG --libs-only-L quiche` AC_MSG_NOTICE([-L is $LD_QUICHE]) LDFLAGS="$LDFLAGS $LD_QUICHE" LDFLAGSPC="$LDFLAGSPC $LD_QUICHE" CPPFLAGS="$CPPFLAGS $CPP_QUICHE" LIBS="$LIB_QUICHE $LIBS" if test "x$cross_compiling" != "xyes"; then DIR_QUICHE=`echo $LD_QUICHE | $SED -e 's/^-L//'` fi AC_CHECK_LIB(quiche, quiche_conn_send_ack_eliciting, [ AC_CHECK_HEADERS(quiche.h, experimental="$experimental HTTP3" AC_MSG_NOTICE([HTTP3 support is experimental]) curl_h3_msg="enabled (quiche)" AC_DEFINE(USE_QUICHE, 1, [if quiche is in use]) USE_QUICHE=1 AC_CHECK_FUNCS([quiche_conn_set_qlog_fd]) CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_QUICHE" export CURL_LIBRARY_PATH AC_MSG_NOTICE([Added $DIR_QUICHE to CURL_LIBRARY_PATH]) LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE quiche", [], [ AC_INCLUDES_DEFAULT #include ] ) ], dnl not found, revert back to clean variables AC_MSG_ERROR([couldn't use quiche]) ) else dnl no quiche pkg-config found, deal with it if test X"$want_quiche" != Xdefault; then dnl To avoid link errors, we do not allow --with-quiche without dnl a pkgconfig file AC_MSG_ERROR([--with-quiche was specified but could not find quiche pkg-config file.]) fi fi fi dnl ********************************************************************** dnl Check for msh3/msquic (QUIC) dnl ********************************************************************** OPT_MSH3="no" if test "x$disable_http" = "xyes" -o "x$USE_NGTCP" = "x1"; then # without HTTP or with ngtcp2, msh3 is no use OPT_MSH3="no" fi AC_ARG_WITH(msh3, AS_HELP_STRING([--with-msh3=PATH],[Enable msh3 usage]) AS_HELP_STRING([--without-msh3],[Disable msh3 usage]), [OPT_MSH3=$withval]) case "$OPT_MSH3" in no) dnl --without-msh3 option used want_msh3="no" ;; yes) dnl --with-msh3 option used without path want_msh3="default" want_msh3_path="" ;; *) dnl --with-msh3 option used with path want_msh3="yes" want_msh3_path="$withval" ;; esac if test X"$want_msh3" != Xno; then dnl msh3 on non-Windows needs an OpenSSL with the QUIC API if test "$curl_cv_native_windows" != "yes"; then if test "$QUIC_ENABLED" != "yes"; then AC_MSG_ERROR([the detected TLS library does not support QUIC, making --with-msh3 a no-no]) fi if test "$OPENSSL_ENABLED" != "1"; then AC_MSG_ERROR([msh3/msquic requires OpenSSL]) fi fi if test "$NGHTTP3_ENABLED" = 1; then AC_MSG_ERROR([--with-msh3 and --with-ngtcp2 are mutually exclusive]) fi if test "$USE_QUICHE" = 1; then AC_MSG_ERROR([--with-msh3 and --with-quiche are mutually exclusive]) fi dnl backup the pre-msh3 variables CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" if test -n "$want_msh3_path"; then LD_MSH3="-L$want_msh3_path/lib" CPP_MSH3="-I$want_msh3_path/include" DIR_MSH3="$want_msh3_path/lib" LDFLAGS="$LDFLAGS $LD_MSH3" LDFLAGSPC="$LDFLAGSPC $LD_MSH3" CPPFLAGS="$CPPFLAGS $CPP_MSH3" fi LIBS="-lmsh3 $LIBS" AC_CHECK_LIB(msh3, MsH3ApiOpen, [ AC_CHECK_HEADERS(msh3.h, curl_h3_msg="enabled (msh3)" AC_DEFINE(USE_MSH3, 1, [if msh3 is in use]) USE_MSH3=1 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_MSH3" export CURL_LIBRARY_PATH AC_MSG_NOTICE([Added $DIR_MSH3 to CURL_LIBRARY_PATH]) dnl FIXME: Enable when msh3 was detected via pkg-config if false; then LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libmsh3" fi experimental="$experimental HTTP3" ) ], dnl not found, revert back to clean variables LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS ) fi dnl ********************************************************************** dnl libuv is only ever used for debug purposes dnl ********************************************************************** OPT_LIBUV=no AC_ARG_WITH(libuv, AS_HELP_STRING([--with-libuv=PATH],[Enable libuv]) AS_HELP_STRING([--without-libuv],[Disable libuv]), [OPT_LIBUV=$withval]) case "$OPT_LIBUV" in no) dnl --without-libuv option used want_libuv="no" ;; yes) dnl --with-libuv option used without path want_libuv="default" want_libuv_path="" ;; *) dnl --with-libuv option used with path want_libuv="yes" want_libuv_path="$withval" ;; esac if test X"$want_libuv" != Xno; then if test x$want_debug != xyes; then AC_MSG_ERROR([Using libuv without debug support enabled is useless]) fi dnl backup the pre-libuv variables CLEANLDFLAGS="$LDFLAGS" CLEANLDFLAGSPC="$LDFLAGSPC" CLEANCPPFLAGS="$CPPFLAGS" CLEANLIBS="$LIBS" CURL_CHECK_PKGCONFIG(libuv, $want_libuv_path) if test "$PKGCONFIG" != "no"; then LIB_LIBUV=`CURL_EXPORT_PCDIR([$want_libuv_path]) $PKGCONFIG --libs-only-l libuv` AC_MSG_NOTICE([-l is $LIB_LIBUV]) CPP_LIBUV=`CURL_EXPORT_PCDIR([$want_libuv_path]) dnl $PKGCONFIG --cflags-only-I libuv` AC_MSG_NOTICE([-I is $CPP_LIBUV]) LD_LIBUV=`CURL_EXPORT_PCDIR([$want_libuv_path]) $PKGCONFIG --libs-only-L libuv` AC_MSG_NOTICE([-L is $LD_LIBUV]) LDFLAGS="$LDFLAGS $LD_LIBUV" LDFLAGSPC="$LDFLAGSPC $LD_LIBUV" CPPFLAGS="$CPPFLAGS $CPP_LIBUV" LIBS="$LIB_LIBUV $LIBS" if test "x$cross_compiling" != "xyes"; then DIR_LIBUV=`echo $LD_LIBUV | $SED -e 's/^-L//'` fi AC_CHECK_LIB(uv, uv_default_loop, [ AC_CHECK_HEADERS(uv.h, AC_DEFINE(USE_LIBUV, 1, [if libuv is in use]) USE_LIBUV=1 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_LIBUV" export CURL_LIBRARY_PATH AC_MSG_NOTICE([Added $DIR_LIBUV to CURL_LIBRARY_PATH]) LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libuv" ) ], dnl not found, revert back to clean variables LDFLAGS=$CLEANLDFLAGS LDFLAGSPC=$CLEANLDFLAGSPC CPPFLAGS=$CLEANCPPFLAGS LIBS=$CLEANLIBS ) else dnl no libuv pkg-config found, deal with it if test X"$want_libuv" != Xdefault; then dnl To avoid link errors, we do not allow --with-libuv without dnl a pkgconfig file AC_MSG_ERROR([--with-libuv was specified but could not find libuv pkg-config file.]) fi fi fi dnl ********************************************************************** dnl Check for zsh completion path dnl ********************************************************************** OPT_ZSH_FPATH=default AC_ARG_WITH(zsh-functions-dir, AS_HELP_STRING([--with-zsh-functions-dir=PATH],[Install zsh completions to PATH]) AS_HELP_STRING([--without-zsh-functions-dir],[Do not install zsh completions]), [OPT_ZSH_FPATH=$withval]) case "$OPT_ZSH_FPATH" in default|no) dnl --without-zsh-functions-dir option used ;; yes) dnl --with-zsh-functions-dir option used without path ZSH_FUNCTIONS_DIR="$datarootdir/zsh/site-functions" AC_SUBST(ZSH_FUNCTIONS_DIR) ;; *) dnl --with-zsh-functions-dir option used with path ZSH_FUNCTIONS_DIR="$withval" AC_SUBST(ZSH_FUNCTIONS_DIR) ;; esac AM_CONDITIONAL(USE_ZSH_COMPLETION, test x"$ZSH_FUNCTIONS_DIR" != x) dnl ********************************************************************** dnl Check for fish completion path dnl ********************************************************************** OPT_FISH_FPATH=default AC_ARG_WITH(fish-functions-dir, AS_HELP_STRING([--with-fish-functions-dir=PATH],[Install fish completions to PATH]) AS_HELP_STRING([--without-fish-functions-dir],[Do not install fish completions]), [OPT_FISH_FPATH=$withval]) case "$OPT_FISH_FPATH" in default|no) dnl --without-fish-functions-dir option used ;; yes) dnl --with-fish-functions-dir option used without path CURL_CHECK_PKGCONFIG(fish) if test "$PKGCONFIG" != "no"; then FISH_FUNCTIONS_DIR=`$PKGCONFIG --variable completionsdir fish` else FISH_FUNCTIONS_DIR="$datarootdir/fish/vendor_completions.d" fi AC_SUBST(FISH_FUNCTIONS_DIR) ;; *) dnl --with-fish-functions-dir option used with path FISH_FUNCTIONS_DIR="$withval" AC_SUBST(FISH_FUNCTIONS_DIR) ;; esac AM_CONDITIONAL(USE_FISH_COMPLETION, test x"$FISH_FUNCTIONS_DIR" != x) dnl Now check for the very most basic headers. Then we can use these dnl ones as default-headers when checking for the rest! AC_CHECK_HEADERS( sys/types.h \ sys/time.h \ sys/select.h \ sys/socket.h \ sys/ioctl.h \ unistd.h \ arpa/inet.h \ net/if.h \ netinet/in.h \ netinet/in6.h \ sys/un.h \ linux/tcp.h \ netinet/tcp.h \ netinet/udp.h \ netdb.h \ sys/sockio.h \ sys/stat.h \ sys/param.h \ termios.h \ termio.h \ fcntl.h \ io.h \ pwd.h \ utime.h \ sys/utime.h \ sys/poll.h \ poll.h \ sys/resource.h \ libgen.h \ locale.h \ stdbool.h \ stdint.h \ sys/filio.h \ sys/eventfd.h, dnl to do if not found [], dnl to do if found [], dnl default includes [ #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #elif defined(HAVE_UNISTD_H) #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_IN6_H #include /* is this really required to detect other headers? */ #endif #ifdef HAVE_SYS_UN_H #include /* is this really required to detect other headers? */ #endif ] ) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_TYPE_SIZE_T CURL_CHECK_STRUCT_TIMEVAL CURL_VERIFY_RUNTIMELIBS CURL_SIZEOF(size_t) CURL_SIZEOF(long) CURL_SIZEOF(int) CURL_SIZEOF(time_t) CURL_SIZEOF(off_t) o=$CPPFLAGS CPPFLAGS="-I$srcdir/include $CPPFLAGS" CURL_SIZEOF(curl_off_t, [ #include ]) CURL_SIZEOF(curl_socket_t, [ #include ]) CPPFLAGS=$o AC_CHECK_TYPE(long long, [AC_DEFINE(HAVE_LONGLONG, 1, [Define to 1 if the compiler supports the 'long long' data type.])] longlong="yes" ) if test ${ac_cv_sizeof_curl_off_t} -lt 8; then AC_MSG_ERROR([64 bit curl_off_t is required]) fi # check for ssize_t AC_CHECK_TYPE(ssize_t, , AC_DEFINE(ssize_t, int, [the signed version of size_t])) # check for bool type AC_CHECK_TYPE([bool],[ AC_DEFINE(HAVE_BOOL_T, 1, [Define to 1 if bool is an available type.]) ], ,[ #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_STDBOOL_H #include #endif ]) # check for sa_family_t AC_CHECK_TYPE(sa_family_t, AC_DEFINE(HAVE_SA_FAMILY_T, 1, [Define to 1 if symbol `sa_family_t' exists]), [ # The Windows name? AC_CHECK_TYPE(ADDRESS_FAMILY, AC_DEFINE(HAVE_ADDRESS_FAMILY, 1, [Define to 1 if symbol `ADDRESS_FAMILY' exists]), [], [ #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif ]) ], [ #ifdef HAVE_SYS_SOCKET_H #include #endif ]) # check for suseconds_t AC_CHECK_TYPE([suseconds_t],[ AC_DEFINE(HAVE_SUSECONDS_T, 1, [Define to 1 if suseconds_t is an available type.]) ], ,[ #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif ]) case $host_os in amigaos*|msdos*) AC_DEFINE(HAVE_TIME_T_UNSIGNED, 1, [Define this if time_t is unsigned]) ;; *) AC_MSG_CHECKING([if time_t is unsigned]) CURL_RUN_IFELSE( [ #include int main(void) { time_t t = -1; return t < 0; } ],[ AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_TIME_T_UNSIGNED, 1, [Define this if time_t is unsigned]) ],[ AC_MSG_RESULT([no]) ],[ dnl cross-compiling, most systems are signed AC_MSG_RESULT([no]) ]) ;; esac TYPE_SOCKADDR_STORAGE CURL_CHECK_FUNC_SELECT CURL_CHECK_FUNC_RECV CURL_CHECK_FUNC_SEND CURL_CHECK_MSG_NOSIGNAL CURL_CHECK_FUNC_ALARM CURL_CHECK_FUNC_BASENAME CURL_CHECK_FUNC_CLOSESOCKET CURL_CHECK_FUNC_CLOSESOCKET_CAMEL CURL_CHECK_FUNC_FCNTL CURL_CHECK_FUNC_FREEADDRINFO CURL_CHECK_FUNC_FSETXATTR CURL_CHECK_FUNC_FTRUNCATE CURL_CHECK_FUNC_GETADDRINFO CURL_CHECK_FUNC_GETHOSTBYNAME_R CURL_CHECK_FUNC_GETHOSTNAME CURL_CHECK_FUNC_GETIFADDRS CURL_CHECK_FUNC_GETPEERNAME CURL_CHECK_FUNC_GETSOCKNAME CURL_CHECK_FUNC_GMTIME_R CURL_CHECK_FUNC_IOCTL CURL_CHECK_FUNC_IOCTLSOCKET CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL CURL_CHECK_FUNC_MEMRCHR CURL_CHECK_FUNC_SIGACTION CURL_CHECK_FUNC_SIGINTERRUPT CURL_CHECK_FUNC_SIGNAL CURL_CHECK_FUNC_SIGSETJMP CURL_CHECK_FUNC_SOCKET CURL_CHECK_FUNC_SOCKETPAIR CURL_CHECK_FUNC_STRDUP CURL_CHECK_FUNC_STRERROR_R case $host in *msdosdjgpp) ac_cv_func_pipe=no skipcheck_pipe=yes AC_MSG_NOTICE([skip check for pipe on msdosdjgpp]) ;; esac AC_CHECK_FUNCS([\ accept4 \ eventfd \ fnmatch \ geteuid \ getpass_r \ getppid \ getpwuid \ getpwuid_r \ getrlimit \ gettimeofday \ mach_absolute_time \ pipe \ pipe2 \ poll \ sendmmsg \ sendmsg \ setlocale \ setrlimit \ snprintf \ utime \ utimes \ ]) if test "$curl_cv_native_windows" != 'yes'; then AC_CHECK_FUNCS([\ if_nametoindex \ realpath \ sched_yield \ ]) CURL_CHECK_FUNC_INET_NTOP CURL_CHECK_FUNC_INET_PTON CURL_CHECK_FUNC_STRCASECMP CURL_CHECK_FUNC_STRCMPI CURL_CHECK_FUNC_STRICMP fi if test "$curl_cv_wince" = 'no'; then AC_CHECK_FUNCS([setmode]) if test "$curl_cv_native_windows" = 'yes' -o "$curl_cv_cygwin" = 'yes'; then AC_CHECK_FUNCS([_setmode]) fi fi if test -z "$ssl_backends"; then AC_CHECK_FUNCS([arc4random]) fi if test "$curl_cv_native_windows" != 'yes'; then AC_CHECK_FUNCS([fseeko]) dnl On Android, the only way to know if fseeko can be used is to see if it is dnl declared or not (for this API level), as the symbol always exists in the dnl lib. AC_CHECK_DECL([fseeko], [AC_DEFINE([HAVE_DECL_FSEEKO], [1], [Define to 1 if you have the fseeko declaration])], [], [[#include ]]) fi CURL_CHECK_NONBLOCKING_SOCKET AC_PATH_PROG(PERL, perl,, $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin) AC_SUBST(PERL) if test "x$BUILD_DOCS" != "x0" -o "x$USE_MANUAL" != "x0" -o "x$CURL_CA_EMBED" != "x"; then if test -z "$PERL"; then AC_MSG_ERROR([perl was not found, needed for docs, manual and CA embed]) fi fi dnl set variable for use in automakefile(s) AM_CONDITIONAL(BUILD_DOCS, test x"$BUILD_DOCS" = x1) dnl ************************************************************************* dnl If the manual variable still is set, then we go with providing a built-in dnl manual if test "$USE_MANUAL" = "1"; then curl_manual_msg="enabled" fi dnl set variable for use in automakefile(s) AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1) CURL_CHECK_LIB_ARES CURL_CHECK_OPTION_THREADED_RESOLVER if test "$ipv6" = yes -a "$curl_cv_apple" = 'yes'; then CURL_DARWIN_SYSTEMCONFIGURATION fi dnl Windows threaded resolver check if test "$want_threaded_resolver" = "yes" && test "$curl_cv_native_windows" = "yes"; then USE_THREADS_WIN32=1 AC_DEFINE(USE_THREADS_WIN32, 1, [if you want Win32 threaded DNS lookup]) curl_res_msg="Win32 threaded" fi dnl detect pthreads if test "$want_threaded_resolver" = "yes" && test "$USE_THREADS_WIN32" != "1"; then AC_CHECK_HEADER(pthread.h, [ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have ]) save_CFLAGS="$CFLAGS" dnl When statically linking against BoringSSL, -lpthread is added to LIBS. dnl Make sure to that this does not pass the check below, we really want dnl -pthread in CFLAGS as recommended for GCC. This also ensures that dnl lib1541 and lib1565 tests are built with these options. Otherwise dnl they fail the build since tests/libtest/Makefile.am clears LIBS. save_LIBS="$LIBS" LIBS= dnl Check for libc variants without a separate pthread lib like bionic AC_CHECK_FUNC(pthread_create, [USE_THREADS_POSIX=1] ) LIBS="$save_LIBS" dnl on HP-UX, life is more complicated... case $host in *-hp-hpux*) dnl it doesn't actually work without -lpthread USE_THREADS_POSIX="" ;; *) ;; esac dnl if it wasn't found without lib, search for it in pthread lib if test "$USE_THREADS_POSIX" != "1"; then # assign PTHREAD for pkg-config use PTHREAD=" -pthread" case $host in *-ibm-aix*) dnl Check if compiler is xlC COMPILER_VERSION=`"$CC" -qversion 2>/dev/null` if test x"$COMPILER_VERSION" = "x"; then CFLAGS="$CFLAGS -pthread" else CFLAGS="$CFLAGS -qthreaded" fi ;; powerpc-*amigaos*) dnl No -pthread option, but link with -lpthread PTHREAD=" -lpthread" ;; *) CFLAGS="$CFLAGS -pthread" ;; esac AC_CHECK_LIB(pthread, pthread_create, [USE_THREADS_POSIX=1], [ CFLAGS="$save_CFLAGS"]) fi if test "x$USE_THREADS_POSIX" = "x1"; then AC_DEFINE(USE_THREADS_POSIX, 1, [if you want POSIX threaded DNS lookup]) curl_res_msg="POSIX threaded" fi ]) fi dnl Did we find a threading option? if test "$want_threaded_resolver" != "no" -a "x$USE_THREADS_POSIX" != "x1" -a "x$USE_THREADS_WIN32" != "x1"; then AC_MSG_ERROR([Threaded resolver enabled but no thread library found]) fi AC_CHECK_HEADER(dirent.h, [ AC_DEFINE(HAVE_DIRENT_H, 1, [if you have ]) AC_CHECK_FUNC(opendir, AC_DEFINE(HAVE_OPENDIR, 1, [if you have opendir]) ) ] ) CURL_CONVERT_INCLUDE_TO_ISYSTEM dnl ************************************************************ dnl disable verbose text strings dnl AC_MSG_CHECKING([whether to enable verbose strings]) AC_ARG_ENABLE(verbose, AS_HELP_STRING([--enable-verbose],[Enable verbose strings]) AS_HELP_STRING([--disable-verbose],[Disable verbose strings]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_VERBOSE_STRINGS, 1, [to disable verbose strings]) curl_verbose_msg="no" ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) dnl ************************************************************ dnl enable SSPI support dnl AC_MSG_CHECKING([whether to enable SSPI support (Windows native builds only)]) AC_ARG_ENABLE(sspi, AS_HELP_STRING([--enable-sspi],[Enable SSPI]) AS_HELP_STRING([--disable-sspi],[Disable SSPI]), [ case "$enableval" in yes) if test "$curl_cv_native_windows" = "yes"; then AC_MSG_RESULT(yes) AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support]) USE_WINDOWS_SSPI=1 curl_sspi_msg="enabled" else AC_MSG_RESULT(no) AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.]) fi ;; *) if test "x$SCHANNEL_ENABLED" = "x1"; then # --with-schannel implies --enable-sspi AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi ;; esac ], if test "x$SCHANNEL_ENABLED" = "x1"; then # --with-schannel implies --enable-sspi AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi ) dnl ************************************************************ dnl disable basic authentication dnl AC_MSG_CHECKING([whether to enable basic authentication method]) AC_ARG_ENABLE(basic-auth, AS_HELP_STRING([--enable-basic-auth],[Enable basic authentication (default)]) AS_HELP_STRING([--disable-basic-auth],[Disable basic authentication]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_BASIC_AUTH, 1, [to disable basic authentication]) ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) dnl ************************************************************ dnl disable bearer authentication dnl AC_MSG_CHECKING([whether to enable bearer authentication method]) AC_ARG_ENABLE(bearer-auth, AS_HELP_STRING([--enable-bearer-auth],[Enable bearer authentication (default)]) AS_HELP_STRING([--disable-bearer-auth],[Disable bearer authentication]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_BEARER_AUTH, 1, [to disable bearer authentication]) ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) dnl ************************************************************ dnl disable digest authentication dnl AC_MSG_CHECKING([whether to enable digest authentication method]) AC_ARG_ENABLE(digest-auth, AS_HELP_STRING([--enable-digest-auth],[Enable digest authentication (default)]) AS_HELP_STRING([--disable-digest-auth],[Disable digest authentication]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_DIGEST_AUTH, 1, [to disable digest authentication]) ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) dnl ************************************************************ dnl disable kerberos authentication dnl AC_MSG_CHECKING([whether to enable kerberos authentication method]) AC_ARG_ENABLE(kerberos-auth, AS_HELP_STRING([--enable-kerberos-auth],[Enable kerberos authentication (default)]) AS_HELP_STRING([--disable-kerberos-auth],[Disable kerberos authentication]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_KERBEROS_AUTH, 1, [to disable kerberos authentication]) CURL_DISABLE_KERBEROS_AUTH=1 ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) dnl ************************************************************ dnl disable negotiate authentication dnl AC_MSG_CHECKING([whether to enable negotiate authentication method]) AC_ARG_ENABLE(negotiate-auth, AS_HELP_STRING([--enable-negotiate-auth],[Enable negotiate authentication (default)]) AS_HELP_STRING([--disable-negotiate-auth],[Disable negotiate authentication]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_NEGOTIATE_AUTH, 1, [to disable negotiate authentication]) CURL_DISABLE_NEGOTIATE_AUTH=1 ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) dnl ************************************************************ dnl disable aws dnl AC_MSG_CHECKING([whether to enable aws sig methods]) AC_ARG_ENABLE(aws, AS_HELP_STRING([--enable-aws],[Enable AWS sig support (default)]) AS_HELP_STRING([--disable-aws],[Disable AWS sig support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_AWS, 1, [to disable AWS sig support]) ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) dnl ************************************************************ dnl disable NTLM support dnl AC_MSG_CHECKING([whether to support NTLM]) AC_ARG_ENABLE(ntlm, AS_HELP_STRING([--enable-ntlm],[Enable NTLM support]) AS_HELP_STRING([--disable-ntlm],[Disable NTLM support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_NTLM, 1, [to disable NTLM support]) CURL_DISABLE_NTLM=1 ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) dnl ************************************************************ dnl disable TLS-SRP authentication dnl AC_MSG_CHECKING([whether to enable TLS-SRP authentication]) AC_ARG_ENABLE(tls-srp, AS_HELP_STRING([--enable-tls-srp],[Enable TLS-SRP authentication]) AS_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]), [ case "$enableval" in no) AC_MSG_RESULT(no) want_tls_srp=no ;; *) AC_MSG_RESULT(yes) want_tls_srp=yes ;; esac ], AC_MSG_RESULT(yes) want_tls_srp=yes ) if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_OPENSSL_SRP" = "x1"); then AC_DEFINE(USE_TLS_SRP, 1, [Use TLS-SRP authentication]) USE_TLS_SRP=1 curl_tls_srp_msg="enabled" fi dnl ************************************************************ dnl disable Unix domain sockets support dnl AC_MSG_CHECKING([whether to enable Unix domain sockets]) AC_ARG_ENABLE(unix-sockets, AS_HELP_STRING([--enable-unix-sockets],[Enable Unix domain sockets]) AS_HELP_STRING([--disable-unix-sockets],[Disable Unix domain sockets]), [ case "$enableval" in no) AC_MSG_RESULT(no) want_unix_sockets=no ;; *) AC_MSG_RESULT(yes) want_unix_sockets=yes ;; esac ], [ AC_MSG_RESULT(auto) want_unix_sockets=auto ] ) if test "x$want_unix_sockets" != "xno" -a "$curl_cv_wince" = 'no'; then if test "x$curl_cv_native_windows" = "xyes"; then USE_UNIX_SOCKETS=1 AC_DEFINE(USE_UNIX_SOCKETS, 1, [Use Unix domain sockets]) curl_unix_sockets_msg="enabled" else AC_CHECK_MEMBER([struct sockaddr_un.sun_path], [ AC_DEFINE(USE_UNIX_SOCKETS, 1, [Use Unix domain sockets]) USE_UNIX_SOCKETS=1 curl_unix_sockets_msg="enabled" ], [ if test "x$want_unix_sockets" = "xyes"; then AC_MSG_ERROR([--enable-unix-sockets is not available on this platform!]) fi ], [ #include ]) fi fi dnl ************************************************************ dnl disable cookies support dnl AC_MSG_CHECKING([whether to support cookies]) AC_ARG_ENABLE(cookies, AS_HELP_STRING([--enable-cookies],[Enable cookies support]) AS_HELP_STRING([--disable-cookies],[Disable cookies support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_COOKIES, 1, [to disable cookies support]) ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) dnl ************************************************************ dnl disable socketpair dnl AC_MSG_CHECKING([whether to support socketpair]) AC_ARG_ENABLE(socketpair, AS_HELP_STRING([--enable-socketpair],[Enable socketpair support]) AS_HELP_STRING([--disable-socketpair],[Disable socketpair support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_SOCKETPAIR, 1, [to disable socketpair support]) ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) dnl ************************************************************ dnl disable HTTP authentication support dnl AC_MSG_CHECKING([whether to support HTTP authentication]) AC_ARG_ENABLE(http-auth, AS_HELP_STRING([--enable-http-auth],[Enable HTTP authentication support]) AS_HELP_STRING([--disable-http-auth],[Disable HTTP authentication support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_HTTP_AUTH, 1, [disable HTTP authentication]) ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) dnl ************************************************************ dnl disable DoH support dnl AC_MSG_CHECKING([whether to support DoH]) AC_ARG_ENABLE(doh, AS_HELP_STRING([--enable-doh],[Enable DoH support]) AS_HELP_STRING([--disable-doh],[Disable DoH support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_DOH, 1, [disable DoH]) ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) dnl ************************************************************ dnl disable mime API support dnl AC_MSG_CHECKING([whether to support the MIME API]) AC_ARG_ENABLE(mime, AS_HELP_STRING([--enable-mime],[Enable mime API support]) AS_HELP_STRING([--disable-mime],[Disable mime API support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_MIME, 1, [disable mime API]) ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) dnl ************************************************************ dnl disable bindlocal dnl AC_MSG_CHECKING([whether to support binding connections locally]) AC_ARG_ENABLE(bindlocal, AS_HELP_STRING([--enable-bindlocal],[Enable local binding support]) AS_HELP_STRING([--disable-bindlocal],[Disable local binding support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_BINDLOCAL, 1, [disable local binding support]) ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) dnl ************************************************************ dnl disable form API support dnl AC_MSG_CHECKING([whether to support the form API]) AC_ARG_ENABLE(form-api, AS_HELP_STRING([--enable-form-api],[Enable form API support]) AS_HELP_STRING([--disable-form-api],[Disable form API support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_FORM_API, 1, [disable form API]) ;; *) AC_MSG_RESULT(yes) test "$enable_mime" = no && AC_MSG_ERROR(MIME support needs to be enabled in order to enable form API support) ;; esac ], [ if test "$enable_mime" = no; then enable_form_api=no AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_FORM_API, 1, [disable form API]) else AC_MSG_RESULT(yes) fi ] ) dnl ************************************************************ dnl disable date parsing dnl AC_MSG_CHECKING([whether to support date parsing]) AC_ARG_ENABLE(dateparse, AS_HELP_STRING([--enable-dateparse],[Enable date parsing]) AS_HELP_STRING([--disable-dateparse],[Disable date parsing]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_PARSEDATE, 1, [disable date parsing]) ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) dnl ************************************************************ dnl disable netrc dnl AC_MSG_CHECKING([whether to support netrc parsing]) AC_ARG_ENABLE(netrc, AS_HELP_STRING([--enable-netrc],[Enable netrc parsing]) AS_HELP_STRING([--disable-netrc],[Disable netrc parsing]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_NETRC, 1, [disable netrc parsing]) ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) dnl ************************************************************ dnl disable progress-meter dnl AC_MSG_CHECKING([whether to support progress-meter]) AC_ARG_ENABLE(progress-meter, AS_HELP_STRING([--enable-progress-meter],[Enable progress-meter]) AS_HELP_STRING([--disable-progress-meter],[Disable progress-meter]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_PROGRESS_METER, 1, [disable progress-meter]) ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) dnl ************************************************************ dnl disable SHA-512/256 hash algorithm dnl AC_MSG_CHECKING([whether to support the SHA-512/256 hash algorithm]) AC_ARG_ENABLE(sha512-256, AS_HELP_STRING([--enable-sha512-256],[Enable SHA-512/256 hash algorithm (default)]) AS_HELP_STRING([--disable-sha512-256],[Disable SHA-512/256 hash algorithm]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_SHA512_256, 1, [disable SHA-512/256 hash algorithm]) ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) dnl ************************************************************ dnl disable shuffle DNS support dnl AC_MSG_CHECKING([whether to support DNS shuffling]) AC_ARG_ENABLE(dnsshuffle, AS_HELP_STRING([--enable-dnsshuffle],[Enable DNS shuffling]) AS_HELP_STRING([--disable-dnsshuffle],[Disable DNS shuffling]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_SHUFFLE_DNS, 1, [disable DNS shuffling]) ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) dnl ************************************************************ dnl disable the curl_easy_options API dnl AC_MSG_CHECKING([whether to support curl_easy_option*]) AC_ARG_ENABLE(get-easy-options, AS_HELP_STRING([--enable-get-easy-options],[Enable curl_easy_options]) AS_HELP_STRING([--disable-get-easy-options],[Disable curl_easy_options]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_GETOPTIONS, 1, [to disable curl_easy_options]) ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) dnl ************************************************************ dnl switch on/off alt-svc dnl AC_MSG_CHECKING([whether to support alt-svc]) AC_ARG_ENABLE(alt-svc, AS_HELP_STRING([--enable-alt-svc],[Enable alt-svc support]) AS_HELP_STRING([--disable-alt-svc],[Disable alt-svc support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_ALTSVC, 1, [disable alt-svc]) curl_altsvc_msg="no"; enable_altsvc="no" ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) dnl ************************************************************ dnl switch on/off headers-api dnl AC_MSG_CHECKING([whether to support headers-api]) AC_ARG_ENABLE(headers-api, AS_HELP_STRING([--enable-headers-api],[Enable headers-api support]) AS_HELP_STRING([--disable-headers-api],[Disable headers-api support]), [ case "$enableval" in no) AC_MSG_RESULT(no) curl_headers_msg="no (--enable-headers-api)" AC_DEFINE(CURL_DISABLE_HEADERS_API, 1, [disable headers-api]) ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT(yes) ) dnl only check for HSTS if there's SSL present if test -n "$SSL_ENABLED"; then dnl ************************************************************ dnl switch on/off hsts dnl AC_MSG_CHECKING([whether to support HSTS]) AC_ARG_ENABLE(hsts, AS_HELP_STRING([--enable-hsts],[Enable HSTS support]) AS_HELP_STRING([--disable-hsts],[Disable HSTS support]), [ case "$enableval" in no) AC_MSG_RESULT(no) hsts="no" ;; *) AC_MSG_RESULT(yes) ;; esac ], AC_MSG_RESULT($hsts) ) else AC_MSG_NOTICE([disables HSTS due to lack of SSL]) hsts="no" fi if test "x$hsts" != "xyes"; then curl_hsts_msg="no (--enable-hsts)"; AC_DEFINE(CURL_DISABLE_HSTS, 1, [disable alt-svc]) fi dnl ************************************************************* dnl check whether ECH support, if desired, is actually available dnl if test "x$want_ech" != "xno"; then AC_MSG_CHECKING([whether ECH support is available]) dnl assume NOT and look for sufficient condition ECH_ENABLED=0 ECH_ENABLED_OPENSSL=0 ECH_ENABLED_WOLFSSL=0 ECH_ENABLED_RUSTLS=0 ECH_SUPPORT='' dnl check for OpenSSL equivalent if test "x$OPENSSL_ENABLED" = "x1"; then AC_CHECK_FUNCS(SSL_set1_ech_config_list, ECH_SUPPORT="$ECH_SUPPORT OpenSSL" ECH_ENABLED_OPENSSL=1) fi if test "x$WOLFSSL_ENABLED" = "x1"; then AC_CHECK_FUNCS(wolfSSL_CTX_GenerateEchConfig, ECH_SUPPORT="$ECH_SUPPORT wolfSSL" ECH_ENABLED_WOLFSSL=1) fi if test "x$RUSTLS_ENABLED" = "x1"; then ECH_SUPPORT="$ECH_SUPPORT rustls-ffi" ECH_ENABLED_RUSTLS=1 fi dnl now deal with whatever we found if test "x$ECH_ENABLED_OPENSSL" = "x1" -o \ "x$ECH_ENABLED_WOLFSSL" = "x1" -o \ "x$ECH_ENABLED_RUSTLS" = "x1"; then AC_DEFINE(USE_ECH, 1, [if ECH support is available]) AC_MSG_RESULT(ECH support available via:$ECH_SUPPORT) experimental="$experimental ECH" ECH_ENABLED=1 dnl ECH wants HTTPSRR want_httpsrr="yes" else AC_MSG_ERROR([--enable-ech ignored: No ECH support found]) fi fi AC_MSG_CHECKING([whether to enable HTTPS-RR support]) dnl ************************************************************* dnl check whether HTTPSRR support if desired dnl if test "x$want_httpsrr" != "xno"; then AC_MSG_RESULT([yes]) AC_DEFINE(USE_HTTPSRR, 1, [enable HTTPS RR support]) experimental="$experimental HTTPSRR" curl_httpsrr_msg="enabled (--disable-httpsrr)" else AC_MSG_RESULT([no]) # no HTTPSRR wanted if test "$want_threaded_resolver" = "yes"; then # and using the threaded resolver if test "x$USE_ARES" = "x1"; then AC_MSG_ERROR([without HTTPS-RR support, asking for both threaded resolver and c-ares support is ambivalent. Please drop one of them.]) fi fi fi dnl ************************************************************* dnl check whether OpenSSL (lookalikes) have SSL_set0_wbio dnl if test "x$OPENSSL_ENABLED" = "x1"; then AC_CHECK_FUNCS([SSL_set0_wbio]) fi if test "x$CURL_DISABLE_HTTP" != "x1"; then dnl ************************************************************* dnl WebSockets dnl AC_MSG_CHECKING([whether to support WebSockets]) AC_ARG_ENABLE(websockets, AS_HELP_STRING([--enable-websockets],[Enable WebSockets support]) AS_HELP_STRING([--disable-websockets],[Disable WebSockets support]), [ case "$enableval" in no) AC_MSG_RESULT(no) AC_DEFINE(CURL_DISABLE_WEBSOCKETS, [1], [disable WebSockets]) CURL_DISABLE_WEBSOCKETS=1 ;; *) if test ${ac_cv_sizeof_curl_off_t} -gt 4; then AC_MSG_RESULT(yes) else dnl WebSockets requires >32 bit curl_off_t AC_MSG_RESULT(no) AC_MSG_WARN([WebSockets disabled due to lack of >32 bit curl_off_t]) AC_DEFINE(CURL_DISABLE_WEBSOCKETS, [1], [disable WebSockets]) CURL_DISABLE_WEBSOCKETS=1 fi ;; esac ], AC_MSG_RESULT(yes) ) else AC_MSG_WARN([WebSockets disabled because HTTP is disabled]) AC_DEFINE(CURL_DISABLE_WEBSOCKETS, [1], [disable WebSockets]) CURL_DISABLE_WEBSOCKETS=1 fi dnl ************************************************************* dnl check whether experimental SSL Session Im-/Export is enabled dnl if test "x$want_ssls_export" != "xno"; then AC_MSG_CHECKING([whether SSL session export support is available]) dnl assume NOT and look for sufficient condition SSLS_EXPORT_ENABLED=0 SSLS_EXPORT_SUPPORT='' if test "x$SSL_ENABLED" != "x1"; then AC_MSG_ERROR([--enable-ssls-export ignored: No SSL support]) else SSLS_EXPORT_ENABLED=1 AC_DEFINE(USE_SSLS_EXPORT, 1, [if SSL session export support is available]) AC_MSG_RESULT("SSL session im-/export enabled") experimental="$experimental SSLS-EXPORT" fi fi dnl ************************************************************ dnl hiding of library internal symbols dnl CURL_CONFIGURE_SYMBOL_HIDING dnl dnl All the library dependencies put into $LIB apply to libcurl only. dnl LIBCURL_PC_LDFLAGS_PRIVATE='' dnl Do not quote $INITIAL_LDFLAGS set -- $INITIAL_LDFLAGS while test -n "$1"; do case "$1" in -L* | --library-path=* | -F*) LIBCURL_PC_LDFLAGS_PRIVATE="$LIBCURL_PC_LDFLAGS_PRIVATE $1" ;; -framework) if test -n "$2"; then LIBCURL_PC_LDFLAGS_PRIVATE="$LIBCURL_PC_LDFLAGS_PRIVATE $1 $2" shift fi ;; esac shift done LIBCURL_PC_LDFLAGS_PRIVATE="$LIBCURL_PC_LDFLAGS_PRIVATE $LDFLAGSPC" LIBCURL_PC_LIBS_PRIVATE="$LIBS$PTHREAD" AC_SUBST(LIBCURL_PC_LDFLAGS_PRIVATE) AC_SUBST(LIBCURL_PC_LIBS_PRIVATE) AC_SUBST(CURL_NETWORK_AND_TIME_LIBS) dnl BLANK_AT_MAKETIME may be used in our Makefile.am files to blank dnl LIBS variable used in generated makefile at makefile processing dnl time. Doing this functionally prevents LIBS from being used for dnl all link targets in given makefile. BLANK_AT_MAKETIME= AC_SUBST(BLANK_AT_MAKETIME) AM_CONDITIONAL(CROSSCOMPILING, test x$cross_compiling = xyes) dnl yes or no ENABLE_SHARED="$enable_shared" AC_SUBST(ENABLE_SHARED) dnl to let curl-config output the static libraries correctly ENABLE_STATIC="$enable_static" AC_SUBST(ENABLE_STATIC) squeeze LIBCURL_PC_REQUIRES_PRIVATE LIBCURL_PC_REQUIRES_PRIVATE=`echo $LIBCURL_PC_REQUIRES_PRIVATE | tr ' ' ','` AC_SUBST(LIBCURL_PC_REQUIRES_PRIVATE) dnl Merge pkg-config private fields into public ones when static-only if test "x$enable_shared" = "xno"; then LIBCURL_PC_REQUIRES=$LIBCURL_PC_REQUIRES_PRIVATE LIBCURL_PC_LIBS=$LIBCURL_PC_LIBS_PRIVATE else LIBCURL_PC_REQUIRES= LIBCURL_PC_LIBS= fi AC_SUBST(LIBCURL_PC_REQUIRES) AC_SUBST(LIBCURL_PC_LIBS) rm $compilersh dnl dnl For keeping supported features and protocols also in pkg-config file dnl since it is more cross-compile friendly than curl-config dnl if test "x$OPENSSL_ENABLED" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES SSL" elif test -n "$SSL_ENABLED"; then SUPPORT_FEATURES="$SUPPORT_FEATURES SSL" fi if test "x$IPV6_ENABLED" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6" fi if test "x$USE_UNIX_SOCKETS" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES UnixSockets" fi if test "x$HAVE_LIBZ" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES libz" fi if test "x$HAVE_BROTLI" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES brotli" fi if test "x$HAVE_ZSTD" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES zstd" fi if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1" \ -o "x$USE_THREADS_WIN32" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS" fi if test "x$USE_ARES" = "x1" -a "$want_threaded_resolver" = "yes" -a "x$want_httpsrr" != "xno"; then SUPPORT_FEATURES="$SUPPORT_FEATURES asyn-rr" fi if test "x$IDN_ENABLED" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES IDN" fi if test "x$USE_WINDOWS_SSPI" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI" fi if test "x$HAVE_GSSAPI" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES GSS-API" fi if test "x$curl_psl_msg" = "xenabled"; then SUPPORT_FEATURES="$SUPPORT_FEATURES PSL" fi if test "x$curl_gsasl_msg" = "xenabled"; then SUPPORT_FEATURES="$SUPPORT_FEATURES gsasl" fi if test "x$enable_altsvc" = "xyes"; then SUPPORT_FEATURES="$SUPPORT_FEATURES alt-svc" fi if test "x$hsts" = "xyes"; then SUPPORT_FEATURES="$SUPPORT_FEATURES HSTS" fi if test "x$CURL_DISABLE_NEGOTIATE_AUTH" != "x1" -a \ \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then SUPPORT_FEATURES="$SUPPORT_FEATURES SPNEGO" fi if test "x$CURL_DISABLE_KERBEROS_AUTH" != "x1" -a \ \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then SUPPORT_FEATURES="$SUPPORT_FEATURES Kerberos" fi use_curl_ntlm_core=no if test "x$CURL_DISABLE_NTLM" != "x1"; then if test "x$OPENSSL_ENABLED" = "x1" -o "x$MBEDTLS_ENABLED" = "x1" \ -o "x$GNUTLS_ENABLED" = "x1" \ -o "x$SECURETRANSPORT_ENABLED" = "x1" \ -o "x$USE_WIN32_CRYPTO" = "x1" \ -o "x$HAVE_WOLFSSL_DES_ECB_ENCRYPT" = "x1"; then use_curl_ntlm_core=yes fi if test "x$use_curl_ntlm_core" = "xyes" \ -o "x$USE_WINDOWS_SSPI" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM" fi fi if test "x$USE_TLS_SRP" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP" fi if test "x$USE_NGHTTP2" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2" fi if test "x$USE_NGTCP2_H3" = "x1" -o "x$USE_QUICHE" = "x1" \ -o "x$USE_OPENSSL_H3" = "x1" -o "x$USE_MSH3" = "x1"; then if test "x$CURL_WITH_MULTI_SSL" = "x1"; then AC_MSG_ERROR([MultiSSL cannot be enabled with HTTP/3 and vice versa]) fi SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP3" fi if test "x$CURL_WITH_MULTI_SSL" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES MultiSSL" fi AC_MSG_CHECKING([if this build supports HTTPS-proxy]) dnl if not explicitly turned off, HTTPS-proxy comes with some TLS backends if test "x$CURL_DISABLE_HTTP" != "x1"; then if test "x$https_proxy" != "xno"; then if test "x$OPENSSL_ENABLED" = "x1" \ -o "x$GNUTLS_ENABLED" = "x1" \ -o "x$SECURETRANSPORT_ENABLED" = "x1" \ -o "x$RUSTLS_ENABLED" = "x1" \ -o "x$BEARSSL_ENABLED" = "x1" \ -o "x$SCHANNEL_ENABLED" = "x1" \ -o "x$GNUTLS_ENABLED" = "x1" \ -o "x$MBEDTLS_ENABLED" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy" AC_MSG_RESULT([yes]) elif test "x$WOLFSSL_ENABLED" = "x1" -a "x$HAVE_WOLFSSL_BIO_NEW" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi else AC_MSG_RESULT([no]) fi else AC_MSG_RESULT([no]) fi if test "x$OPENSSL_ENABLED" = "x1" -o -n "$SSL_ENABLED"; then if test "x$ECH_ENABLED" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES ECH" fi fi if test "x$want_httpsrr" != "xno"; then SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPSRR" fi if test "x$SSLS_EXPORT_ENABLED" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES SSLS-EXPORT" fi if test ${ac_cv_sizeof_curl_off_t} -gt 4; then if test ${ac_cv_sizeof_off_t} -gt 4 -o \ "$curl_win32_file_api" = "win32_large_files"; then SUPPORT_FEATURES="$SUPPORT_FEATURES Largefile" fi fi if test "$tst_atomic" = "yes"; then SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe" elif test "x$USE_THREADS_POSIX" = "x1" -a \ "x$ac_cv_header_pthread_h" = "xyes"; then SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe" else AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ #include ]],[[ #if (WINVER < 0x600) && (_WIN32_WINNT < 0x600) #error #endif ]]) ],[ SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe" ],[ ]) fi if test "x$want_winuni" = "xyes"; then SUPPORT_FEATURES="$SUPPORT_FEATURES Unicode" fi if test "x$want_debug" = "xyes"; then SUPPORT_FEATURES="$SUPPORT_FEATURES Debug" fi if test "x$want_curldebug" = "xyes"; then SUPPORT_FEATURES="$SUPPORT_FEATURES TrackMemory" fi if test "x$CURL_CA_EMBED" != "x"; then SUPPORT_FEATURES="$SUPPORT_FEATURES CAcert" CURL_CA_EMBED_msg="$CURL_CA_EMBED" else CURL_CA_EMBED_msg='no' fi dnl replace spaces with newlines dnl sort the lines dnl replace the newlines back to spaces if sort -f /dev/null 2>&1; then SUPPORT_FEATURES=`echo $SUPPORT_FEATURES | tr ' ' '\012' | sort -f | tr '\012' ' '` else SUPPORT_FEATURES=`echo $SUPPORT_FEATURES | tr ' ' '\012' | sort | tr '\012' ' '` fi AC_SUBST(SUPPORT_FEATURES) dnl For supported protocols in pkg-config file if test "x$CURL_DISABLE_HTTP" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP" if test "x$SSL_ENABLED" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS" fi fi if test "x$CURL_DISABLE_FTP" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTP" if test "x$SSL_ENABLED" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTPS" fi fi if test "x$CURL_DISABLE_FILE" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE" fi if test "x$CURL_DISABLE_TELNET" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET" fi if test "x$CURL_DISABLE_LDAP" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP" if test "x$CURL_DISABLE_LDAPS" != "x1"; then if (test "x$USE_OPENLDAP" = "x1" && test "x$SSL_ENABLED" = "x1") || (test "x$USE_OPENLDAP" != "x1" && test "x$HAVE_LDAP_SSL" = "x1"); then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS" fi fi fi if test "x$CURL_DISABLE_DICT" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT" fi if test "x$CURL_DISABLE_TFTP" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP" fi if test "x$CURL_DISABLE_GOPHER" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER" if test "x$SSL_ENABLED" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHERS" fi fi if test "x$CURL_DISABLE_MQTT" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS MQTT" fi if test "x$CURL_DISABLE_POP3" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3" if test "x$SSL_ENABLED" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S" fi fi if test "x$CURL_DISABLE_IMAP" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP" if test "x$SSL_ENABLED" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS" fi fi if test "x$CURL_DISABLE_SMB" != "x1" \ -a "x$use_curl_ntlm_core" = "xyes"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMB" if test "x$SSL_ENABLED" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMBS" fi fi if test "x$CURL_DISABLE_SMTP" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP" if test "x$SSL_ENABLED" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS" fi fi if test "x$USE_LIBSSH2" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP" SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP" fi if test "x$USE_LIBSSH" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP" SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP" fi if test "x$USE_WOLFSSH" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP" fi if test "x$CURL_DISABLE_IPFS" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IPFS IPNS" fi if test "x$CURL_DISABLE_RTSP" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP" fi if test "x$USE_LIBRTMP" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP" fi if test "x$CURL_DISABLE_WEBSOCKETS" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS WS" if test "x$SSL_ENABLED" = "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS WSS" fi fi dnl replace spaces with newlines dnl sort the lines dnl replace the newlines back to spaces SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '` AC_SUBST(SUPPORT_PROTOCOLS) dnl squeeze whitespace out of some variables squeeze CFLAGS squeeze CPPFLAGS squeeze DEFS squeeze LDFLAGS squeeze LIBS squeeze LIBCURL_PC_LDFLAGS_PRIVATE squeeze LIBCURL_PC_LIBS_PRIVATE squeeze CURL_NETWORK_AND_TIME_LIBS squeeze SUPPORT_FEATURES squeeze SUPPORT_PROTOCOLS XC_CHECK_BUILD_FLAGS SSL_BACKENDS=${ssl_backends} AC_SUBST(SSL_BACKENDS) if test "x$want_curldebug_assumed" = "xyes" && test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then ac_configure_args="$ac_configure_args --enable-curldebug" fi CURL_PREPARE_CONFIGUREHELP_PM AC_CONFIG_FILES([\ Makefile \ docs/Makefile \ docs/examples/Makefile \ docs/libcurl/Makefile \ docs/libcurl/opts/Makefile \ docs/cmdline-opts/Makefile \ include/Makefile \ include/curl/Makefile \ src/Makefile \ lib/Makefile \ scripts/Makefile \ lib/libcurl.vers \ tests/Makefile \ tests/config \ tests/configurehelp.pm \ tests/certs/Makefile \ tests/data/Makefile \ tests/server/Makefile \ tests/libtest/Makefile \ tests/unit/Makefile \ tests/tunit/Makefile \ tests/http/config.ini \ tests/http/Makefile \ tests/http/clients/Makefile \ packages/Makefile \ packages/vms/Makefile \ curl-config \ libcurl.pc ]) AC_OUTPUT SUPPORT_PROTOCOLS_LOWER=`echo "$SUPPORT_PROTOCOLS" | tr A-Z a-z` AC_MSG_NOTICE([Configured to build curl/libcurl: Host setup: ${host} Install prefix: ${prefix} Compiler: ${CC} CFLAGS: ${CFLAGS} CFLAGS extras: ${CURL_CFLAG_EXTRAS} CPPFLAGS: ${CPPFLAGS} LDFLAGS: ${LDFLAGS} curl-config: ${LIBCURL_PC_LDFLAGS_PRIVATE} LIBS: ${LIBS} curl version: ${CURLVERSION} SSL: ${curl_ssl_msg} SSH: ${curl_ssh_msg} zlib: ${curl_zlib_msg} brotli: ${curl_brotli_msg} zstd: ${curl_zstd_msg} GSS-API: ${curl_gss_msg} GSASL: ${curl_gsasl_msg} TLS-SRP: ${curl_tls_srp_msg} resolver: ${curl_res_msg} IPv6: ${curl_ipv6_msg} Unix sockets: ${curl_unix_sockets_msg} IDN: ${curl_idn_msg} Build docs: ${curl_docs_msg} Build libcurl: Shared=${enable_shared}, Static=${enable_static} Built-in manual: ${curl_manual_msg} --libcurl option: ${curl_libcurl_msg} Verbose errors: ${curl_verbose_msg} Code coverage: ${curl_coverage_msg} SSPI: ${curl_sspi_msg} ca cert bundle: ${ca}${ca_warning} ca cert path: ${capath}${capath_warning} ca cert embed: ${CURL_CA_EMBED_msg} ca fallback: ${with_ca_fallback} LDAP: ${curl_ldap_msg} LDAPS: ${curl_ldaps_msg} IPFS/IPNS: ${curl_ipfs_msg} RTSP: ${curl_rtsp_msg} RTMP: ${curl_rtmp_msg} PSL: ${curl_psl_msg} Alt-svc: ${curl_altsvc_msg} Headers API: ${curl_headers_msg} HSTS: ${curl_hsts_msg} HTTP1: ${curl_h1_msg} HTTP2: ${curl_h2_msg} HTTP3: ${curl_h3_msg} ECH: ${curl_ech_msg} HTTPS RR: ${curl_httpsrr_msg} SSLS-EXPORT: ${curl_ssls_export_msg} Protocols: ${SUPPORT_PROTOCOLS_LOWER} Features: ${SUPPORT_FEATURES} ]) # grep -o would simplify this, but is nonportable [non13=`echo "$TLSCHOICE" | $AWK '{split("bearssl secure-transport", a); for (i in a) if(match(tolower($0), a[i])) print a[i];}'`] if test -n "$non13"; then for a in $non13; do AC_MSG_WARN([$a is enabled for TLS but it does not support TLS 1.3]) done fi if test -n "$experimental"; then for a in $experimental; do AC_MSG_WARN([$a is enabled but marked EXPERIMENTAL. Use with caution!]) done fi CURL_PREPARE_BUILDINFO echo "[@%:@] This is a generated file. Do not edit.${curl_buildinfo}" > ./buildinfo.txt if test -n "$CURL_BUILDINFO$CURL_CI$CI"; then AC_MSG_NOTICE([${curl_buildinfo}]) fi curl-8.14.1/curl-config.in0000644000000000000000000001125515017756261013516 0ustar0000000000000000#!/bin/sh #*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # shellcheck disable=SC2006 prefix='@prefix@' # Used in 'libdir' # shellcheck disable=SC2034 exec_prefix="@exec_prefix@" # shellcheck disable=SC2034 includedir="@includedir@" usage() { cat <&2 exit 1 fi ;; --configure) echo @CONFIGURE_OPTIONS@ ;; *) echo "unknown option: $1" usage 1 ;; esac shift done exit 0 curl-8.14.1/depcomp0000755000000000000000000005602015017756261012332 0ustar0000000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2018-03-07.03; # UTC # Copyright (C) 1999-2021 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: curl-8.14.1/docs/0000755000000000000000000000000015017756261011702 5ustar0000000000000000curl-8.14.1/docs/ALTSVC.md0000644000000000000000000000214215017756261013217 0ustar0000000000000000 # Alt-Svc curl features support for the Alt-Svc: HTTP header. ## Enable Alt-Svc in build `./configure --enable-alt-svc` (enabled by default since 7.73.0) ## Standard [RFC 7838](https://datatracker.ietf.org/doc/html/rfc7838) # Alt-Svc cache file format This is a text based file with one line per entry and each line consists of nine space separated fields. ## Example h2 quic.tech 8443 h3-22 quic.tech 8443 "20190808 06:18:37" 0 0 ## Fields 1. The ALPN id for the source origin 2. The hostname for the source origin 3. The port number for the source origin 4. The ALPN id for the destination host 5. The hostname for the destination host 6. The port number for the destination host 7. The expiration date and time of this entry within double quotes. The date format is "YYYYMMDD HH:MM:SS" and the time zone is GMT. 8. Boolean (1 or 0) if "persist" was set for this entry 9. Integer priority value (not currently used) If the hostname is an IPv6 numerical address, it is stored with brackets such as `[::1]`. curl-8.14.1/docs/BINDINGS.md0000644000000000000000000001443415017756261013427 0ustar0000000000000000 libcurl bindings ================ Creative people have written bindings or interfaces for various environments and programming languages. Using one of these allows you to take advantage of curl powers from within your favourite language or system. This is a list of all known interfaces as of this writing. The bindings listed below are not part of the curl/libcurl distribution archives, but must be downloaded and installed separately. [Ada95](https://web.archive.org/web/20070403105909/www.almroth.com/adacurl/index.html) Written by Andreas Almroth [Basic](https://scriptbasic.com/) ScriptBasic bindings written by Peter Verhas C++: [curlpp](https://github.com/jpbarrette/curlpp/) Written by Jean-Philippe Barrette-LaPierre, [curlcpp](https://github.com/JosephP91/curlcpp) by Giuseppe Persico and [C++ Requests](https://github.com/libcpr/cpr) by Huu Nguyen [Ch](https://chcurl.sourceforge.net/) Written by Stephen Nestinger and Jonathan Rogado Cocoa: [BBHTTP](https://github.com/biasedbit/BBHTTP) written by Bruno de Carvalho [curlhandle](https://github.com/karelia/curlhandle) Written by Dan Wood Clojure: [clj-curl](https://github.com/lsevero/clj-curl) by Lucas Severo [D](https://dlang.org/library/std/net/curl.html) Written by Kenneth Bogert [Delphi](https://github.com/Mercury13/curl4delphi) Written by Mikhail Merkuryev [Dylan](https://dylanlibs.sourceforge.net/) Written by Chris Double [Eiffel](https://iron.eiffel.com/repository/20.11/package/ABEF6975-37AC-45FD-9C67-52D10BA0669B) Written by Eiffel Software [Euphoria](https://web.archive.org/web/20050204080544/rays-web.com/eulibcurl.htm) Written by Ray Smith [Falcon](http://www.falconpl.org/project_docs/curl/) [Ferite](https://web.archive.org/web/20150102192018/ferite.org/) Written by Paul Querna [Fortran](https://github.com/interkosmos/fortran-curl) Written by Philipp Engel [Gambas](https://gambas.sourceforge.net/) [glib/GTK+](https://web.archive.org/web/20100526203452/atterer.net/glibcurl) Written by Richard Atterer Go: [go-curl](https://github.com/andelf/go-curl) by ShuYu Wang [Guile](https://github.com/spk121/guile-curl) Written by Michael L. Gran [Harbour](https://github.com/vszakats/hb/tree/main/contrib/hbcurl) Written by Viktor Szakats [Haskell](https://hackage.haskell.org/package/curl) Written by Galois, Inc [Hollywood](https://www.hollywood-mal.com/download.html) hURL by Andreas Falkenhahn [Java](https://github.com/covers1624/curl4j) [Julia](https://github.com/JuliaWeb/LibCURL.jl) Written by Amit Murthy [Kapito](https://github.com/puzza007/katipo) is an Erlang HTTP library around libcurl. [Lisp](https://common-lisp.net/project/cl-curl/) Written by Liam Healy Lua: [luacurl](https://web.archive.org/web/20201205052437/luacurl.luaforge.net/) by Alexander Marinov, [Lua-cURL](https://github.com/Lua-cURL) by Jürgen Hötzel [Mono](https://web.archive.org/web/20070606064500/https://forge.novell.com/modules/xfmod/project/?libcurl-mono) Written by Jeffrey Phillips [.NET](https://sourceforge.net/projects/libcurl-net/) libcurl-net by Jeffrey Phillips [Nim](https://nimble.directory/pkg/libcurl) wrapper for libcurl [node.js](https://github.com/JCMais/node-libcurl) node-libcurl by Jonathan Cardoso Machado [Object-Pascal](https://web.archive.org/web/20020610214926/www.tekool.com/opcurl) Free Pascal, Delphi and Kylix binding written by Christophe Espern. [OCaml](https://opam.ocaml.org/packages/ocurl/) Written by Lars Nilsson and ygrek [Pascal](https://web.archive.org/web/20030804091414/houston.quik.com/jkp/curlpas/) Free Pascal, Delphi and Kylix binding written by Jeffrey Pohlmeyer. Perl: [WWW::Curl](https://github.com/szbalint/WWW--Curl) Maintained by Cris Bailiff and Bálint Szilakszi, [perl6-net-curl](https://github.com/azawawi/perl6-net-curl) by Ahmad M. Zawawi [NET::Curl](https://metacpan.org/pod/Net::Curl) by Przemyslaw Iskra [PHP](https://php.net/curl) Originally written by Sterling Hughes [PostgreSQL](https://github.com/pramsey/pgsql-http) - HTTP client for PostgreSQL [PostgreSQL](https://github.com/RekGRpth/pg_curl) - cURL client for PostgreSQL [PureBasic](https://www.purebasic.com/documentation/http/index.html) uses libcurl in its "native" HTTP subsystem [Python](http://pycurl.io/) PycURL by Kjetil Jacobsen [Python](https://pypi.org/project/pymcurl/) mcurl by Ganesh Viswanathan [Q](https://q-lang.sourceforge.net/) The libcurl module is part of the default install [R](https://cran.r-project.org/package=curl) [Rexx](https://rexxcurl.sourceforge.net/) Written Mark Hessling [Ring](https://ring-lang.sourceforge.io/doc1.3/libcurl.html) RingLibCurl by Mahmoud Fayed RPG, support for ILE/RPG on OS/400 is included in source distribution Ruby: [curb](https://github.com/taf2/curb) written by Ross Bamford, [ruby-curl-multi](https://github.com/kball/curl_multi.rb) by Kristjan Petursson and Keith Rarick [Rust](https://github.com/alexcrichton/curl-rust) curl-rust - by Carl Lerche [Scheme](https://www.metapaper.net/lisovsky/web/curl/) Bigloo binding by Kirill Lisovsky [Scilab](https://help.scilab.org/docs/current/fr_FR/getURL.html) binding by Sylvestre Ledru [S-Lang](https://www.jedsoft.org/slang/modules/curl.html) by John E Davis [Smalltalk](https://www.squeaksource.com/CurlPlugin/) Written by Danil Osipchuk [SP-Forth](https://sourceforge.net/p/spf/spf/ci/master/tree/devel/~ac/lib/lin/curl/) Written by Andrey Cherezov [SPL](https://web.archive.org/web/20210203022158/www.clifford.at/spl/spldoc/curl.html) Written by Clifford Wolf [Tcl](https://web.archive.org/web/20160826011806/mirror.yellow5.com/tclcurl/) Tclcurl by Andrés García [Vibe](https://github.com/ttytm/vibe) HTTP requests through libcurl in V [Visual Basic](https://sourceforge.net/projects/libcurl-vb/) libcurl-vb by Jeffrey Phillips [Visual Foxpro](https://web.archive.org/web/20130730181523/www.ctl32.com.ar/libcurl.asp) by Carlos Alloatti [wxWidgets](https://wxcode.sourceforge.net/components/wxcurl/) Written by Casey O'Donnell [XBLite](https://web.archive.org/web/20060426150418/perso.wanadoo.fr/xblite/libraries.html) Written by David Szafranski [Xojo](https://github.com/charonn0/RB-libcURL) Written by Andrew Lambert [Zig](https://github.com/jiacai2050/zig-curl) Written by Jiacai Liu, both easy and multi API are supported. curl-8.14.1/docs/BUG-BOUNTY.md0000644000000000000000000000700515017756261013661 0ustar0000000000000000 # The curl bug bounty The curl project runs a bug bounty program in association with [HackerOne](https://www.hackerone.com) and the [Internet Bug Bounty](https://internetbugbounty.org). ## How does it work? Start out by posting your suspected security vulnerability directly to [curl's HackerOne program](https://hackerone.com/curl). After you have reported a security issue, it has been deemed credible, and a patch and advisory has been made public, you may be eligible for a bounty from this program. See the [Security Process](https://curl.se/dev/secprocess.html) document for how we work with security issues. ## What are the reward amounts? The curl project offers monetary compensation for reported and published security vulnerabilities. The amount of money that is rewarded depends on how serious the flaw is determined to be. Since 2021, the Bug Bounty is managed in association with the Internet Bug Bounty and they set the reward amounts. If it would turn out that they set amounts that are way lower than we can accept, the curl project intends to "top up" rewards. In 2025, typical "Medium" rated vulnerabilities are rewarded 2,500 USD each. ## Who is eligible for a reward? Everyone and anyone who reports a security problem in a released curl version that has not already been reported can ask for a bounty. Dedicated - paid for - security audits that are performed in collaboration with curl developers are not eligible for bounties. Vulnerabilities in features that are off by default and documented as experimental are not eligible for a reward. The vulnerability has to be fixed and publicly announced (by the curl project) before a bug bounty is considered. Once the vulnerability has been published by curl, the researcher can request their bounty from the [Internet Bug Bounty](https://hackerone.com/ibb). Bounties need to be requested within twelve months from the publication of the vulnerability. The curl security team reserves themselves the right to deny or allow bug bounty payouts on its own discretion. There is no appeals process. ## Product vulnerabilities only This bug bounty only concerns the curl and libcurl products and thus their respective source codes - when running on existing hardware. It does not include curl documentation, curl websites, or other curl related infrastructure. The curl security team is the sole arbiter if a reported flaw is subject to a bounty or not. ## Third parties The curl bug bounty does not cover flaws in third party dependencies (libraries) used by curl or libcurl. If the bug triggers because of curl behaving wrongly or abusing a third party dependency, the problem is rather in curl and not in the dependency and then the bounty might cover the problem. ## How are vulnerabilities graded? The grading of each reported vulnerability that makes a reward claim is performed by the curl security team. The grading is based on the CVSS (Common Vulnerability Scoring System) 3.0. ## How are reward amounts determined? The curl security team gives the vulnerability a score or severity level, as mentioned above. The actual monetary reward amount is decided and paid by the Internet Bug Bounty.. ## Regarding taxes, etc. on the bounties In the event that the individual receiving a bug bounty needs to pay taxes on the reward money, the responsibility lies with the receiver. The curl project or its security team never actually receive any of this money, hold the money, or pay out the money. curl-8.14.1/docs/BUGS.md0000644000000000000000000002724615017756261012777 0ustar0000000000000000 # BUGS ## There are still bugs curl and libcurl keep being developed. Adding features and changing code means that bugs sneak in, no matter how hard we try to keep them out. Of course there are lots of bugs left. Not to mention misfeatures. To help us make curl the stable and solid product we want it to be, we need bug reports and bug fixes. ## Where to report If you cannot fix a bug yourself and submit a fix for it, try to report an as detailed report as possible to a curl mailing list to allow one of us to have a go at a solution. You can optionally also submit your problem in [curl's bug tracking system](https://github.com/curl/curl/issues). Please read the rest of this document below first before doing that. If you feel you need to ask around first, find a suitable [mailing list](https://curl.se/mail/) and post your questions there. ## Security bugs If you find a bug or problem in curl or libcurl that you think has a security impact, for example a bug that can put users in danger or make them vulnerable if the bug becomes public knowledge, then please report that bug using our security development process. Security related bugs or bugs that are suspected to have a security impact, should be reported on the [curl security tracker at HackerOne](https://hackerone.com/curl). This ensures that the report reaches the curl security team so that they first can deal with the report away from the public to minimize the harm and impact it has on existing users out there who might be using the vulnerable versions. The curl project's process for handling security related issues is [documented separately](https://curl.se/dev/secprocess.html). ## What to report When reporting a bug, you should include all information to help us understand what is wrong, what you expected to happen and how to repeat the bad behavior. You therefore need to tell us: - your operating system's name and version number - what version of curl you are using (`curl -V` is fine) - versions of the used libraries that libcurl is built to use - what URL you were working with (if possible), at least which protocol and anything and everything else you think matters. Tell us what you expected to happen, tell use what did happen, tell us how you could make it work another way. Dig around, try out, test. Then include all the tiny bits and pieces in your report. You benefit from this yourself, as it enables us to help you quicker and more accurately. Since curl deals with networks, it often helps us if you include a protocol debug dump with your bug report. The output you get by using the `-v` or `--trace` options. If curl crashed, causing a core dump (in Unix), there is hardly any use to send that huge file to anyone of us. Unless we have the same system setup as you, we cannot do much with it. Instead, we ask you to get a stack trace and send that (much smaller) output to us instead. The address and how to subscribe to the mailing lists are detailed in the `MANUAL.md` file. ## libcurl problems When you have written your own application with libcurl to perform transfers, it is even more important to be specific and detailed when reporting bugs. Tell us the libcurl version and your operating system. Tell us the name and version of all relevant sub-components like for example the SSL library you are using and what name resolving your libcurl uses. If you use SFTP or SCP, the libssh2 version is relevant etc. Showing us a real source code example repeating your problem is the best way to get our attention and it greatly increases our chances to understand your problem and to work on a fix (if we agree it truly is a problem). Lots of problems that appear to be libcurl problems are actually just abuses of the libcurl API or other malfunctions in your applications. It is advised that you run your problematic program using a memory debug tool like valgrind or similar before you post memory-related or "crashing" problems to us. ## Who fixes the problems If the problems or bugs you describe are considered to be bugs, we want to have the problems fixed. There are no developers in the curl project that are paid to work on bugs. All developers that take on reported bugs do this on a voluntary basis. We do it out of an ambition to keep curl and libcurl excellent products and out of pride. Please do not assume that you can just lump over something to us and it then magically gets fixed after some given time. Most often we need feedback and help to understand what you have experienced and how to repeat a problem. Then we may only be able to assist YOU to debug the problem and to track down the proper fix. We get reports from many people every month and each report can take a considerable amount of time to really go to the bottom with. ## How to get a stack trace First, you must make sure that you compile all sources with `-g` and that you do not 'strip' the final executable. Try to avoid optimizing the code as well, remove `-O`, `-O2` etc from the compiler options. Run the program until it cores. Run your debugger on the core file, like ` curl core`. `` should be replaced with the name of your debugger, in most cases that is `gdb`, but `dbx` and others also occur. When the debugger has finished loading the core file and presents you a prompt, enter `where` (without quotes) and press return. The list that is presented is the stack trace. If everything worked, it is supposed to contain the chain of functions that were called when curl crashed. Include the stack trace with your detailed bug report, it helps a lot. ## Bugs in libcurl bindings There are of course bugs in libcurl bindings. You should then primarily approach the team that works on that particular binding and see what you can do to help them fix the problem. If you suspect that the problem exists in the underlying libcurl, then please convert your program over to plain C and follow the steps outlined above. ## Bugs in old versions The curl project typically releases new versions every other month, and we fix several hundred bugs per year. For a huge table of releases, number of bug fixes and more, see: https://curl.se/docs/releases.html The developers in the curl project do not have bandwidth or energy enough to maintain several branches or to spend much time on hunting down problems in old versions when chances are we already fixed them or at least that they have changed nature and appearance in later versions. When you experience a problem and want to report it, you really SHOULD include the version number of the curl you are using when you experience the issue. If that version number shows us that you are using an out-of-date curl, you should also try out a modern curl version to see if the problem persists or how/if it has changed in appearance. Even if you cannot immediately upgrade your application/system to run the latest curl version, you can most often at least run a test version or experimental build or similar, to get this confirmed or not. At times people insist that they cannot upgrade to a modern curl version, but instead, they "just want the bug fixed". That is fine, just do not count on us spending many cycles on trying to identify which single commit, if that is even possible, that at some point in the past fixed the problem you are now experiencing. Security wise, it is almost always a bad idea to lag behind the current curl versions by a lot. We keep discovering and reporting security problems over time see you can see in [this table](https://curl.se/docs/vulnerabilities.html) # Bug fixing procedure ## What happens on first filing When a new issue is posted in the issue tracker or on the mailing list, the team of developers first needs to see the report. Maybe they took the day off, maybe they are off in the woods hunting. Have patience. Allow at least a few days before expecting someone to have responded. In the issue tracker, you can expect that some labels are set on the issue to help categorize it. ## First response If your issue/bug report was not perfect at once (and few are), chances are that someone asks follow-up questions. Which version did you use? Which options did you use? How often does the problem occur? How can we reproduce this problem? Which protocols does it involve? Or perhaps much more specific and deep diving questions. It all depends on your specific issue. You should then respond to these follow-up questions and provide more info about the problem, so that we can help you figure it out. Or maybe you can help us figure it out. An active back-and-forth communication is important and the key for finding a cure and landing a fix. ## Not reproducible We may require further work from you who actually see or experience the problem if we cannot reproduce it and cannot understand it even after having gotten all the info we need and having studied the source code over again. ## Unresponsive If the problem have not been understood or reproduced, and there is nobody responding to follow-up questions or questions asking for clarifications or for discussing possible ways to move forward with the task, we take that as a strong suggestion that the bug is unimportant. Unimportant issues are closed as inactive sooner or later as they cannot be fixed. The inactivity period (waiting for responses) should not be shorter than two weeks but may extend months. ## Lack of time/interest Bugs that are filed and are understood can unfortunately end up in the "nobody cares enough about it to work on it" category. Such bugs are perfectly valid problems that *should* get fixed but apparently are not. We try to mark such bugs as `KNOWN_BUGS material` after a time of inactivity and if no activity is noticed after yet some time those bugs are added to the `KNOWN_BUGS` document and are closed in the issue tracker. ## `KNOWN_BUGS` This is a list of known bugs. Bugs we know exist and that have been pointed out but that have not yet been fixed. The reasons for why they have not been fixed can involve anything really, but the primary reason is that nobody has considered these problems to be important enough to spend the necessary time and effort to have them fixed. The `KNOWN_BUGS` items are always up for grabs and we love the ones who bring one of them back to life and offer solutions to them. The `KNOWN_BUGS` document has a sibling document known as `TODO`. ## `TODO` Issues that are filed or reported that are not really bugs but more missing features or ideas for future improvements and so on are marked as *enhancement* or *feature-request* and get added to the `TODO` document and the issues are closed. We do not keep TODO items open in the issue tracker. The `TODO` document is full of ideas and suggestions of what we can add or fix one day. You are always encouraged and free to grab one of those items and take up a discussion with the curl development team on how that could be implemented or provided in the project so that you can work on ticking it odd that document. If an issue is rather a bug and not a missing feature or functionality, it is listed in `KNOWN_BUGS` instead. ## Closing off stalled bugs The [issue and pull request trackers](https://github.com/curl/curl) only hold "active" entries open (using a non-precise definition of what active actually is, but they are at least not completely dead). Those that are abandoned or in other ways dormant are closed and sometimes added to `TODO` and `KNOWN_BUGS` instead. This way, we only have "active" issues open on GitHub. Irrelevant issues and pull requests do not distract developers or casual visitors. curl-8.14.1/docs/CIPHERS-TLS12.md0000644000000000000000000011314215017756261014126 0ustar0000000000000000 # TLS 1.2 cipher suites | Id | IANA name | OpenSSL name | RFC | |--------|-----------------------------------------------|------------------------------------|--------------------| | 0x0001 | TLS_RSA_WITH_NULL_MD5 | NULL-MD5 | [RFC5246] | | 0x0002 | TLS_RSA_WITH_NULL_SHA | NULL-SHA | [RFC5246] | | 0x0003 | TLS_RSA_EXPORT_WITH_RC4_40_MD5 | EXP-RC4-MD5 | [RFC4346][RFC6347] | | 0x0004 | TLS_RSA_WITH_RC4_128_MD5 | RC4-MD5 | [RFC5246][RFC6347] | | 0x0005 | TLS_RSA_WITH_RC4_128_SHA | RC4-SHA | [RFC5246][RFC6347] | | 0x0006 | TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 | EXP-RC2-CBC-MD5 | [RFC4346] | | 0x0007 | TLS_RSA_WITH_IDEA_CBC_SHA | IDEA-CBC-SHA | [RFC8996] | | 0x0008 | TLS_RSA_EXPORT_WITH_DES40_CBC_SHA | EXP-DES-CBC-SHA | [RFC4346] | | 0x0009 | TLS_RSA_WITH_DES_CBC_SHA | DES-CBC-SHA | [RFC8996] | | 0x000A | TLS_RSA_WITH_3DES_EDE_CBC_SHA | DES-CBC3-SHA | [RFC5246] | | 0x000B | TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA | EXP-DH-DSS-DES-CBC-SHA | [RFC4346] | | 0x000C | TLS_DH_DSS_WITH_DES_CBC_SHA | DH-DSS-DES-CBC-SHA | [RFC8996] | | 0x000D | TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA | DH-DSS-DES-CBC3-SHA | [RFC5246] | | 0x000E | TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA | EXP-DH-RSA-DES-CBC-SHA | [RFC4346] | | 0x000F | TLS_DH_RSA_WITH_DES_CBC_SHA | DH-RSA-DES-CBC-SHA | [RFC8996] | | 0x0010 | TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA | DH-RSA-DES-CBC3-SHA | [RFC5246] | | 0x0011 | TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA | EXP-DHE-DSS-DES-CBC-SHA | [RFC4346] | | 0x0012 | TLS_DHE_DSS_WITH_DES_CBC_SHA | DHE-DSS-DES-CBC-SHA | [RFC8996] | | 0x0013 | TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA | DHE-DSS-DES-CBC3-SHA | [RFC5246] | | 0x0014 | TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA | EXP-DHE-RSA-DES-CBC-SHA | [RFC4346] | | 0x0015 | TLS_DHE_RSA_WITH_DES_CBC_SHA | DHE-RSA-DES-CBC-SHA | [RFC8996] | | 0x0016 | TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA | DHE-RSA-DES-CBC3-SHA | [RFC5246] | | 0x0017 | TLS_DH_anon_EXPORT_WITH_RC4_40_MD5 | EXP-ADH-RC4-MD5 | [RFC4346][RFC6347] | | 0x0018 | TLS_DH_anon_WITH_RC4_128_MD5 | ADH-RC4-MD5 | [RFC5246][RFC6347] | | 0x0019 | TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA | EXP-ADH-DES-CBC-SHA | [RFC4346] | | 0x001A | TLS_DH_anon_WITH_DES_CBC_SHA | ADH-DES-CBC-SHA | [RFC8996] | | 0x001B | TLS_DH_anon_WITH_3DES_EDE_CBC_SHA | ADH-DES-CBC3-SHA | [RFC5246] | | 0x001C | | FZA-NULL-SHA | | | 0x001D | | FZA-FZA-CBC-SHA | | | 0x001E | TLS_KRB5_WITH_DES_CBC_SHA | KRB5-DES-CBC-SHA | [RFC2712] | | 0x001F | TLS_KRB5_WITH_3DES_EDE_CBC_SHA | KRB5-DES-CBC3-SHA | [RFC2712] | | 0x0020 | TLS_KRB5_WITH_RC4_128_SHA | KRB5-RC4-SHA | [RFC2712][RFC6347] | | 0x0021 | TLS_KRB5_WITH_IDEA_CBC_SHA | KRB5-IDEA-CBC-SHA | [RFC2712] | | 0x0022 | TLS_KRB5_WITH_DES_CBC_MD5 | KRB5-DES-CBC-MD5 | [RFC2712] | | 0x0023 | TLS_KRB5_WITH_3DES_EDE_CBC_MD5 | KRB5-DES-CBC3-MD5 | [RFC2712] | | 0x0024 | TLS_KRB5_WITH_RC4_128_MD5 | KRB5-RC4-MD5 | [RFC2712][RFC6347] | | 0x0025 | TLS_KRB5_WITH_IDEA_CBC_MD5 | KRB5-IDEA-CBC-MD5 | [RFC2712] | | 0x0026 | TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA | EXP-KRB5-DES-CBC-SHA | [RFC2712] | | 0x0027 | TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA | EXP-KRB5-RC2-CBC-SHA | [RFC2712] | | 0x0028 | TLS_KRB5_EXPORT_WITH_RC4_40_SHA | EXP-KRB5-RC4-SHA | [RFC2712][RFC6347] | | 0x0029 | TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5 | EXP-KRB5-DES-CBC-MD5 | [RFC2712] | | 0x002A | TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5 | EXP-KRB5-RC2-CBC-MD5 | [RFC2712] | | 0x002B | TLS_KRB5_EXPORT_WITH_RC4_40_MD5 | EXP-KRB5-RC4-MD5 | [RFC2712][RFC6347] | | 0x002C | TLS_PSK_WITH_NULL_SHA | PSK-NULL-SHA | [RFC4785] | | 0x002D | TLS_DHE_PSK_WITH_NULL_SHA | DHE-PSK-NULL-SHA | [RFC4785] | | 0x002E | TLS_RSA_PSK_WITH_NULL_SHA | RSA-PSK-NULL-SHA | [RFC4785] | | 0x002F | TLS_RSA_WITH_AES_128_CBC_SHA | AES128-SHA | [RFC5246] | | 0x0030 | TLS_DH_DSS_WITH_AES_128_CBC_SHA | DH-DSS-AES128-SHA | [RFC5246] | | 0x0031 | TLS_DH_RSA_WITH_AES_128_CBC_SHA | DH-RSA-AES128-SHA | [RFC5246] | | 0x0032 | TLS_DHE_DSS_WITH_AES_128_CBC_SHA | DHE-DSS-AES128-SHA | [RFC5246] | | 0x0033 | TLS_DHE_RSA_WITH_AES_128_CBC_SHA | DHE-RSA-AES128-SHA | [RFC5246] | | 0x0034 | TLS_DH_anon_WITH_AES_128_CBC_SHA | ADH-AES128-SHA | [RFC5246] | | 0x0035 | TLS_RSA_WITH_AES_256_CBC_SHA | AES256-SHA | [RFC5246] | | 0x0036 | TLS_DH_DSS_WITH_AES_256_CBC_SHA | DH-DSS-AES256-SHA | [RFC5246] | | 0x0037 | TLS_DH_RSA_WITH_AES_256_CBC_SHA | DH-RSA-AES256-SHA | [RFC5246] | | 0x0038 | TLS_DHE_DSS_WITH_AES_256_CBC_SHA | DHE-DSS-AES256-SHA | [RFC5246] | | 0x0039 | TLS_DHE_RSA_WITH_AES_256_CBC_SHA | DHE-RSA-AES256-SHA | [RFC5246] | | 0x003A | TLS_DH_anon_WITH_AES_256_CBC_SHA | ADH-AES256-SHA | [RFC5246] | | 0x003B | TLS_RSA_WITH_NULL_SHA256 | NULL-SHA256 | [RFC5246] | | 0x003C | TLS_RSA_WITH_AES_128_CBC_SHA256 | AES128-SHA256 | [RFC5246] | | 0x003D | TLS_RSA_WITH_AES_256_CBC_SHA256 | AES256-SHA256 | [RFC5246] | | 0x003E | TLS_DH_DSS_WITH_AES_128_CBC_SHA256 | DH-DSS-AES128-SHA256 | [RFC5246] | | 0x003F | TLS_DH_RSA_WITH_AES_128_CBC_SHA256 | DH-RSA-AES128-SHA256 | [RFC5246] | | 0x0040 | TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 | DHE-DSS-AES128-SHA256 | [RFC5246] | | 0x0041 | TLS_RSA_WITH_CAMELLIA_128_CBC_SHA | CAMELLIA128-SHA | [RFC5932] | | 0x0042 | TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA | DH-DSS-CAMELLIA128-SHA | [RFC5932] | | 0x0043 | TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA | DH-RSA-CAMELLIA128-SHA | [RFC5932] | | 0x0044 | TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA | DHE-DSS-CAMELLIA128-SHA | [RFC5932] | | 0x0045 | TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA | DHE-RSA-CAMELLIA128-SHA | [RFC5932] | | 0x0046 | TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA | ADH-CAMELLIA128-SHA | [RFC5932] | | 0x0060 | | EXP1024-RC4-MD5 | | | 0x0061 | | EXP1024-RC2-CBC-MD5 | | | 0x0062 | | EXP1024-DES-CBC-SHA | | | 0x0063 | | EXP1024-DHE-DSS-DES-CBC-SHA | | | 0x0064 | | EXP1024-RC4-SHA | | | 0x0065 | | EXP1024-DHE-DSS-RC4-SHA | | | 0x0066 | | DHE-DSS-RC4-SHA | | | 0x0067 | TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 | DHE-RSA-AES128-SHA256 | [RFC5246] | | 0x0068 | TLS_DH_DSS_WITH_AES_256_CBC_SHA256 | DH-DSS-AES256-SHA256 | [RFC5246] | | 0x0069 | TLS_DH_RSA_WITH_AES_256_CBC_SHA256 | DH-RSA-AES256-SHA256 | [RFC5246] | | 0x006A | TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 | DHE-DSS-AES256-SHA256 | [RFC5246] | | 0x006B | TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 | DHE-RSA-AES256-SHA256 | [RFC5246] | | 0x006C | TLS_DH_anon_WITH_AES_128_CBC_SHA256 | ADH-AES128-SHA256 | [RFC5246] | | 0x006D | TLS_DH_anon_WITH_AES_256_CBC_SHA256 | ADH-AES256-SHA256 | [RFC5246] | | 0x0080 | | GOST94-GOST89-GOST89 | | | 0x0081 | | GOST2001-GOST89-GOST89 | | | 0x0082 | | GOST94-NULL-GOST94 | | | 0x0083 | | GOST2001-NULL-GOST94 | | | 0x0084 | TLS_RSA_WITH_CAMELLIA_256_CBC_SHA | CAMELLIA256-SHA | [RFC5932] | | 0x0085 | TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA | DH-DSS-CAMELLIA256-SHA | [RFC5932] | | 0x0086 | TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA | DH-RSA-CAMELLIA256-SHA | [RFC5932] | | 0x0087 | TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA | DHE-DSS-CAMELLIA256-SHA | [RFC5932] | | 0x0088 | TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA | DHE-RSA-CAMELLIA256-SHA | [RFC5932] | | 0x0089 | TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA | ADH-CAMELLIA256-SHA | [RFC5932] | | 0x008A | TLS_PSK_WITH_RC4_128_SHA | PSK-RC4-SHA | [RFC4279][RFC6347] | | 0x008B | TLS_PSK_WITH_3DES_EDE_CBC_SHA | PSK-3DES-EDE-CBC-SHA | [RFC4279] | | 0x008C | TLS_PSK_WITH_AES_128_CBC_SHA | PSK-AES128-CBC-SHA | [RFC4279] | | 0x008D | TLS_PSK_WITH_AES_256_CBC_SHA | PSK-AES256-CBC-SHA | [RFC4279] | | 0x008E | TLS_DHE_PSK_WITH_RC4_128_SHA | DHE-PSK-RC4-SHA | [RFC4279][RFC6347] | | 0x008F | TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA | DHE-PSK-3DES-EDE-CBC-SHA | [RFC4279] | | 0x0090 | TLS_DHE_PSK_WITH_AES_128_CBC_SHA | DHE-PSK-AES128-CBC-SHA | [RFC4279] | | 0x0091 | TLS_DHE_PSK_WITH_AES_256_CBC_SHA | DHE-PSK-AES256-CBC-SHA | [RFC4279] | | 0x0092 | TLS_RSA_PSK_WITH_RC4_128_SHA | RSA-PSK-RC4-SHA | [RFC4279][RFC6347] | | 0x0093 | TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA | RSA-PSK-3DES-EDE-CBC-SHA | [RFC4279] | | 0x0094 | TLS_RSA_PSK_WITH_AES_128_CBC_SHA | RSA-PSK-AES128-CBC-SHA | [RFC4279] | | 0x0095 | TLS_RSA_PSK_WITH_AES_256_CBC_SHA | RSA-PSK-AES256-CBC-SHA | [RFC4279] | | 0x0096 | TLS_RSA_WITH_SEED_CBC_SHA | SEED-SHA | [RFC4162] | | 0x0097 | TLS_DH_DSS_WITH_SEED_CBC_SHA | DH-DSS-SEED-SHA | [RFC4162] | | 0x0098 | TLS_DH_RSA_WITH_SEED_CBC_SHA | DH-RSA-SEED-SHA | [RFC4162] | | 0x0099 | TLS_DHE_DSS_WITH_SEED_CBC_SHA | DHE-DSS-SEED-SHA | [RFC4162] | | 0x009A | TLS_DHE_RSA_WITH_SEED_CBC_SHA | DHE-RSA-SEED-SHA | [RFC4162] | | 0x009B | TLS_DH_anon_WITH_SEED_CBC_SHA | ADH-SEED-SHA | [RFC4162] | | 0x009C | TLS_RSA_WITH_AES_128_GCM_SHA256 | AES128-GCM-SHA256 | [RFC5288] | | 0x009D | TLS_RSA_WITH_AES_256_GCM_SHA384 | AES256-GCM-SHA384 | [RFC5288] | | 0x009E | TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 | DHE-RSA-AES128-GCM-SHA256 | [RFC5288] | | 0x009F | TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 | DHE-RSA-AES256-GCM-SHA384 | [RFC5288] | | 0x00A0 | TLS_DH_RSA_WITH_AES_128_GCM_SHA256 | DH-RSA-AES128-GCM-SHA256 | [RFC5288] | | 0x00A1 | TLS_DH_RSA_WITH_AES_256_GCM_SHA384 | DH-RSA-AES256-GCM-SHA384 | [RFC5288] | | 0x00A2 | TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 | DHE-DSS-AES128-GCM-SHA256 | [RFC5288] | | 0x00A3 | TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 | DHE-DSS-AES256-GCM-SHA384 | [RFC5288] | | 0x00A4 | TLS_DH_DSS_WITH_AES_128_GCM_SHA256 | DH-DSS-AES128-GCM-SHA256 | [RFC5288] | | 0x00A5 | TLS_DH_DSS_WITH_AES_256_GCM_SHA384 | DH-DSS-AES256-GCM-SHA384 | [RFC5288] | | 0x00A6 | TLS_DH_anon_WITH_AES_128_GCM_SHA256 | ADH-AES128-GCM-SHA256 | [RFC5288] | | 0x00A7 | TLS_DH_anon_WITH_AES_256_GCM_SHA384 | ADH-AES256-GCM-SHA384 | [RFC5288] | | 0x00A8 | TLS_PSK_WITH_AES_128_GCM_SHA256 | PSK-AES128-GCM-SHA256 | [RFC5487] | | 0x00A9 | TLS_PSK_WITH_AES_256_GCM_SHA384 | PSK-AES256-GCM-SHA384 | [RFC5487] | | 0x00AA | TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 | DHE-PSK-AES128-GCM-SHA256 | [RFC5487] | | 0x00AB | TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 | DHE-PSK-AES256-GCM-SHA384 | [RFC5487] | | 0x00AC | TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 | RSA-PSK-AES128-GCM-SHA256 | [RFC5487] | | 0x00AD | TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 | RSA-PSK-AES256-GCM-SHA384 | [RFC5487] | | 0x00AE | TLS_PSK_WITH_AES_128_CBC_SHA256 | PSK-AES128-CBC-SHA256 | [RFC5487] | | 0x00AF | TLS_PSK_WITH_AES_256_CBC_SHA384 | PSK-AES256-CBC-SHA384 | [RFC5487] | | 0x00B0 | TLS_PSK_WITH_NULL_SHA256 | PSK-NULL-SHA256 | [RFC5487] | | 0x00B1 | TLS_PSK_WITH_NULL_SHA384 | PSK-NULL-SHA384 | [RFC5487] | | 0x00B2 | TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 | DHE-PSK-AES128-CBC-SHA256 | [RFC5487] | | 0x00B3 | TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 | DHE-PSK-AES256-CBC-SHA384 | [RFC5487] | | 0x00B4 | TLS_DHE_PSK_WITH_NULL_SHA256 | DHE-PSK-NULL-SHA256 | [RFC5487] | | 0x00B5 | TLS_DHE_PSK_WITH_NULL_SHA384 | DHE-PSK-NULL-SHA384 | [RFC5487] | | 0x00B6 | TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 | RSA-PSK-AES128-CBC-SHA256 | [RFC5487] | | 0x00B7 | TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 | RSA-PSK-AES256-CBC-SHA384 | [RFC5487] | | 0x00B8 | TLS_RSA_PSK_WITH_NULL_SHA256 | RSA-PSK-NULL-SHA256 | [RFC5487] | | 0x00B9 | TLS_RSA_PSK_WITH_NULL_SHA384 | RSA-PSK-NULL-SHA384 | [RFC5487] | | 0x00BA | TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 | CAMELLIA128-SHA256 | [RFC5932] | | 0x00BD | TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 | DHE-DSS-CAMELLIA128-SHA256 | [RFC5932] | | 0x00BE | TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 | DHE-RSA-CAMELLIA128-SHA256 | [RFC5932] | | 0x00BF | TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256 | ADH-CAMELLIA128-SHA256 | [RFC5932] | | 0x00C0 | TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 | CAMELLIA256-SHA256 | [RFC5932] | | 0x00C3 | TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 | DHE-DSS-CAMELLIA256-SHA256 | [RFC5932] | | 0x00C4 | TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 | DHE-RSA-CAMELLIA256-SHA256 | [RFC5932] | | 0x00C5 | TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256 | ADH-CAMELLIA256-SHA256 | [RFC5932] | | 0x00FF | TLS_EMPTY_RENEGOTIATION_INFO_SCSV | | [RFC5746] | | 0x5600 | TLS_FALLBACK_SCSV | | [RFC7507] | | 0xC001 | TLS_ECDH_ECDSA_WITH_NULL_SHA | ECDH-ECDSA-NULL-SHA | [RFC8422] | | 0xC002 | TLS_ECDH_ECDSA_WITH_RC4_128_SHA | ECDH-ECDSA-RC4-SHA | [RFC8422][RFC6347] | | 0xC003 | TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA | ECDH-ECDSA-DES-CBC3-SHA | [RFC8422] | | 0xC004 | TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA | ECDH-ECDSA-AES128-SHA | [RFC8422] | | 0xC005 | TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA | ECDH-ECDSA-AES256-SHA | [RFC8422] | | 0xC006 | TLS_ECDHE_ECDSA_WITH_NULL_SHA | ECDHE-ECDSA-NULL-SHA | [RFC8422] | | 0xC007 | TLS_ECDHE_ECDSA_WITH_RC4_128_SHA | ECDHE-ECDSA-RC4-SHA | [RFC8422][RFC6347] | | 0xC008 | TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA | ECDHE-ECDSA-DES-CBC3-SHA | [RFC8422] | | 0xC009 | TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA | ECDHE-ECDSA-AES128-SHA | [RFC8422] | | 0xC00A | TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA | ECDHE-ECDSA-AES256-SHA | [RFC8422] | | 0xC00B | TLS_ECDH_RSA_WITH_NULL_SHA | ECDH-RSA-NULL-SHA | [RFC8422] | | 0xC00C | TLS_ECDH_RSA_WITH_RC4_128_SHA | ECDH-RSA-RC4-SHA | [RFC8422][RFC6347] | | 0xC00D | TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA | ECDH-RSA-DES-CBC3-SHA | [RFC8422] | | 0xC00E | TLS_ECDH_RSA_WITH_AES_128_CBC_SHA | ECDH-RSA-AES128-SHA | [RFC8422] | | 0xC00F | TLS_ECDH_RSA_WITH_AES_256_CBC_SHA | ECDH-RSA-AES256-SHA | [RFC8422] | | 0xC010 | TLS_ECDHE_RSA_WITH_NULL_SHA | ECDHE-RSA-NULL-SHA | [RFC8422] | | 0xC011 | TLS_ECDHE_RSA_WITH_RC4_128_SHA | ECDHE-RSA-RC4-SHA | [RFC8422][RFC6347] | | 0xC012 | TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA | ECDHE-RSA-DES-CBC3-SHA | [RFC8422] | | 0xC013 | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA | ECDHE-RSA-AES128-SHA | [RFC8422] | | 0xC014 | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA | ECDHE-RSA-AES256-SHA | [RFC8422] | | 0xC015 | TLS_ECDH_anon_WITH_NULL_SHA | AECDH-NULL-SHA | [RFC8422] | | 0xC016 | TLS_ECDH_anon_WITH_RC4_128_SHA | AECDH-RC4-SHA | [RFC8422][RFC6347] | | 0xC017 | TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA | AECDH-DES-CBC3-SHA | [RFC8422] | | 0xC018 | TLS_ECDH_anon_WITH_AES_128_CBC_SHA | AECDH-AES128-SHA | [RFC8422] | | 0xC019 | TLS_ECDH_anon_WITH_AES_256_CBC_SHA | AECDH-AES256-SHA | [RFC8422] | | 0xC01A | TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA | SRP-3DES-EDE-CBC-SHA | [RFC5054] | | 0xC01B | TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA | SRP-RSA-3DES-EDE-CBC-SHA | [RFC5054] | | 0xC01C | TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA | SRP-DSS-3DES-EDE-CBC-SHA | [RFC5054] | | 0xC01D | TLS_SRP_SHA_WITH_AES_128_CBC_SHA | SRP-AES-128-CBC-SHA | [RFC5054] | | 0xC01E | TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA | SRP-RSA-AES-128-CBC-SHA | [RFC5054] | | 0xC01F | TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA | SRP-DSS-AES-128-CBC-SHA | [RFC5054] | | 0xC020 | TLS_SRP_SHA_WITH_AES_256_CBC_SHA | SRP-AES-256-CBC-SHA | [RFC5054] | | 0xC021 | TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA | SRP-RSA-AES-256-CBC-SHA | [RFC5054] | | 0xC022 | TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA | SRP-DSS-AES-256-CBC-SHA | [RFC5054] | | 0xC023 | TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | ECDHE-ECDSA-AES128-SHA256 | [RFC5289] | | 0xC024 | TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 | ECDHE-ECDSA-AES256-SHA384 | [RFC5289] | | 0xC025 | TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 | ECDH-ECDSA-AES128-SHA256 | [RFC5289] | | 0xC026 | TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 | ECDH-ECDSA-AES256-SHA384 | [RFC5289] | | 0xC027 | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | ECDHE-RSA-AES128-SHA256 | [RFC5289] | | 0xC028 | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 | ECDHE-RSA-AES256-SHA384 | [RFC5289] | | 0xC029 | TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 | ECDH-RSA-AES128-SHA256 | [RFC5289] | | 0xC02A | TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 | ECDH-RSA-AES256-SHA384 | [RFC5289] | | 0xC02B | TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 | ECDHE-ECDSA-AES128-GCM-SHA256 | [RFC5289] | | 0xC02C | TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 | ECDHE-ECDSA-AES256-GCM-SHA384 | [RFC5289] | | 0xC02D | TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 | ECDH-ECDSA-AES128-GCM-SHA256 | [RFC5289] | | 0xC02E | TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 | ECDH-ECDSA-AES256-GCM-SHA384 | [RFC5289] | | 0xC02F | TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 | ECDHE-RSA-AES128-GCM-SHA256 | [RFC5289] | | 0xC030 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 | ECDHE-RSA-AES256-GCM-SHA384 | [RFC5289] | | 0xC031 | TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 | ECDH-RSA-AES128-GCM-SHA256 | [RFC5289] | | 0xC032 | TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 | ECDH-RSA-AES256-GCM-SHA384 | [RFC5289] | | 0xC033 | TLS_ECDHE_PSK_WITH_RC4_128_SHA | ECDHE-PSK-RC4-SHA | [RFC5489][RFC6347] | | 0xC034 | TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA | ECDHE-PSK-3DES-EDE-CBC-SHA | [RFC5489] | | 0xC035 | TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA | ECDHE-PSK-AES128-CBC-SHA | [RFC5489] | | 0xC036 | TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA | ECDHE-PSK-AES256-CBC-SHA | [RFC5489] | | 0xC037 | TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 | ECDHE-PSK-AES128-CBC-SHA256 | [RFC5489] | | 0xC038 | TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 | ECDHE-PSK-AES256-CBC-SHA384 | [RFC5489] | | 0xC039 | TLS_ECDHE_PSK_WITH_NULL_SHA | ECDHE-PSK-NULL-SHA | [RFC5489] | | 0xC03A | TLS_ECDHE_PSK_WITH_NULL_SHA256 | ECDHE-PSK-NULL-SHA256 | [RFC5489] | | 0xC03B | TLS_ECDHE_PSK_WITH_NULL_SHA384 | ECDHE-PSK-NULL-SHA384 | [RFC5489] | | 0xC03C | TLS_RSA_WITH_ARIA_128_CBC_SHA256 | ARIA128-SHA256 | [RFC6209] | | 0xC03D | TLS_RSA_WITH_ARIA_256_CBC_SHA384 | ARIA256-SHA384 | [RFC6209] | | 0xC044 | TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256 | DHE-RSA-ARIA128-SHA256 | [RFC6209] | | 0xC045 | TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384 | DHE-RSA-ARIA256-SHA384 | [RFC6209] | | 0xC048 | TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256 | ECDHE-ECDSA-ARIA128-SHA256 | [RFC6209] | | 0xC049 | TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384 | ECDHE-ECDSA-ARIA256-SHA384 | [RFC6209] | | 0xC04A | TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256 | ECDH-ECDSA-ARIA128-SHA256 | [RFC6209] | | 0xC04B | TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384 | ECDH-ECDSA-ARIA256-SHA384 | [RFC6209] | | 0xC04C | TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256 | ECDHE-ARIA128-SHA256 | [RFC6209] | | 0xC04D | TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384 | ECDHE-ARIA256-SHA384 | [RFC6209] | | 0xC04E | TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256 | ECDH-ARIA128-SHA256 | [RFC6209] | | 0xC04F | TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384 | ECDH-ARIA256-SHA384 | [RFC6209] | | 0xC050 | TLS_RSA_WITH_ARIA_128_GCM_SHA256 | ARIA128-GCM-SHA256 | [RFC6209] | | 0xC051 | TLS_RSA_WITH_ARIA_256_GCM_SHA384 | ARIA256-GCM-SHA384 | [RFC6209] | | 0xC052 | TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256 | DHE-RSA-ARIA128-GCM-SHA256 | [RFC6209] | | 0xC053 | TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384 | DHE-RSA-ARIA256-GCM-SHA384 | [RFC6209] | | 0xC056 | TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256 | DHE-DSS-ARIA128-GCM-SHA256 | [RFC6209] | | 0xC057 | TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384 | DHE-DSS-ARIA256-GCM-SHA384 | [RFC6209] | | 0xC05C | TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 | ECDHE-ECDSA-ARIA128-GCM-SHA256 | [RFC6209] | | 0xC05D | TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 | ECDHE-ECDSA-ARIA256-GCM-SHA384 | [RFC6209] | | 0xC05E | TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 | ECDH-ECDSA-ARIA128-GCM-SHA256 | [RFC6209] | | 0xC05F | TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 | ECDH-ECDSA-ARIA256-GCM-SHA384 | [RFC6209] | | 0xC060 | TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 | ECDHE-ARIA128-GCM-SHA256 | [RFC6209] | | 0xC061 | TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 | ECDHE-ARIA256-GCM-SHA384 | [RFC6209] | | 0xC062 | TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 | ECDH-ARIA128-GCM-SHA256 | [RFC6209] | | 0xC063 | TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 | ECDH-ARIA256-GCM-SHA384 | [RFC6209] | | 0xC064 | TLS_PSK_WITH_ARIA_128_CBC_SHA256 | PSK-ARIA128-SHA256 | [RFC6209] | | 0xC065 | TLS_PSK_WITH_ARIA_256_CBC_SHA384 | PSK-ARIA256-SHA384 | [RFC6209] | | 0xC066 | TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256 | DHE-PSK-ARIA128-SHA256 | [RFC6209] | | 0xC067 | TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384 | DHE-PSK-ARIA256-SHA384 | [RFC6209] | | 0xC068 | TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256 | RSA-PSK-ARIA128-SHA256 | [RFC6209] | | 0xC069 | TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384 | RSA-PSK-ARIA256-SHA384 | [RFC6209] | | 0xC06A | TLS_PSK_WITH_ARIA_128_GCM_SHA256 | PSK-ARIA128-GCM-SHA256 | [RFC6209] | | 0xC06B | TLS_PSK_WITH_ARIA_256_GCM_SHA384 | PSK-ARIA256-GCM-SHA384 | [RFC6209] | | 0xC06C | TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256 | DHE-PSK-ARIA128-GCM-SHA256 | [RFC6209] | | 0xC06D | TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384 | DHE-PSK-ARIA256-GCM-SHA384 | [RFC6209] | | 0xC06E | TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256 | RSA-PSK-ARIA128-GCM-SHA256 | [RFC6209] | | 0xC06F | TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384 | RSA-PSK-ARIA256-GCM-SHA384 | [RFC6209] | | 0xC070 | TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256 | ECDHE-PSK-ARIA128-SHA256 | [RFC6209] | | 0xC071 | TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384 | ECDHE-PSK-ARIA256-SHA384 | [RFC6209] | | 0xC072 | TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 | ECDHE-ECDSA-CAMELLIA128-SHA256 | [RFC6367] | | 0xC073 | TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 | ECDHE-ECDSA-CAMELLIA256-SHA384 | [RFC6367] | | 0xC074 | TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 | ECDH-ECDSA-CAMELLIA128-SHA256 | [RFC6367] | | 0xC075 | TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 | ECDH-ECDSA-CAMELLIA256-SHA384 | [RFC6367] | | 0xC076 | TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 | ECDHE-RSA-CAMELLIA128-SHA256 | [RFC6367] | | 0xC077 | TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 | ECDHE-RSA-CAMELLIA256-SHA384 | [RFC6367] | | 0xC078 | TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 | ECDH-CAMELLIA128-SHA256 | [RFC6367] | | 0xC079 | TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 | ECDH-CAMELLIA256-SHA384 | [RFC6367] | | 0xC07A | TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 | CAMELLIA128-GCM-SHA256 | [RFC6367] | | 0xC07B | TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 | CAMELLIA256-GCM-SHA384 | [RFC6367] | | 0xC07C | TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 | DHE-RSA-CAMELLIA128-GCM-SHA256 | [RFC6367] | | 0xC07D | TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 | DHE-RSA-CAMELLIA256-GCM-SHA384 | [RFC6367] | | 0xC086 | TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 | ECDHE-ECDSA-CAMELLIA128-GCM-SHA256 | [RFC6367] | | 0xC087 | TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 | ECDHE-ECDSA-CAMELLIA256-GCM-SHA384 | [RFC6367] | | 0xC088 | TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 | ECDH-ECDSA-CAMELLIA128-GCM-SHA256 | [RFC6367] | | 0xC089 | TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 | ECDH-ECDSA-CAMELLIA256-GCM-SHA384 | [RFC6367] | | 0xC08A | TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 | ECDHE-CAMELLIA128-GCM-SHA256 | [RFC6367] | | 0xC08B | TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 | ECDHE-CAMELLIA256-GCM-SHA384 | [RFC6367] | | 0xC08C | TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 | ECDH-CAMELLIA128-GCM-SHA256 | [RFC6367] | | 0xC08D | TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 | ECDH-CAMELLIA256-GCM-SHA384 | [RFC6367] | | 0xC08E | TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256 | PSK-CAMELLIA128-GCM-SHA256 | [RFC6367] | | 0xC08F | TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384 | PSK-CAMELLIA256-GCM-SHA384 | [RFC6367] | | 0xC090 | TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256 | DHE-PSK-CAMELLIA128-GCM-SHA256 | [RFC6367] | | 0xC091 | TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384 | DHE-PSK-CAMELLIA256-GCM-SHA384 | [RFC6367] | | 0xC092 | TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256 | RSA-PSK-CAMELLIA128-GCM-SHA256 | [RFC6367] | | 0xC093 | TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384 | RSA-PSK-CAMELLIA256-GCM-SHA384 | [RFC6367] | | 0xC094 | TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 | PSK-CAMELLIA128-SHA256 | [RFC6367] | | 0xC095 | TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384 | PSK-CAMELLIA256-SHA384 | [RFC6367] | | 0xC096 | TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 | DHE-PSK-CAMELLIA128-SHA256 | [RFC6367] | | 0xC097 | TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 | DHE-PSK-CAMELLIA256-SHA384 | [RFC6367] | | 0xC098 | TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 | RSA-PSK-CAMELLIA128-SHA256 | [RFC6367] | | 0xC099 | TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 | RSA-PSK-CAMELLIA256-SHA384 | [RFC6367] | | 0xC09A | TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 | ECDHE-PSK-CAMELLIA128-SHA256 | [RFC6367] | | 0xC09B | TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 | ECDHE-PSK-CAMELLIA256-SHA384 | [RFC6367] | | 0xC09C | TLS_RSA_WITH_AES_128_CCM | AES128-CCM | [RFC6655] | | 0xC09D | TLS_RSA_WITH_AES_256_CCM | AES256-CCM | [RFC6655] | | 0xC09E | TLS_DHE_RSA_WITH_AES_128_CCM | DHE-RSA-AES128-CCM | [RFC6655] | | 0xC09F | TLS_DHE_RSA_WITH_AES_256_CCM | DHE-RSA-AES256-CCM | [RFC6655] | | 0xC0A0 | TLS_RSA_WITH_AES_128_CCM_8 | AES128-CCM8 | [RFC6655] | | 0xC0A1 | TLS_RSA_WITH_AES_256_CCM_8 | AES256-CCM8 | [RFC6655] | | 0xC0A2 | TLS_DHE_RSA_WITH_AES_128_CCM_8 | DHE-RSA-AES128-CCM8 | [RFC6655] | | 0xC0A3 | TLS_DHE_RSA_WITH_AES_256_CCM_8 | DHE-RSA-AES256-CCM8 | [RFC6655] | | 0xC0A4 | TLS_PSK_WITH_AES_128_CCM | PSK-AES128-CCM | [RFC6655] | | 0xC0A5 | TLS_PSK_WITH_AES_256_CCM | PSK-AES256-CCM | [RFC6655] | | 0xC0A6 | TLS_DHE_PSK_WITH_AES_128_CCM | DHE-PSK-AES128-CCM | [RFC6655] | | 0xC0A7 | TLS_DHE_PSK_WITH_AES_256_CCM | DHE-PSK-AES256-CCM | [RFC6655] | | 0xC0A8 | TLS_PSK_WITH_AES_128_CCM_8 | PSK-AES128-CCM8 | [RFC6655] | | 0xC0A9 | TLS_PSK_WITH_AES_256_CCM_8 | PSK-AES256-CCM8 | [RFC6655] | | 0xC0AA | TLS_PSK_DHE_WITH_AES_128_CCM_8 | DHE-PSK-AES128-CCM8 | [RFC6655] | | 0xC0AB | TLS_PSK_DHE_WITH_AES_256_CCM_8 | DHE-PSK-AES256-CCM8 | [RFC6655] | | 0xC0AC | TLS_ECDHE_ECDSA_WITH_AES_128_CCM | ECDHE-ECDSA-AES128-CCM | [RFC7251] | | 0xC0AD | TLS_ECDHE_ECDSA_WITH_AES_256_CCM | ECDHE-ECDSA-AES256-CCM | [RFC7251] | | 0xC0AE | TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 | ECDHE-ECDSA-AES128-CCM8 | [RFC7251] | | 0xC0AF | TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8 | ECDHE-ECDSA-AES256-CCM8 | [RFC7251] | | 0xC100 | TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR_OMAC | GOST2012-KUZNYECHIK-KUZNYECHIKOMAC | [RFC9189] | | 0xC101 | TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC | GOST2012-MAGMA-MAGMAOMAC | [RFC9189] | | 0xC102 | TLS_GOSTR341112_256_WITH_28147_CNT_IMIT | IANA-GOST2012-GOST8912-GOST8912 | [RFC9189] | | 0xCC13 | | ECDHE-RSA-CHACHA20-POLY1305-OLD | | | 0xCC14 | | ECDHE-ECDSA-CHACHA20-POLY1305-OLD | | | 0xCC15 | | DHE-RSA-CHACHA20-POLY1305-OLD | | | 0xCCA8 | TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 | ECDHE-RSA-CHACHA20-POLY1305 | [RFC7905] | | 0xCCA9 | TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 | ECDHE-ECDSA-CHACHA20-POLY1305 | [RFC7905] | | 0xCCAA | TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 | DHE-RSA-CHACHA20-POLY1305 | [RFC7905] | | 0xCCAB | TLS_PSK_WITH_CHACHA20_POLY1305_SHA256 | PSK-CHACHA20-POLY1305 | [RFC7905] | | 0xCCAC | TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256 | ECDHE-PSK-CHACHA20-POLY1305 | [RFC7905] | | 0xCCAD | TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256 | DHE-PSK-CHACHA20-POLY1305 | [RFC7905] | | 0xCCAE | TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256 | RSA-PSK-CHACHA20-POLY1305 | [RFC7905] | | 0xD001 | TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256 | ECDHE-PSK-AES128-GCM-SHA256 | [RFC8442] | | 0xE011 | | ECDHE-ECDSA-SM4-CBC-SM3 | | | 0xE051 | | ECDHE-ECDSA-SM4-GCM-SM3 | | | 0xE052 | | ECDHE-ECDSA-SM4-CCM-SM3 | | | 0xFF00 | | GOST-MD5 | | | 0xFF01 | | GOST-GOST94 | | | 0xFF02 | | GOST-GOST89MAC | | | 0xFF03 | | GOST-GOST89STREAM | | curl-8.14.1/docs/CIPHERS.md0000644000000000000000000002632415017756261013330 0ustar0000000000000000 ## curl cipher options A TLS handshake involves many parameters which take part in the negotiation between client and server in order to agree on the TLS version and set of algorithms to use for a connection. What has become known as a "cipher" or better "cipher suite" in TLS are names for specific combinations of [key exchange](https://en.wikipedia.org/wiki/Key_exchange), [bulk encryption](https://en.wikipedia.org/wiki/Link_encryption), [message authentication code](https://en.wikipedia.org/wiki/Message_authentication_code) and with TLSv1.3 the [authenticated encryption](https://en.wikipedia.org/wiki/Authenticated_encryption). In addition, there are other parameters that influence the TLS handshake, like [DHE](https://en.wikipedia.org/wiki/Diffie%e2%80%93Hellman_key_exchange) "groups" and [ECDHE](https://en.wikipedia.org/wiki/Elliptic-curve_Diffie%e2%80%93Hellman) with its "curves". ### History curl's way of letting users configure these settings closely followed OpenSSL in its API. TLS learned new parameters, OpenSSL added new API functions and curl added command line options. Several other TLS backends followed the OpenSSL approach, more or less closely, and curl maps the command line options to these TLS backends. Some TLS backends do not support all of it and command line options are either ignored or lead to an error. Many examples below show the OpenSSL-like use of these options. GnuTLS however chose a different approach. These are described in a separate section further below. ## ciphers, the OpenSSL way With curl's option [`--tls13-ciphers`](https://curl.se/docs/manpage.html#--tls13-ciphers) or [`CURLOPT_TLS13_CIPHERS`](https://curl.se/libcurl/c/CURLOPT_TLS13_CIPHERS.html) users can control which cipher suites to consider when negotiating TLS 1.3 connections. With option [`--ciphers`](https://curl.se/docs/manpage.html#--ciphers) or [`CURLOPT_SSL_CIPHER_LIST`](https://curl.se/libcurl/c/CURLOPT_SSL_CIPHER_LIST.html) users can control which cipher suites to consider when negotiating TLS 1.2 (1.1, 1.0) connections. By default, curl may negotiate TLS 1.3 and TLS 1.2 connections, so the cipher suites considered when negotiating a TLS connection are a union of the TLS 1.3 and TLS 1.2 cipher suites. If you want curl to consider only TLS 1.3 cipher suites for the connection, you have to set the minimum TLS version to 1.3 by using [`--tlsv1.3`](https://curl.se/docs/manpage.html#--tlsv13) or [`CURLOPT_SSLVERSION`](https://curl.se/libcurl/c/CURLOPT_SSLVERSION.html) with `CURL_SSLVERSION_TLSv1_3`. Both the TLS 1.3 and TLS 1.2 cipher options expect a list of cipher suites separated by colons (`:`). This list is parsed opportunistically, cipher suites that are not recognized or implemented are ignored. As long as there is at least one recognized cipher suite in the list, the list is considered valid. For both the TLS 1.3 and TLS 1.2 cipher options, the order in which the cipher suites are specified determine the preference of them. When negotiating a TLS connection the server picks a cipher suite from the intersection of the cipher suites supported by the server and the cipher suites sent by curl. If the server is configured to honor the client's cipher preference, the first common cipher suite in the list sent by curl is chosen. ### TLS 1.3 cipher suites Setting TLS 1.3 cipher suites is supported by curl with OpenSSL (1.1.1+, curl 7.61.0+), LibreSSL (3.4.1+, curl 8.3.0+), wolfSSL (curl 8.10.0+) and mbedTLS (3.6.0+, curl 8.10.0+). The list of cipher suites that can be used for the `--tls13-ciphers` option: ``` TLS_AES_128_GCM_SHA256 TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_CCM_SHA256 TLS_AES_128_CCM_8_SHA256 ``` #### wolfSSL notes In addition to above list the following cipher suites can be used: `TLS_SM4_GCM_SM3` `TLS_SM4_CCM_SM3` `TLS_SHA256_SHA256` `TLS_SHA384_SHA384`. Usage of these cipher suites is not recommended. (The last two cipher suites are NULL ciphers, offering no encryption whatsoever.) ### TLS 1.2 (1.1, 1.0) cipher suites Setting TLS 1.2 cipher suites is supported by curl with OpenSSL, LibreSSL, BoringSSL, mbedTLS (curl 8.8.0+), wolfSSL (curl 7.53.0+), Secure Transport (curl 7.77.0+) and BearSSL (curl 7.83.0+). Schannel does not support setting cipher suites directly, but does support setting algorithms (curl 7.61.0+), see Schannel notes below. For TLS 1.2 cipher suites there are multiple naming schemes, the two most used are with OpenSSL names (e.g. `ECDHE-RSA-AES128-GCM-SHA256`) and IANA names (e.g. `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256`). IANA names of TLS 1.2 cipher suites look similar to TLS 1.3 cipher suite names, to distinguish them note that TLS 1.2 names contain `_WITH_`, while TLS 1.3 names do not. When setting TLS 1.2 cipher suites with curl it is recommended that you use OpenSSL names as these are most widely recognized by the supported SSL backends. The complete list of cipher suites that may be considered for the `--ciphers` option is extensive, it consists of more than 300 ciphers suites. However, nowadays for most of them their usage is discouraged, and support for a lot of them have been removed from the various SSL backends, if ever implemented at all. A shortened list (based on [recommendations by Mozilla](https://wiki.mozilla.org/Security/Server_Side_TLS)) of cipher suites, which are (mostly) supported by all SSL backends, that can be used for the `--ciphers` option: ``` ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-ECDSA-CHACHA20-POLY1305 ECDHE-RSA-CHACHA20-POLY1305 DHE-RSA-AES128-GCM-SHA256 DHE-RSA-AES256-GCM-SHA384 DHE-RSA-CHACHA20-POLY1305 ECDHE-ECDSA-AES128-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-ECDSA-AES128-SHA ECDHE-RSA-AES128-SHA ECDHE-ECDSA-AES256-SHA384 ECDHE-RSA-AES256-SHA384 ECDHE-ECDSA-AES256-SHA ECDHE-RSA-AES256-SHA DHE-RSA-AES128-SHA256 DHE-RSA-AES256-SHA256 AES128-GCM-SHA256 AES256-GCM-SHA384 AES128-SHA256 AES256-SHA256 AES128-SHA AES256-SHA DES-CBC3-SHA ``` See this [list](https://github.com/curl/curl/blob/master/docs/CIPHERS-TLS12.md) for a complete list of TLS 1.2 cipher suites. #### OpenSSL notes In addition to specifying a list of cipher suites, OpenSSL also accepts a format with specific cipher strings (like `TLSv1.2`, `AESGCM`, `CHACHA20`) and `!`, `-` and `+` operators. Refer to the [OpenSSL cipher documentation](https://docs.openssl.org/master/man1/openssl-ciphers/#cipher-list-format) for further information on that format. #### Schannel notes Schannel does not support setting individual TLS 1.2 cipher suites directly. It only allows the enabling and disabling of encryption algorithms. These are in the form of `CALG_xxx`, see the [Schannel `ALG_ID` documentation](https://docs.microsoft.com/windows/desktop/SecCrypto/alg-id) for a list of these algorithms. Also, (since curl 7.77.0) `SCH_USE_STRONG_CRYPTO` can be given to pass that flag to Schannel, lookup the [documentation for the Windows version in use](https://learn.microsoft.com/en-us/windows/win32/secauthn/cipher-suites-in-schannel) to see how that affects the cipher suite selection. When not specifying the `--ciphers` and `--tls13-ciphers` options curl passes this flag by default. ### Examples ```sh curl \ --tls13-ciphers TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256 \ --ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:\ ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305 \ https://example.com/ ``` Restrict ciphers to `aes128-gcm` and `chacha20`. Works with OpenSSL, LibreSSL, mbedTLS and wolfSSL. ```sh curl \ --tlsv1.3 \ --tls13-ciphers TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256 \ https://example.com/ ``` Restrict to only TLS 1.3 with `aes128-gcm` and `chacha20` ciphers. Works with OpenSSL, LibreSSL, mbedTLS, wolfSSL and Schannel. ```sh curl \ --ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:\ ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305 \ https://example.com/ ``` Restrict TLS 1.2 ciphers to `aes128-gcm` and `chacha20`, use default TLS 1.3 ciphers (if TLS 1.3 is available). Works with OpenSSL, LibreSSL, BoringSSL, mbedTLS, wolfSSL, Secure Transport and BearSSL. ## ciphers, the GnuTLS way With GnuTLS, curl allows configuration of all TLS parameters via option [`--ciphers`](https://curl.se/docs/manpage.html#--ciphers) or [`CURLOPT_SSL_CIPHER_LIST`](https://curl.se/libcurl/c/CURLOPT_SSL_CIPHER_LIST.html) only. The option [`--tls13-ciphers`](https://curl.se/docs/manpage.html#--tls13-ciphers) or [`CURLOPT_TLS13_CIPHERS`](https://curl.se/libcurl/c/CURLOPT_TLS13_CIPHERS.html) is being ignored. `--ciphers` is used to set the GnuTLS **priority string** in the following way: * When the set string starts with '+', '-' or '!' it is *appended* to the priority string libcurl itself generates (separated by ':'). This initial priority depends other settings such as CURLOPT_SSLVERSION(3), CURLOPT_TLSAUTH_USERNAME(3) (for SRP) or if HTTP/3 (QUIC) is being negotiated. * Otherwise, the set string fully *replaces* the libcurl generated one. While giving full control to the application, the set priority needs to provide for everything the transfer may need to negotiate. Example: if the set priority only allows TLSv1.2, all HTTP/3 attempts fail. Users may specify via `--ciphers` anything that GnuTLS supports: ciphers, key exchange, MAC, compression, TLS versions, signature algorithms, groups, elliptic curves, certificate types. In addition, GnuTLS has a variety of other keywords that tweak its operations. Applications or a system may define new alias names for priority strings that can then be used here. Since the order of items in priority strings is significant, it makes no sense for curl to puzzle other ssl options somehow together. `--ciphers` is the single way to change priority. ### Examples ```sh curl \ --ciphers '-CIPHER_ALL:+AES-128-GCM:+CHACHA20-POLY1305' \ https://example.com/ ``` Restrict ciphers to `aes128-gcm` and `chacha20` in GnuTLS. ```sh curl \ --ciphers 'NORMAL:-VERS-ALL:+TLS1.3:-AES-256-GCM' \ https://example.com/ ``` Restrict to only TLS 1.3 without the `aes256-gcm` cipher. ```sh curl \ --ciphers 'NORMAL:-VERS-ALL:+TLS1.2:-CIPHER_ALL:+CAMELLIA-128-GCM' \ https://example.com/ ``` Restrict to only TLS 1.2 with the `CAMELLIA-128-GCM` cipher. ## Further reading - [OpenSSL cipher suite names documentation](https://docs.openssl.org/master/man1/openssl-ciphers/#cipher-suite-names) - [wolfSSL cipher support documentation](https://www.wolfssl.com/documentation/manuals/wolfssl/chapter04.html#cipher-support) - [mbedTLS cipher suites reference](https://mbed-tls.readthedocs.io/projects/api/en/development/api/file/ssl__ciphersuites_8h/) - [Schannel cipher suites documentation](https://learn.microsoft.com/en-us/windows/win32/secauthn/cipher-suites-in-schannel) - [BearSSL supported crypto](https://www.bearssl.org/support.html) - [Secure Transport cipher suite values](https://developer.apple.com/documentation/security/1550981-ssl_cipher_suite_values) - [IANA cipher suites list](https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-4) - [Wikipedia cipher suite article](https://en.wikipedia.org/wiki/Cipher_suite) - [GnuTLS Priority Strings](https://gnutls.org/manual/html_node/Priority-Strings.html) curl-8.14.1/docs/CMakeLists.txt0000644000000000000000000000360015017756261014441 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### if(BUILD_LIBCURL_DOCS) add_subdirectory(libcurl) endif() if(ENABLE_CURL_MANUAL AND BUILD_CURL_EXE) add_subdirectory(cmdline-opts) endif() if(BUILD_MISC_DOCS) foreach(_man_misc IN ITEMS "curl-config" "mk-ca-bundle" "wcurl" "runtests" "testcurl") set(_man_target "${CMAKE_CURRENT_BINARY_DIR}/${_man_misc}.1") add_custom_command(OUTPUT "${_man_target}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND "${PERL_EXECUTABLE}" "${PROJECT_SOURCE_DIR}/scripts/cd2nroff" "${_man_misc}.md" > "${_man_target}" DEPENDS "${PROJECT_SOURCE_DIR}/scripts/cd2nroff" "${_man_misc}.md" VERBATIM ) add_custom_target("curl-generate-${_man_misc}.1" ALL DEPENDS "${_man_target}") if(NOT CURL_DISABLE_INSTALL AND NOT _man_misc STREQUAL "mk-ca-bundle") install(FILES "${_man_target}" DESTINATION "${CMAKE_INSTALL_MANDIR}/man1") endif() endforeach() endif() curl-8.14.1/docs/CODE_OF_CONDUCT.md0000644000000000000000000000325015017756261014501 0ustar0000000000000000 Contributor Code of Conduct =========================== As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities. We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion. Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team. This code of conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers. This Code of Conduct is adapted from the [Contributor Covenant](https://contributor-covenant.org/), version 1.1.0, available at [https://contributor-covenant.org/version/1/1/0/](https://contributor-covenant.org/version/1/1/0/) curl-8.14.1/docs/CODE_REVIEW.md0000644000000000000000000001355615017756261014031 0ustar0000000000000000 # How to do code reviews for curl Anyone and everyone is encouraged and welcome to review code submissions in curl. This is a guide on what to check for and how to perform a successful code review. ## All submissions should get reviewed All pull requests and patches submitted to the project should be reviewed by at least one experienced curl maintainer before that code is accepted and merged. ## Let the tools and tests take the first rounds On initial pull requests, let the tools and tests do their job first and then start out by helping the submitter understand the test failures and tool alerts. ## How to provide feedback to author Be nice. Ask questions. Provide examples or suggestions of improvements. Assume the best intentions. Remember language barriers. All first-time contributors can become regulars. Let's help them go there. ## Is this a change we want? If this is not a change that seems to be aligned with the project's path forward and as such cannot be accepted, inform the author about this sooner rather than later. Do it gently and explain why and possibly what could be done to make it more acceptable. ## API/ABI stability or changed behavior Changing the API and the ABI may be fine in a change but it needs to be done deliberately and carefully. If not, a reviewer must help the author to realize the mistake. curl and libcurl are similarly strict on not modifying existing behavior. API and ABI stability is not enough, the behavior should also remain intact as far as possible. ## Code style Most code style nits are detected by checksrc but not all. Only leave remarks on style deviation once checksrc does not find anymore. Minor nits from fresh submitters can also be handled by the maintainer when merging, in case it seems like the submitter is not clear on what to do. We want to make the process fun and exciting for new contributors. ## Encourage consistency Make sure new code is written in a similar style as existing code. Naming, logic, conditions, etc. ## Are pointers always non-NULL? If a function or code rely on pointers being non-NULL, take an extra look if that seems to be a fair assessment. ## Asserts Conditions that should never be false can be verified with `DEBUGASSERT()` calls to get caught in tests and debugging easier, while not having an impact on final or release builds. ## Memory allocation Can the mallocs be avoided? Do not introduce mallocs in any hot paths. If there are (new) mallocs, can they be combined into fewer calls? Are all allocations handled in error paths to avoid leaks and crashes? ## Thread-safety We do not like static variables as they break thread-safety and prevent functions from being reentrant. ## Should features be `#ifdef`ed? Features and functionality may not be present everywhere and should therefore be `#ifdef`ed. Additionally, some features should be possible to switch on/off in the build. Write `#ifdef`s to be as little of a "maze" as possible. ## Does it look portable enough? curl runs "everywhere". Does the code take a reasonable stance and enough precautions to be possible to build and run on most platforms? Remember that we live by C89 restrictions. ## Tests and testability New features should be added in conjunction with one or more test cases. Ideally, functions should also be written so that unit tests can be done to test individual functions. ## Documentation New features or changes to existing functionality **must** be accompanied by updated documentation. Submitting that in a separate follow-up pull request is not OK. A code review must also verify that the submitted documentation update matches the code submission. English is not everyone's first language, be mindful of this and help the submitter improve the text if it needs a rewrite to read better. ## Code should not be hard to understand Source code should be written to maximize readability and be easy to understand. ## Functions should not be large A single function should never be large as that makes it hard to follow and understand all the exit points and state changes. Some existing functions in curl certainly violate this ground rule but when reviewing new code we should propose splitting into smaller functions. ## Duplication is evil Anything that looks like duplicated code is a red flag. Anything that seems to introduce code that we *should* already have or provide needs a closer check. ## Sensitive data When credentials are involved, take an extra look at what happens with this data. Where it comes from and where it goes. ## Variable types differ `size_t` is not a fixed size. `time_t` can be signed or unsigned and have different sizes. Relying on variable sizes is a red flag. Also remember that endianness and >= 32-bit accesses to unaligned addresses are problematic areas. ## Integer overflows Be careful about integer overflows. Some variable types can be either 32-bit or 64-bit. Integer overflows must be detected and acted on *before* they happen. ## Dangerous use of functions Maybe use of `realloc()` should rather use the dynbuf functions? Do not allow new code that grows buffers without using dynbuf. Use of C functions that rely on a terminating zero must only be used on data that really do have a null-terminating zero. ## Dangerous "data styles" Make extra precautions and verify that memory buffers that need a terminating zero always have exactly that. Buffers *without* a null-terminator must not be used as input to string functions. # Commit messages Tightly coupled with a code review is making sure that the commit message is good. It is the responsibility of the person who merges the code to make sure that the commit message follows our standard (detailed in the [CONTRIBUTE](CONTRIBUTE.md) document). This includes making sure the PR identifies related issues and giving credit to reporters and helpers. curl-8.14.1/docs/CONTRIBUTE.md0000644000000000000000000003732415017756261013713 0ustar0000000000000000 # Contributing to the curl project This document is intended to offer guidelines on how to best contribute to the curl project. This concerns new features as well as corrections to existing flaws or bugs. ## Join the Community Skip over to [https://curl.se/mail/](https://curl.se/mail/) and join the appropriate mailing list(s). Read up on details before you post questions. Read this file before you start sending patches. We prefer questions sent to and discussions being held on the mailing list(s), not sent to individuals. Before posting to one of the curl mailing lists, please read up on the [mailing list etiquette](https://curl.se/mail/etiquette.html). We also hang out on IRC in #curl on libera.chat If you are at all interested in the code side of things, consider clicking 'watch' on the [curl repository on GitHub](https://github.com/curl/curl) to be notified of pull requests and new issues posted there. ## License and copyright When contributing with code, you agree to put your changes and new code under the same license curl and libcurl is already using unless stated and agreed otherwise. If you add a larger piece of code, you can opt to make that file or set of files to use a different license as long as they do not enforce any changes to the rest of the package and they make sense. Such "separate parts" can not be GPL licensed (as we do not want copyleft to affect users of libcurl) but they must use "GPL compatible" licenses (as we want to allow users to use libcurl properly in GPL licensed environments). When changing existing source code, you do not alter the copyright of the original file(s). The copyright is still owned by the original creator(s) or those who have been assigned copyright by the original author(s). By submitting a patch to the curl project, you are assumed to have the right to the code and to be allowed by your employer or whatever to hand over that patch/code to us. We credit you for your changes as far as possible, to give credit but also to keep a trace back to who made what changes. Please always provide us with your full real name when contributing, ## What To Read Source code, the man pages, the [INTERNALS document](https://curl.se/dev/internals.html), [TODO](https://curl.se/docs/todo.html), [KNOWN_BUGS](https://curl.se/docs/knownbugs.html) and the [most recent changes](https://curl.se/dev/sourceactivity.html) in git. Just lurking on the [curl-library mailing list](https://curl.se/mail/list.cgi?list=curl-library) gives you a lot of insights on what's going on right now. Asking there is a good idea too. ## Write a good patch ### Follow code style When writing C code, follow the [CODE_STYLE](https://curl.se/dev/code-style.html) already established in the project. Consistent style makes code easier to read and mistakes less likely to happen. Run `make checksrc` before you submit anything, to make sure you follow the basic style. That script does not verify everything, but if it complains you know you have work to do. ### Non-clobbering All Over When you write new functionality or fix bugs, it is important that you do not fiddle all over the source files and functions. Remember that it is likely that other people have done changes in the same source files as you have and possibly even in the same functions. If you bring completely new functionality, try writing it in a new source file. If you fix bugs, try to fix one bug at a time and send them as separate patches. ### Write Separate Changes It is annoying when you get a huge patch from someone that is said to fix 11 odd problems, but discussions and opinions do not agree with 10 of them - or 9 of them were already fixed in a different way. Then the person merging this change needs to extract the single interesting patch from somewhere within the huge pile of source, and that creates a lot of extra work. Preferably, each fix that corrects a problem should be in its own patch/commit with its own description/commit message stating exactly what they correct so that all changes can be selectively applied by the maintainer or other interested parties. Also, separate changes enable bisecting much better for tracking problems and regression in the future. ### Patch Against Recent Sources Please try to get the latest available sources to make your patches against. It makes the lives of the developers so much easier. The best is if you get the most up-to-date sources from the git repository, but the latest release archive is quite OK as well. ### Documentation Writing docs is dead boring and one of the big problems with many open source projects but someone's gotta do it. It makes things a lot easier if you submit a small description of your fix or your new features with every contribution so that it can be swiftly added to the package documentation. Documentation is mostly provided as manpages or plain ASCII files. The manpages are rendered from their source files that are usually written using markdown. Most HTML files on the website and in the release archives are generated from corresponding markdown and ASCII files. ### Test Cases Since the introduction of the test suite, we can quickly verify that the main features are working as they are supposed to. To maintain this situation and improve it, all new features and functions that are added need to be tested in the test suite. Every feature that is added should get at least one valid test case that verifies that it works as documented. If every submitter also posts a few test cases, it does not end up a heavy burden on a single person. If you do not have test cases or perhaps you have done something that is hard to write tests for, do explain exactly how you have otherwise tested and verified your changes. # Submit Your Changes ## Get your changes merged Ideally you file a [pull request on GitHub](https://github.com/curl/curl/pulls), but you can also send your plain patch to [the curl-library mailing list](https://curl.se/mail/list.cgi?list=curl-library). If you opt to post a patch on the mailing list, chances are someone converts it into a pull request for you, to have the CI jobs verify it proper before it can be merged. Be prepared that some feedback on the proposed change might then come on GitHub. Your changes be reviewed and discussed and you are expected to correct flaws pointed out and update accordingly, or the change risks stalling and eventually just getting deleted without action. As a submitter of a change, you are the owner of that change until it has been merged. Respond on the list or on GitHub about the change and answer questions and/or fix nits/flaws. This is important. We take lack of replies as a sign that you are not anxious to get your patch accepted and we tend to simply drop such changes. ## About pull requests With GitHub it is easy to send a [pull request](https://github.com/curl/curl/pulls) to the curl project to have changes merged. We strongly prefer pull requests to mailed patches, as it makes it a proper git commit that is easy to merge and they are easy to track and not that easy to lose in the flood of many emails, like they sometimes do on the mailing lists. Every pull request submitted is automatically tested in several different ways. [See the CI document for more information](https://github.com/curl/curl/blob/master/tests/CI.md). Sometimes the tests fail due to a dependency service temporarily being offline or otherwise unavailable, e.g. package downloads. In this case you can just try to update your pull requests to rerun the tests later as described below. You can update your pull requests by pushing new commits or force-pushing changes to existing commits. Force-pushing an amended commit without any actual content changed also allows you to retrigger the tests for that commit. When you adjust your pull requests after review, consider squashing the commits so that we can review the full updated version more easily. A pull request sent to the project might get labeled `needs-votes` by a project maintainer. This label means that in addition to meeting all other checks and qualifications this pull request must also receive more "votes" of user support. More signs that people want this to happen. It could be in the form of messages saying so, or thumbs-up reactions on GitHub. ## When the pull request is approved If it does not seem to get approved when you think it is ready - feel free to ask for approval. Once your pull request has been approved it can be merged by a maintainer. For new features, or changes, we require that the *feature window* is open for the pull request to be merged. This is typically a three week period that starts ten days after a previous release. New features submitted as pull requests while the window is closed simply have to wait until it opens to get merged. If time passes without your approved pull request gets merged: feel free to ask what more you can do to make it happen. ## Making quality changes Make the patch against as recent source versions as possible. If you have followed the tips in this document and your patch still has not been incorporated or responded to after some weeks, consider resubmitting it to the list or better yet: change it to a pull request. ## Commit messages How to write git commit messages in the curl project. ---- start ---- [area]: [short line describing the main effect] -- empty line -- [full description, no wider than 72 columns that describes as much as possible as to why this change is made, and possibly what things it fixes and everything else that is related, -- end -- The first line is a succinct description of the change and should ideally work as a single line in the RELEASE NOTES. - use the imperative, present tense: **change** not "changed" nor "changes" - do not capitalize the first letter - no period (.) at the end The `[area]` in the first line can be `http2`, `cookies`, `openssl` or similar. There is no fixed list to select from but using the same "area" as other related changes could make sense. ## Commit message keywords Use the following ways to improve the message and provide pointers to related work. - `Follow-up to {shorthash}` - if this fixes or continues a previous commit; add a `Ref:` that commit's PR or issue if it is not a small, obvious fix; followed by an empty line - `Bug: URL` to the source of the report or more related discussion; use `Fixes` for GitHub issues instead when that is appropriate. - `Approved-by: John Doe` - credit someone who approved the PR. - `Authored-by: John Doe` - credit the original author of the code; only use this if you cannot use `git commit --author=...`. - `Signed-off-by: John Doe` - we do not use this, but do not bother removing it. - `whatever-else-by:` credit all helpers, finders, doers; try to use one of the following keywords if at all possible, for consistency: `Acked-by:`, `Assisted-by:`, `Co-authored-by:`, `Found-by:`, `Reported-by:`, `Reviewed-by:`, `Suggested-by:`, `Tested-by:`. - `Ref: #1234` - if this is related to a GitHub issue or PR, possibly one that has already been closed. - `Ref: URL` to more information about the commit; use `Bug:` instead for a reference to a bug on another bug tracker] - `Fixes #1234` - if this fixes a GitHub issue; GitHub closes the issue once this commit is merged. - `Closes #1234` - if this merges a GitHub PR; GitHub closes the PR once this commit is merged. Do not forget to use commit with `--author` if you commit someone else's work, and make sure that you have your own user and email setup correctly in git before you commit. Add whichever header lines as appropriate, with one line per person if more than one person was involved. There is no need to credit yourself unless you are using `--author` which hides your identity. Do not include people's email addresses in headers to avoid spam, unless they are already public from a previous commit; saying `{userid} on github` is OK. ## Push Access If you are a frequent contributor, you may be given push access to the git repository and then you are able to push your changes straight into the git repository instead of sending changes as pull requests or by mail as patches. Just ask if this is what you would want. You are required to have posted several high quality patches first, before you can be granted push access. ## Useful resources - [Webinar on getting code into cURL](https://www.youtube.com/watch?v=QmZ3W1d6LQI) # Update copyright and license information There is a CI job called **REUSE compliance / check** that runs on every pull request and commit to verify that the *REUSE state* of all files are still fine. This means that all files need to have their license and copyright information clearly stated. Ideally by having the standard curl source code header, with the `SPDX-License-Identifier` included. If the header does not work, you can use a smaller header or add the information for a specific file to the `REUSE.toml` file. You can manually verify the copyright and compliance status by running the [REUSE helper tool](https://github.com/fsfe/reuse-tool): `reuse lint` # On AI use in curl Guidelines for AI use when contributing to curl. ## For security reports and other issues If you asked an AI tool to find problems in curl, you **must** make sure to reveal this fact in your report. You must also double-check the findings carefully before reporting them to us to validate that the issues are indeed existing and working exactly as the AI says. AI-based tools frequently generate inaccurate or fabricated results. Further: it is *rarely* a good idea to just copy and paste an AI generated report to the project. Those generated reports typically are too wordy and rarely to the point (in addition to the common fabricated details). If you actually find a problem with an AI and you have verified it yourself to be true: write the report yourself and explain the problem as you have learned it. This makes sure the AI-generated inaccuracies and invented issues are filtered out early before they waste more people's time. As we take security reports seriously, we investigate each report with priority. This work is both time and energy consuming and pulls us away from doing other meaningful work. Fake and otherwise made up security problems effectively prevent us from doing real project work and make us waste time and resources. We ban users immediately who submit made up fake reports to the project. ## For pull requests When contributing content to the curl project, you give us permission to use it as-is and you must make sure you are allowed to distribute it to us. By submitting a change to us, you agree that the changes can and should be adopted by curl and get redistributed under the curl license. Authors should be explicitly aware that the burden is on them to ensure no unlicensed code is submitted to the project. This is independent if AI is used or not. When contributing a pull request you should of course always make sure that the proposal is good quality and a best effort that follows our guidelines. A basic rule of thumb is that if someone can spot that the contribution was made with the help of AI, you have more work to do. We can accept code written with the help of AI into the project, but the code must still follow coding standards, be written clearly, be documented, feature test cases and adhere to all the normal requirements we have. ## For translation Translation services help users write reports, texts and documentation in non-native languages and we encourage and welcome such contributors and contributions. As AI-based translation tools sometimes have a way to make the output sound a little robotic and add an "AI tone" to the text, you may want to consider mentioning that you used such a tool. Failing to do so risks that maintainers wrongly dismiss translated texts as AI slop. curl-8.14.1/docs/CURL-DISABLE.md0000644000000000000000000000641115017756261014034 0ustar0000000000000000 # Code defines to disable features and protocols ## `CURL_DISABLE_ALTSVC` Disable support for Alt-Svc: HTTP headers. ## `CURL_DISABLE_BINDLOCAL` Disable support for binding the local end of connections. ## `CURL_DISABLE_COOKIES` Disable support for HTTP cookies. ## `CURL_DISABLE_BASIC_AUTH` Disable support for the Basic authentication methods. ## `CURL_DISABLE_BEARER_AUTH` Disable support for the Bearer authentication methods. ## `CURL_DISABLE_DIGEST_AUTH` Disable support for the Digest authentication methods. ## `CURL_DISABLE_KERBEROS_AUTH` Disable support for the Kerberos authentication methods. ## `CURL_DISABLE_NEGOTIATE_AUTH` Disable support for the negotiate authentication methods. ## `CURL_DISABLE_AWS` Disable **aws-sigv4** support. ## `CURL_DISABLE_CA_SEARCH` Disable unsafe CA bundle search in PATH on Windows. ## `CURL_DISABLE_DICT` Disable the DICT protocol ## `CURL_DISABLE_DOH` Disable DNS-over-HTTPS ## `CURL_DISABLE_FILE` Disable the FILE protocol ## `CURL_DISABLE_FORM_API` Disable the form API ## `CURL_DISABLE_FTP` Disable the FTP (and FTPS) protocol ## `CURL_DISABLE_GETOPTIONS` Disable the `curl_easy_options` API calls that lets users get information about existing options to `curl_easy_setopt`. ## `CURL_DISABLE_GOPHER` Disable the GOPHER protocol. ## `CURL_DISABLE_HEADERS_API` Disable the HTTP header API. ## `CURL_DISABLE_HSTS` Disable the HTTP Strict Transport Security support. ## `CURL_DISABLE_HTTP` Disable the HTTP(S) protocols. Note that this then also disable HTTP proxy support. ## `CURL_DISABLE_HTTP_AUTH` Disable support for all HTTP authentication methods. ## `CURL_DISABLE_IMAP` Disable the IMAP(S) protocols. ## `CURL_DISABLE_LDAP` Disable the LDAP(S) protocols. ## `CURL_DISABLE_LDAPS` Disable the LDAPS protocol. ## `CURL_DISABLE_LIBCURL_OPTION` Disable the --libcurl option from the curl tool. ## `CURL_DISABLE_MIME` Disable MIME support. ## `CURL_DISABLE_MQTT` Disable MQTT support. ## `CURL_DISABLE_NETRC` Disable the netrc parser. ## `CURL_DISABLE_NTLM` Disable support for NTLM. ## `CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG` Disable the auto load config support in the OpenSSL backend. ## `CURL_DISABLE_PARSEDATE` Disable date parsing ## `CURL_DISABLE_POP3` Disable the POP3 protocol ## `CURL_DISABLE_PROGRESS_METER` Disable the built-in progress meter ## `CURL_DISABLE_PROXY` Disable support for proxies ## `CURL_DISABLE_IPFS` Disable the IPFS/IPNS protocols. This affects the curl tool only, where IPFS/IPNS protocol support is implemented. ## `CURL_DISABLE_RTSP` Disable the RTSP protocol. ## `CURL_DISABLE_SHA512_256` Disable the SHA-512/256 hash algorithm. ## `CURL_DISABLE_SHUFFLE_DNS` Disable the shuffle DNS feature ## `CURL_DISABLE_SMB` Disable the SMB(S) protocols ## `CURL_DISABLE_SMTP` Disable the SMTP(S) protocols ## `CURL_DISABLE_SOCKETPAIR` Disable the use of `socketpair()` internally to allow waking up and canceling `curl_multi_poll()`. ## `CURL_DISABLE_TELNET` Disable the TELNET protocol ## `CURL_DISABLE_TFTP` Disable the TFTP protocol ## `CURL_DISABLE_VERBOSE_STRINGS` Disable verbose strings and error messages. ## `CURL_DISABLE_WEBSOCKETS` Disable the WebSocket protocols. curl-8.14.1/docs/CURLDOWN.md0000644000000000000000000001173015017756261013463 0ustar0000000000000000 # curldown A markdown-like syntax for libcurl man pages. ## Purpose A text format for writing libcurl documentation in the shape of man pages. Make it easier for users to contribute and write documentation. A format that is easier on the eye in its source format. Make it harder to do syntactical mistakes. Use a format that allows creating man pages that end up looking exactly like the man pages did when we wrote them in nroff format. Take advantage of the fact that people these days are accustomed to markdown by using a markdown-like syntax. This allows us to fix issues in the nroff format easier since now we generate them. For example: escaping minus to prevent them from being turned into Unicode by man. Generate nroff output that looks (next to) *identical* to the previous files, so that the look, existing test cases, HTML conversions, existing infrastructure etc remain mostly intact. Contains meta-data in a structured way to allow better output (for example the see also information) and general awareness of what the file is about. ## File extension Since curldown looks similar to markdown, we use `.md` extensions on the files. ## Conversion Convert **from curldown to nroff** with `cd2nroff`. Generates nroff man pages. Convert **from nroff to curldown** with `nroff2cd`. This is only meant to be used for the initial conversion to curldown and should ideally never be needed again. Convert, check or clean up an existing curldown to nicer, better, cleaner curldown with **cd2cd**. Mass-convert all curldown files to nroff in specified directories with `cdall`: cdall [dir1] [dir2] [dir3] .. ## Known issues The `cd2nroff` tool does not yet handle *italics* or **bold** where the start and the end markers are used on separate lines. The `nroff2cd` tool generates code style quotes for all `.fi` sections since the nroff format does not carry a distinction. # Format Each curldown starts with a header with meta-data: --- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Title: CURLOPT_AWS_SIGV4 Section: 3 Source: libcurl Protocol: - HTTP See-also: - CURLOPT_HEADEROPT (3) - CURLOPT_HTTPAUTH (3) TLS-backend: - [name] Added-in: [version or "n/a"] --- All curldown files *must* have all the headers present and at least one `See-also:` entry specified. If the man page is for section 3 (library related). The `Protocol` list must contain at least one protocol, which can be `*` if the option is virtually for everything. If `*` is used, it must be the only listed protocol. Recognized protocols are either URL schemes (in uppercase), `TLS` or `TCP`. If the `Protocol` list contains `TLS`, then there must also be a `TLS-backend` list, specifying `All` or a list of what TLS backends that work with this option. The available TLS backends are: - `BearSSL` - `GnuTLS` - `mbedTLS` - `OpenSSL` (also covers BoringSSL, LibreSSL, quictls, AWS-LC and AmiSSL) - `rustls` - `Schannel` - `Secure Transport` - `wolfSSL` - `All`: all TLS backends Following the header in the file, is the manual page using markdown-like syntax: ~~~ # NAME a page - this is a page descriving something # SYNOPSIS ~~~c #include CURLcode curl_easy_setopt(CURL *handle, CURLOPT_AWS_SIGV4, char *param); ~~~ ~~~ Quoted source code should start with `~~~c` and end with `~~~` while regular quotes can start with `~~~` or just be indented with 4 spaces. Headers at top-level `#` get converted to `.SH`. `nroff2cd` supports the `##` next level header which gets converted to `.IP`. Write bold words or phrases within `**` like: This is a **bold** word. Write italics like: This is *italics*. Due to how man pages do not support backticks especially formatted, such occurrences in the source are instead just using italics in the generated output: This `word` appears in italics. When generating the nroff output, the tooling removes superfluous newlines, meaning they can be used freely in the source file to make the text more readable. To make sure curldown documents render correctly as markdown, all literal occurrences of `<` or `>` need to be escaped by a leading backslash. ## Generating contents `# %PROTOCOLS%` - inserts a **PROTOCOLS** section based on the metadata provided in the header. `# %AVAILABILITY%` - inserts an **AVAILABILITY** section based on the metadata provided in the header. ## Symbols All mentioned curl symbols that have their own man pages, like `curl_easy_perform(3)` are automatically rendered using italics in the output without having to enclose it with asterisks. This helps ensuring that they get converted to links properly later in the HTML version on the website, as converted with `roffit`. This makes the curldown text easier to read even when mentioning many curl symbols. This auto-linking works for patterns matching `(lib|)curl[^ ]*(3)`. curl-8.14.1/docs/DEPRECATE.md0000644000000000000000000000503115017756261013517 0ustar0000000000000000 # Items to be removed from future curl releases If any of these deprecated features is a cause for concern for you, please email the [curl-library mailing list](https://lists.haxx.se/listinfo/curl-library) as soon as possible and explain to us why this is a problem for you and how your use case cannot be satisfied properly using a workaround. ## TLS libraries without 1.3 support curl drops support for TLS libraries without TLS 1.3 capability after May 2025. It requires that a curl build using the library should be able to negotiate and use TLS 1.3, or else it is not good enough. As of May 2024, the libraries that need to get fixed to remain supported after May 2025 are: BearSSL and Secure Transport. ## msh3 support The msh3 backed for QUIC and HTTP/3 was introduced in April 2022 but has never been made to work properly. It has seen no visible traction or developer activity from the msh3 main author (or anyone else seemingly interested) in two years. As a non-functional backend, it only adds friction and "weight" to the development and maintenance. Meanwhile, we have a fully working backend in the ngtcp2 one and we have two fully working backends in OpenSSL-QUIC and quiche well on their way of ending their experimental status in a future. We remove msh3 support from the curl source tree in July 2025. ## winbuild build system curl drops support for the winbuild build method after September 2025. We recommend migrating to CMake. See the migration guide in `docs/INSTALL-CMAKE.md`. ## Windows CE Windows CE "mainstream support" ended on October 9, 2018, and "Extended Support" ended on October 10, 2023. curl drops all support in November 2025. ## VS2008 curl drops support for getting built with Microsoft Visual Studio 2008 in November 2025. The only reason we kept support for this version is for Windows CE - and we intend to remove support for that Operating System in this time frame as well. Bumping the minimum to VS2010. VS2008 is a pain to support. Previous discussion and details: https://github.com/curl/curl/discussions/15972 ## Past removals - axTLS (removed in 7.63.0) - Pipelining (removed in 7.65.0) - PolarSSL (removed in 7.69.0) - NPN (removed in 7.86.0) - Support for systems without 64-bit data types (removed in 8.0.0) - NSS (removed in 8.3.0) - gskit (removed in 8.3.0) - MinGW v1 (removed in 8.4.0) - NTLM_WB (removed in 8.8.0) - space-separated `NOPROXY` patterns (removed in 8.9.0) - hyper (removed in 8.12.0) curl-8.14.1/docs/DISTROS.md0000644000000000000000000002523515017756261013362 0ustar0000000000000000 # curl distros Lots of organizations distribute curl packages to end users. This is a collection of pointers to where to learn more about curl on and with each distro. Those marked *Rolling Release* typically run the latest version of curl and are therefore less likely to have back-ported patches to older versions. We discuss curl distro issues, patches and collaboration on the [curl-distros mailing list](https://lists.haxx.se/listinfo/curl-distros) ([list archives](https://curl.se/mail/list.cgi?list=curl-distros)). ## AlmaLinux - curl package source and patches: https://git.almalinux.org/rpms/curl/ - curl issues: https://bugs.almalinux.org/view_all_bug_page.php click Category and choose curl - curl security: https://errata.almalinux.org/ search for curl ## Alpine Linux - curl: https://pkgs.alpinelinux.org/package/edge/main/x86_64/curl - curl issues: https://gitlab.alpinelinux.org/alpine/aports/-/issues - curl security: https://security.alpinelinux.org/srcpkg/curl - curl package source and patches: https://gitlab.alpinelinux.org/alpine/aports/-/tree/master/main/curl ## Alt Linux - curl: https://packages.altlinux.org/en/search/?q=curl - curl issues: https://packages.altlinux.org/en/sisyphus/srpms/curl/issues/ - curl patches: https://git.altlinux.org/gears/c/curl.git?p=curl.git;a=tree;f=.gear ## Arch Linux *Rolling Release* - curl: https://archlinux.org/packages/core/x86_64/curl/ - curl issues: https://gitlab.archlinux.org/archlinux/packaging/packages/curl/-/issues - curl security: https://security.archlinux.org/package/curl - curl wiki: https://wiki.archlinux.org/title/CURL ## Buildroot *Rolling Release* - curl package source and patches: https://git.buildroot.net/buildroot/tree/package/libcurl - curl issues: https://bugs.buildroot.org/buglist.cgi?quicksearch=curl ## Chimera - curl package source and patches: https://github.com/chimera-linux/cports/tree/master/main/curl ## Clear Linux *Rolling Release* - curl: https://github.com/clearlinux-pkgs/curl - curl issues: https://github.com/clearlinux/distribution/issues ## Conary - curl: https://github.com/conan-io/conan-center-index/tree/master/recipes/libcurl - curl issues: https://github.com/conan-io/conan-center-index/issues - curl patches: https://github.com/conan-io/conan-center-index/tree/master/recipes/libcurl (in `all/patches/*`, if any) ## conda-forge - curl: https://github.com/conda-forge/curl-feedstock - curl issues: https://github.com/conda-forge/curl-feedstock/issues ## CRUX - curl: https://crux.nu/portdb/?a=search&q=curl - curl issues: https://git.crux.nu/ports/core/issues/?type=all&state=open&q=curl ## curl-for-win (this is the official curl binaries for Windows shipped by the curl project) *Rolling Release* - curl: https://curl.se/windows/ - curl patches: https://github.com/curl/curl-for-win/blob/main/curl.patch (if any) - build-specific issues: https://github.com/curl/curl-for-win/issues Issues and patches for this are managed in the main curl project. ## Cygwin - curl: https://cygwin.com/cgit/cygwin-packages/curl/tree/curl.cygport - curl patches: https://cygwin.com/cgit/cygwin-packages/curl/tree - curl issues: https://inbox.sourceware.org/cygwin/?q=s%3Acurl ## Cygwin (cross mingw64) - mingw64-x86_64-curl: https://cygwin.com/cgit/cygwin-packages/mingw64-x86_64-curl/tree/mingw64-x86_64-curl.cygport - mingw64-x86_64-curl patches: https://cygwin.com/cgit/cygwin-packages/mingw64-x86_64-curl/tree - mingw64-x86_64-curl issues: https://inbox.sourceware.org/cygwin/?q=s%3Amingw64-x86_64-curl ## Debian - curl: https://tracker.debian.org/pkg/curl - curl issues: https://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=curl - curl patches: https://udd.debian.org/patches.cgi?src=curl - curl patches: https://salsa.debian.org/debian/curl (in debian/* branches, inside the folder debian/patches) ## Fedora - curl: https://src.fedoraproject.org/rpms/curl - curl issues: [bugzilla](https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&classification=Fedora&product=Fedora&product=Fedora%20EPEL&component=curl) - curl patches: [list of patches in package git](https://src.fedoraproject.org/rpms/curl/tree/rawhide) ## FreeBSD - curl: https://cgit.freebsd.org/ports/tree/ftp/curl - curl patches: https://cgit.freebsd.org/ports/tree/ftp/curl - curl issues: https://bugs.freebsd.org/bugzilla/buglist.cgi?bug_status=__open__&order=Importance&product=Ports%20%26%20Packages&query_format=advanced&short_desc=curl&short_desc_type=allwordssubstr ## Gentoo Linux *Rolling Release* - curl: https://packages.gentoo.org/packages/net-misc/curl - curl issues: https://bugs.gentoo.org/buglist.cgi?quicksearch=net-misc/curl - curl package sources and patches: https://gitweb.gentoo.org/repo/gentoo.git/tree/net-misc/curl/ ## GNU Guix *Rolling Release* - curl: https://git.savannah.gnu.org/gitweb/?p=guix.git;a=blob;f=gnu/packages/curl.scm;hb=HEAD - curl issues: https://issues.guix.gnu.org/search?query=curl ## Homebrew *Rolling Release* - curl: https://formulae.brew.sh/formula/curl Homebrew's policy is that all patches and issues should be submitted upstream unless it is specific to Homebrew's way of packaging software. ## MacPorts *Rolling Release* - curl: https://github.com/macports/macports-ports/tree/master/net/curl - curl issues: https://trac.macports.org/query?0_port=curl&0_port_mode=%7E&0_status=%21closed - curl patches: https://github.com/macports/macports-ports/tree/master/net/curl/files ## Mageia - curl: https://svnweb.mageia.org/packages/cauldron/curl/current/SPECS/curl.spec?view=markup - curl issues: https://bugs.mageia.org/buglist.cgi?bug_status=NEW&bug_status=UNCONFIRMED&bug_status=NEEDINFO&bug_status=UPSTREAM&bug_status=ASSIGNED&component=RPM%20Packages&f1=cf_rpmpkg&list_id=176576&o1=casesubstring&product=Mageia&query_format=advanced&v1=curl - curl patches: https://svnweb.mageia.org/packages/cauldron/curl/current/SOURCES/ - curl patches in stable distro releases: https://svnweb.mageia.org/packages/updates//curl/current/SOURCES/ - curl security: https://advisories.mageia.org/src_curl.html ## MSYS2 *Rolling Release* - curl: https://github.com/msys2/MSYS2-packages/tree/master/curl - curl issues: https://github.com/msys2/MSYS2-packages/issues - curl patches: https://github.com/msys2/MSYS2-packages/tree/master/curl (`*.patch`) ## MSYS2 (mingw-w64) *Rolling Release* - curl: https://github.com/msys2/MINGW-packages/tree/master/mingw-w64-curl - curl issues: https://github.com/msys2/MINGW-packages/issues - curl patches: https://github.com/msys2/MINGW-packages/tree/master/mingw-w64-curl (`*.patch`) ## Muldersoft *Rolling Release* - curl: https://github.com/lordmulder/cURL-build-win32 - curl issues: https://github.com/lordmulder/cURL-build-win32/issues - curl patches: https://github.com/lordmulder/cURL-build-win32/tree/master/patch ## NixOS - curl: https://github.com/NixOS/nixpkgs/blob/master/pkgs/tools/networking/curl/default.nix (TODO: page has moved) - curl issues: https://github.com/NixOS/nixpkgs nixpkgs is the package repository used by the NixOS Linux distribution, but can also be used on other distributions ## OmniOS - curl: https://github.com/omniosorg/omnios-build/tree/master/build/curl - curl issues: https://github.com/omniosorg/omnios-build/issues - curl patches: https://github.com/omniosorg/omnios-build/tree/master/build/curl/patches ## OpenIndiana - curl: https://github.com/OpenIndiana/oi-userland/tree/oi/hipster/components/web/curl - curl issues: https://www.illumos.org/projects/openindiana/issues - curl patches: https://github.com/OpenIndiana/oi-userland/tree/oi/hipster/components/web/curl/patches ## OpenSUSE - curl source and patches: https://build.opensuse.org/package/show/openSUSE%3AFactory/curl ## Oracle Solaris - curl: https://github.com/oracle/solaris-userland/tree/master/components/curl - curl issues: https://support.oracle.com/ (requires support contract) - curl patches: https://github.com/oracle/solaris-userland/tree/master/components/curl/patches ## OpenEmbedded / Yocto Project *Rolling Release* - curl: https://layers.openembedded.org/layerindex/recipe/5765/ - curl issues: https://bugzilla.yoctoproject.org/ - curl patches: https://git.openembedded.org/openembedded-core/tree/meta/recipes-support/curl ## PLD Linux - curl package source and patches: https://github.com/pld-linux/curl - curl issues: https://bugs.launchpad.net/pld-linux?field.searchtext=curl&search=Search&field.status%3Alist=NEW&field.status%3Alist=INCOMPLETE_WITH_RESPONSE&field.status%3Alist=INCOMPLETE_WITHOUT_RESPONSE&field.status%3Alist=CONFIRMED&field.status%3Alist=TRIAGED&field.status%3Alist=INPROGRESS&field.status%3Alist=FIXCOMMITTED&field.assignee=&field.bug_reporter=&field.omit_dupes=on&field.has_patch=&field.has_no_package= ## pkgsrc - curl: https://github.com/NetBSD/pkgsrc/tree/trunk/www/curl - curl issues: https://github.com/NetBSD/pkgsrc/issues - curl patches: https://github.com/NetBSD/pkgsrc/tree/trunk/www/curl/patches ## Red Hat Enterprise Linux / CentOS Stream - curl: https://kojihub.stream.centos.org/koji/packageinfo?packageID=217 - curl issues: https://issues.redhat.com/secure/CreateIssueDetails!init.jspa?pid=12332745&issuetype=1&components=12377466&priority=10300 - curl patches: https://gitlab.com/redhat/centos-stream/rpms/curl ## Rocky Linux - curl: https://git.rockylinux.org/staging/rpms/curl/-/blob/r9/SPECS/curl.spec - curl issues: https://bugs.rockylinux.org - curl patches: https://git.rockylinux.org/staging/rpms/curl/-/tree/r9/SOURCES ## SerenityOS - curl: https://github.com/SerenityOS/serenity/tree/master/Ports/curl - curl issues: https://github.com/SerenityOS/serenity/issues?q=label%3Aports - curl patches: https://github.com/SerenityOS/serenity/tree/master/Ports/curl/patches ## SmartOS - curl: https://github.com/TritonDataCenter/illumos-extra/tree/master/curl - curl issues: https://github.com/TritonDataCenter/illumos-extra/issues - curl patches: https://github.com/TritonDataCenter/illumos-extra/tree/master/curl/Patches ## SPACK - curl package source and patches: https://github.com/spack/spack/tree/develop/var/spack/repos/builtin/packages/curl ## vcpkg *Rolling Release* - curl: https://github.com/microsoft/vcpkg/tree/master/ports/curl - curl issues: https://github.com/microsoft/vcpkg/issues - curl patches: https://github.com/microsoft/vcpkg/tree/master/ports/curl (`*.patch`) ## Void Linux *Rolling Release* - curl: https://github.com/void-linux/void-packages/tree/master/srcpkgs/curl - curl issues: https://github.com/void-linux/void-packages/issues - curl patches: https://github.com/void-linux/void-packages/tree/master/srcpkgs/curl/patches ## Wolfi *Rolling Release* - curl: https://github.com/wolfi-dev/os/blob/main/curl.yaml curl-8.14.1/docs/EARLY-RELEASE.md0000644000000000000000000000557115017756261014166 0ustar0000000000000000 # How to determine if an early patch release is warranted In the curl project we do releases every 8 weeks. Unless we break the cycle and do an early patch release. We do frequent releases partly to always have the next release "not too far away". ## Bugfix During the release cycle, and especially in the beginning of a new cycle (the so-called "cool down" period), there are times when a bug is reported and after it has been subsequently fixed correctly, the question might be asked: is this bug and associated fix important enough for an early patch release? The question can only be properly asked when a fix has been created and landed in the git master branch. ## Early release An early patch release means that we ship a new, complete and full release called `major.minor.patch` where the `patch` part is increased by one since the previous release. A curl release is a curl release. There is no small or big and we never release just a patch. There is only "release". ## Questions to ask - Is there a security advisory rated high or critical? - Is there a data corruption bug? - Did the bug cause an API/ABI breakage? - Does the problem annoy a significant share of the user population? If the answer is yes to one or more of the above, an early release might be warranted. More questions to ask ourselves when doing the assessment if the answers to the three ones above are all 'no'. - Does the bug cause curl to prematurely terminate? - How common is the affected buggy option/feature/protocol/platform to get used? - How large is the estimated impacted user base? - Does the bug block something crucial for applications or other adoption of curl "out there" ? - Does the bug cause problems for curl developers or others on "the curl team" ? - Is the bug limited to the curl tool only? That might have a smaller impact than a bug also present in libcurl. - Is there a (decent) workaround? - Is it a regression? Is the bug introduced in this release? - Can the bug be fixed "easily" by applying a patch? - Does the bug break the build? Most users do not build curl themselves. - How long is it until the already scheduled next release? - Can affected users safely rather revert to a former release until the next scheduled release? - Is it a performance regression with no functionality side-effects? If so it has to be substantial. ## If an early release is deemed necessary Unless done for security or similarly important reasons, an early release should not be done within a week of the previous release. This, to enable us to collect and bundle more fixes into the same release to make the release more worthwhile for everyone and to allow more time for fixes to settle and things to get tested. Getting a release in shape and done in style is work that should not be rushed. curl-8.14.1/docs/ECH.md0000644000000000000000000004657415017756261012643 0ustar0000000000000000 # Building curl with HTTPS-RR and ECH support We have added support for ECH to curl. It can use HTTPS RRs published in the DNS if curl uses DoH, or else can accept the relevant ECHConfigList values from the command line. This works with OpenSSL, wolfSSL, BoringSSL, AWS-LC or rustls-ffi as the TLS provider. This feature is EXPERIMENTAL. DO NOT USE IN PRODUCTION. This should however provide enough of a proof-of-concept to prompt an informed discussion about a good path forward for ECH support in curl. ## OpenSSL Build To build the OpenSSL project's ECH feature branch: ```bash cd $HOME/code git clone https://github.com/openssl/openssl cd openssl git checkout feature/ech ./config --libdir=lib --prefix=$HOME/code/openssl-local-inst ...stuff... make -j8 ...more stuff... make install_sw ...a little bit of stuff... ``` To build curl ECH-enabled, making use of the above: ```bash cd $HOME/code git clone https://github.com/curl/curl cd curl autoreconf -fi LDFLAGS="-Wl,-rpath,$HOME/code/openssl-local-inst/lib/" ./configure --with-ssl=$HOME/code/openssl-local-inst --enable-ech ...lots of output... WARNING: ECH HTTPSRR enabled but marked EXPERIMENTAL... make ...lots more output... ``` If you do not get that WARNING at the end of the ``configure`` command, then ECH is not enabled, so go back some steps and re-do whatever needs re-doing:-) If you want to debug curl then you should add ``--enable-debug`` to the ``configure`` command. In a recent (2024-05-20) build on one machine, configure failed to find the ECH-enabled SSL library, apparently due to the existence of ``$HOME/code/openssl-local-inst/lib/pkgconfig`` as a directory containing various settings. Deleting that directory worked around the problem but may not be the best solution. ## Using ECH and DoH curl supports using DoH for A/AAAA lookups so it was relatively easy to add retrieval of HTTPS RRs in that situation. To use ECH and DoH together: ```bash cd $HOME/code/curl LD_LIBRARY_PATH=$HOME/code/openssl ./src/curl --ech true --doh-url https://one.one.one.one/dns-query https://defo.ie/ech-check.php ... SSL_ECH_STATUS: success good
... ``` The output snippet above is within the HTML for the webpage, when things work. The above works for these test sites: ```bash https://defo.ie/ech-check.php https://draft-13.esni.defo.ie:8413/stats https://draft-13.esni.defo.ie:8414/stats https://crypto.cloudflare.com/cdn-cgi/trace https://tls-ech.dev ``` The list above has 4 different server technologies, implemented by 3 different parties, and includes a case (the port 8414 server) where HelloRetryRequest (HRR) is forced. We currently support the following new curl command line arguments/options: - ``--ech `` - the ``config`` value can be one of: - ``false`` says to not attempt ECH - ``true`` says to attempt ECH, if possible - ``grease`` if attempting ECH is not possible, then send a GREASE ECH extension - ``hard`` hard-fail the connection if ECH cannot be attempted - ``ecl:`` a base64 encoded ECHConfigList, rather than one accessed from the DNS - ``pn:`` override the ``public_name`` from an ECHConfigList Note that in the above "attempt ECH" means the client emitting a TLS ClientHello with a "real" ECH extension, but that does not mean that the relevant server can succeed in decrypting, as things can fail for other reasons. ## Supplying an ECHConfigList on the command line To supply the ECHConfigList on the command line, you might need a bit of cut-and-paste, e.g.: ```bash dig +short https defo.ie 1 . ipv4hint=213.108.108.101 ech=AED+DQA8PAAgACD8WhlS7VwEt5bf3lekhHvXrQBGDrZh03n/LsNtAodbUAAEAAEAAQANY292ZXIuZGVmby5pZQAA ipv6hint=2a00:c6c0:0:116:5::10 ``` Then paste the base64 encoded ECHConfigList onto the curl command line: ```bash LD_LIBRARY_PATH=$HOME/code/openssl ./src/curl --ech ecl:AED+DQA8PAAgACD8WhlS7VwEt5bf3lekhHvXrQBGDrZh03n/LsNtAodbUAAEAAEAAQANY292ZXIuZGVmby5pZQAA https://defo.ie/ech-check.php ... SSL_ECH_STATUS: success good
... ``` The output snippet above is within the HTML for the webpage. If you paste in the wrong ECHConfigList (it changes hourly for ``defo.ie``) you should get an error like this: ```bash LD_LIBRARY_PATH=$HOME/code/openssl ./src/curl -vvv --ech ecl:AED+DQA8yAAgACDRMQo+qYNsNRNj+vfuQfFIkrrUFmM4vogucxKj/4nzYgAEAAEAAQANY292ZXIuZGVmby5pZQAA https://defo.ie/ech-check.php ... * OpenSSL/3.3.0: error:0A00054B:SSL routines::ech required ... ``` There is a reason to want this command line option - for use before publishing an ECHConfigList in the DNS as per the Internet-draft [A well-known URI for publishing ECHConfigList values](https://datatracker.ietf.org/doc/draft-ietf-tls-wkech/). If you do use a wrong ECHConfigList value, then the server might return a good value, via the ``retry_configs`` mechanism. You can see that value in the verbose output, e.g.: ```bash LD_LIBRARY_PATH=$HOME/code/openssl ./src/curl -vvv --ech ecl:AED+DQA8yAAgACDRMQo+qYNsNRNj+vfuQfFIkrrUFmM4vogucxKj/4nzYgAEAAEAAQANY292ZXIuZGVmby5pZQAA https://defo.ie/ech-check.php ... * ECH: retry_configs AQD+DQA8DAAgACBvYqJy+Hgk33wh/ZLBzKSPgwxeop7gvojQzfASq7zeZQAEAAEAAQANY292ZXIuZGVmby5pZQAA/g0APEMAIAAgXkT5r4cYs8z19q5rdittyIX8gfQ3ENW4wj1fVoiJZBoABAABAAEADWNvdmVyLmRlZm8uaWUAAP4NADw2ACAAINXSE9EdXzEQIJZA7vpwCIQsWqsFohZARXChgPsnfI1kAAQAAQABAA1jb3Zlci5kZWZvLmllAAD+DQA8cQAgACASeiD5F+UoSnVoHvA2l1EifUVMFtbVZ76xwDqmMPraHQAEAAEAAQANY292ZXIuZGVmby5pZQAA * ECH: retry_configs for defo.ie from cover.defo.ie, 319 ... ``` At that point, you could copy the base64 encoded value above and try again. For now, this only works for the OpenSSL and BoringSSL/AWS-LC builds. ## Default settings curl has various ways to configure default settings, e.g. in ``$HOME/.curlrc``, so one can set the DoH URL and enable ECH that way: ```bash cat ~/.curlrc doh-url=https://one.one.one.one/dns-query silent ech=true ``` Note that when you use the system's curl command (rather than our ECH-enabled build), it is liable to warn that ``ech`` is an unknown option. If that is an issue (e.g. if some script re-directs stdout and stderr somewhere) then adding the ``silent`` line above seems to be a good enough fix. (Though of course, yet another script could depend on non-silent behavior, so you may have to figure out what you prefer yourself.) That seems to have changed with the latest build, previously ``silent=TRUE`` was what I used in ``~/.curlrc`` but now that seems to cause a problem, so that the following line(s) are ignored. If you want to always use our OpenSSL build you can set ``LD_LIBRARY_PATH`` in the environment: ```bash export LD_LIBRARY_PATH=$HOME/code/openssl ``` When you do the above, there can be a mismatch between OpenSSL versions for applications that check that. A ``git push`` for example fails so you should unset ``LD_LIBRARY_PATH`` before doing that or use a different shell. ```bash git push OpenSSL version mismatch. Built against 30000080, you have 30200000 ... ``` With all that setup as above the command line gets simpler: ```bash ./src/curl https://defo.ie/ech-check.php ... SSL_ECH_STATUS: success good
... ``` The ``--ech true`` option is opportunistic, so tries to do ECH but does not fail if the client for example cannot find any ECHConfig values. The ``--ech hard`` option hard-fails if there is no ECHConfig found in DNS, so for now, that is not a good option to set as a default. Once ECH has really been attempted by the client, if decryption on the server side fails, then curl fails. ## Code changes for ECH support when using DoH Code changes are ``#ifdef`` protected via ``USE_ECH`` or ``USE_HTTPSRR``: - ``USE_HTTPSRR`` is used for HTTPS RR retrieval code that could be generically used should non-ECH uses for HTTPS RRs be identified, e.g. use of ALPN values or IP address hints. - ``USE_ECH`` protects ECH specific code. There are various obvious code blocks for handling the new command line arguments which are not described here, but should be fairly clear. As shown in the ``configure`` usage above, there are ``configure.ac`` changes that allow separately dis/enabling ``USE_HTTPSRR`` and ``USE_ECH``. If ``USE_ECH`` is enabled, then ``USE_HTTPSRR`` is forced. In both cases ``CURL_DISABLE_DOH`` must not be enabled. (There may be some configuration conflicts available for the determined :-) The main functional change, as you would expect, is in ``lib/vtls/openssl.c`` where an ECHConfig, if available from command line or DNS cache, is fed into the OpenSSL library via the new APIs implemented in our OpenSSL fork for that purpose. This code also implements the opportunistic (``--ech true``) or hard-fail (``--ech hard``) logic. Other than that, the main additions are in ``lib/doh.c`` where we reuse ``dohprobe()`` to retrieve an HTTPS RR value for the target domain. If such a value is found, that is stored using a new ``doh_store_https()`` function in a new field in the ``dohentry`` structure. The qname for the DoH query is modified if the port number is not 443, as defined in the SVCB specification. When the DoH process has worked, ``Curl_doh_is_resolved()`` now also returns the relevant HTTPS RR value data in the ``Curl_dns_entry`` structure. That is later accessed when the TLS session is being established, if ECH is enabled (from ``lib/vtls/openssl.c`` as described above). ## Limitations Things that need fixing, but that can probably be ignored for the moment: - We could easily add code to make use of an ``alpn=`` value found in an HTTPS RR, passing that on to OpenSSL for use as the "inner" ALPN value, but have yet to do that. Current limitations (more interesting than the above): - Only the first HTTPS RR value retrieved is actually processed as described above, that could be extended in future, though picking the "right" HTTPS RR could be non-trivial if multiple RRs are published - matching IP address hints versus A/AAAA values might be a good basis for that. Last I checked though, browsers supporting ECH did not handle multiple HTTPS RRs well, though that needs re-checking as it has been a while. - It is unclear how one should handle any IP address hints found in an HTTPS RR. It may be that a bit of consideration of how "multi-CDN" deployments might emerge would provide good answers there, but for now, it is not clear how best curl might handle those values when present in the DNS. - The SVCB/HTTPS RR specification supports a new "CNAME at apex" indirection ("aliasMode") - the current code takes no account of that at all. One could envisage implementing the equivalent of following CNAMEs in such cases, but it is not clear if that'd be a good plan. (As of now, chrome browsers do not seem to have any support for that "aliasMode" and we have not checked Firefox for that recently.) - We have not investigated what related changes or additions might be needed for applications using libcurl, as opposed to use of curl as a command line tool. - We have not yet implemented tests as part of the usual curl test harness as doing so would seem to require re-implementing an ECH-enabled server as part of the curl test harness. For now, we have a ``./tests/ech_test.sh`` script that attempts ECH with various test servers and with many combinations of the allowed command line options. While that is a useful test and has find issues, it is not comprehensive and we are not (as yet) sure what would be the right level of coverage. When running that script you should not have a ``$HOME/.curlrc`` file that affects ECH or some of the negative tests could produce spurious failures. ## Building with cmake To build with cmake, assuming our ECH-enabled OpenSSL is as before: ```bash cd $HOME/code git clone https://github.com/curl/curl cd curl mkdir build cd build cmake -DOPENSSL_ROOT_DIR=$HOME/code/openssl -DUSE_ECH=1 .. ... make ... [100%] Built target curl ``` The binary produced by the cmake build does not need any ECH-specific ``LD_LIBRARY_PATH`` setting. ## BoringSSL build BoringSSL is also supported by curl and also supports ECH, so to build with that, instead of our ECH-enabled OpenSSL: ```bash cd $HOME/code git clone https://boringssl.googlesource.com/boringssl cd boringssl cmake -DCMAKE_INSTALL_PREFIX:PATH=$HOME/code/boringssl/inst -DBUILD_SHARED_LIBS=1 make ... make install ``` Then: ```bash cd $HOME/code git clone https://github.com/curl/curl cd curl autoreconf -fi LDFLAGS="-Wl,-rpath,$HOME/code/boringssl/inst/lib" ./configure --with-ssl=$HOME/code/boringssl/inst --enable-ech ...lots of output... WARNING: ECH HTTPSRR enabled but marked EXPERIMENTAL. Use with caution. make ``` The BoringSSL/AWS-LC APIs are fairly similar to those in our ECH-enabled OpenSSL fork, so code changes are also in ``lib/vtls/openssl.c``, protected via ``#ifdef OPENSSL_IS_BORINGSSL`` and are mostly obvious API variations. The BoringSSL/AWS-LC APIs however do not support the ``--ech pn:`` command line variant as of now. ## wolfSSL build wolfSSL also supports ECH and can be used by curl, so here's how: ```bash cd $HOME/code git clone https://github.com/wolfSSL/wolfssl cd wolfssl ./autogen.sh ./configure --prefix=$HOME/code/wolfssl/inst --enable-ech --enable-debug --enable-opensslextra make make install ``` The install prefix (``inst``) in the above causes wolfSSL to be installed there and we seem to need that for the curl configure command to work out. The ``--enable-opensslextra`` turns out (after much faffing about;-) to be important or else we get build problems with curl below. ```bash cd $HOME/code git clone https://github.com/curl/curl cd curl autoreconf -fi ./configure --with-wolfssl=$HOME/code/wolfssl/inst --enable-ech make ``` There are some known issues with the ECH implementation in wolfSSL: - The main issue is that the client currently handles HelloRetryRequest incorrectly. [HRR issue](https://github.com/wolfSSL/wolfssl/issues/6802).) The HRR issue means that the client does not work for [this ECH test web site](https://tls-ech.dev) and any other similarly configured sites. - There is also an issue related to so-called middlebox compatibility mode. [middlebox compatibility issue](https://github.com/wolfSSL/wolfssl/issues/6774) ### Code changes to support wolfSSL There are what seem like oddball differences: - The DoH URL in``$HOME/.curlrc`` can use `1.1.1.1` for OpenSSL but has to be `one.one.one.one` for wolfSSL. The latter works for both, so OK, we us that. - There seems to be some difference in CA databases too - the wolfSSL version does not like ``defo.ie``, whereas the system and OpenSSL ones do. We can ignore that for our purposes via ``--insecure``/``-k`` but would need to fix for a real setup. (Browsers do like those certificates though.) Then there are some functional code changes: - tweak to ``configure.ac`` to check if wolfSSL has ECH or not - added code to ``lib/vtls/wolfssl.c`` mirroring what's done in the OpenSSL equivalent above. - wolfSSL does not support ``--ech false`` or the ``--ech pn:`` command line argument. The lack of support for ``--ech false`` is because wolfSSL has decided to always at least GREASE if built to support ECH. In other words, GREASE is a compile time choice for wolfSSL, but a runtime choice for OpenSSL or BoringSSL/AWS-LC. (Both are reasonable.) ## Additional notes ### Supporting ECH without DoH All of the above only applies if DoH is being used. There should be a use-case for ECH when DoH is not used by curl - if a system stub resolver supports DoT or DoH, then, considering only ECH and the network threat model, it would make sense for curl to support ECH without curl itself using DoH. The author for example uses a combination of stubby+unbound as the system resolver listening on localhost:53, so would fit this use-case. That said, it is unclear if this is a niche that is worth trying to address. (The author is just as happy to let curl use DoH to talk to the same public recursive that stubby might use:-) Assuming for the moment this is a use-case we would like to support, then if DoH is not being used by curl, it is not clear at this time how to provide support for ECH. One option would seem to be to extend the ``c-ares`` library to support HTTPS RRs, but in that case it is not now clear whether such changes would be attractive to the ``c-ares`` maintainers, nor whether the "tag=value" extensibility inherent in the HTTPS/SVCB specification is a good match for the ``c-ares`` approach of defining structures specific to decoded answers for each supported RRtype. We are also not sure how many downstream curl deployments actually make use of the ``c-ares`` library, which would affect the utility of such changes. Another option might be to consider using some other generic DNS library that does support HTTPS RRs, but it is unclear if such a library could or would be used by all or almost all curl builds and downstream releases of curl. Our current conclusion is that doing the above is likely best left until we have some experience with the "using DoH" approach, so we are going to punt on this for now. ### Debugging Just a note to self as remembering this is a nuisance: ```bash LD_LIBRARY_PATH=$HOME/code/openssl:./lib/.libs gdb ./src/.libs/curl ``` ### Localhost testing It can be useful to be able to run against a localhost OpenSSL ``s_server`` for testing. We have published instructions for such [localhost tests](https://github.com/defo-project/ech-dev-utils/blob/main/howtos/localhost-tests.md) in another repository. Once you have that set up, you can start a server and then run curl against that: ```bash cd $HOME/code/ech-dev-utils ./scripts/echsvr.sh -d ... ``` The ``echsvr.sh`` script supports many ECH-related options. Use ``echsvr.sh -h`` for details. In another window: ```bash cd $HOME/code/curl/ ./src/curl -vvv --insecure --connect-to foo.example.com:8443:localhost:8443 --ech ecl:AD7+DQA6uwAgACBix2B78sX+EQhEbxMspDOc8Z3xVS5aQpYP0Cxpc2AWPAAEAAEAAQALZXhhbXBsZS5jb20AAA== ``` ### Automated use of ``retry_configs`` not supported so far... As of now we have not added support for using ``retry_config`` handling in the application - for a command line tool, one can just use ``dig`` (or ``kdig``) to get the HTTPS RR and pass the ECHConfigList from that on the command line, if needed, or one can access the value from command line output in verbose more and then reuse that in another invocation. Both our OpenSSL fork and BoringSSL/AWS-LC have APIs for both controlling GREASE and accessing and logging ``retry_configs``, it seems wolfSSL has neither. ### Testing ECH We have yet to add a robust test setup for ECH as that requires an ECH-enabled test server. We have added two basic tests though, aiming to ensure that the client sends a GREASE or real ECH extension when requested, and reacts correctly to the failure of ECH in the latter case. (Given that `stunnel` has no ECH support.) As with other similar tests, those tests require the `stunnel` tool be installed. On Ubuntu `sudo apt install stunnel4` achieves that. The test cases are: - data/test4000: GREASE ECH, expected result: connection succeeds - data/test4001: real ECH, connection fails with error 101 (ECH required) curl-8.14.1/docs/EXPERIMENTAL.md0000644000000000000000000000532515017756261014126 0ustar0000000000000000 # Experimental Some features and functionality in curl and libcurl are considered **EXPERIMENTAL**. Experimental support in curl means: 1. Experimental features are provided to allow users to try them out and provide feedback on functionality and API etc before they ship and get "carved in stone". 2. You must enable the feature when invoking configure as otherwise curl is not built with the feature present. 3. We strongly advise against using this feature in production. 4. **We reserve the right to change behavior** of the feature without sticking to our API/ABI rules as we do for regular features, as long as it is marked experimental. 5. Experimental features are clearly marked so in documentation. Beware. ## Graduation 1. Each experimental feature should have a set of documented requirements of what is needed for that feature to graduate. Graduation means being removed from the list of experiments. 2. An experiment should NOT graduate if it needs test cases to be disabled, unless they are for minor features that are clearly documented as not provided by the experiment and then the disabling should be managed inside each affected test case. ## Experimental features right now ### HTTP/3 support (non-ngtcp2 backends) Graduation requirements: - The used libraries should be considered out-of-beta with a reasonable expectation of a stable API going forward. - Using HTTP/3 with the given build should perform without risking busy-loops ### The Rustls backend Graduation requirements: - a reasonable expectation of a stable API going forward. ## ECH Use of the HTTPS resource record and Encrypted Client Hello (ECH) when using DoH Graduation requirements: - ECH support exists in at least one widely used TLS library apart from BoringSSL and wolfSSL. - feedback from users saying that ECH works for their use cases - it has been given time to mature, so no earlier than April 2025 (twelve months after being added here) ## SSL session import/export Import/Export of SSL sessions tickets in libcurl and curl command line option '--ssl-session ' for faster TLS handshakes and use of TLSv1.3/QUIC Early Data (0-RTT). Graduation requirements: - the implementation is considered safe - feedback from users saying that session export works for their use cases ## HTTPS RR HTTPS records support is a requirement for ECH but is provided as a stand-alone feature that is itself considered EXPERIMENTAL. Graduation requirements: - HTTPS records work for DoH, c-ares and the threaded resolver - HTTPS records can control ALPN and port number, at least - There are options to control HTTPS use curl-8.14.1/docs/FAQ0000644000000000000000000020456015017756261012243 0ustar0000000000000000 _ _ ____ _ ___| | | | _ \| | / __| | | | |_) | | | (__| |_| | _ <| |___ \___|\___/|_| \_\_____| FAQ 1. Philosophy 1.1 What is cURL? 1.2 What is libcurl? 1.3 What is curl not? 1.4 When will you make curl do XXXX ? 1.5 Who makes curl? 1.6 What do you get for making curl? 1.7 What about CURL from curl.com? 1.8 I have a problem, who do I mail? 1.9 Where do I buy commercial support for curl? 1.10 How many are using curl? 1.11 Why do you not update ca-bundle.crt 1.12 I have a problem, who can I chat with? 1.13 curl's ECCN number? 1.14 How do I submit my patch? 1.15 How do I port libcurl to my OS? 2. Install Related Problems 2.1 configure fails when using static libraries 2.2 Does curl work/build with other SSL libraries? 2.3 How do I upgrade curl.exe in Windows? 2.4 Does curl support SOCKS (RFC 1928) ? 3. Usage Problems 3.1 curl: (1) SSL is disabled, https: not supported 3.2 How do I tell curl to resume a transfer? 3.3 Why does my posting using -F not work? 3.4 How do I tell curl to run custom FTP commands? 3.5 How can I disable the Accept: */* header? 3.6 Does curl support ASP, XML, XHTML or HTML version Y? 3.7 Can I use curl to delete/rename a file through FTP? 3.8 How do I tell curl to follow HTTP redirects? 3.9 How do I use curl in my favorite programming language? 3.10 What about SOAP, WebDAV, XML-RPC or similar protocols over HTTP? 3.11 How do I POST with a different Content-Type? 3.12 Why do FTP-specific features over HTTP proxy fail? 3.13 Why do my single/double quotes fail? 3.14 Does curl support JavaScript or PAC (automated proxy config)? 3.15 Can I do recursive fetches with curl? 3.16 What certificates do I need when I use SSL? 3.17 How do I list the root directory of an FTP server? 3.18 Can I use curl to send a POST/PUT and not wait for a response? 3.19 How do I get HTTP from a host using a specific IP address? 3.20 How to SFTP from my user's home directory? 3.21 Protocol xxx not supported or disabled in libcurl 3.22 curl -X gives me HTTP problems 4. Running Problems 4.2 Why do I get problems when I use & or % in the URL? 4.3 How can I use {, }, [ or ] to specify multiple URLs? 4.4 Why do I get downloaded data even though the webpage does not exist? 4.5 Why do I get return code XXX from an HTTP server? 4.5.1 "400 Bad Request" 4.5.2 "401 Unauthorized" 4.5.3 "403 Forbidden" 4.5.4 "404 Not Found" 4.5.5 "405 Method Not Allowed" 4.5.6 "301 Moved Permanently" 4.6 Can you tell me what error code 142 means? 4.7 How do I keep usernames and passwords secret in curl command lines? 4.8 I found a bug 4.9 curl cannot authenticate to a server that requires NTLM? 4.10 My HTTP request using HEAD, PUT or DELETE does not work 4.11 Why do my HTTP range requests return the full document? 4.12 Why do I get "certificate verify failed" ? 4.13 Why is curl -R on Windows one hour off? 4.14 Redirects work in browser but not with curl 4.15 FTPS does not work 4.16 My HTTP POST or PUT requests are slow 4.17 Non-functional connect timeouts on Windows 4.18 file:// URLs containing drive letters (Windows, NetWare) 4.19 Why does not curl return an error when the network cable is unplugged? 4.20 curl does not return error for HTTP non-200 responses 5. libcurl Issues 5.1 Is libcurl thread-safe? 5.2 How can I receive all data into a large memory chunk? 5.3 How do I fetch multiple files with libcurl? 5.4 Does libcurl do Winsock initialization on Win32 systems? 5.5 Does CURLOPT_WRITEDATA and CURLOPT_READDATA work on Win32 ? 5.6 What about Keep-Alive or persistent connections? 5.7 Link errors when building libcurl on Windows 5.8 libcurl.so.X: open failed: No such file or directory 5.9 How does libcurl resolve hostnames? 5.10 How do I prevent libcurl from writing the response to stdout? 5.11 How do I make libcurl not receive the whole HTTP response? 5.12 Can I make libcurl fake or hide my real IP address? 5.13 How do I stop an ongoing transfer? 5.14 Using C++ non-static functions for callbacks? 5.15 How do I get an FTP directory listing? 5.16 I want a different time-out 5.17 Can I write a server with libcurl? 5.18 Does libcurl use threads? 6. License Issues 6.1 I have a GPL program, can I use the libcurl library? 6.2 I have a closed-source program, can I use the libcurl library? 6.3 I have a BSD licensed program, can I use the libcurl library? 6.4 I have a program that uses LGPL libraries, can I use libcurl? 6.5 Can I modify curl/libcurl for my program and keep the changes secret? 6.6 Can you please change the curl/libcurl license to XXXX? 6.7 What are my obligations when using libcurl in my commercial apps? 7. PHP/CURL Issues 7.1 What is PHP/CURL? 7.2 Who wrote PHP/CURL? 7.3 Can I perform multiple requests using the same handle? 7.4 Does PHP/CURL have dependencies? 8. Development 8.1 Why does curl use C89? 8.2 Will curl be rewritten? ============================================================================== 1. Philosophy 1.1 What is cURL? cURL is the name of the project. The name is a play on 'Client for URLs', originally with URL spelled in uppercase to make it obvious it deals with URLs. The fact it can also be read as 'see URL' also helped, it works as an abbreviation for "Client URL Request Library" or why not the recursive version: "curl URL Request Library". The cURL project produces two products: libcurl A client-side URL transfer library, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl supports HTTPS certificates, HTTP POST, HTTP PUT, FTP uploading, Kerberos, SPNEGO, HTTP form based upload, proxies, cookies, user+password authentication, file transfer resume, http proxy tunneling and more. libcurl is highly portable, it builds and works identically on numerous platforms, including Solaris, NetBSD, FreeBSD, OpenBSD, Darwin, HP-UX, IRIX, AIX, Tru64, Linux, UnixWare, HURD, Windows, Amiga, OS/2, macOS, Ultrix, QNX, OpenVMS, RISC OS, Novell NetWare, DOS, Symbian, OSF, Android, Minix, IBM TPF and more... libcurl is free, thread-safe, IPv6 compatible, feature rich, well supported and fast. curl A command line tool for getting or sending data using URL syntax. Since curl uses libcurl, curl supports the same wide range of common Internet protocols that libcurl does. We pronounce curl with an initial k sound. It rhymes with words like girl and earl. This is a short WAV file to help you: https://media.merriam-webster.com/soundc11/c/curl0001.wav There are numerous sub-projects and related projects that also use the word curl in the project names in various combinations, but you should take notice that this FAQ is directed at the command-line tool named curl (and libcurl the library), and may therefore not be valid for other curl-related projects. (There is however a small section for the PHP/CURL in this FAQ.) 1.2 What is libcurl? libcurl is a reliable and portable library for doing Internet data transfers using one or more of its supported Internet protocols. You can use libcurl freely in your application, be it open source, commercial or closed-source. libcurl is most probably the most portable, most powerful and most often used C-based multi-platform file transfer library on this planet - be it open source or commercial. 1.3 What is curl not? curl is not a wget clone. That is a common misconception. Never, during curl's development, have we intended curl to replace wget or compete on its market. curl is targeted at single-shot file transfers. curl is not a website mirroring program. If you want to use curl to mirror something: fine, go ahead and write a script that wraps around curl or use libcurl to make it reality. curl is not an FTP site mirroring program. Sure, get and send FTP with curl but if you want systematic and sequential behavior you should write a script (or write a new program that interfaces libcurl) and do it. curl is not a PHP tool, even though it works perfectly well when used from or with PHP (when using the PHP/CURL module). curl is not a program for a single operating system. curl exists, compiles, builds and runs under a wide range of operating systems, including all modern Unixes (and a bunch of older ones too), Windows, Amiga, OS/2, macOS, QNX etc. 1.4 When will you make curl do XXXX ? We love suggestions of what to change in order to make curl and libcurl better. We do however believe in a few rules when it comes to the future of curl: curl -- the command line tool -- is to remain a non-graphical command line tool. If you want GUIs or fancy scripting capabilities, you should look for another tool that uses libcurl. We do not add things to curl that other small and available tools already do well at the side. curl's output can be piped into another program or redirected to another file for the next program to interpret. We focus on protocol related issues and improvements. If you want to do more magic with the supported protocols than curl currently does, chances are good we will agree. If you want to add more protocols, we may agree. If you want someone else to do all the work while you wait for us to implement it for you, that is not a friendly attitude. We spend a considerable time already on maintaining and developing curl. In order to get more out of us, you should consider trading in some of your time and effort in return. Simply go to the GitHub repository which resides at https://github.com/curl/curl, fork the project, and create pull requests with your proposed changes. If you write the code, chances are better that it will get into curl faster. 1.5 Who makes curl? curl and libcurl are not made by any single individual. Daniel Stenberg is project leader and main developer, but other persons' submissions are important and crucial. Anyone can contribute and post their changes and improvements and have them inserted in the main sources (of course on the condition that developers agree that the fixes are good). The full list of all contributors is found in the docs/THANKS file. curl is developed by a community, with Daniel at the wheel. 1.6 What do you get for making curl? Project cURL is entirely free and open. We do this voluntarily, mostly in our spare time. Companies may pay individual developers to work on curl. This is not controlled by nor supervised in any way by the curl project. We get help from companies. Haxx provides website, bandwidth, mailing lists etc, GitHub hosts the primary git repository and other services like the bug tracker at https://github.com/curl/curl. Also again, some companies have sponsored certain parts of the development in the past and I hope some will continue to do so in the future. If you want to support our project, consider a donation or a banner-program or even better: by helping us with coding, documenting or testing etc. See also: https://curl.se/sponsors.html 1.7 What about CURL from curl.com? During the summer of 2001, curl.com was busy advertising their client-side programming language for the web, named CURL. We are in no way associated with curl.com or their CURL programming language. Our project name curl has been in effective use since 1998. We were not the first computer related project to use the name "curl" and do not claim any rights to the name. We recognize that we will be living in parallel with curl.com and wish them every success. 1.8 I have a problem, who do I mail? Please do not mail any single individual unless you really need to. Keep curl-related questions on a suitable mailing list. All available mailing lists are listed in the MANUAL document and online at https://curl.se/mail/ Keeping curl-related questions and discussions on mailing lists allows others to join in and help, to share their ideas, to contribute their suggestions and to spread their wisdom. Keeping discussions on public mailing lists also allows for others to learn from this (both current and future users thanks to the web based archives of the mailing lists), thus saving us from having to repeat ourselves even more. Thanks for respecting this. If you have found or simply suspect a security problem in curl or libcurl, submit all the details at https://hackerone.one/curl. On there we keep the issue private while we investigate, confirm it, work and validate a fix and agree on a time schedule for publication etc. That way we produce a fix in a timely manner before the flaw is announced to the world, reducing the impact the problem risks having on existing users. Security issues can also be taking to the curl security team by emailing security at curl.se (closed list of receivers, mails are not disclosed). 1.9 Where do I buy commercial support for curl? curl is fully open source. It means you can hire any skilled engineer to fix your curl-related problems. We list available alternatives on the curl website: https://curl.se/support.html 1.10 How many are using curl? It is impossible to tell. We do not know how many users that knowingly have installed and use curl. We do not know how many users that use curl without knowing that they are in fact using it. We do not know how many users that downloaded or installed curl and then never use it. In 2020, we estimate that curl runs in roughly ten billion installations world wide. 1.11 Why do you not update ca-bundle.crt In the cURL project we have decided not to attempt to keep this file updated (or even present) since deciding what to add to a ca cert bundle is an undertaking we have not been ready to accept, and the one we can get from Mozilla is perfectly fine so there is no need to duplicate that work. Today, with many services performed over HTTPS, every operating system should come with a default ca cert bundle that can be deemed somewhat trustworthy and that collection (if reasonably updated) should be deemed to be a lot better than a private curl version. If you want the most recent collection of ca certs that Mozilla Firefox uses, we recommend that you extract the collection yourself from Mozilla Firefox (by running 'make ca-bundle), or by using our online service setup for this purpose: https://curl.se/docs/caextract.html 1.12 I have a problem who, can I chat with? There is a bunch of friendly people hanging out in the #curl channel on the IRC network libera.chat. If you are polite and nice, chances are good that you can get -- or provide -- help instantly. 1.13 curl's ECCN number? The US government restricts exports of software that contains or uses cryptography. When doing so, the Export Control Classification Number (ECCN) is used to identify the level of export control etc. Apache Software Foundation gives a good explanation of ECCNs at https://www.apache.org/dev/crypto.html We believe curl's number might be ECCN 5D002, another possibility is 5D992. It seems necessary to write them (the authority that administers ECCN numbers), asking to confirm. Comprehensible explanations of the meaning of such numbers and how to obtain them (resp.) are here https://www.bis.doc.gov/licensing/exportingbasics.htm https://www.bis.doc.gov/licensing/do_i_needaneccn.html An incomprehensible description of the two numbers above is here https://www.bis.doc.gov/index.php/documents/new-encryption/1653-ccl5-pt2-3 1.14 How do I submit my patch? We strongly encourage you to submit changes and improvements directly as "pull requests" on GitHub: https://github.com/curl/curl/pulls If you for any reason cannot or will not deal with GitHub, send your patch to the curl-library mailing list. We are many subscribers there and there are lots of people who can review patches, comment on them and "receive" them properly. Lots of more details are found in the CONTRIBUTE.md and INTERNALS.md documents. 1.15 How do I port libcurl to my OS? Here's a rough step-by-step: 1. copy a suitable lib/config-*.h file as a start to lib/config-[youros].h 2. edit lib/config-[youros].h to match your OS and setup 3. edit lib/curl_setup.h to include config-[youros].h when your OS is detected by the preprocessor, in the style others already exist 4. compile lib/*.c and make them into a library 2. Install Related Problems 2.1 configure fails when using static libraries You may find that configure fails to properly detect the entire dependency chain of libraries when you provide static versions of the libraries that configure checks for. The reason why static libraries is much harder to deal with is that for them we do not get any help but the script itself must know or check what more libraries that are needed (with shared libraries, that dependency "chain" is handled automatically). This is an error-prone process and one that also tends to vary over time depending on the release versions of the involved components and may also differ between operating systems. For that reason, configure does few attempts to actually figure this out and you are instead encouraged to set LIBS and LDFLAGS accordingly when you invoke configure, and point out the needed libraries and set the necessary flags yourself. 2.2 Does curl work with other SSL libraries? curl has been written to use a generic SSL function layer internally, and that SSL functionality can then be provided by one out of many different SSL backends. curl can be built to use one of the following SSL alternatives: OpenSSL, LibreSSL, BoringSSL, AWS-LC, GnuTLS, wolfSSL, mbedTLS, Secure Transport (native iOS/macOS), Schannel (native Windows), BearSSL or Rustls. They all have their pros and cons, and we try to maintain a comparison of them here: https://curl.se/docs/ssl-compared.html 2.3 How do I upgrade curl.exe in Windows? The curl tool that is shipped as an integrated component of Windows 10 and Windows 11 is managed by Microsoft. If you were to delete the file or replace it with a newer version downloaded from https://curl.se/windows, then Windows Update will cease to work on your system. There is no way to independently force an upgrade of the curl.exe that is part of Windows other than through the regular Windows update process. There is also nothing the curl project itself can do about this, since this is managed and controlled entirely by Microsoft as owners of the operating system. You can always download and install the latest version of curl for Windows from https://curl.se/windows into a separate location. 2.4 Does curl support SOCKS (RFC 1928) ? Yes, SOCKS 4 and 5 are supported. 3. Usage problems 3.1 curl: (1) SSL is disabled, https: not supported If you get this output when trying to get anything from an HTTPS server, it means that the instance of curl/libcurl that you are using was built without support for this protocol. This could have happened if the configure script that was run at build time could not find all libs and include files curl requires for SSL to work. If the configure script fails to find them, curl is simply built without SSL support. To get HTTPS support into a curl that was previously built but that reports that HTTPS is not supported, you should dig through the document and logs and check out why the configure script does not find the SSL libs and/or include files. Also, check out the other paragraph in this FAQ labeled "configure does not find OpenSSL even when it is installed". 3.2 How do I tell curl to resume a transfer? curl supports resumed transfers both ways on both FTP and HTTP. Try the -C option. 3.3 Why does my posting using -F not work? You cannot arbitrarily use -F or -d, the choice between -F or -d depends on the HTTP operation you need curl to do and what the web server that will receive your post expects. If the form you are trying to submit uses the type 'multipart/form-data', then and only then you must use the -F type. In all the most common cases, you should use -d which then causes a posting with the type 'application/x-www-form-urlencoded'. This is described in some detail in the MANUAL and TheArtOfHttpScripting documents, and if you do not understand it the first time, read it again before you post questions about this to the mailing list. Also, try reading through the mailing list archives for old postings and questions regarding this. 3.4 How do I tell curl to run custom FTP commands? You can tell curl to perform optional commands both before and/or after a file transfer. Study the -Q/--quote option. Since curl is used for file transfers, you do not normally use curl to perform FTP commands without transferring anything. Therefore you must always specify a URL to transfer to/from even when doing custom FTP commands, or use -I which implies the "no body" option sent to libcurl. 3.5 How can I disable the Accept: */* header? You can change all internally generated headers by adding a replacement with the -H/--header option. By adding a header with empty contents you safely disable that one. Use -H "Accept:" to disable that specific header. 3.6 Does curl support ASP, XML, XHTML or HTML version Y? To curl, all contents are alike. It does not matter how the page was generated. It may be ASP, PHP, Perl, shell-script, SSI or plain HTML files. There is no difference to curl and it does not even know what kind of language that generated the page. See also item 3.14 regarding JavaScript. 3.7 Can I use curl to delete/rename a file through FTP? Yes. You specify custom FTP commands with -Q/--quote. One example would be to delete a file after you have downloaded it: curl -O ftp://example.com/coolfile -Q '-DELE coolfile' or rename a file after upload: curl -T infile ftp://example.com/dir/ -Q "-RNFR infile" -Q "-RNTO newname" 3.8 How do I tell curl to follow HTTP redirects? curl does not follow so-called redirects by default. The Location: header that informs the client about this is only interpreted if you are using the -L/--location option. As in: curl -L http://example.com Not all redirects are HTTP ones, see 4.14 3.9 How do I use curl in my favorite programming language? Many programming languages have interfaces/bindings that allow you to use curl without having to use the command line tool. If you are fluent in such a language, you may prefer to use one of these interfaces instead. Find out more about which languages that support curl directly, and how to install and use them, in the libcurl section of the curl website: https://curl.se/libcurl/ All the various bindings to libcurl are made by other projects and people, outside of the cURL project. The cURL project itself only produces libcurl with its plain C API. If you do not find anywhere else to ask you can ask about bindings on the curl-library list too, but be prepared that people on that list may not know anything about bindings. In December 2021, there were interfaces available for the following languages: Ada95, Basic, C, C++, Ch, Cocoa, D, Delphi, Dylan, Eiffel, Euphoria, Falcon, Ferite, Gambas, glib/GTK+, Go, Guile, Harbour, Haskell, Java, Julia, Lisp, Lua, Mono, .NET, node.js, Object-Pascal, OCaml, Pascal, Perl, PHP, PostgreSQL, Python, R, Rexx, Ring, RPG, Ruby, Rust, Scheme, Scilab, S-Lang, Smalltalk, SP-Forth, SPL, Tcl, Visual Basic, Visual FoxPro, Q, wxwidgets, XBLite and Xoho. By the time you read this, additional ones may have appeared. 3.10 What about SOAP, WebDAV, XML-RPC or similar protocols over HTTP? curl adheres to the HTTP spec, which basically means you can play with *any* protocol that is built on top of HTTP. Protocols such as SOAP, WebDAV and XML-RPC are all such ones. You can use -X to set custom requests and -H to set custom headers (or replace internally generated ones). Using libcurl is of course just as good and you would just use the proper library options to do the same. 3.11 How do I POST with a different Content-Type? You can always replace the internally generated headers with -H/--header. To make a simple HTTP POST with text/xml as content-type, do something like: curl -d "datatopost" -H "Content-Type: text/xml" [URL] 3.12 Why do FTP-specific features over HTTP proxy fail? Because when you use an HTTP proxy, the protocol spoken on the network will be HTTP, even if you specify an FTP URL. This effectively means that you normally cannot use FTP-specific features such as FTP upload and FTP quote etc. There is one exception to this rule, and that is if you can "tunnel through" the given HTTP proxy. Proxy tunneling is enabled with a special option (-p) and is generally not available as proxy admins usually disable tunneling to ports other than 443 (which is used for HTTPS access through proxies). 3.13 Why do my single/double quotes fail? To specify a command line option that includes spaces, you might need to put the entire option within quotes. Like in: curl -d " with spaces " example.com or perhaps curl -d ' with spaces ' example.com Exactly what kind of quotes and how to do this is entirely up to the shell or command line interpreter that you are using. For most Unix shells, you can more or less pick either single (') or double (") quotes. For Windows/DOS command prompts you must use double (") quotes, and if the option string contains inner double quotes you can escape them with a backslash. For Windows powershell the arguments are not always passed on as expected because curl is not a powershell script. You may or may not be able to use single quotes. To escape inner double quotes seems to require a backslash-backtick escape sequence and the outer quotes as double quotes. Please study the documentation for your particular environment. Examples in the curl docs will use a mix of both of these as shown above. You must adjust them to work in your environment. Remember that curl works and runs on more operating systems than most single individuals have ever tried. 3.14 Does curl support JavaScript or PAC (automated proxy config)? Many webpages do magic stuff using embedded JavaScript. curl and libcurl have no built-in support for that, so it will be treated just like any other contents. .pac files are a Netscape invention and are sometimes used by organizations to allow them to differentiate which proxies to use. The .pac contents is just a JavaScript program that gets invoked by the browser and that returns the name of the proxy to connect to. Since curl does not support JavaScript, it cannot support .pac proxy configuration either. Some workarounds usually suggested to overcome this JavaScript dependency: Depending on the JavaScript complexity, write up a script that translates it to another language and execute that. Read the JavaScript code and rewrite the same logic in another language. Implement a JavaScript interpreter, people have successfully used the Mozilla JavaScript engine in the past. Ask your admins to stop this, for a static proxy setup or similar. 3.15 Can I do recursive fetches with curl? No. curl itself has no code that performs recursive operations, such as those performed by wget and similar tools. There exists wrapper scripts with that functionality (for example the curlmirror perl script), and you can write programs based on libcurl to do it, but the command line tool curl itself cannot. 3.16 What certificates do I need when I use SSL? There are three different kinds of "certificates" to keep track of when we talk about using SSL-based protocols (HTTPS or FTPS) using curl or libcurl. CLIENT CERTIFICATE The server you communicate with may require that you can provide this in order to prove that you actually are who you claim to be. If the server does not require this, you do not need a client certificate. A client certificate is always used together with a private key, and the private key has a pass phrase that protects it. SERVER CERTIFICATE The server you communicate with has a server certificate. You can and should verify this certificate to make sure that you are truly talking to the real server and not a server impersonating it. CERTIFICATE AUTHORITY CERTIFICATE ("CA cert") You often have several CA certs in a CA cert bundle that can be used to verify a server certificate that was signed by one of the authorities in the bundle. curl does not come with a CA cert bundle but most curl installs provide one. You can also override the default. The server certificate verification process is made by using a Certificate Authority certificate ("CA cert") that was used to sign the server certificate. Server certificate verification is enabled by default in curl and libcurl and is often the reason for problems as explained in FAQ entry 4.12 and the SSLCERTS document (https://curl.se/docs/sslcerts.html). Server certificates that are "self-signed" or otherwise signed by a CA that you do not have a CA cert for, cannot be verified. If the verification during a connect fails, you are refused access. You then need to explicitly disable the verification to connect to the server. 3.17 How do I list the root directory of an FTP server? There are two ways. The way defined in the RFC is to use an encoded slash in the first path part. List the "/tmp" directory like this: curl ftp://ftp.example.com/%2ftmp/ or the not-quite-kosher-but-more-readable way, by simply starting the path section of the URL with a slash: curl ftp://ftp.example.com//tmp/ 3.18 Can I use curl to send a POST/PUT and not wait for a response? No. You can easily write your own program using libcurl to do such stunts. 3.19 How do I get HTTP from a host using a specific IP address? For example, you may be trying out a website installation that is not yet in the DNS. Or you have a site using multiple IP addresses for a given host name and you want to address a specific one out of the set. Set a custom Host: header that identifies the server name you want to reach but use the target IP address in the URL: curl --header "Host: www.example.com" http://127.0.0.1/ You can also opt to add faked hostname entries to curl with the --resolve option. That has the added benefit that things like redirects will also work properly. The above operation would instead be done as: curl --resolve www.example.com:80:127.0.0.1 http://www.example.com/ 3.20 How to SFTP from my user's home directory? Contrary to how FTP works, SFTP and SCP URLs specify the exact directory to work with. It means that if you do not specify that you want the user's home directory, you get the actual root directory. To specify a file in your user's home directory, you need to use the correct URL syntax which for SFTP might look similar to: curl -O -u user:password sftp://example.com/~/file.txt and for SCP it is just a different protocol prefix: curl -O -u user:password scp://example.com/~/file.txt 3.21 Protocol xxx not supported or disabled in libcurl When passing on a URL to curl to use, it may respond that the particular protocol is not supported or disabled. The particular way this error message is phrased is because curl does not make a distinction internally of whether a particular protocol is not supported (i.e. never got any code added that knows how to speak that protocol) or if it was explicitly disabled. curl can be built to only support a given set of protocols, and the rest would then be disabled or not supported. Note that this error will also occur if you pass a wrongly spelled protocol part as in "htpt://example.com" or as in the less evident case if you prefix the protocol part with a space as in " http://example.com/". 3.22 curl -X gives me HTTP problems In normal circumstances, -X should hardly ever be used. By default you use curl without explicitly saying which request method to use when the URL identifies an HTTP transfer. If you just pass in a URL like "curl http://example.com" it will use GET. If you use -d or -F curl will use POST, -I will cause a HEAD and -T will make it a PUT. If for whatever reason you are not happy with these default choices that curl does for you, you can override those request methods by specifying -X [WHATEVER]. This way you can for example send a DELETE by doing "curl -X DELETE [URL]". It is thus pointless to do "curl -XGET [URL]" as GET would be used anyway. In the same vein it is pointless to do "curl -X POST -d data [URL]". You can make a fun and somewhat rare request that sends a request-body in a GET request with something like "curl -X GET -d data [URL]" Note that -X does not actually change curl's behavior as it only modifies the actual string sent in the request, but that may of course trigger a different set of events. Accordingly, by using -XPOST on a command line that for example would follow a 303 redirect, you will effectively prevent curl from behaving correctly. Be aware. 4. Running Problems 4.2 Why do I get problems when I use & or % in the URL? In general Unix shells, the & symbol is treated specially and when used, it runs the specified command in the background. To safely send the & as a part of a URL, you should quote the entire URL by using single (') or double (") quotes around it. Similar problems can also occur on some shells with other characters, including ?*!$~(){}<>\|;`. When in doubt, quote the URL. An example that would invoke a remote CGI that uses &-symbols could be: curl 'http://www.example.com/cgi-bin/query?text=yes&q=curl' In Windows, the standard DOS shell treats the percent sign specially and you need to use TWO percent signs for each single one you want to use in the URL. If you want a literal percent sign to be part of the data you pass in a POST using -d/--data you must encode it as '%25' (which then also needs the percent sign doubled on Windows machines). 4.3 How can I use {, }, [ or ] to specify multiple URLs? Because those letters have a special meaning to the shell, to be used in a URL specified to curl you must quote them. An example that downloads two URLs (sequentially) would be: curl '{curl,www}.haxx.se' To be able to use those characters as actual parts of the URL (without using them for the curl URL "globbing" system), use the -g/--globoff option: curl -g 'www.example.com/weirdname[].html' 4.4 Why do I get downloaded data even though the webpage does not exist? curl asks remote servers for the page you specify. If the page does not exist at the server, the HTTP protocol defines how the server should respond and that means that headers and a "page" will be returned. That is simply how HTTP works. By using the --fail option you can tell curl explicitly to not get any data if the HTTP return code does not say success. 4.5 Why do I get return code XXX from an HTTP server? RFC 2616 clearly explains the return codes. This is a short transcript. Go read the RFC for exact details: 4.5.1 "400 Bad Request" The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications. 4.5.2 "401 Unauthorized" The request requires user authentication. 4.5.3 "403 Forbidden" The server understood the request, but is refusing to fulfill it. Authorization will not help and the request SHOULD NOT be repeated. 4.5.4 "404 Not Found" The server has not found anything matching the Request-URI. No indication is given as to whether the condition is temporary or permanent. 4.5.5 "405 Method Not Allowed" The method specified in the Request-Line is not allowed for the resource identified by the Request-URI. The response MUST include an Allow header containing a list of valid methods for the requested resource. 4.5.6 "301 Moved Permanently" If you get this return code and an HTML output similar to this:

Moved Permanently

The document has moved
here. it might be because you requested a directory URL but without the trailing slash. Try the same operation again _with_ the trailing URL, or use the -L/--location option to follow the redirection. 4.6 Can you tell me what error code 142 means? All curl error codes are described at the end of the man page, in the section called "EXIT CODES". Error codes that are larger than the highest documented error code means that curl has exited due to a crash. This is a serious error, and we appreciate a detailed bug report from you that describes how we could go ahead and repeat this. 4.7 How do I keep usernames and passwords secret in curl command lines? This problem has two sides: The first part is to avoid having clear-text passwords in the command line so that they do not appear in 'ps' outputs and similar. That is easily avoided by using the "-K" option to tell curl to read parameters from a file or stdin to which you can pass the secret info. curl itself will also attempt to "hide" the given password by blanking out the option - this does not work on all platforms. To keep the passwords in your account secret from the rest of the world is not a task that curl addresses. You could of course encrypt them somehow to at least hide them from being read by human eyes, but that is not what anyone would call security. Also note that regular HTTP (using Basic authentication) and FTP passwords are sent as cleartext across the network. All it takes for anyone to fetch them is to listen on the network. Eavesdropping is easy. Use more secure authentication methods (like Digest, Negotiate or even NTLM) or consider the SSL-based alternatives HTTPS and FTPS. 4.8 I found a bug It is not a bug if the behavior is documented. Read the docs first. Especially check out the KNOWN_BUGS file, it may be a documented bug. If it is a problem with a binary you have downloaded or a package for your particular platform, try contacting the person who built the package/archive you have. If there is a bug, read the BUGS document first. Then report it as described in there. 4.9 curl cannot authenticate to a server that requires NTLM? NTLM support requires OpenSSL, GnuTLS, mbedTLS, Secure Transport, or Microsoft Windows libraries at build-time to provide this functionality. 4.10 My HTTP request using HEAD, PUT or DELETE does not work Many web servers allow or demand that the administrator configures the server properly for these requests to work on the web server. Some servers seem to support HEAD only on certain kinds of URLs. To fully grasp this, try the documentation for the particular server software you are trying to interact with. This is not anything curl can do anything about. 4.11 Why do my HTTP range requests return the full document? Because the range may not be supported by the server, or the server may choose to ignore it and return the full document anyway. 4.12 Why do I get "certificate verify failed" ? When you invoke curl and get an error 60 error back it means that curl could not verify that the server's certificate was good. curl verifies the certificate using the CA cert bundle and verifying for which names the certificate has been granted. To completely disable the certificate verification, use -k. This does however enable man-in-the-middle attacks and makes the transfer INSECURE. We strongly advise against doing this for more than experiments. If you get this failure with a CA cert bundle installed and used, the server's certificate might not be signed by one of the CA's in your CA store. It might for example be self-signed. You then correct this problem by obtaining a valid CA cert for the server. Or again, decrease the security by disabling this check. At times, you find that the verification works in your favorite browser but fails in curl. When this happens, the reason is usually that the server sends an incomplete cert chain. The server is mandated to send all "intermediate certificates" but does not. This typically works with browsers anyway since they A) cache such certs and B) supports AIA which downloads such missing certificates on demand. This is a server misconfiguration. A good way to figure out if this is the case it to use the SSL Labs server test and check the certificate chain: https://www.ssllabs.com/ssltest/ Details are also in the SSLCERTS.md document, found online here: https://curl.se/docs/sslcerts.html 4.13 Why is curl -R on Windows one hour off? Since curl 7.53.0 this issue should be fixed as long as curl was built with any modern compiler that allows for a 64-bit curl_off_t type. For older compilers or prior curl versions it may set a time that appears one hour off. This happens due to a flaw in how Windows stores and uses file modification times and it is not easily worked around. For more details read this: https://www.codeproject.com/Articles/1144/Beating-the-Daylight-Savings-Time-bug-and-getting 4.14 Redirects work in browser but not with curl curl supports HTTP redirects well (see item 3.8). Browsers generally support at least two other ways to perform redirects that curl does not: Meta tags. You can write an HTML tag that will cause the browser to redirect to another given URL after a certain time. JavaScript. You can write a JavaScript program embedded in an HTML page that redirects the browser to another given URL. There is no way to make curl follow these redirects. You must either manually figure out what the page is set to do, or write a script that parses the results and fetches the new URL. 4.15 FTPS does not work curl supports FTPS (sometimes known as FTP-SSL) both implicit and explicit mode. When a URL is used that starts with FTPS://, curl assumes implicit SSL on the control connection and will therefore immediately connect and try to speak SSL. FTPS:// connections default to port 990. To use explicit FTPS, you use an FTP:// URL and the --ssl-reqd option (or one of its related flavors). This is the most common method, and the one mandated by RFC 4217. This kind of connection will then of course use the standard FTP port 21 by default. 4.16 My HTTP POST or PUT requests are slow libcurl makes all POST and PUT requests (except for requests with a small request body) use the "Expect: 100-continue" header. This header allows the server to deny the operation early so that libcurl can bail out before having to send any data. This is useful in authentication cases and others. However, many servers do not implement the Expect: stuff properly and if the server does not respond (positively) within 1 second libcurl will continue and send off the data anyway. You can disable libcurl's use of the Expect: header the same way you disable any header, using -H / CURLOPT_HTTPHEADER, or by forcing it to use HTTP 1.0. 4.17 Non-functional connect timeouts In most Windows setups having a timeout longer than 21 seconds make no difference, as it will only send 3 TCP SYN packets and no more. The second packet sent three seconds after the first and the third six seconds after the second. No more than three packets are sent, no matter how long the timeout is set. See option TcpMaxConnectRetransmissions on this page: https://support.microsoft.com/en-us/kb/175523/en-us Also, even on non-Windows systems there may run a firewall or anti-virus software or similar that accepts the connection but does not actually do anything else. This will make (lib)curl to consider the connection connected and thus the connect timeout will not trigger. 4.18 file:// URLs containing drive letters (Windows, NetWare) When using curl to try to download a local file, one might use a URL in this format: file://D:/blah.txt you will find that even if D:\blah.txt does exist, curl returns a 'file not found' error. According to RFC 1738 (https://www.ietf.org/rfc/rfc1738.txt), file:// URLs must contain a host component, but it is ignored by most implementations. In the above example, 'D:' is treated as the host component, and is taken away. Thus, curl tries to open '/blah.txt'. If your system is installed to drive C:, that will resolve to 'C:\blah.txt', and if that does not exist you will get the not found error. To fix this problem, use file:// URLs with *three* leading slashes: file:///D:/blah.txt Alternatively, if it makes more sense, specify 'localhost' as the host component: file://localhost/D:/blah.txt In either case, curl should now be looking for the correct file. 4.19 Why does not curl return an error when the network cable is unplugged? Unplugging a cable is not an error situation. The TCP/IP protocol stack was designed to be fault tolerant, so even though there may be a physical break somewhere the connection should not be affected, just possibly delayed. Eventually, the physical break will be fixed or the data will be re-routed around the physical problem through another path. In such cases, the TCP/IP stack is responsible for detecting when the network connection is irrevocably lost. Since with some protocols it is perfectly legal for the client to wait indefinitely for data, the stack may never report a problem, and even when it does, it can take up to 20 minutes for it to detect an issue. The curl option --keepalive-time enables keep-alive support in the TCP/IP stack which makes it periodically probe the connection to make sure it is still available to send data. That should reliably detect any TCP/IP network failure. TCP keep alive will not detect the network going down before the TCP/IP connection is established (e.g. during a DNS lookup) or using protocols that do not use TCP. To handle those situations, curl offers a number of timeouts on its own. --speed-limit/--speed-time will abort if the data transfer rate falls too low, and --connect-timeout and --max-time can be used to put an overall timeout on the connection phase or the entire transfer. A libcurl-using application running in a known physical environment (e.g. an embedded device with only a single network connection) may want to act immediately if its lone network connection goes down. That can be achieved by having the application monitor the network connection on its own using an OS-specific mechanism, then signaling libcurl to abort (see also item 5.13). 4.20 curl does not return error for HTTP non-200 responses Correct. Unless you use -f (--fail). When doing HTTP transfers, curl will perform exactly what you are asking it to do and if successful it will not return an error. You can use curl to test your web server's "file not found" page (that gets 404 back), you can use it to check your authentication protected webpages (that gets a 401 back) and so on. The specific HTTP response code does not constitute a problem or error for curl. It simply sends and delivers HTTP as you asked and if that worked, everything is fine and dandy. The response code is generally providing more higher level error information that curl does not care about. The error was not in the HTTP transfer. If you want your command line to treat error codes in the 400 and up range as errors and thus return a non-zero value and possibly show an error message, curl has a dedicated option for that: -f (CURLOPT_FAILONERROR in libcurl speak). You can also use the -w option and the variable %{response_code} to extract the exact response code that was returned in the response. 5. libcurl Issues 5.1 Is libcurl thread-safe? Yes. We have written the libcurl code specifically adjusted for multi-threaded programs. libcurl will use thread-safe functions instead of non-safe ones if your system has such. Note that you must never share the same handle in multiple threads. There may be some exceptions to thread safety depending on how libcurl was built. Please review the guidelines for thread safety to learn more: https://curl.se/libcurl/c/threadsafe.html 5.2 How can I receive all data into a large memory chunk? [ See also the examples/getinmemory.c source ] You are in full control of the callback function that gets called every time there is data received from the remote server. You can make that callback do whatever you want. You do not have to write the received data to a file. One solution to this problem could be to have a pointer to a struct that you pass to the callback function. You set the pointer using the CURLOPT_WRITEDATA option. Then that pointer will be passed to the callback instead of a FILE * to a file: /* imaginary struct */ struct MemoryStruct { char *memory; size_t size; }; /* imaginary callback function */ size_t WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data) { size_t realsize = size * nmemb; struct MemoryStruct *mem = (struct MemoryStruct *)data; mem->memory = (char *)realloc(mem->memory, mem->size + realsize + 1); if (mem->memory) { memcpy(&(mem->memory[mem->size]), ptr, realsize); mem->size += realsize; mem->memory[mem->size] = 0; } return realsize; } 5.3 How do I fetch multiple files with libcurl? libcurl has excellent support for transferring multiple files. You should just repeatedly set new URLs with curl_easy_setopt() and then transfer it with curl_easy_perform(). The handle you get from curl_easy_init() is not only reusable, but you are even encouraged to reuse it if you can, as that will enable libcurl to use persistent connections. 5.4 Does libcurl do Winsock initialization on Win32 systems? Yes, if told to in the curl_global_init() call. 5.5 Does CURLOPT_WRITEDATA and CURLOPT_READDATA work on Win32 ? Yes, but you cannot open a FILE * and pass the pointer to a DLL and have that DLL use the FILE * (as the DLL and the client application cannot access each others' variable memory areas). If you set CURLOPT_WRITEDATA you must also use CURLOPT_WRITEFUNCTION as well to set a function that writes the file, even if that simply writes the data to the specified FILE *. Similarly, if you use CURLOPT_READDATA you must also specify CURLOPT_READFUNCTION. 5.6 What about Keep-Alive or persistent connections? curl and libcurl have excellent support for persistent connections when transferring several files from the same server. curl will attempt to reuse connections for all URLs specified on the same command line/config file, and libcurl will reuse connections for all transfers that are made using the same libcurl handle. When you use the easy interface the connection cache is kept within the easy handle. If you instead use the multi interface, the connection cache will be kept within the multi handle and will be shared among all the easy handles that are used within the same multi handle. 5.7 Link errors when building libcurl on Windows You need to make sure that your project, and all the libraries (both static and dynamic) that it links against, are compiled/linked against the same run time library. This is determined by the /MD, /ML, /MT (and their corresponding /M?d) options to the command line compiler. /MD (linking against MSVCRT dll) seems to be the most commonly used option. When building an application that uses the static libcurl library, you must add -DCURL_STATICLIB to your CFLAGS. Otherwise the linker will look for dynamic import symbols. If you are using Visual Studio, you need to instead add CURL_STATICLIB in the "Preprocessor Definitions" section. If you get a linker error like "unknown symbol __imp__curl_easy_init ..." you have linked against the wrong (static) library. If you want to use the libcurl.dll and import lib, you do not need any extra CFLAGS, but use one of the import libraries below. These are the libraries produced by the various lib/Makefile.* files: Target: static lib. import lib for libcurl*.dll. ----------------------------------------------------------- MinGW: libcurl.a libcurldll.a MSVC (release): libcurl.lib libcurl_imp.lib MSVC (debug): libcurld.lib libcurld_imp.lib Borland: libcurl.lib libcurl_imp.lib 5.8 libcurl.so.X: open failed: No such file or directory This is an error message you might get when you try to run a program linked with a shared version of libcurl and your runtime linker (ld.so) could not find the shared library named libcurl.so.X. (Where X is the number of the current libcurl ABI, typically 3 or 4). You need to make sure that ld.so finds libcurl.so.X. You can do that multiple ways, and it differs somewhat between different operating systems. They are usually: * Add an option to the linker command line that specify the hard-coded path the runtime linker should check for the lib (usually -R) * Set an environment variable (LD_LIBRARY_PATH for example) where ld.so should check for libs * Adjust the system's config to check for libs in the directory where you have put the library (like Linux's /etc/ld.so.conf) 'man ld.so' and 'man ld' will tell you more details 5.9 How does libcurl resolve hostnames? libcurl supports a large number of name resolve functions. One of them is picked at build-time and will be used unconditionally. Thus, if you want to change name resolver function you must rebuild libcurl and tell it to use a different function. - The non-IPv6 resolver that can use one of four different hostname resolve calls (depending on what your system supports): A - gethostbyname() B - gethostbyname_r() with 3 arguments C - gethostbyname_r() with 5 arguments D - gethostbyname_r() with 6 arguments - The IPv6-resolver that uses getaddrinfo() - The c-ares based name resolver that uses the c-ares library for resolves. Using this offers asynchronous name resolves. - The threaded resolver (default option on Windows). It uses: A - gethostbyname() on plain IPv4 hosts B - getaddrinfo() on IPv6 enabled hosts Also note that libcurl never resolves or reverse-lookups addresses given as pure numbers, such as 127.0.0.1 or ::1. 5.10 How do I prevent libcurl from writing the response to stdout? libcurl provides a default built-in write function that writes received data to stdout. Set the CURLOPT_WRITEFUNCTION to receive the data, or possibly set CURLOPT_WRITEDATA to a different FILE * handle. 5.11 How do I make libcurl not receive the whole HTTP response? You make the write callback (or progress callback) return an error and libcurl will then abort the transfer. 5.12 Can I make libcurl fake or hide my real IP address? No. libcurl operates on a higher level. Besides, faking IP address would imply sending IP packets with a made-up source address, and then you normally get a problem with receiving the packet sent back as they would then not be routed to you. If you use a proxy to access remote sites, the sites will not see your local IP address but instead the address of the proxy. Also note that on many networks NATs or other IP-munging techniques are used that makes you see and use a different IP address locally than what the remote server will see you coming from. You may also consider using https://www.torproject.org/ . 5.13 How do I stop an ongoing transfer? With the easy interface you make sure to return the correct error code from one of the callbacks, but none of them are instant. There is no function you can call from another thread or similar that will stop it immediately. Instead, you need to make sure that one of the callbacks you use returns an appropriate value that will stop the transfer. Suitable callbacks that you can do this with include the progress callback, the read callback and the write callback. If you are using the multi interface, you can also stop a transfer by removing the particular easy handle from the multi stack at any moment you think the transfer is done or when you wish to abort the transfer. 5.14 Using C++ non-static functions for callbacks? libcurl is a C library, it does not know anything about C++ member functions. You can overcome this "limitation" with relative ease using a static member function that is passed a pointer to the class: // f is the pointer to your object. static size_t YourClass::func(void *buffer, size_t sz, size_t n, void *f) { // Call non-static member function. static_cast(f)->nonStaticFunction(); } // This is how you pass pointer to the static function: curl_easy_setopt(hcurl, CURLOPT_WRITEFUNCTION, YourClass::func); curl_easy_setopt(hcurl, CURLOPT_WRITEDATA, this); 5.15 How do I get an FTP directory listing? If you end the FTP URL you request with a slash, libcurl will provide you with a directory listing of that given directory. You can also set CURLOPT_CUSTOMREQUEST to alter what exact listing command libcurl would use to list the files. The follow-up question tends to be how is a program supposed to parse the directory listing. How does it know what's a file and what's a directory and what's a symlink etc. If the FTP server supports the MLSD command then it will return data in a machine-readable format that can be parsed for type. The types are specified by RFC 3659 section 7.5.1. If MLSD is not supported then you have to work with what you are given. The LIST output format is entirely at the server's own liking and the NLST output does not reveal any types and in many cases does not even include all the directory entries. Also, both LIST and NLST tend to hide Unix-style hidden files (those that start with a dot) by default so you need to do "LIST -a" or similar to see them. Example - List only directories. ftp.funet.fi supports MLSD and ftp.kernel.org does not: curl -s ftp.funet.fi/pub/ -X MLSD | \ perl -lne 'print if s/(?:^|;)type=dir;[^ ]+ (.+)$/$1/' curl -s ftp.kernel.org/pub/linux/kernel/ | \ perl -lne 'print if s/^d[-rwx]{9}(?: +[^ ]+){7} (.+)$/$1/' If you need to parse LIST output in libcurl one such existing list parser is available at https://cr.yp.to/ftpparse.html Versions of libcurl since 7.21.0 also provide the ability to specify a wildcard to download multiple files from one FTP directory. 5.16 I want a different time-out Sometimes users realize that CURLOPT_TIMEOUT and CURLOPT_CONNECTIMEOUT are not sufficiently advanced or flexible to cover all the various use cases and scenarios applications end up with. libcurl offers many more ways to time-out operations. A common alternative is to use the CURLOPT_LOW_SPEED_LIMIT and CURLOPT_LOW_SPEED_TIME options to specify the lowest possible speed to accept before to consider the transfer timed out. The most flexible way is by writing your own time-out logic and using CURLOPT_XFERINFOFUNCTION (perhaps in combination with other callbacks) and use that to figure out exactly when the right condition is met when the transfer should get stopped. 5.17 Can I write a server with libcurl? No. libcurl offers no functions or building blocks to build any kind of Internet protocol server. libcurl is only a client-side library. For server libraries, you need to continue your search elsewhere but there exist many good open source ones out there for most protocols you could want a server for. There are also really good stand-alone servers that have been tested and proven for many years. There is no need for you to reinvent them. 5.18 Does libcurl use threads? Put simply: no, libcurl will execute in the same thread you call it in. All callbacks will be called in the same thread as the one you call libcurl in. If you want to avoid your thread to be blocked by the libcurl call, you make sure you use the non-blocking multi API which will do transfers asynchronously - still in the same single thread. libcurl will potentially internally use threads for name resolving, if it was built to work like that, but in those cases it will create the child threads by itself and they will only be used and then killed internally by libcurl and never exposed to the outside. 6. License Issues curl and libcurl are released under an MIT/X derivative license. The license is liberal and should not impose a problem for your project. This section is just a brief summary for the cases we get the most questions. (Parts of this section was much enhanced by Bjorn Reese.) We are not lawyers and this is not legal advice. You should probably consult one if you want true and accurate legal insights without our prejudice. Note especially that this section concerns the libcurl license only; compiling in features of libcurl that depend on other libraries (e.g. OpenSSL) may affect the licensing obligations of your application. 6.1 I have a GPL program, can I use the libcurl library? Yes Since libcurl may be distributed under the MIT/X derivative license, it can be used together with GPL in any software. 6.2 I have a closed-source program, can I use the libcurl library? Yes libcurl does not put any restrictions on the program that uses the library. 6.3 I have a BSD licensed program, can I use the libcurl library? Yes libcurl does not put any restrictions on the program that uses the library. 6.4 I have a program that uses LGPL libraries, can I use libcurl? Yes The LGPL license does not clash with other licenses. 6.5 Can I modify curl/libcurl for my program and keep the changes secret? Yes The MIT/X derivative license practically allows you to do almost anything with the sources, on the condition that the copyright texts in the sources are left intact. 6.6 Can you please change the curl/libcurl license to XXXX? No. We have carefully picked this license after years of development and discussions and a large amount of people have contributed with source code knowing that this is the license we use. This license puts the restrictions we want on curl/libcurl and it does not spread to other programs or libraries that use it. It should be possible for everyone to use libcurl or curl in their projects, no matter what license they already have in use. 6.7 What are my obligations when using libcurl in my commercial apps? Next to none. All you need to adhere to is the MIT-style license (stated in the COPYING file) which basically says you have to include the copyright notice in "all copies" and that you may not use the copyright holder's name when promoting your software. You do not have to release any of your source code. You do not have to reveal or make public any changes to the libcurl source code. You do not have to broadcast to the world that you are using libcurl within your app. All we ask is that you disclose "the copyright notice and this permission notice" somewhere. Most probably like in the documentation or in the section where other third party dependencies already are mentioned and acknowledged. As can be seen here: https://curl.se/docs/companies.html and elsewhere, more and more companies are discovering the power of libcurl and take advantage of it even in commercial environments. 7. PHP/CURL Issues 7.1 What is PHP/CURL? The module for PHP that makes it possible for PHP programs to access curl- functions from within PHP. In the cURL project we call this module PHP/CURL to differentiate it from curl the command line tool and libcurl the library. The PHP team however does not refer to it like this (for unknown reasons). They call it plain CURL (often using all caps) or sometimes ext/curl, but both cause much confusion to users which in turn gives us a higher question load. 7.2 Who wrote PHP/CURL? PHP/CURL was initially written by Sterling Hughes. 7.3 Can I perform multiple requests using the same handle? Yes - at least in PHP version 4.3.8 and later (this has been known to not work in earlier versions, but the exact version when it started to work is unknown to me). After a transfer, you just set new options in the handle and make another transfer. This will make libcurl reuse the same connection if it can. 7.4 Does PHP/CURL have dependencies? PHP/CURL is a module that comes with the regular PHP package. It depends on and uses libcurl, so you need to have libcurl installed properly before PHP/CURL can be used. 8. Development 8.1 Why does curl use C89? As with everything in curl, there is a history and we keep using what we have used before until someone brings up the subject and argues for and works on changing it. We started out using C89 in the 1990s because that was the only way to write a truly portable C program and have it run as widely as possible. C89 was for a long time even necessary to make things work on otherwise considered modern platforms such as Windows. Today, we do not really know how many users that still require the use of a C89 compiler. We will continue to use C89 for as long as nobody brings up a strong enough reason for us to change our minds. The core developers of the project do not feel restricted by this and we are not convinced that going C99 will offer us enough of a benefit to warrant the risk of cutting off a share of users. 8.2 Will curl be rewritten? In one go: no. Little by little over time? Maybe. Over the years, new languages and clever operating environments come and go. Every now and then the urge apparently arises to request that we rewrite curl in another language. Some the most important properties in curl are maintaining the API and ABI for libcurl and keeping the behavior for the command line tool. As long as we can do that, everything else is up for discussion. To maintain the ABI, we probably have to maintain a certain amount of code in C, and to remain rock stable, we will never risk anything by rewriting a lot of things in one go. That said, we can certainly offer more and more optional backends written in other languages, as long as those backends can be plugged in at build-time. Backends can be written in any language, but should probably provide APIs usable from C to ease integration and transition. curl-8.14.1/docs/FEATURES.md0000644000000000000000000001402315017756261013442 0ustar0000000000000000 # Features -- what curl can do ## curl tool - config file support - multiple URLs in a single command line - range "globbing" support: [0-13], {one,two,three} - multiple file upload on a single command line - redirect stderr - parallel transfers ## libcurl - URL RFC 3986 syntax - custom maximum download time - custom lowest download speed acceptable - custom output result after completion - guesses protocol from hostname unless specified - supports .netrc - progress bar with time statistics while downloading - standard proxy environment variables support - have run on 101 operating systems and 28 CPU architectures - selectable network interface for outgoing traffic - IPv6 support on Unix and Windows - happy eyeballs dual-stack IPv4 + IPv6 connects - persistent connections - SOCKS 4 + 5 support, with or without local name resolving - *pre-proxy* support, for *proxy chaining* - supports username and password in proxy environment variables - operations through HTTP proxy "tunnel" (using CONNECT) - replaceable memory functions (malloc, free, realloc, etc) - asynchronous name resolving - both a push and a pull style interface - international domain names (IDN) - transfer rate limiting - stable API and ABI - TCP keep alive - TCP Fast Open - DNS cache (that can be shared between transfers) - non-blocking single-threaded parallel transfers - Unix domain sockets to server or proxy - DNS-over-HTTPS - uses non-blocking name resolves - selectable name resolver backend ## URL API - parses RFC 3986 URLs - generates URLs from individual components - manages "redirects" ## Header API - easy access to HTTP response headers, from all contexts - named headers - iterate over headers ## TLS - selectable TLS backend(s) - TLS False Start - TLS version control - TLS session resumption - key pinning - mutual authentication - Use dedicated CA cert bundle - Use OS-provided CA store - separate TLS options for HTTPS proxy ## HTTP - HTTP/0.9 responses are optionally accepted - HTTP/1.0 - HTTP/1.1 - HTTP/2, including multiplexing and server push - GET - PUT - HEAD - POST - multipart formpost (RFC 1867-style) - authentication: Basic, Digest, NTLM (9) and Negotiate (SPNEGO) to server and proxy - resume transfers - follow redirects - maximum amount of redirects to follow - custom HTTP request - cookie get/send fully parsed - reads/writes the Netscape cookie file format - custom headers (replace/remove internally generated headers) - custom user-agent string - custom referrer string - range - proxy authentication - time conditions - via HTTP proxy, HTTPS proxy or SOCKS proxy - HTTP/2 or HTTP/1.1 to HTTPS proxy - retrieve file modification date - Content-Encoding support for deflate, gzip, brotli and zstd - "Transfer-Encoding: chunked" support in uploads - HSTS - alt-svc - ETags - HTTP/1.1 trailers, both sending and getting ## HTTPS - HTTP/3 - using client certificates - verify server certificate - via HTTP proxy, HTTPS proxy or SOCKS proxy - select desired encryption - select usage of a specific TLS version - ECH ## FTP - download - authentication - Kerberos 5 - active/passive using PORT, EPRT, PASV or EPSV - single file size information (compare to HTTP HEAD) - 'type=' URL support - directory listing - directory listing names-only - upload - upload append - upload via http-proxy as HTTP PUT - download resume - upload resume - custom ftp commands (before and/or after the transfer) - simple "range" support - via HTTP proxy, HTTPS proxy or SOCKS proxy - all operations can be tunneled through proxy - customizable to retrieve file modification date - no directory depth limit ## FTPS - implicit `ftps://` support that use SSL on both connections - explicit "AUTH TLS" and "AUTH SSL" usage to "upgrade" plain `ftp://` connection to use SSL for both or one of the connections ## SSH (both SCP and SFTP) - selectable SSH backend - known hosts support - public key fingerprinting - both password and public key auth ## SFTP - both password and public key auth - with custom commands sent before/after the transfer - directory listing ## TFTP - download - upload ## TELNET - connection negotiation - custom telnet options - stdin/stdout I/O ## LDAP - full LDAP URL support ## DICT - extended DICT URL support ## FILE - URL support - upload - resume ## SMB - SMBv1 over TCP and SSL - download - upload - authentication with NTLMv1 ## SMTP - authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM, Kerberos 5 and External - send emails - mail from support - mail size support - mail auth support for trusted server-to-server relaying - multiple recipients - via http-proxy ## SMTPS - implicit `smtps://` support - explicit "STARTTLS" usage to "upgrade" plain `smtp://` connections to use SSL - via http-proxy ## POP3 - authentication: Clear Text, APOP and SASL - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM, Kerberos 5 and External - list emails - retrieve emails - enhanced command support for: CAPA, DELE, TOP, STAT, UIDL and NOOP via custom requests - via http-proxy ## POP3S - implicit `pop3s://` support - explicit `STLS` usage to "upgrade" plain `pop3://` connections to use SSL - via http-proxy ## IMAP - authentication: Clear Text and SASL - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM, Kerberos 5 and External - list the folders of a mailbox - select a mailbox with support for verifying the `UIDVALIDITY` - fetch emails with support for specifying the UID and SECTION - upload emails via the append command - enhanced command support for: EXAMINE, CREATE, DELETE, RENAME, STATUS, STORE, COPY and UID via custom requests - via http-proxy ## IMAPS - implicit `imaps://` support - explicit "STARTTLS" usage to "upgrade" plain `imap://` connections to use SSL - via http-proxy ## MQTT - Subscribe to and publish topics using URL scheme `mqtt://broker/topic` curl-8.14.1/docs/GOVERNANCE.md0000644000000000000000000001704415017756261013661 0ustar0000000000000000 # Decision making in the curl project A rough guide to how we make decisions and who does what. ## BDFL This project was started by and has to some extent been pushed forward over the years with Daniel Stenberg as the driving force. It matches a standard BDFL (Benevolent Dictator For Life) style project. This setup has been used due to convenience and the fact that it has worked fine this far. It is not because someone thinks of it as a superior project leadership model. It also only works as long as Daniel manages to listen in to what the project and the general user population wants and expects from us. ## Legal entity There is no legal entity. The curl project is just a bunch of people scattered around the globe with the common goal to produce source code that creates great products. We are not part of any umbrella organization and we are not located in any specific country. We are totally independent. The copyrights in the project are owned by the individuals and organizations that wrote those parts of the code. ## Decisions The curl project is not a democracy, but everyone is entitled to state their opinion and may argue for their sake within the community. All and any changes that have been done or are done are eligible to bring up for discussion, to object to or to praise. Ideally, we find consensus for the appropriate way forward in any given situation or challenge. If there is no obvious consensus, a maintainer who's knowledgeable in the specific area takes an "executive" decision that they think is the right for the project. ## Donations Donating plain money to curl is best done to curl's [Open Collective fund](https://opencollective.com/curl). Open Collective is a US based non-profit organization that holds on to funds for us. This fund is then used for paying the curl security bug bounties, to reimburse project related expenses etc. Donations to the project can also come in the form of server hosting, providing services and paying for people to work on curl related code etc. Usually, such donations are services paid for directly by the sponsors. We grade sponsors in a few different levels and if they meet the criteria, they can be mentioned on the Sponsors page on the curl website. ## Commercial Support The curl project does not do or offer commercial support. It only hosts mailing lists, runs bug trackers etc to facilitate communication and work. However, Daniel works for wolfSSL and we offer commercial curl support there. # Key roles ## User Someone who uses or has used curl or libcurl. ## Contributor Someone who has helped the curl project, who has contributed to bring it forward. Contributing could be to provide advice, debug a problem, file a bug report, run test infrastructure or writing code etc. ## Commit author Sometimes also called 'committer'. Someone who has authored a commit in the curl source code repository. Committers are recorded as `Author` in git. ## Maintainers A maintainer in the curl project is an individual who has been given permissions to push commits to one of the git repositories. Maintainers are free to push commits to the repositories at they see fit. Maintainers are however expected to listen to feedback from users and any change that is non-trivial in size or nature *should* be brought to the project as a Pull-Request (PR) to allow others to comment/object before merge. ## Former maintainers A maintainer who stops being active in the project gets their push permissions removed at some point. We do this for security reasons but also to make sure that we always have the list of maintainers as "the team that push stuff to curl". Getting push permissions removed is not a punishment. Everyone who ever worked on maintaining curl is considered a hero, for all time hereafter. ## Security team members We have a security team. That is the team of people who are subscribed to the curl-security mailing list; the receivers of security reports from users and developers. This list of people varies over time but they are all skilled developers familiar with the curl project. The security team works best when it consists of a small set of active persons. We invite new members when the team seems to need it, and we also expect to retire security team members as they "drift off" from the project or just find themselves unable to perform their duties there. ## Core team There is a curl core team. It currently has the same set of members as the security team. It can also be reached on the security email address. The core team nominates and invites new members to the team when it sees fit. There is no open member voting or formal ways to be a candidate. Active participants in the curl project who want to join the core team can ask to join. The core team is a board of advisors. It deals with project management subjects that need confidentiality or for other reasons cannot be dealt with and discussed in the open (for example reports of code of conduct violations). Project matters should always as far as possible be discussed on open mailing lists. ## Server admins We run a web server, a mailing list and more on the curl project's primary server. That physical machine is owned and run by Haxx. Daniel is the primary admin of all things curl related server stuff, but Björn Stenberg and Linus Feltzing serve as backup admins for when Daniel is gone or unable. The primary server is paid for by Haxx. The machine is physically located in a server bunker in Stockholm Sweden, operated by the company Glesys. The website contents are served to the web via Fastly and Daniel is the primary curl contact with Fastly. ## BDFL That is Daniel. # Maintainers A curl maintainer is a project volunteer who has the authority and rights to merge changes into a git repository in the curl project. Anyone can aspire to become a curl maintainer. ### Duties There are no mandatory duties. We hope and wish that maintainers consider reviewing patches and help merging them, especially when the changes are within the area of personal expertise and experience. ### Requirements - only merge code that meets our quality and style guide requirements. - *never* merge code without doing a PR first, unless the change is "trivial" - if in doubt, ask for input/feedback from others ### Recommendations - we require two-factor authentication enabled on your GitHub account to reduce risk of malicious source code tampering - consider enabling signed git commits for additional verification of changes ### Merge advice When you are merging patches/pull requests... - make sure the commit messages follow our template - squash patch sets into a few logical commits even if the PR did not, if necessary - avoid the "merge" button on GitHub, do it "manually" instead to get full control and full audit trail (GitHub leaves out you as "Committer:") - remember to credit the reporter and the helpers. ## Who are maintainers? The [list of maintainers](https://github.com/orgs/curl/people). Be aware that the level of presence and activity in the project vary greatly between different individuals and over time. ### Become a maintainer? If you think you can help making the project better by shouldering some maintaining responsibilities, then please get in touch. You are expected to be familiar with the curl project and its ways of working. You need to have gotten a few quality patches merged as a proof of this. ### Stop being a maintainer If you (appear to) not be active in the project anymore, you may be removed as a maintainer. Thank you for your service. curl-8.14.1/docs/HELP-US.md0000644000000000000000000001012715017756261013302 0ustar0000000000000000 # How to get started helping out in the curl project We are always in need of more help. If you are new to the project and are looking for ways to contribute and help out, this document aims to give a few good starting points. You may subscribe to the [curl-library mailing list](https://lists.haxx.se/listinfo/curl-library) to keep track of the current discussion topics; or if you are registered on GitHub, you can use the [Discussions section](https://github.com/curl/curl/discussions) on the main curl repository. ## Scratch your own itch One of the best ways is to start working on any problems or issues you have found yourself or perhaps got annoyed at in the past. It can be a spelling error in an error text or a weirdly phrased section in a man page. Hunt it down and report the bug. Or make your first pull request with a fix for that. ## Smaller tasks Some projects mark small issues as "beginner friendly", "bite-sized" or similar. We do not do that in curl since such issues never linger around long enough. Simple issues get handled fast. If you are looking for a smaller or simpler task in the project to help out with as an entry-point into the project, perhaps because you are a newcomer or even maybe not a terribly experienced developer, here's our advice: - Read through this document to get a grasp on a general approach to use - Consider adding a test case for something not currently tested (correctly) - Consider updating or adding documentation - One way to get started gently in the project, is to participate in an existing issue/PR and help out by reproducing the issue, review the code in the PR etc. ## Help wanted In the issue tracker we occasionally mark bugs with [help wanted](https://github.com/curl/curl/labels/help%20wanted), as a sign that the bug is acknowledged to exist and that there is nobody known to work on this issue for the moment. Those are bugs that are fine to "grab" and provide a pull request for. The complexity level of these of course varies, so pick one that piques your interest. ## Work on known bugs Some bugs are known and have not yet received attention and work enough to get fixed. We collect such known existing flaws in the [KNOWN_BUGS](https://curl.se/docs/knownbugs.html) page. Many of them link to the original bug report with some additional details, but some may also have aged a bit and may require some verification that the bug still exists in the same way and that what was said about it in the past is still valid. ## Fix autobuild problems On the [autobuilds page](https://curl.se/dev/builds.html) we show a collection of test results from the automatic curl build and tests that are performed by volunteers. Fixing compiler warnings and errors shown there is something we value greatly. Also, if you own or run systems or architectures that are not already tested in the autobuilds, we also appreciate more volunteers running builds automatically to help us keep curl portable. ## TODO items Ideas for features and functions that we have considered worthwhile to implement and provide are kept in the [TODO](https://curl.se/docs/todo.html) file. Some of the ideas are rough. Some are well thought out. Some probably are not really suitable anymore. Before you invest a lot of time on a TODO item, do bring it up for discussion on the mailing list. For discussion on applicability but also for ideas and brainstorming on specific ways to do the implementation etc. ## You decide You can also come up with a completely new thing you think we should do. Or not do. Or fix. Or add to the project. You then either bring it to the mailing list first to see if people shoot down the idea at once, or you bring a first draft of the idea as a pull request and take the discussion there around the specific implementation. Either way is fine. ## CONTRIBUTE We offer [guidelines](https://curl.se/dev/contribute.html) that are suitable to be familiar with before you decide to contribute to curl. If you are used to open source development, you probably do not find many surprises there. curl-8.14.1/docs/HISTORY.md0000644000000000000000000003222315017756261013367 0ustar0000000000000000 How curl Became Like This ========================= Towards the end of 1996, Daniel Stenberg was spending time writing an IRC bot for an Amiga related channel on EFnet. He then came up with the idea to make currency-exchange calculations available to Internet Relay Chat (IRC) users. All the necessary data were published on the Web; he just needed to automate their retrieval. 1996 ---- On November 11, 1996 the Brazilian developer Rafael Sagula wrote and released HttpGet version 0.1. Daniel extended this existing command-line open-source tool. After a few minor adjustments, it did just what he needed. The first release with Daniel's additions was 0.2, released on December 17, 1996. Daniel quickly became the new maintainer of the project. 1997 ---- HttpGet 0.3 was released in January 1997 and now it accepted HTTP URLs on the command line. HttpGet 1.0 was released on April 8 1997 with brand new HTTP proxy support. We soon found and fixed support for getting currencies over GOPHER. Once FTP download support was added, the name of the project was changed and urlget 2.0 was released in August 1997. The http-only days were already passed. Version 2.2 was released on August 14 1997 and introduced support to build for and run on Windows and Solaris. November 24 1997: Version 3.1 added FTP upload support. Version 3.5 added support for HTTP POST. 1998 ---- February 4: urlget 3.10 February 9: urlget 3.11 March 14: urlget 3.12 added proxy authentication. The project slowly grew bigger. With upload capabilities, the name was once again misleading and a second name change was made. On March 20, 1998 curl 4 was released. (The version numbering from the previous names was kept.) (Unrelated to this project a company called Curl Corporation registered a US trademark on the name "CURL" on May 18 1998. That company had then already registered the curl.com domain back in November of the previous year. All this was revealed to us much later.) SSL support was added, powered by the SSLeay library. August: first announcement of curl on freshmeat.net. October: with the curl 4.9 release and the introduction of cookie support, curl was no longer released under the GPL license. Now we are at 4000 lines of code, we switched over to the MPL license to restrict the effects of "copyleft". November: configure script and reported successful compiles on several major operating systems. The never-quite-understood -F option was added and curl could now simulate quite a lot of a browser. TELNET support was added. curl 5 was released in December 1998 and introduced the first ever curl man page. People started making Linux RPM packages out of it. 1999 ---- January: DICT support added. OpenSSL took over and SSLeay was abandoned. May: first Debian package. August: LDAP:// and FILE:// support added. The curl website gets 1300 visits weekly. Moved site to curl.haxx.nu. September: Released curl 6.0. 15000 lines of code. December 28: added the project on Sourceforge and started using its services for managing the project. 2000 ---- Spring: major internal overhaul to provide a suitable library interface. The first non-beta release was named 7.1 and arrived in August. This offered the easy interface and turned out to be the beginning of actually getting other software and programs to be based on and powered by libcurl. Almost 20000 lines of code. June: the curl site moves to "curl.haxx.se" August, the curl website gets 4000 visits weekly. The PHP guys adopted libcurl already the same month, when the first ever third party libcurl binding showed up. CURL has been a supported module in PHP since the release of PHP 4.0.2. This would soon get followers. More than 16 different bindings exist at the time of this writing. September: kerberos4 support was added. November: started the work on a test suite for curl. It was later re-written from scratch again. The libcurl major SONAME number was set to 1. 2001 ---- January: Daniel released curl 7.5.2 under a new license again: MIT (or MPL). The MIT license is extremely liberal and can be combined with GPL in other projects. This would finally put an end to the "complaints" from people involved in GPLed projects that previously were prohibited from using libcurl while it was released under MPL only. (Due to the fact that MPL is deemed "GPL incompatible".) March 22: curl supports HTTP 1.1 starting with the release of 7.7. This also introduced libcurl's ability to do persistent connections. 24000 lines of code. The libcurl major SONAME number was bumped to 2 due to this overhaul. The first experimental ftps:// support was added. August: The curl website gets 8000 visits weekly. Curl Corporation contacted Daniel to discuss "the name issue". After Daniel's reply, they have never since got back in touch again. September: libcurl 7.9 introduces cookie jar and `curl_formadd()`. During the forthcoming 7.9.x releases, we introduced the multi interface slowly and without many whistles. September 25: curl (7.7.2) is bundled in Mac OS X (10.1) for the first time. It was already becoming more and more of a standard utility of Linux distributions and a regular in the BSD ports collections. 2002 ---- June: the curl website gets 13000 visits weekly. curl and libcurl is 35000 lines of code. Reported successful compiles on more than 40 combinations of CPUs and operating systems. To estimate the number of users of the curl tool or libcurl library is next to impossible. Around 5000 downloaded packages each week from the main site gives a hint, but the packages are mirrored extensively, bundled with numerous OS distributions and otherwise retrieved as part of other software. October 1: with the release of curl 7.10 it is released under the MIT license only. Starting with 7.10, curl verifies SSL server certificates by default. 2003 ---- January: Started working on the distributed curl tests. The autobuilds. February: the curl site averages at 20000 visits weekly. At any given moment, there is an average of 3 people browsing the website. Multiple new authentication schemes are supported: Digest (May), NTLM (June) and Negotiate (June). November: curl 7.10.8 is released. 45000 lines of code. ~55000 unique visitors to the website. Five official web mirrors. December: full-fledged SSL for FTP is supported. 2004 ---- January: curl 7.11.0 introduced large file support. June: curl 7.12.0 introduced IDN support. 10 official web mirrors. This release bumped the major SONAME to 3 due to the removal of the `curl_formparse()` function August: curl and libcurl 7.12.1 Public curl release number: 82 Releases counted from the beginning: 109 Available command line options: 96 Available curl_easy_setopt() options: 120 Number of public functions in libcurl: 36 Amount of public website mirrors: 12 Number of known libcurl bindings: 26 2005 ---- April: GnuTLS can now optionally be used for the secure layer when curl is built. April: Added the multi_socket() API September: TFTP support was added. More than 100,000 unique visitors of the curl website. 25 mirrors. December: security vulnerability: libcurl URL Buffer Overflow 2006 ---- January: We dropped support for Gopher. We found bugs in the implementation that turned out to have been introduced years ago, so with the conclusion that nobody had found out in all this time we removed it instead of fixing it. March: security vulnerability: libcurl TFTP Packet Buffer Overflow September: The major SONAME number for libcurl was bumped to 4 due to the removal of ftp third party transfer support. November: Added SCP and SFTP support 2007 ---- February: Added support for the Mozilla NSS library to do the SSL/TLS stuff July: security vulnerability: libcurl GnuTLS insufficient cert verification 2008 ---- November: Command line options: 128 curl_easy_setopt() options: 158 Public functions in libcurl: 58 Known libcurl bindings: 37 Contributors: 683 145,000 unique visitors. >100 GB downloaded. 2009 ---- March: security vulnerability: libcurl Arbitrary File Access April: added CMake support August: security vulnerability: libcurl embedded zero in cert name December: Added support for IMAP, POP3 and SMTP 2010 ---- January: Added support for RTSP February: security vulnerability: libcurl data callback excessive length March: The project switched over to use git (hosted by GitHub) instead of CVS for source code control May: Added support for RTMP Added support for PolarSSL to do the SSL/TLS stuff August: Public curl releases: 117 Command line options: 138 curl_easy_setopt() options: 180 Public functions in libcurl: 58 Known libcurl bindings: 39 Contributors: 808 Gopher support added (re-added actually, see January 2006) 2011 ---- February: added support for the axTLS backend April: added the cyassl backend (later renamed to wolfSSL) 2012 ---- July: Added support for Schannel (native Windows TLS backend) and Darwin SSL (Native Mac OS X and iOS TLS backend). Supports Metalink October: SSH-agent support. 2013 ---- February: Cleaned up internals to always uses the "multi" non-blocking approach internally and only expose the blocking API with a wrapper. September: First small steps on supporting HTTP/2 with nghttp2. October: Removed krb4 support. December: Happy eyeballs. 2014 ---- March: first real release supporting HTTP/2 September: Website had 245,000 unique visitors and served 236GB data SMB and SMBS support 2015 ---- June: support for multiplexing with HTTP/2 August: support for HTTP/2 server push December: Public Suffix List 2016 ---- January: the curl tool defaults to HTTP/2 for HTTPS URLs December: curl 7.52.0 introduced support for HTTPS-proxy First TLS 1.3 support 2017 ---- July: OSS-Fuzz started fuzzing libcurl September: Added MultiSSL support The website serves 3100 GB/month Public curl releases: 169 Command line options: 211 curl_easy_setopt() options: 249 Public functions in libcurl: 74 Contributors: 1609 October: SSLKEYLOGFILE support, new MIME API October: Daniel received the Polhem Prize for his work on curl November: brotli 2018 ---- January: new SSH backend powered by libssh March: starting with the 1803 release of Windows 10, curl is shipped bundled with Microsoft's operating system. July: curl shows headers using bold type face October: added DNS-over-HTTPS (DoH) and the URL API MesaLink is a new supported TLS backend libcurl now does HTTP/2 (and multiplexing) by default on HTTPS URLs curl and libcurl are installed in an estimated 5 *billion* instances world-wide. October 31: curl and libcurl 7.62.0 Public curl releases: 177 Command line options: 219 curl_easy_setopt() options: 261 Public functions in libcurl: 80 Contributors: 1808 December: removed axTLS support 2019 ---- March: added experimental alt-svc support August: the first HTTP/3 requests with curl. September: 7.66.0 is released and the tool offers parallel downloads 2020 ---- curl and libcurl are installed in an estimated 10 *billion* instances world-wide. January: added BearSSL support March: removed support for PolarSSL, added wolfSSH support April: experimental MQTT support August: zstd support November: the website moves to curl.se. The website serves 10TB data monthly. December: alt-svc support 2021 ---- February 3: curl 7.75.0 ships with support for Hyper as an HTTP backend March 31: curl 7.76.0 ships with support for Rustls July: HSTS is supported 2022 ---- March: added --json, removed mesalink support Public curl releases: 206 Command line options: 245 curl_easy_setopt() options: 295 Public functions in libcurl: 86 Contributors: 2601 The curl.se website serves 16,500 GB/month over 462M requests, the official docker image has been pulled 4,098,015,431 times. October: initial WebSocket support 2023 ---- March: remove support for curl_off_t < 8 bytes March 31: we started working on a new command line tool for URL parsing and manipulations: trurl. May: added support for HTTP/2 over HTTPS proxy. Refuse to resolve .onion. August: Dropped support for the NSS library September: added "variable" support in the command line tool. Dropped support for the gskit TLS library. October: added support for IPFS via HTTP gateway December: HTTP/3 support with ngtcp2 is no longer experimental 2024 ---- January: switched to "curldown" for all documentation April 24: the curl container has been pulled more than six billion times May: experimental support for ECH, dropped NTLM_WB August 9: we adopted the wcurl tool into the curl organization September 11: --help [option] November 6: TLS 1.3 early data, WebSocket is official December 21: dropped hyper 2025 ---- February 5: first 0RTT for QUIC, ssl session import/export February: experimental HTTPS RR support February 22: The website served 62.95 TB/month; 12.43 billion requests The docker image has been pulled 6373501745 times. curl-8.14.1/docs/HSTS.md0000644000000000000000000000236415017756261013012 0ustar0000000000000000 # HSTS support HTTP Strict-Transport-Security. Added as experimental in curl 7.74.0. Supported "for real" since 7.77.0. ## Standard [HTTP Strict Transport Security](https://datatracker.ietf.org/doc/html/rfc6797) ## Behavior libcurl features an in-memory cache for HSTS hosts, so that subsequent HTTP-only requests to a hostname present in the cache gets internally "redirected" to the HTTPS version. ## `curl_easy_setopt()` options: - `CURLOPT_HSTS_CTRL` - enable HSTS for this easy handle - `CURLOPT_HSTS` - specify filename where to store the HSTS cache on close (and possibly read from at startup) ## curl command line options - `--hsts [filename]` - enable HSTS, use the file as HSTS cache. If filename is `""` (no length) then no file is used, only in-memory cache. ## HSTS cache file format Lines starting with `#` are ignored. For each hsts entry: [host name] "YYYYMMDD HH:MM:SS" The `[host name]` is dot-prefixed if it includes subdomains. The time stamp is when the entry expires. ## Possible future additions - `CURLOPT_HSTS_PRELOAD` - provide a set of HSTS hostnames to load first - ability to save to something else than a file curl-8.14.1/docs/HTTP-COOKIES.md0000644000000000000000000001553415017756261014105 0ustar0000000000000000 # HTTP Cookies ## Cookie overview Cookies are `name=contents` pairs that an HTTP server tells the client to hold and then the client sends back those to the server on subsequent requests to the same domains and paths for which the cookies were set. Cookies are either "session cookies" which typically are forgotten when the session is over which is often translated to equal when browser quits, or the cookies are not session cookies they have expiration dates after which the client throws them away. Cookies are set to the client with the Set-Cookie: header and are sent to servers with the Cookie: header. For a long time, the only spec explaining how to use cookies was the original [Netscape spec from 1994](https://curl.se/rfc/cookie_spec.html). In 2011, [RFC 6265](https://www.ietf.org/rfc/rfc6265.txt) was finally published and details how cookies work within HTTP. In 2016, an update which added support for prefixes was [proposed](https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00), and in 2017, another update was [drafted](https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-alone-01) to deprecate modification of 'secure' cookies from non-secure origins. Both of these drafts have been incorporated into a proposal to [replace](https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis-11) RFC 6265. Cookie prefixes and secure cookie modification protection has been implemented by curl. curl considers `http://localhost` to be a *secure context*, meaning that it allows and uses cookies marked with the `secure` keyword even when done over plain HTTP for this host. curl does this to match how popular browsers work with secure cookies. ## Super cookies A single cookie can be set for a domain that matches multiple hosts. Like if set for `example.com` it gets sent to both `aa.example.com` as well as `bb.example.com`. A challenge with this concept is that there are certain domains for which cookies should not be allowed at all, because they are *Public Suffixes*. Similarly, a client never accepts cookies set directly for the top-level domain like for example `.com`. Cookies set for *too broad* domains are generally referred to as *super cookies*. If curl is built with PSL (**Public Suffix List**) support, it detects and discards cookies that are specified for such suffix domains that should not be allowed to have cookies. if curl is *not* built with PSL support, it has no ability to stop super cookies. ## Cookies saved to disk Netscape once created a file format for storing cookies on disk so that they would survive browser restarts. curl adopted that file format to allow sharing the cookies with browsers, only to see browsers move away from that format. Modern browsers no longer use it, while curl still does. The Netscape cookie file format stores one cookie per physical line in the file with a bunch of associated meta data, each field separated with TAB. That file is called the cookie jar in curl terminology. When libcurl saves a cookie jar, it creates a file header of its own in which there is a URL mention that links to the web version of this document. ## Cookie file format The cookie file format is text based and stores one cookie per line. Lines that start with `#` are treated as comments. An exception is lines that start with `#HttpOnly_`, which is a prefix for cookies that have the `HttpOnly` attribute set. Each line that specifies a single cookie consists of seven text fields separated with TAB characters. A valid line must end with a newline character. ### Fields in the file Field number, what type and example data and the meaning of it: 0. string `example.com` - the domain name 1. boolean `FALSE` - include subdomains 2. string `/foobar/` - path 3. boolean `TRUE` - send/receive over HTTPS only 4. number `1462299217` - expires at - seconds since Jan 1st 1970, or 0 5. string `person` - name of the cookie 6. string `daniel` - value of the cookie ## Cookies with curl the command line tool curl has a full cookie "engine" built in. If you just activate it, you can have curl receive and send cookies exactly as mandated in the specs. Command line options: [`-b, --cookie`](https://curl.se/docs/manpage.html#-b) tell curl a file to read cookies from and start the cookie engine, or if it is not a file it passes on the given string. `-b name=var` works and so does `-b cookiefile`. [`-j, --junk-session-cookies`](https://curl.se/docs/manpage.html#-j) when used in combination with -b, it skips all "session cookies" on load so as to appear to start a new cookie session. [`-c, --cookie-jar`](https://curl.se/docs/manpage.html#-c) tell curl to start the cookie engine and write cookies to the given file after the request(s) ## Cookies with libcurl libcurl offers several ways to enable and interface the cookie engine. These options are the ones provided by the native API. libcurl bindings may offer access to them using other means. [`CURLOPT_COOKIE`](https://curl.se/libcurl/c/CURLOPT_COOKIE.html) Is used when you want to specify the exact contents of a cookie header to send to the server. [`CURLOPT_COOKIEFILE`](https://curl.se/libcurl/c/CURLOPT_COOKIEFILE.html) Tell libcurl to activate the cookie engine, and to read the initial set of cookies from the given file. Read-only. [`CURLOPT_COOKIEJAR`](https://curl.se/libcurl/c/CURLOPT_COOKIEJAR.html) Tell libcurl to activate the cookie engine, and when the easy handle is closed save all known cookies to the given cookie jar file. Write-only. [`CURLOPT_COOKIELIST`](https://curl.se/libcurl/c/CURLOPT_COOKIELIST.html) Provide detailed information about a single cookie to add to the internal storage of cookies. Pass in the cookie as an HTTP header with all the details set, or pass in a line from a Netscape cookie file. This option can also be used to flush the cookies etc. [`CURLOPT_COOKIESESSION`](https://curl.se/libcurl/c/CURLOPT_COOKIESESSION.html) Tell libcurl to ignore all cookies it is about to load that are session cookies. [`CURLINFO_COOKIELIST`](https://curl.se/libcurl/c/CURLINFO_COOKIELIST.html) Extract cookie information from the internal cookie storage as a linked list. ## Cookies with JavaScript These days a lot of the web is built up by JavaScript. The web browser loads complete programs that render the page you see. These JavaScript programs can also set and access cookies. Since curl and libcurl are plain HTTP clients without any knowledge of or capability to handle JavaScript, such cookies are not detected or used. Often, if you want to mimic what a browser does on such websites, you can record web browser HTTP traffic when using such a site and then repeat the cookie operations using curl or libcurl. curl-8.14.1/docs/HTTP3.md0000644000000000000000000003615715017756261013102 0ustar0000000000000000 # HTTP3 (and QUIC) ## Resources [HTTP/3 Explained](https://http3-explained.haxx.se/en/) - the online free book describing the protocols involved. [quicwg.org](https://quicwg.org/) - home of the official protocol drafts ## QUIC libraries QUIC libraries we are using: [ngtcp2](https://github.com/ngtcp2/ngtcp2) [quiche](https://github.com/cloudflare/quiche) - **EXPERIMENTAL** [OpenSSL 3.2+ QUIC](https://github.com/openssl/openssl) - **EXPERIMENTAL** [msh3](https://github.com/nibanks/msh3) (with [msquic](https://github.com/microsoft/msquic)) - **EXPERIMENTAL** ## Experimental HTTP/3 support in curl is considered **EXPERIMENTAL** until further notice when built to use *quiche* or *msh3*. Only the *ngtcp2* backend is not experimental. Further development and tweaking of the HTTP/3 support in curl happens in the master branch using pull-requests, just like ordinary changes. To fix before we remove the experimental label: - the used QUIC library needs to consider itself non-beta - it is fine to "leave" individual backends as experimental if necessary # ngtcp2 version Building curl with ngtcp2 involves 3 components: `ngtcp2` itself, `nghttp3` and a QUIC supporting TLS library. The supported TLS libraries are covered below. While any version of `ngtcp2` and `nghttp3` from v1.0.0 on are expected to work, using the latest versions often brings functional and performance improvements. The build examples use `$NGHTTP3_VERSION` and `$NGTCP2_VERSION` as placeholders for the version you build. ## Build with OpenSSL OpenSSL v3.5.0+ offers APIs for integration with *ngtcp2* v1.12.0+. Earlier versions do not work. Build OpenSSL (version 3.5.0 or newer): % git clone --quiet --depth=1 -b openssl-$OPENSSL_VERSION https://github.com/openssl/openssl % cd openssl % ./config --prefix= --libdir=lib % make % make install Build nghttp3: % cd .. % git clone -b $NGHTTP3_VERSION https://github.com/ngtcp2/nghttp3 % cd nghttp3 % git submodule update --init % autoreconf -fi % ./configure --prefix= --enable-lib-only % make % make install Build ngtcp2: % cd .. % git clone -b $NGTCP2_VERSION https://github.com/ngtcp2/ngtcp2 % cd ngtcp2 % autoreconf -fi % ./configure PKG_CONFIG_PATH=/lib/pkgconfig:/lib/pkgconfig LDFLAGS="-Wl,-rpath,/lib" --prefix= --enable-lib-only --with-openssl % make % make install Build curl: % cd .. % git clone https://github.com/curl/curl % cd curl % autoreconf -fi % LDFLAGS="-Wl,-rpath,/lib" ./configure --with-openssl= --with-nghttp3= --with-ngtcp2= % make % make install ## Build with quictls OpenSSL does not offer the required APIs for building a QUIC client. You need to use a TLS library that has such APIs and that works with *ngtcp2*. Build quictls (any `+quic` tagged version works): % git clone --depth 1 -b openssl-3.1.4+quic https://github.com/quictls/openssl % cd openssl % ./config enable-tls1_3 --prefix= --libdir=lib % make % make install Build nghttp3: % cd .. % git clone -b $NGHTTP3_VERSION https://github.com/ngtcp2/nghttp3 % cd nghttp3 % git submodule update --init % autoreconf -fi % ./configure --prefix= --enable-lib-only % make % make install Build ngtcp2: % cd .. % git clone -b $NGTCP2_VERSION https://github.com/ngtcp2/ngtcp2 % cd ngtcp2 % autoreconf -fi % ./configure PKG_CONFIG_PATH=/lib/pkgconfig:/lib/pkgconfig LDFLAGS="-Wl,-rpath,/lib" --prefix= --enable-lib-only % make % make install Build curl: % cd .. % git clone https://github.com/curl/curl % cd curl % autoreconf -fi % LDFLAGS="-Wl,-rpath,/lib" ./configure --with-openssl= --with-nghttp3= --with-ngtcp2= % make % make install ## Build with GnuTLS Build GnuTLS: % git clone --depth 1 https://gitlab.com/gnutls/gnutls.git % cd gnutls % ./bootstrap % ./configure --prefix= % make % make install Build nghttp3: % cd .. % git clone -b $NGHTTP3_VERSION https://github.com/ngtcp2/nghttp3 % cd nghttp3 % git submodule update --init % autoreconf -fi % ./configure --prefix= --enable-lib-only % make % make install Build ngtcp2: % cd .. % git clone -b $NGTCP2_VERSION https://github.com/ngtcp2/ngtcp2 % cd ngtcp2 % autoreconf -fi % ./configure PKG_CONFIG_PATH=/lib/pkgconfig:/lib/pkgconfig LDFLAGS="-Wl,-rpath,/lib" --prefix= --enable-lib-only --with-gnutls % make % make install Build curl: % cd .. % git clone https://github.com/curl/curl % cd curl % autoreconf -fi % ./configure --with-gnutls= --with-nghttp3= --with-ngtcp2= % make % make install ## Build with wolfSSL Build wolfSSL: % git clone https://github.com/wolfSSL/wolfssl.git % cd wolfssl % autoreconf -fi % ./configure --prefix= --enable-quic --enable-session-ticket --enable-earlydata --enable-psk --enable-harden --enable-altcertchains % make % make install Build nghttp3: % cd .. % git clone -b $NGHTTP3_VERSION https://github.com/ngtcp2/nghttp3 % cd nghttp3 % git submodule update --init % autoreconf -fi % ./configure --prefix= --enable-lib-only % make % make install Build ngtcp2: % cd .. % git clone -b $NGTCP2_VERSION https://github.com/ngtcp2/ngtcp2 % cd ngtcp2 % autoreconf -fi % ./configure PKG_CONFIG_PATH=/lib/pkgconfig:/lib/pkgconfig LDFLAGS="-Wl,-rpath,/lib" --prefix= --enable-lib-only --with-wolfssl % make % make install Build curl: % cd .. % git clone https://github.com/curl/curl % cd curl % autoreconf -fi % ./configure --with-wolfssl= --with-nghttp3= --with-ngtcp2= % make % make install # quiche version quiche support is **EXPERIMENTAL** Since the quiche build manages its dependencies, curl can be built against the latest version. You are *probably* able to build against their main branch, but in case of problems, we recommend their latest release tag. ## Build Build quiche and BoringSSL: % git clone --recursive -b 0.22.0 https://github.com/cloudflare/quiche % cd quiche % cargo build --package quiche --release --features ffi,pkg-config-meta,qlog % ln -s libquiche.so target/release/libquiche.so.0 % mkdir quiche/deps/boringssl/src/lib % ln -vnf $(find target/release -name libcrypto.a -o -name libssl.a) quiche/deps/boringssl/src/lib/ Build curl: % cd .. % git clone https://github.com/curl/curl % cd curl % autoreconf -fi % ./configure LDFLAGS="-Wl,-rpath,$PWD/../quiche/target/release" --with-openssl=$PWD/../quiche/quiche/deps/boringssl/src --with-quiche=$PWD/../quiche/target/release % make % make install If `make install` results in `Permission denied` error, you need to prepend it with `sudo`. # OpenSSL version QUIC support is **EXPERIMENTAL** Use OpenSSL 3.3.1 or newer (QUIC support was added in 3.3.0, with shortcomings on some platforms like macOS). 3.4.1 or newer is recommended. Build via: % cd .. % git clone -b $OPENSSL_VERSION https://github.com/openssl/openssl % cd openssl % ./config enable-tls1_3 --prefix= --libdir=lib % make % make install Build nghttp3: % cd .. % git clone -b $NGHTTP3_VERSION https://github.com/ngtcp2/nghttp3 % cd nghttp3 % git submodule update --init % autoreconf -fi % ./configure --prefix= --enable-lib-only % make % make install Build curl: % cd .. % git clone https://github.com/curl/curl % cd curl % autoreconf -fi % LDFLAGS="-Wl,-rpath,/lib" ./configure --with-openssl= --with-openssl-quic --with-nghttp3= % make % make install You can build curl with cmake: % cd .. % git clone https://github.com/curl/curl % cd curl % cmake -B bld -DCURL_USE_OPENSSL=ON -DUSE_OPENSSL_QUIC=ON % cmake --build bld % cmake --install bld If `make install` results in `Permission denied` error, you need to prepend it with `sudo`. # msh3 (msquic) version **Note**: The msquic HTTP/3 backend is immature and is not properly functional one as of September 2023. Feel free to help us test it and improve it, but there is no point in filing bugs about it just yet. msh3 support is **EXPERIMENTAL** ## Build Linux (with quictls fork of OpenSSL) Build msh3: % git clone -b v0.6.0 --depth 1 --recursive https://github.com/nibanks/msh3 % cd msh3 && mkdir build && cd build % cmake -G 'Unix Makefiles' -DCMAKE_BUILD_TYPE=RelWithDebInfo .. % cmake --build . % cmake --install . Build curl: % git clone https://github.com/curl/curl % cd curl % autoreconf -fi % ./configure LDFLAGS="-Wl,-rpath,/usr/local/lib" --with-msh3=/usr/local --with-openssl % make % make install Run from `/usr/local/bin/curl`. ## Build Windows Build msh3: % git clone -b v0.6.0 --depth 1 --recursive https://github.com/nibanks/msh3 % cd msh3 && mkdir build && cd build % cmake -G 'Visual Studio 17 2022' -DCMAKE_BUILD_TYPE=RelWithDebInfo .. % cmake --build . --config Release % cmake --install . --config Release **Note** - On Windows, Schannel is used for TLS support by default. If you with to use (the quictls fork of) OpenSSL, specify the `-DQUIC_TLS=openssl` option to the generate command above. Also note that OpenSSL brings with it an additional set of build dependencies not specified here. Build curl (in [Visual Studio Command prompt](../winbuild/README.md#open-a-command-prompt)): % git clone https://github.com/curl/curl % cd curl/winbuild % nmake /f Makefile.vc mode=dll WITH_MSH3=dll MSH3_PATH="C:/Program Files/msh3" MACHINE=x64 Run in the `C:/Program Files/msh3/lib` directory, copy `curl.exe` to that directory, or copy `msquic.dll` and `msh3.dll` from that directory to the `curl.exe` directory. For example: % C:\Program Files\msh3\lib> F:\curl\builds\libcurl-vc-x64-release-dll-ipv6-sspi-schannel-msh3\bin\curl.exe --http3 https://curl.se/ # `--http3` Use only HTTP/3: % curl --http3-only https://example.org:4433/ Use HTTP/3 with fallback to HTTP/2 or HTTP/1.1 (see "HTTPS eyeballing" below): % curl --http3 https://example.org:4433/ Upgrade via Alt-Svc: % curl --alt-svc altsvc.cache https://curl.se/ See this [list of public HTTP/3 servers](https://bagder.github.io/HTTP3-test/) ### HTTPS eyeballing With option `--http3` curl attempts earlier HTTP versions as well should the connect attempt via HTTP/3 not succeed "fast enough". This strategy is similar to IPv4/6 happy eyeballing where the alternate address family is used in parallel after a short delay. The IPv4/6 eyeballing has a default of 200ms and you may override that via `--happy-eyeballs-timeout-ms value`. Since HTTP/3 is still relatively new, we decided to use this timeout also for the HTTP eyeballing - with a slight twist. The `happy-eyeballs-timeout-ms` value is the **hard** timeout, meaning after that time expired, a TLS connection is opened in addition to negotiate HTTP/2 or HTTP/1.1. At half of that value - currently - is the **soft** timeout. The soft timeout fires, when there has been **no data at all** seen from the server on the HTTP/3 connection. So, without you specifying anything, the hard timeout is 200ms and the soft is 100ms: * Ideally, the whole QUIC handshake happens and curl has an HTTP/3 connection in less than 100ms. * When QUIC is not supported (or UDP does not work for this network path), no reply is seen and the HTTP/2 TLS+TCP connection starts 100ms later. * In the worst case, UDP replies start before 100ms, but drag on. This starts the TLS+TCP connection after 200ms. * When the QUIC handshake fails, the TLS+TCP connection is attempted right away. For example, when the QUIC server presents the wrong certificate. The whole transfer only fails, when **both** QUIC and TLS+TCP fail to handshake or time out. Note that all this happens in addition to IP version happy eyeballing. If the name resolution for the server gives more than one IP address, curl tries all those until one succeeds - just as with all other protocols. If those IP addresses contain both IPv6 and IPv4, those attempts happen, delayed, in parallel (the actual eyeballing). ## Known Bugs Check out the [list of known HTTP3 bugs](https://curl.se/docs/knownbugs.html#HTTP3). # HTTP/3 Test server This is not advice on how to run anything in production. This is for development and experimenting. ## Prerequisite(s) An existing local HTTP/1.1 server that hosts files. Preferably also a few huge ones. You can easily create huge local files like `truncate -s=8G 8GB` - they are huge but do not occupy that much space on disk since they are just big holes. In a Debian setup you can install apache2. It runs on port 80 and has a document root in `/var/www/html`. Download the 8GB file from apache with `curl localhost/8GB -o dev/null` In this description we setup and run an HTTP/3 reverse-proxy in front of the HTTP/1 server. ## Setup You can select either or both of these server solutions. ### nghttpx Get, build and install quictls, nghttp3 and ngtcp2 as described above. Get, build and install nghttp2: % git clone https://github.com/nghttp2/nghttp2.git % cd nghttp2 % autoreconf -fi % PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/daniel/build-quictls/lib/pkgconfig:/home/daniel/build-nghttp3/lib/pkgconfig:/home/daniel/build-ngtcp2/lib/pkgconfig LDFLAGS=-L/home/daniel/build-quictls/lib CFLAGS=-I/home/daniel/build-quictls/include ./configure --enable-maintainer-mode --prefix=/home/daniel/build-nghttp2 --disable-shared --enable-app --enable-http3 --without-jemalloc --without-libxml2 --without-systemd % make && make install Run the local h3 server on port 9443, make it proxy all traffic through to HTTP/1 on localhost port 80. For local toying, we can just use the test cert that exists in curl's test dir. % CERT=/path/to/stunnel.pem % $HOME/bin/nghttpx $CERT $CERT --backend=localhost,80 \ --frontend="localhost,9443;quic" ### Caddy [Install Caddy](https://caddyserver.com/docs/install). For easiest use, the binary should be either in your PATH or your current directory. Create a `Caddyfile` with the following content: ~~~ localhost:7443 { respond "Hello, world! you are using {http.request.proto}" } ~~~ Then run Caddy: % ./caddy start Making requests to `https://localhost:7443` should tell you which protocol is being used. You can change the hard-coded response to something more useful by replacing `respond` with `reverse_proxy` or `file_server`, for example: `reverse_proxy localhost:80` curl-8.14.1/docs/HTTPSRR.md0000644000000000000000000000665415017756261013405 0ustar0000000000000000 # HTTPS RR [RFC 9460](https://www.rfc-editor.org/rfc/rfc9460.html) documents the HTTPS DNS Resource Record. curl features **experimental** support for HTTPS RR. - The ALPN list from the record is parsed and used - The ECH field is stored - and used if ECH is enabled in the build - The port number is not used (Firefox supports it, Chrome does not) - The target name is not used - The IP addresses (`Ipv6hints`, `Ipv4hints`) from the HTTPS RR are not used - It only supports a single HTTPS RR per hostname - Hostnames without A/AAAA records but *with* HTTPS RR fails - consider service profiles where the RR provides different addresses for TCP vs QUIC etc `HTTPSRR` is listed as a feature in the `curl -V` output if curl contains HTTPS RR support. If c-ares is not included in the build, the HTTPS RR support is limited to DoH. `asyn-rr` is listed as a feature in the `curl -V` output if c-ares is used for additional resolves in addition to a "normal" resolve done with the threaded resolver. The data extracted from the HTTPS RR is stored in the in-memory DNS cache to be reused on subsequent uses of the same hostnames. ## limitations We have decided to work on the HTTPS RR support by following what seems to be (widely) used, and simply wait with implementing the details of the record that do not seem to be deployed. HTTPS RR is a DNS field with many odd corners and complexities and we might as well avoid them if no one seems to want them. ## build ./configure --enable-httpsrr or cmake -DUSE_HTTPSRR=ON ## ALPN The list of ALPN IDs is parsed but may not be completely respected because of what the HTTP version preference is set to, which is a problem we are working on. Also, getting an `HTTP/1.1` ALPN in the HTTPS RR field for an HTTP:// transfer should imply switching to HTTPS, HSTS style. Which curl currently does not. ## DoH When HTTPS RR is enabled in the curl build, The DoH code asks for an HTTPS record in addition to the A and AAAA records, and if an HTTPS RR answer is returned, curl parses it and stores the retrieved information. ## Non-DoH If DoH is not used for name resolving in an HTTPS RR enabled build, we must provide the ability using the regular resolver backends. We use the c-ares DNS library for the HTTPS RR lookup. Version 1.28.0 or later. ### c-ares If curl is built to use the c-ares library for name resolves, an HTTPS RR enabled build makes a request for the HTTPS RR in addition to the regular lookup. ### Threaded resolver When built to use the threaded resolver, which is the default, an HTTPS RR build still needs a c-ares installation provided so that a separate request for the HTTPS record can be done in parallel to the regular getaddrinfo() call. This is done by specifying both c-ares and threaded resolver to configure: ./configure --enable-ares=... --enable-threaded-resolver or to cmake: cmake -DENABLE_ARES=ON -DENABLE_THREADED_RESOLVER=ON Because the HTTPS record is handled separately from the A/AAAA record retrieval, by a separate library, there is a small risk for discrepancies. When building curl using the threaded resolver with HTTPS RR support (using c-ares), the `curl -V` output looks exactly like a c-ares resolver build. ## HTTPS RR Options Because curl is a low level transfer tool for which users sometimes want detailed control, we need to offer options to control HTTPS RR use. curl-8.14.1/docs/INFRASTRUCTURE.md0000644000000000000000000001723615017756261014415 0ustar0000000000000000 # Infrastructure in the curl project Overview of infrastructure we maintain, host and run in the project for the project. ## git repository Since 2010, the main curl git repository has been hosted by GitHub, available at https://github.com/curl/curl. We also use the issue tracker, pull requests and discussions on GitHub. curl has an "enterprise account" on GitHub and is an "organization" on the site. We accept sponsorship via GitHub Sponsors. ## CI services For every pull request and git push to the master repository, a number of build and testing jobs are run on a set of different CI services. The exact services vary over time. GitHub Actions and AppVeyor are the primary ones these days. ## Test Clutch A [Test Clutch](https://github.com/dfandrich/testclutch) instance generates regular reports on curl CI test results at https://testclutch.curl.se/ as well as writing comments on curl pull requests whose tests have failed. The jobs are hosted on a Virtuozzo Application Platform PaaS instance and is managed by Dan Fandrich. The configuration code is is available and managed at https://github.com/dfandrich/testclutch-curl-web ## Autobuilds The curl autobuild system is a set of scripts that build and test curl and send all output logs back to the autobuild server. The results are continuously collected and visualized on the curl website at . The autobuild system and server is maintained by Daniel Stenberg. ## OSS-Fuzz Google runs the [OSS-Fuzz](https://google.github.io/oss-fuzz/) project which also runs fuzzing on curl code, non-stop, in their infrastructure and they send us emails in the rare instances they actually find something. OSS-Fuzz notifies those that are members in the "curl team". Any curl maintainer who wants to is welcome to participate. It requires a Google account. ## Coverity We regularly run our code through the [Coverity static code analyzer](https://scan.coverity.com/) thanks to them offering this service to us for free. ## CodeSonar [CodeSonar](https://codesecure.com/our-products/codesonar/) analyzes the curl source code daily and emails Daniel Stenberg whenever it finds suspected problems in the source code. I hope and expect that we can invite other maintainers to access these reports soon. ## Domain names The project runs services and website using a few different curl related domain names, including `curl.se` and `curl.dev`. Daniel Stenberg owns these domain names. Until a few years ago, the curl website was present at `curl.haxx.se`. The `haxx.se` domain is owned by Haxx AB, administrated by Daniel Stenberg. The curl.haxx.se name is meant to keep working and be redirecting to curl.se for the foreseeable future. ## Websites The main curl website at `curl.se` is maintained by curl maintainers and the content is available and managed at https://github.com/curl/curl-www. The site updates from git and runs make every 20 minutes. Any change pushed to git can thus take up to 20 minutes until it takes effect on the origin server. The content on `curl.dev` is available and managed at https://github.com/curl/curl.dev/ The content on `everything-curl.dev` is available and managed at https://github.com/curl/everything-curl/ The machine hosting the website contents for these three sites is owned by Haxx AB and is primarily managed by Daniel Stenberg (co-owner of the Haxx company). The machine is physically located in Sweden. curl release tarballs are hosted on https://curl.se/download.html. They are uploaded there at release-time by the release manager. curl-for-win downloads are hosted on https://curl.se/windows and are uploaded to the server by Viktor Szakats. curl-for-QNX downloads are hosted on and are uploaded to the server by Daniel Stenberg. Daily release tarball-like snapshots are generated automatically and are provided for download at . CA certificate bundles are extracted from the Firefox source code, hosted by Mozilla and converted to PEM file format and is offered for download. The conversion checks for updates daily. The bundle is provided for download at . There is an automated "download check bot" that runs twice daily to scan for available curl downloads to populate the curl download page appropriately with the correct updated information. The bot uses URLs and patterns for all download packages and is maintained in a database, maintained by Daniel Stenberg and Dan Fandrich. The TLS certificate for the origin curl web server is automatically updated from Let's Encrypt. ## CDN Fastly runs the Content Delivery Network (CDN) that fronts all the curl websites. The CDN caches content that it gets from the origin server. Recently, roughly 99.99% of web requests are satisfied by the CDN without having to reach the origin. The CDN caches different content at different lengths depending on the content-type. The caching thus adds to the time for a change to have an effect on the site from the moment it gets pushed to the git repository. Using this setup, we provide four IPv4 addresses and eight IPv6 addresses for anycast access to the site. Should be snappy from virtually everywhere across the globe. The CDN servers support HTTP/1, HTTP/2 and HTTP/3. They set HSTS for a year. The `HTTP://` version of the site redirects to `HTTPS://`. Fastly manages the TLS certificates from Let's Encrypt for the servers they run on the behalf of curl. ## Containers The curl project offer container builds of curl. The source repository for them is located at . Container images are hosted at and ## DNS The primary domain name, `curl.se` is managed by Kirei and is offered over fault-tolerant anycast servers. High availability and fast access for everyone. The actual physical DNS files and origin bind instance is managed by Daniel Stenberg. ## Mailing lists The curl related mailing lists are hosted by Haxx AB on `lists.haxx.se` and are maintained by Daniel Stenberg. This includes the mailman2 and Postfix instances used for this. ## Email We use a few rare additional curl related email aliases in the curl domains. They go through the mail server `mail.haxx.se` maintained by Daniel Stenberg ## Bug-bounty We run a [bug-bounty](https://curl.se/docs/bugbounty.html) on HackerOne. The setup runs entirely at https://hackerone.com/curl. The money part for the bug bounty is sponsored by the [Internet Bug Bounty](https://hackerone.com/ibb). ## Open Collective We use [Open Collective](https://opencollective.com/curl) as our "fiscal host". All money sent to and received by the curl project is managed by Open Collective. ## Merchandise We have stickers, coffee mugs and coasters. They are managed by Daniel who sits on the inventory. The best way to get your hands on curl merchandise is to attend events where Daniel is physically. ## Chat Some curl developers, maintainers, users and enthusiasts use IRC for real-time chat about curl and related topics. This done in the `#curl` channel on the `libra.chat` IRC network. **Daniel Stenberg** (`bagder`) is registered owner of the channel. We do not run any IRC servers or services ourselves. `curelbot` is a service in the channel that shows details about GitHub issues and pull requests when publicly mentioned using #[number]. The bot is run by user `TheAssassin`. There is a Matrix bridge to the IRC channel called `matrix.curl.se`. The bridge is setup and run by **Sergio Durigan Junior** and **Daniel Stenberg**. [curl online chat documentation](https://curl.se/docs/irc.html) curl-8.14.1/docs/INSTALL0000644000000000000000000000047315017756261012737 0ustar0000000000000000 _ _ ____ _ ___| | | | _ \| | / __| | | | |_) | | | (__| |_| | _ <| |___ \___|\___/|_| \_\_____| How To Compile see INSTALL.md curl-8.14.1/docs/INSTALL-CMAKE.md0000644000000000000000000010434115017756261014153 0ustar0000000000000000 # Building with CMake This document describes how to configure, build and install curl and libcurl from source code using the CMake build tool. To build with CMake, you of course first have to install CMake. The minimum required version of CMake is specified in the file `CMakeLists.txt` found in the top of the curl source tree. Once the correct version of CMake is installed you can follow the instructions below for the platform you are building on. CMake builds can be configured either from the command line, or from one of CMake's GUIs. # Configuring A CMake configuration of curl is similar to the autotools build of curl. It consists of the following steps after you have unpacked the source. We recommend building with CMake on Windows. For instructions on migrating from the `projects/Windows` Visual Studio solution files, see [this section](#migrating-from-visual-studio-ide-project-files). For instructions on migrating from the winbuild builds, see [the following section](#migrating-from-winbuild-builds). ## Using `cmake` You can configure for in source tree builds or for a build tree that is apart from the source tree. - Build in the source tree. $ cmake -B . - Build in a separate directory (parallel to the curl source tree in this example). The build directory is created for you. This is recommended over building in the source tree to separate source and build artifacts. $ cmake -B ../curl-build For the full list of CMake build configuration variables see [the corresponding section](#cmake-build-options). ### Fallback for CMake before version 3.13 CMake before version 3.13 does not support the `-B` option. In that case, you must create the build directory yourself, `cd` to it and run `cmake` from there: $ mkdir ../curl-build $ cd ../curl-build $ cmake ../curl If you want to build in the source tree, it is enough to do this: $ cmake . ### Build system generator selection You can override CMake's default by using `-G `. For example on Windows with multiple build systems if you have MinGW-w64 then you could use `-G "MinGW Makefiles"`. [List of generator names](https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html). ## Using `ccmake` CMake comes with a curses based interface called `ccmake`. To run `ccmake` on a curl use the instructions for the command line cmake, but substitute `ccmake` for `cmake`. This brings up a curses interface with instructions on the bottom of the screen. You can press the "c" key to configure the project, and the "g" key to generate the project. After the project is generated, you can run make. ## Using `cmake-gui` CMake also comes with a Qt based GUI called `cmake-gui`. To configure with `cmake-gui`, you run `cmake-gui` and follow these steps: 1. Fill in the "Where is the source code" combo box with the path to the curl source tree. 2. Fill in the "Where to build the binaries" combo box with the path to the directory for your build tree, ideally this should not be the same as the source tree, but a parallel directory called curl-build or something similar. 3. Once the source and binary directories are specified, press the "Configure" button. 4. Select the native build tool that you want to use. 5. At this point you can change any of the options presented in the GUI. Once you have selected all the options you want, click the "Generate" button. # Building Build (you have to specify the build directory). $ cmake --build ../curl-build ## Static builds The CMake build setup is primarily done to work with shared/dynamic third party dependencies. When linking with shared libraries, the dependency "chain" is handled automatically by the library loader - on all modern systems. If you instead link with a static library, you need to provide all the dependency libraries already at the link command line. Figuring out all the dependency libraries for a given library is hard, as it might involve figuring out the dependencies of the dependencies and they vary between platforms and can change between versions. When using static dependencies, the build scripts mostly assume that you, the user, provide all the necessary additional dependency libraries as additional arguments in the build. Building statically is not for the faint of heart. ### Fallback for CMake before version 3.13 CMake before version 3.13 does not support the `--build` option. In that case, you have to `cd` to the build directory and use the building tool that corresponds to the build files that CMake generated for you. This example assumes that CMake generates `Makefile`: $ cd ../curl-build $ make # Testing (The test suite does not yet work with the cmake build) # Installing Install to default location (you have to specify the build directory). $ cmake --install ../curl-build Do not use `--prefix` to change the installation prefix as the output produced by the `curl-config` script is determined at CMake configure time. If you want to set a custom install prefix for curl, set [`CMAKE_INSTALL_PREFIX`](https://cmake.org/cmake/help/latest/variable/CMAKE_INSTALL_PREFIX.html) when configuring the CMake build. ### Fallback for CMake before version 3.15 CMake before version 3.15 does not support the `--install` option. In that case, you have to `cd` to the build directory and use the building tool that corresponds to the build files that CMake generated for you. This example assumes that CMake generates `Makefile`: $ cd ../curl-build $ make install # CMake usage Just as curl can be built and installed using CMake, it can also be used from CMake. ## Using `find_package` To locate libcurl from CMake, one can use the standard [`find_package`](https://cmake.org/cmake/help/latest/command/find_package.html) command in the typical fashion: ```cmake find_package(CURL 8.12.0 REQUIRED) # FATAL_ERROR if CURL is not found ``` This invokes the CMake-provided [FindCURL](https://cmake.org/cmake/help/latest/module/FindCURL.html) find module, which first performs a search using the `find_package` [config mode](https://cmake.org/cmake/help/latest/command/find_package.html#config-mode-search-procedure). This is supported by the `CURLConfig.cmake` CMake config script which is available if the given CURL was built and installed using CMake. ### Detecting CURL features/protocols Since version 8.12.0, `CURLConfig.cmake` publishes the supported CURL features and protocols (see [release notes](https://curl.se/ch/8.12.0.html)). These can be specified using the `find_package` keywords `COMPONENTS` and `OPTIONAL_COMPONENTS`, with protocols in all caps, e.g. `HTTPS`, `LDAP`, while features should be in their original sentence case, e.g. `AsynchDNS`, `UnixSockets`. If any of the `COMPONENTS` are missing, then CURL is considered as *not* found. Here is an example of using `COMPONENTS` and `OPTIONAL_COMPONENTS` in `find_package` with CURL: ```cmake # CURL_FOUND is FALSE if no HTTPS but brotli and zstd can be missing find_package(CURL 8.12.0 COMPONENTS HTTPS OPTIONAL_COMPONENTS brotli zstd) ``` One can also check the defined `CURL_SUPPORTS_` variables if a particular feature/protocol is supported. For example: ```cmake # check HTTPS if(CURL_SUPPORTS_HTTPS) message(STATUS "CURL supports HTTPS") else() message(STATUS "CURL does NOT support HTTPS") endif() ``` ### Linking against libcurl To link a CMake target against libcurl one can use [`target_link_libraries`](https://cmake.org/cmake/help/latest/command/target_link_libraries.html) as usual: ```cmake target_link_libraries(my_target PRIVATE CURL::libcurl) ``` # CMake build options - `BUILD_CURL_EXE`: Build curl executable. Default: `ON` - `BUILD_EXAMPLES`: Build libcurl examples. Default: `ON` - `BUILD_LIBCURL_DOCS`: Build libcurl man pages. Default: `ON` - `BUILD_MISC_DOCS`: Build misc man pages (e.g. `curl-config` and `mk-ca-bundle`). Default: `ON` - `BUILD_SHARED_LIBS`: Build shared libraries. Default: `ON` - `BUILD_STATIC_CURL`: Build curl executable with static libcurl. Default: `OFF` - `BUILD_STATIC_LIBS`: Build static libraries. Default: `OFF` - `BUILD_TESTING`: Build tests. Default: `ON` - `CURL_CLANG_TIDY`: Run the build through `clang-tidy`. Default: `OFF` - `CURL_CLANG_TIDYFLAGS`: Custom options to pass to `clang-tidy`. Default: (empty) - `CURL_COMPLETION_FISH`: Install fish completions. Default: `OFF` - `CURL_COMPLETION_FISH_DIR`: Custom fish completion install directory. - `CURL_COMPLETION_ZSH`: Install zsh completions. Default: `OFF` - `CURL_COMPLETION_ZSH_DIR`: Custom zsh completion install directory. - `CURL_DEFAULT_SSL_BACKEND`: Override default TLS backend in MultiSSL builds. Accepted values in order of default priority: `wolfssl`, `gnutls`, `mbedtls`, `openssl`, `secure-transport`, `schannel`, `bearssl`, `rustls` - `CURL_ENABLE_EXPORT_TARGET`: Enable CMake export target. Default: `ON` - `CURL_HIDDEN_SYMBOLS`: Hide libcurl internal symbols (=hide all symbols that are not officially external). Default: `ON` - `CURL_LIBCURL_SOVERSION`: Enable libcurl SOVERSION. Default: `ON` for supported platforms - `CURL_LIBCURL_VERSIONED_SYMBOLS`: Enable libcurl versioned symbols. Default: `OFF` - `CURL_LIBCURL_VERSIONED_SYMBOLS_PREFIX`: Override default versioned symbol prefix. Default: `_` or `MULTISSL_` - `CURL_LTO`: Enable compiler Link Time Optimizations. Default: `OFF` - `CURL_STATIC_CRT`: Build libcurl with static CRT with MSVC (`/MT`) (requires UCRT, static libcurl or no curl executable). Default: `OFF` - `CURL_TARGET_WINDOWS_VERSION`: Minimum target Windows version as hex string. - `CURL_TEST_BUNDLES`: Build tests into single-binary bundles. Default: `OFF` - `CURL_WERROR`: Turn compiler warnings into errors. Default: `OFF` - `ENABLE_CURLDEBUG`: Enable TrackMemory debug feature. Default: =`ENABLE_DEBUG` - `ENABLE_CURL_MANUAL`: Build the man page for curl and enable its `-M`/`--manual` option. Default: `ON` - `ENABLE_DEBUG`: Enable curl debug features (for developing curl itself). Default: `OFF` - `ENABLE_SERVER_DEBUG`: Apply curl debug options to test servers. Default: `OFF` - `IMPORT_LIB_SUFFIX`: Import library suffix. Default: `_imp` for MSVC-like toolchains, otherwise empty. - `LIBCURL_OUTPUT_NAME`: Basename of the curl library. Default: `libcurl` - `PICKY_COMPILER`: Enable picky compiler options. Default: `ON` - `SHARE_LIB_OBJECT`: Build shared and static libcurl in a single pass (requires CMake 3.12 or newer). Default: `ON` for Windows - `STATIC_LIB_SUFFIX`: Static library suffix. Default: (empty) ## CA bundle options - `CURL_CA_BUNDLE`: Path to the CA bundle. Set `none` to disable or `auto` for auto-detection. Default: `auto` - `CURL_CA_EMBED`: Path to the CA bundle to embed in the curl tool. Default: (disabled) - `CURL_CA_FALLBACK`: Use built-in CA store of TLS backend. Default: `OFF` - `CURL_CA_PATH`: Location of default CA path. Set `none` to disable or `auto` for auto-detection. Default: `auto` - `CURL_CA_SEARCH_SAFE`: Enable safe CA bundle search (within the curl tool directory) on Windows. Default: `OFF` ## Enabling features - `CURL_ENABLE_SSL`: Enable SSL support. Default: `ON` - `CURL_WINDOWS_SSPI`: Enable SSPI on Windows. Default: =`CURL_USE_SCHANNEL` - `ENABLE_IPV6`: Enable IPv6 support. Default: `ON` if target supports IPv6. - `ENABLE_THREADED_RESOLVER`: Enable threaded DNS lookup. Default: `ON` if c-ares is not enabled and target supports threading. - `ENABLE_UNICODE`: Use the Unicode version of the Windows API functions. Default: `OFF` - `ENABLE_UNIX_SOCKETS`: Enable Unix domain sockets support. Default: `ON` - `USE_ECH`: Enable ECH support. Default: `OFF` - `USE_HTTPSRR`: Enable HTTPS RR support. Default: `OFF` - `USE_OPENSSL_QUIC`: Use OpenSSL and nghttp3 libraries for HTTP/3 support. Default: `OFF` - `USE_SSLS_EXPORT`: Enable experimental SSL session import/export. Default: `OFF` ## Disabling features - `CURL_DISABLE_ALTSVC`: Disable alt-svc support. Default: `OFF` - `CURL_DISABLE_AWS`: Disable **aws-sigv4**. Default: `OFF` - `CURL_DISABLE_BASIC_AUTH`: Disable Basic authentication. Default: `OFF` - `CURL_DISABLE_BEARER_AUTH`: Disable Bearer authentication. Default: `OFF` - `CURL_DISABLE_BINDLOCAL`: Disable local binding support. Default: `OFF` - `CURL_DISABLE_CA_SEARCH`: Disable unsafe CA bundle search in PATH on Windows. Default: `OFF` - `CURL_DISABLE_COOKIES`: Disable cookies support. Default: `OFF` - `CURL_DISABLE_DICT`: Disable DICT. Default: `OFF` - `CURL_DISABLE_DIGEST_AUTH`: Disable Digest authentication. Default: `OFF` - `CURL_DISABLE_DOH`: Disable DNS-over-HTTPS. Default: `OFF` - `CURL_DISABLE_FILE`: Disable FILE. Default: `OFF` - `CURL_DISABLE_FORM_API`: Disable **form-api**. Default: =`CURL_DISABLE_MIME` - `CURL_DISABLE_FTP`: Disable FTP. Default: `OFF` - `CURL_DISABLE_GETOPTIONS`: Disable `curl_easy_options` API for existing options to `curl_easy_setopt`. Default: `OFF` - `CURL_DISABLE_GOPHER`: Disable Gopher. Default: `OFF` - `CURL_DISABLE_HEADERS_API`: Disable **headers-api** support. Default: `OFF` - `CURL_DISABLE_HSTS`: Disable HSTS support. Default: `OFF` - `CURL_DISABLE_HTTP`: Disable HTTP. Default: `OFF` - `CURL_DISABLE_HTTP_AUTH`: Disable all HTTP authentication methods. Default: `OFF` - `CURL_DISABLE_IMAP`: Disable IMAP. Default: `OFF` - `CURL_DISABLE_INSTALL`: Disable installation targets. Default: `OFF` - `CURL_DISABLE_IPFS`: Disable IPFS. Default: `OFF` - `CURL_DISABLE_KERBEROS_AUTH`: Disable Kerberos authentication. Default: `OFF` - `CURL_DISABLE_LDAP`: Disable LDAP. Default: `OFF` - `CURL_DISABLE_LDAPS`: Disable LDAPS. Default: =`CURL_DISABLE_LDAP` - `CURL_DISABLE_LIBCURL_OPTION`: Disable `--libcurl` option from the curl tool. Default: `OFF` - `CURL_DISABLE_MIME`: Disable MIME support. Default: `OFF` - `CURL_DISABLE_MQTT`: Disable MQTT. Default: `OFF` - `CURL_DISABLE_NEGOTIATE_AUTH`: Disable negotiate authentication. Default: `OFF` - `CURL_DISABLE_NETRC`: Disable netrc parser. Default: `OFF` - `CURL_DISABLE_NTLM`: Disable NTLM support. Default: `OFF` - `CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG`: Disable automatic loading of OpenSSL configuration. Default: `OFF` - `CURL_DISABLE_PARSEDATE`: Disable date parsing. Default: `OFF` - `CURL_DISABLE_POP3`: Disable POP3. Default: `OFF` - `CURL_DISABLE_PROGRESS_METER`: Disable built-in progress meter. Default: `OFF` - `CURL_DISABLE_PROXY`: Disable proxy support. Default: `OFF` - `CURL_DISABLE_RTSP`: Disable RTSP. Default: `OFF` - `CURL_DISABLE_SHA512_256`: Disable SHA-512/256 hash algorithm. Default: `OFF` - `CURL_DISABLE_SHUFFLE_DNS`: Disable shuffle DNS feature. Default: `OFF` - `CURL_DISABLE_SMB`: Disable SMB. Default: `OFF` - `CURL_DISABLE_SMTP`: Disable SMTP. Default: `OFF` - `CURL_DISABLE_SOCKETPAIR`: Disable use of socketpair for curl_multi_poll. Default: `OFF` - `CURL_DISABLE_SRP`: Disable TLS-SRP support. Default: `OFF` - `CURL_DISABLE_TELNET`: Disable Telnet. Default: `OFF` - `CURL_DISABLE_TFTP`: Disable TFTP. Default: `OFF` - `CURL_DISABLE_VERBOSE_STRINGS`: Disable verbose strings. Default: `OFF` - `CURL_DISABLE_WEBSOCKETS`: Disable WebSocket. Default: `OFF` - `HTTP_ONLY`: Disable all protocols except HTTP (This overrides all `CURL_DISABLE_*` options). Default: `OFF` ## Environment - `CI`: Assume running under CI if set. - `CURL_BUILDINFO`: Print `buildinfo.txt` if set. - `CURL_CI`: Assume running under CI if set. ## CMake options - `CMAKE_BUILD_TYPE`: (see CMake) - `CMAKE_DEBUG_POSTFIX`: Default: `-d` - `CMAKE_IMPORT_LIBRARY_SUFFIX` (see CMake) - `CMAKE_INSTALL_BINDIR` (see CMake) - `CMAKE_INSTALL_INCLUDEDIR` (see CMake) - `CMAKE_INSTALL_LIBDIR` (see CMake) - `CMAKE_INSTALL_PREFIX` (see CMake) - `CMAKE_STATIC_LIBRARY_SUFFIX` (see CMake) - `CMAKE_UNITY_BUILD_BATCH_SIZE`: Set the number of sources in a "unity" unit. Default: `0` (all) - `CMAKE_UNITY_BUILD`: Enable "unity" (aka jumbo) builds. Default: `OFF` Details via CMake [variables](https://cmake.org/cmake/help/latest/manual/cmake-variables.7.html) and [install directories](https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html). ## Dependencies - `CURL_BROTLI`: Use brotli (`ON`, `OFF` or `AUTO`). Default: `AUTO` - `CURL_USE_BEARSSL`: Enable BearSSL for SSL/TLS. Default: `OFF` - `CURL_USE_GNUTLS`: Enable GnuTLS for SSL/TLS. Default: `OFF` - `CURL_USE_GSASL`: Use libgsasl. Default: `OFF` - `CURL_USE_GSSAPI`: Use GSSAPI implementation. Default: `OFF` - `CURL_USE_LIBPSL`: Use libpsl. Default: `ON` - `CURL_USE_LIBSSH2`: Use libssh2. Default: `ON` - `CURL_USE_LIBSSH`: Use libssh. Default: `OFF` - `CURL_USE_LIBUV`: Use libuv for event-based tests. Default: `OFF` - `CURL_USE_MBEDTLS`: Enable mbedTLS for SSL/TLS. Default: `OFF` - `CURL_USE_OPENSSL`: Enable OpenSSL for SSL/TLS. Default: `ON` if no other TLS backend was enabled. - `CURL_USE_PKGCONFIG`: Enable `pkg-config` to detect dependencies. Default: `ON` for Unix (except Android, Apple devices), vcpkg, MinGW if not cross-compiling. - `CURL_USE_RUSTLS`: Enable Rustls for SSL/TLS. Default: `OFF` - `CURL_USE_SCHANNEL`: Enable Windows native SSL/TLS (Schannel). Default: `OFF` - `CURL_USE_SECTRANSP`: Enable Apple OS native SSL/TLS (Secure Transport). Default: `OFF` - `CURL_USE_WOLFSSH`: Use wolfSSH. Default: `OFF` - `CURL_USE_WOLFSSL`: Enable wolfSSL for SSL/TLS. Default: `OFF` - `CURL_ZLIB`: Use zlib (`ON`, `OFF` or `AUTO`). Default: `AUTO` - `CURL_ZSTD`: Use zstd (`ON`, `OFF` or `AUTO`). Default: `AUTO` - `ENABLE_ARES`: Enable c-ares support. Default: `OFF` - `USE_APPLE_IDN`: Use Apple built-in IDN support. Default: `OFF` - `USE_LIBIDN2`: Use libidn2 for IDN support. Default: `ON` - `USE_LIBRTMP`: Enable librtmp from rtmpdump. Default: `OFF` - `USE_MSH3`: Use msh3/msquic library for HTTP/3 support. Default: `OFF` - `USE_NGHTTP2`: Use nghttp2 library. Default: `ON` - `USE_NGTCP2`: Use ngtcp2 and nghttp3 libraries for HTTP/3 support. Default: `OFF` - `USE_QUICHE`: Use quiche library for HTTP/3 support. Default: `OFF` - `USE_WIN32_IDN`: Use WinIDN for IDN support. Default: `OFF` - `USE_WIN32_LDAP`: Use Windows LDAP implementation. Default: `ON` ## Dependency options (via CMake) - `OPENSSL_ROOT_DIR`: Set this variable to the root installation of OpenSSL (and forks). - `OPENSSL_USE_STATIC_LIBS`: Look for static OpenSSL libraries. - `ZLIB_INCLUDE_DIR`: The zlib include directory. - `ZLIB_LIBRARY`: Path to `zlib` library. - `ZLIB_USE_STATIC_LIBS`: Look for static ZLIB library (requires CMake v3.24). ## Dependency options (tools) - `CLANG_TIDY`: `clang-tidy` tool used with `CURL_CLANG_TIDY=ON`. Default: `clang-tidy` - `PERL_EXECUTABLE`: Perl binary used throughout the build and tests. ## Dependency options (libraries) - `AMISSL_INCLUDE_DIR`: The AmiSSL include directory. - `AMISSL_STUBS_LIBRARY`: Path to `amisslstubs` library. - `AMISSL_AUTO_LIBRARY`: Path to `amisslauto` library. - `BEARSSL_INCLUDE_DIR`: The BearSSL include directory. - `BEARSSL_LIBRARY`: Path to `bearssl` library. - `BROTLI_INCLUDE_DIR`: The brotli include directory. - `BROTLICOMMON_LIBRARY`: Path to `brotlicommon` library. - `BROTLIDEC_LIBRARY`: Path to `brotlidec` library. - `CARES_INCLUDE_DIR`: The c-ares include directory. - `CARES_LIBRARY`: Path to `cares` library. - `DL_LIBRARY`: Path to `dl` library. (for Rustls) - `GSS_ROOT_DIR`: Set this variable to the root installation of GSS. (also supported as environment) - `LDAP_LIBRARY`: Name or full path to `ldap` library. Default: `ldap` - `LDAP_LBER_LIBRARY`: Name or full path to `lber` library. Default: `lber` - `LDAP_INCLUDE_DIR`: Path to LDAP include directory. - `LIBGSASL_INCLUDE_DIR`: The libgsasl include directory. - `LIBGSASL_LIBRARY`: Path to `libgsasl` library. - `LIBIDN2_INCLUDE_DIR`: The libidn2 include directory. - `LIBIDN2_LIBRARY`: Path to `libidn2` library. - `LIBPSL_INCLUDE_DIR`: The libpsl include directory. - `LIBPSL_LIBRARY`: Path to `libpsl` library. - `LIBRTMP_INCLUDE_DIR`: The librtmp include directory. - `LIBRTMP_LIBRARY`: Path to `librtmp` library. - `LIBSSH_INCLUDE_DIR`: The libssh include directory. - `LIBSSH_LIBRARY`: Path to `libssh` library. - `LIBSSH2_INCLUDE_DIR`: The libssh2 include directory. - `LIBSSH2_LIBRARY`: Path to `libssh2` library. - `LIBUV_INCLUDE_DIR`: The libuv include directory. - `LIBUV_LIBRARY`: Path to `libuv` library. - `MATH_LIBRARY`: Path to `m` library. (for Rustls, wolfSSL) - `MBEDTLS_INCLUDE_DIR`: The mbedTLS include directory. - `MBEDTLS_LIBRARY`: Path to `mbedtls` library. - `MBEDX509_LIBRARY`: Path to `mbedx509` library. - `MBEDCRYPTO_LIBRARY`: Path to `mbedcrypto` library. - `MSH3_INCLUDE_DIR`: The msh3 include directory. - `MSH3_LIBRARY`: Path to `msh3` library. - `NGHTTP2_INCLUDE_DIR`: The nghttp2 include directory. - `NGHTTP2_LIBRARY`: Path to `nghttp2` library. - `NGHTTP3_INCLUDE_DIR`: The nghttp3 include directory. - `NGHTTP3_LIBRARY`: Path to `nghttp3` library. - `NGTCP2_INCLUDE_DIR`: The ngtcp2 include directory. - `NGTCP2_LIBRARY`: Path to `ngtcp2` library. - `NETTLE_INCLUDE_DIR`: The nettle include directory. - `NETTLE_LIBRARY`: Path to `nettle` library. - `PTHREAD_LIBRARY`: Path to `pthread` library. (for Rustls) - `QUICHE_INCLUDE_DIR`: The quiche include directory. - `QUICHE_LIBRARY`: Path to `quiche` library. - `RUSTLS_INCLUDE_DIR`: The Rustls include directory. - `RUSTLS_LIBRARY`: Path to `rustls` library. - `WATT_ROOT`: Set this variable to the root installation of Watt-32. - `WOLFSSH_INCLUDE_DIR`: The wolfSSH include directory. - `WOLFSSH_LIBRARY`: Path to `wolfssh` library. - `WOLFSSL_INCLUDE_DIR`: The wolfSSL include directory. - `WOLFSSL_LIBRARY`: Path to `wolfssl` library. - `ZSTD_INCLUDE_DIR`: The zstd include directory. - `ZSTD_LIBRARY`: Path to `zstd` library. ## Test tools - `APXS`: Default: `apxs` - `CADDY`: Default: `caddy` - `HTTPD_NGHTTPX`: Default: `nghttpx` - `HTTPD`: Default: `apache2` - `TEST_NGHTTPX`: Default: `nghttpx` - `VSFTPD`: Default: `vsftps` ## Feature detection variables By default this CMake build script detects the version of some dependencies using `check_symbol_exists`. Those checks do not work in the case that both CURL and its dependency are included as sub-projects in a larger build using `FetchContent`. To support that case, additional variables may be defined by the parent project, ideally in the "extra" find package redirect file: Available variables: - `HAVE_GNUTLS_SRP`: `gnutls_srp_verifier` present in GnuTLS. - `HAVE_GSS_C_NT_HOSTBASED_SERVICE`: `GSS_C_NT_HOSTBASED_SERVICE` present in GSS/Heimdal/Kerberos. - `HAVE_LDAP_INIT_FD`: `ldap_init_fd` present in LDAP library. - `HAVE_LDAP_URL_PARSE`: `ldap_url_parse` present in LDAP library. - `HAVE_OPENSSL_SRP`: `SSL_CTX_set_srp_username` present in OpenSSL (or fork). - `HAVE_QUICHE_CONN_SET_QLOG_FD`: `quiche_conn_set_qlog_fd` present in quiche. - `HAVE_RUSTLS_SUPPORTED_HPKE`: `rustls_supported_hpke` present in Rustls (unused if Rustls is detected via `pkg-config`). - `HAVE_SSL_SET0_WBIO`: `SSL_set0_wbio` present in OpenSSL (or fork). - `HAVE_SSL_SET1_ECH_CONFIG_LIST`: `SSL_set1_ech_config_list` present in OpenSSL (or fork). - `HAVE_SSL_SET_QUIC_TLS_CBS`: `SSL_set_quic_tls_cbs` in OpenSSL. - `HAVE_SSL_SET_QUIC_USE_LEGACY_CODEPOINT`: `SSL_set_quic_use_legacy_codepoint` in OpenSSL fork. - `HAVE_WOLFSSL_BIO_NEW`: `wolfSSL_BIO_new` present in wolfSSL. - `HAVE_WOLFSSL_BIO_SET_SHUTDOWN`: `wolfSSL_BIO_set_shutdown` present in wolfSSL. - `HAVE_WOLFSSL_CTX_GENERATEECHCONFIG`: `wolfSSL_CTX_GenerateEchConfig` present in wolfSSL. - `HAVE_WOLFSSL_DES_ECB_ENCRYPT`: `wolfSSL_DES_ecb_encrypt` present in wolfSSL. - `HAVE_WOLFSSL_GET_PEER_CERTIFICATE`: `wolfSSL_get_peer_certificate` present in wolfSSL. - `HAVE_WOLFSSL_SET_QUIC_USE_LEGACY_CODEPOINT`: `wolfSSL_set_quic_use_legacy_codepoint` present in wolfSSL. - `HAVE_WOLFSSL_USEALPN`: `wolfSSL_UseALPN` present in wolfSSL. For each of the above variables, if the variable is *defined* (either to `ON` or `OFF`), the symbol detection is skipped. If the variable is *not defined*, the feature detection is performed. Note: These variables are internal and subject to change. # Migrating from Visual Studio IDE Project Files We recommend using CMake to build curl with MSVC. The project build files reside in project/Windows/VC\* for VS2010, VS2012 and VS2013. These CMake Visual Studio generators require CMake v3.24 or older. You can download them from . You can also use `-G "NMake Makefiles"`, which is supported by all CMake versions. Configuration element | Equivalent CMake options :-------------------------------- | :-------------------------------- `VC10` | `-G "Visual Studio 10 2010"` `VC11` | `-G "Visual Studio 11 2012"` `VC12` | `-G "Visual Studio 12 2013"` `x64` | `-A x64` `Win32` | `-A Win32` `DLL` | `BUILD_SHARED_LIBS=ON`, `BUILD_STATIC_LIBS=OFF`, (default) `LIB` | `BUILD_SHARED_LIBS=OFF`, `BUILD_STATIC_LIBS=ON` `Debug` | `CMAKE_BUILD_TYPE=Debug` (`-G "NMake Makefiles"` only) `Release` | `CMAKE_BUILD_TYPE=Release` (`-G "NMake Makefiles"` only) `DLL Windows SSPI` | `CURL_USE_SCHANNEL=ON` (with SSPI enabled by default) `DLL OpenSSL` | `CURL_USE_OPENSSL=ON`, optional: `OPENSSL_ROOT_DIR`, `OPENSSL_USE_STATIC_LIBS=ON` `DLL libssh2` | `CURL_USE_LIBSSH2=ON`, optional: `LIBSSH2_INCLUDE_DIR`, `LIBSSH2_LIBRARY` `DLL WinIDN` | `USE_WIN32_IDN=ON` For example these commands: > cd projects > ./generate.bat VC12 > msbuild "-property:Configuration=DLL Debug - DLL Windows SSPI - DLL WinIDN" Windows/VC12/curl-all.sln translate to: > cmake . -G "Visual Studio 12 2013" -A x64 -DCURL_USE_SCHANNEL=ON -DUSE_WIN32_IDN=ON -DCURL_USE_LIBPSL=OFF > cmake --build . --config Debug --parallel We do *not* specify `-DCMAKE_BUILD_TYPE=Debug` here as we might do for the `"NMake Makefiles"` generator because the Visual Studio generators are [multi-config generators](https://cmake.org/cmake/help/latest/prop_gbl/GENERATOR_IS_MULTI_CONFIG.html) and therefore ignore the value of `CMAKE_BUILD_TYPE`. # Migrating from winbuild builds We recommend CMake to build curl with MSVC. The winbuild build system is deprecated and is going to be removed in September 2025 in favor of the CMake build system. In CMake you can customize the path of dependencies by passing the absolute header path and the full path of the library via `*_INCLUDE_DIR` and `*_LIBRARY` options (see the complete list in the option listing above). The full path to the library can point to a static library or an import library, which defines if the dependency is linked as a dll or statically. For OpenSSL this works [differently](https://cmake.org/cmake/help/latest/module/FindOpenSSL.html): You can pass the root directory of the OpenSSL installation via `OPENSSL_ROOT_DIR`, then pass `OPENSSL_USE_STATIC_LIBS=ON` to select static libs. winbuild options | Equivalent CMake options :-------------------------------- | :-------------------------------- `DEBUG` | `CMAKE_BUILD_TYPE=Debug` `GEN_PDB` | `CMAKE_EXE_LINKER_FLAGS=/Fd`, `CMAKE_SHARED_LINKER_FLAGS=/Fd` `LIB_NAME_DLL`, `LIB_NAME_STATIC` | `IMPORT_LIB_SUFFIX`, `LIBCURL_OUTPUT_NAME`, `STATIC_LIB_SUFFIX` `VC`: `` | see the CMake [Visual Studio generators](https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html#visual-studio-generators) `MACHINE`: `x64`, `x86` | `-A x64`, `-A Win32` `MODE`: `dll`, `static` | `BUILD_SHARED_LIBS=ON/OFF`, `BUILD_STATIC_LIBS=ON/OFF`, `BUILD_STATIC_CURL=ON/OFF` (default: dll) `RTLIBCFG`: `static` | `CURL_STATIC_CRT=ON` `ENABLE_IDN` | `USE_WIN32_IDN=ON` `ENABLE_IPV6` | `ENABLE_IPV6=ON` `ENABLE_MSH3` | `USE_MSH3=ON` `ENABLE_NGHTTP2` | `USE_NGHTTP2=ON` `ENABLE_OPENSSL_AUTO_LOAD_CONFIG` | `CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG=OFF` (default) `ENABLE_SCHANNEL` | `CURL_USE_SCHANNEL=ON` `ENABLE_SSPI` | `CURL_WINDOWS_SSPI=ON` (default with Schannel) `ENABLE_UNICODE` | `ENABLE_UNICODE=ON` `WITH_PREFIX` | `CMAKE_INSTALL_PREFIX=` `WITH_DEVEL` | see individual `*_INCLUDE_DIR` and `*_LIBRARY` options and `OPENSSL_ROOT_DIR` `WITH_CARES`, `CARES_PATH` | `ENABLE_ARES=ON`, optional: `CARES_INCLUDE_DIR`, `CARES_LIBRARY` `WITH_MBEDTLS`, `MBEDTLS_PATH` | `CURL_USE_MBEDTLS=ON`, optional: `MBEDTLS_INCLUDE_DIR`, `MBEDTLS_LIBRARY`, `MBEDX509_LIBRARY`, `MBEDCRYPTO_LIBRARY` `WITH_MSH3`, `MSH_PATH` | `USE_MSH3=ON`, optional: `MSH3_INCLUDE_DIR`, `MSH3_LIBRARY` `WITH_NGHTTP2`, `NGHTTP2_PATH` | `USE_NGHTTP2=ON`, optional: `NGHTTP2_INCLUDE_DIR`, `NGHTTP2_LIBRARY` `WITH_SSH`, `SSH_PATH` | `CURL_USE_LIBSSH=ON`, optional: `LIBSSH_INCLUDE_DIR`, `LIBSSH_LIBRARY` `WITH_SSH2`, `SSH2_PATH` | `CURL_USE_LIBSSH2=ON`, optional: `LIBSSH2_INCLUDE_DIR`, `LIBSSH2_LIBRARY` `WITH_SSL`, `SSL_PATH` | `CURL_USE_OPENSSL=ON`, optional: `OPENSSL_ROOT_DIR`, `OPENSSL_USE_STATIC_LIBS=ON` `WITH_WOLFSSL`, `WOLFSSL_PATH` | `CURL_USE_WOLFSSL=ON`, optional: `WOLFSSL_INCLUDE_DIR`, `WOLFSSL_LIBRARY` `WITH_ZLIB`, `ZLIB_PATH` | `CURL_ZLIB=ON`, optional: `ZLIB_INCLUDE_DIR`, `ZLIB_LIBRARY` For example this command-line: > nmake -f Makefile.vc VC=17 MACHINE=x64 DEBUG=ON mode=dll SSL_PATH=C:\OpenSSL WITH_SSL=dll ENABLE_UNICODE=ON translates to: > cmake . -G "Visual Studio 17 2022" -A x64 -DBUILD_SHARED_LIBS=ON -DOPENSSL_ROOT_DIR=C:\OpenSSL -DCURL_USE_OPENSSL=ON -DENABLE_UNICODE=ON -DCURL_USE_LIBPSL=OFF > cmake --build . --config Debug We use `--config` with `cmake --build` because the Visual Studio CMake generators are multi-config and therefore ignore `CMAKE_BUILD_TYPE`. curl-8.14.1/docs/INSTALL.md0000644000000000000000000006347315017756261013347 0ustar0000000000000000 # How to install curl and libcurl ## Installing Binary Packages Lots of people download binary distributions of curl and libcurl. This document does not describe how to install curl or libcurl using such a binary package. This document describes how to compile, build and install curl and libcurl from source code. ## Building using vcpkg You can download and install curl and libcurl using the [vcpkg](https://github.com/Microsoft/vcpkg/) dependency manager: git clone https://github.com/Microsoft/vcpkg.git cd vcpkg ./bootstrap-vcpkg.sh ./vcpkg integrate install vcpkg install curl[tool] The curl port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository. ## Building from git If you get your code off a git repository instead of a release tarball, see the `GIT-INFO.md` file in the root directory for specific instructions on how to proceed. # Unix A normal Unix installation is made in three or four steps (after you have unpacked the source archive): ./configure --with-openssl [--with-gnutls --with-wolfssl] make make test (optional) make install (Adjust the configure line accordingly to use the TLS library you want.) You probably need to be root when doing the last command. Get a full listing of all available configure options by invoking it like: ./configure --help If you want to install curl in a different file hierarchy than `/usr/local`, specify that when running configure: ./configure --prefix=/path/to/curl/tree If you have write permission in that directory, you can do 'make install' without being root. An example of this would be to make a local install in your own home directory: ./configure --prefix=$HOME make make install The configure script always tries to find a working SSL library unless explicitly told not to. If you have OpenSSL installed in the default search path for your compiler/linker, you do not need to do anything special. If you have OpenSSL installed in `/usr/local/ssl`, you can run configure like: ./configure --with-openssl If you have OpenSSL installed somewhere else (for example, `/opt/OpenSSL`) and you have pkg-config installed, set the pkg-config path first, like this: env PKG_CONFIG_PATH=/opt/OpenSSL/lib/pkgconfig ./configure --with-openssl Without pkg-config installed, use this: ./configure --with-openssl=/opt/OpenSSL If you insist on forcing a build without SSL support, you can run configure like this: ./configure --without-ssl If you have OpenSSL installed, but with the libraries in one place and the header files somewhere else, you have to set the `LDFLAGS` and `CPPFLAGS` environment variables prior to running configure. Something like this should work: CPPFLAGS="-I/path/to/ssl/include" LDFLAGS="-L/path/to/ssl/lib" ./configure If you have shared SSL libs installed in a directory where your runtime linker does not find them (which usually causes configure failures), you can provide this option to gcc to set a hard-coded path to the runtime linker: LDFLAGS=-Wl,-R/usr/local/ssl/lib ./configure --with-openssl ## Static builds To force a static library compile, disable the shared library creation by running configure like: ./configure --disable-shared The configure script is primarily done to work with shared/dynamic third party dependencies. When linking with shared libraries, the dependency "chain" is handled automatically by the library loader - on all modern systems. If you instead link with a static library, you need to provide all the dependency libraries already at the link command line. Figuring out all the dependency libraries for a given library is hard, as it might involve figuring out the dependencies of the dependencies and they vary between platforms and change between versions. When using static dependencies, the build scripts mostly assume that you, the user, provide all the necessary additional dependency libraries as additional arguments in the build. With configure, by setting `LIBS` or `LDFLAGS` on the command line. Building statically is not for the faint of heart. ## Debug If you are a curl developer and use gcc, you might want to enable more debug options with the `--enable-debug` option. curl can be built to use a whole range of libraries to provide various useful services, and configure tries to auto-detect a decent default. If you want to alter it, you can select how to deal with each individual library. ## Select TLS backend These options are provided to select the TLS backend to use. - AmiSSL: `--with-amissl` - BearSSL: `--with-bearssl` - GnuTLS: `--with-gnutls`. - mbedTLS: `--with-mbedtls` - OpenSSL: `--with-openssl` (also for BoringSSL, AWS-LC, LibreSSL, and quictls) - rustls: `--with-rustls` - Schannel: `--with-schannel` - Secure Transport: `--with-secure-transport` - wolfSSL: `--with-wolfssl` You can build curl with *multiple* TLS backends at your choice, but some TLS backends cannot be combined: if you build with an OpenSSL fork (or wolfSSL), you cannot add another OpenSSL fork (or wolfSSL) simply because they have conflicting identical symbol names. When you build with multiple TLS backends, you can select the active one at runtime when curl starts up. ## MultiSSL and HTTP/3 HTTP/3 needs QUIC and QUIC needs TLS. Building libcurl with HTTP/3 and QUIC support is not compatible with the MultiSSL feature: they are mutually exclusive. If you need MultiSSL in your build, you cannot have HTTP/3 support and vice versa. libcurl can only use a single TLS library with QUIC and that *same* TLS library needs to be used for the other TLS using protocols. ## Configure finding libs in wrong directory When the configure script checks for third-party libraries, it adds those directories to the `LDFLAGS` variable and then tries linking to see if it works. When successful, the found directory is kept in the `LDFLAGS` variable when the script continues to execute and do more tests and possibly check for more libraries. This can make subsequent checks for libraries wrongly detect another installation in a directory that was previously added to `LDFLAGS` by another library check. # Windows Building for Windows XP is required as a minimum. You can build curl with: - Microsoft Visual Studio 2008 v9.0 or later (`_MSC_VER >= 1500`) - MinGW-w64 ## Building Windows DLLs and C runtime (CRT) linkage issues As a general rule, building a DLL with static CRT linkage is highly discouraged, and intermixing CRTs in the same app is something to avoid at any cost. Reading and comprehending Microsoft Knowledge Base articles KB94248 and KB140584 is a must for any Windows developer. Especially important is full understanding if you are not going to follow the advice given above. - [How To Use the C Runtime](https://support.microsoft.com/help/94248/how-to-use-the-c-run-time) - [Runtime Library Compiler Options](https://docs.microsoft.com/cpp/build/reference/md-mt-ld-use-run-time-library) - [Potential Errors Passing CRT Objects Across DLL Boundaries](https://docs.microsoft.com/cpp/c-runtime-library/potential-errors-passing-crt-objects-across-dll-boundaries) If your app is misbehaving in some strange way, or it is suffering from memory corruption, before asking for further help, please try first to rebuild every single library your app uses as well as your app using the debug multi-threaded dynamic C runtime. If you get linkage errors read section 5.7 of the FAQ document. ## Cygwin Almost identical to the Unix installation. Run the configure script in the curl source tree root with `sh configure`. Make sure you have the `sh` executable in `/bin/` or you see the configure fail toward the end. Run `make` ## MS-DOS You can use either autotools or cmake: ./configure \ CC=/path/to/djgpp/bin/i586-pc-msdosdjgpp-gcc \ AR=/path/to/djgpp/bin/i586-pc-msdosdjgpp-ar \ RANLIB=/path/to/djgpp/bin/i586-pc-msdosdjgpp-ranlib \ WATT_ROOT=/path/to/djgpp/net/watt \ --host=i586-pc-msdosdjgpp \ --with-openssl=/path/to/djgpp \ --with-zlib=/path/to/djgpp \ --without-libpsl \ --disable-shared cmake . \ -DCMAKE_SYSTEM_NAME=DOS \ -DCMAKE_C_COMPILER_TARGET=i586-pc-msdosdjgpp \ -DCMAKE_C_COMPILER=/path/to/djgpp/bin/i586-pc-msdosdjgpp-gcc \ -DWATT_ROOT=/path/to/djgpp/net/watt \ -DOPENSSL_INCLUDE_DIR=/path/to/djgpp/include \ -DOPENSSL_SSL_LIBRARY=/path/to/djgpp/lib/libssl.a \ -DOPENSSL_CRYPTO_LIBRARY=/path/to/djgpp/lib/libcrypto.a \ -DZLIB_INCLUDE_DIR=/path/to/djgpp/include \ -DZLIB_LIBRARY=/path/to/djgpp/lib/libz.a \ -DCURL_USE_LIBPSL=OFF Notes: - Requires DJGPP 2.04 or upper. - Compile Watt-32 (and OpenSSL) with the same version of DJGPP. Otherwise things go wrong because things like FS-extensions and `errno` values have been changed between releases. ## AmigaOS You can use either autotools or cmake: ./configure \ CC=/opt/amiga/bin/m68k-amigaos-gcc \ AR=/opt/amiga/bin/m68k-amigaos-ar \ RANLIB=/opt/amiga/bin/m68k-amigaos-ranlib \ --host=m68k-amigaos \ --with-amissl \ CFLAGS='-O0 -msoft-float -mcrt=clib2' \ CPPFLAGS=-I/path/to/AmiSSL/Developer/include \ LDFLAGS=-L/path/to/AmiSSL/Developer/lib/AmigaOS3 \ LIBS='-lnet -lm -latomic' \ --without-libpsl \ --disable-shared cmake . \ -DAMIGA=1 \ -DCMAKE_SYSTEM_NAME=Generic \ -DCMAKE_C_COMPILER_TARGET=m68k-unknown-amigaos \ -DCMAKE_C_COMPILER=/opt/amiga/bin/m68k-amigaos-gcc \ -DCMAKE_C_FLAGS='-O0 -msoft-float -mcrt=clib2' \ -DAMISSL_INCLUDE_DIR=/path/to/AmiSSL/Developer/include \ -DAMISSL_STUBS_LIBRARY=/path/to/AmiSSL/Developer/lib/AmigaOS3/libamisslstubs.a \ -DAMISSL_AUTO_LIBRARY=/path/to/AmiSSL/Developer/lib/AmigaOS3/libamisslauto.a \ -DCURL_USE_LIBPSL=OFF ## Disabling Specific Protocols in Windows builds The configure utility, unfortunately, is not available for the Windows environment, therefore, you cannot use the various disable-protocol options of the configure utility on this platform. You can use specific defines to disable specific protocols and features. See [CURL-DISABLE](CURL-DISABLE.md) for the full list. If you want to set any of these defines you have the following options: - Modify `lib/config-win32.h` - Modify `lib/curl_setup.h` - Modify `winbuild/Makefile.vc` - Modify the "Preprocessor Definitions" in the libcurl project Note: The pre-processor settings can be found using the Visual Studio IDE under "Project -> Properties -> Configuration Properties -> C/C++ -> Preprocessor". ## Using BSD-style lwIP instead of Winsock TCP/IP stack in Windows builds In order to compile libcurl and curl using BSD-style lwIP TCP/IP stack it is necessary to make the definition of the preprocessor symbol `USE_LWIPSOCK` visible to libcurl and curl compilation processes. To set this definition you have the following alternatives: - Modify `lib/config-win32.h` - Modify `winbuild/Makefile.vc` - Modify the "Preprocessor Definitions" in the libcurl project Note: The pre-processor settings can be found using the Visual Studio IDE under "Project -> Properties -> Configuration Properties -> C/C++ -> Preprocessor". Once that libcurl has been built with BSD-style lwIP TCP/IP stack support, in order to use it with your program it is mandatory that your program includes lwIP header file `` (or another lwIP header that includes this) before including any libcurl header. Your program does not need the `USE_LWIPSOCK` preprocessor definition which is for libcurl internals only. Compilation has been verified with lwIP 1.4.0. This BSD-style lwIP TCP/IP stack support must be considered experimental given that it has been verified that lwIP 1.4.0 still needs some polish, and libcurl might yet need some additional adjustment. ## Important static libcurl usage note When building an application that uses the static libcurl library on Windows, you must add `-DCURL_STATICLIB` to your `CFLAGS`. Otherwise the linker looks for dynamic import symbols. ## Legacy Windows and SSL Schannel (from Windows SSPI), is the native SSL library in Windows. However, Schannel in Windows <= XP is unable to connect to servers that no longer support the legacy handshakes and algorithms used by those versions. If you are using curl in one of those earlier versions of Windows you should choose another SSL backend such as OpenSSL. # Apple Platforms (macOS, iOS, tvOS, watchOS, and their simulator counterparts) On modern Apple operating systems, curl can be built to use Apple's SSL/TLS implementation, Secure Transport, instead of OpenSSL. To build with Secure Transport for SSL/TLS, use the configure option `--with-secure-transport`. When Secure Transport is in use, the curl options `--cacert` and `--capath` and their libcurl equivalents, are ignored, because Secure Transport uses the certificates stored in the Keychain to evaluate whether or not to trust the server. This, of course, includes the root certificates that ship with the OS. The `--cert` and `--engine` options, and their libcurl equivalents, are currently unimplemented in curl with Secure Transport. In general, a curl build for an Apple `ARCH/SDK/DEPLOYMENT_TARGET` combination can be taken by providing appropriate values for `ARCH`, `SDK`, `DEPLOYMENT_TARGET` below and running the commands: ```bash # Set these three according to your needs export ARCH=x86_64 export SDK=macosx export DEPLOYMENT_TARGET=10.8 export CFLAGS="-arch $ARCH -isysroot $(xcrun -sdk $SDK --show-sdk-path) -m$SDK-version-min=$DEPLOYMENT_TARGET" ./configure --host=$ARCH-apple-darwin --prefix $(pwd)/artifacts --with-secure-transport make -j8 make install ``` With CMake: ```bash cmake . \ -DCMAKE_OSX_ARCHITECTURES=x86_64 \ -DCMAKE_OSX_DEPLOYMENT_TARGET=10.8 \ -DCMAKE_OSX_SYSROOT="$(xcrun --sdk macosx --show-sdk-path)" ``` The above command lines build curl for macOS platform with `x86_64` architecture and `10.8` as deployment target. Here is an example for iOS device: ```bash export ARCH=arm64 export SDK=iphoneos export DEPLOYMENT_TARGET=11.0 export CFLAGS="-arch $ARCH -isysroot $(xcrun -sdk $SDK --show-sdk-path) -m$SDK-version-min=$DEPLOYMENT_TARGET" ./configure --host=$ARCH-apple-darwin --prefix $(pwd)/artifacts --with-secure-transport make -j8 make install ``` With CMake (3.16 or upper recommended): ```bash cmake . \ -DCMAKE_SYSTEM_NAME=iOS \ -DCMAKE_OSX_ARCHITECTURES=arm64 \ -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 ``` Another example for watchOS simulator for macs with Apple Silicon: ```bash export ARCH=arm64 export SDK=watchsimulator export DEPLOYMENT_TARGET=5.0 export CFLAGS="-arch $ARCH -isysroot $(xcrun -sdk $SDK --show-sdk-path) -m$SDK-version-min=$DEPLOYMENT_TARGET" ./configure --host=$ARCH-apple-darwin --prefix $(pwd)/artifacts --with-secure-transport make -j8 make install ``` In all above, the built libraries and executables can be found in the `artifacts` folder. # Android When building curl for Android you can you CMake or curl's `configure` script. Before you can build curl for Android, you need to install the Android NDK first. This can be done using the SDK Manager that is part of Android Studio. Once you have installed the Android NDK, you need to figure out where it has been installed and then set up some environment variables before launching the build. Examples to compile for `aarch64` and API level 29: with CMake, where `ANDROID_NDK_HOME` points into your NDK: cmake . \ -DANDROID_ABI=arm64-v8a \ -DANDROID_PLATFORM=android-29 \ -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake" \ -DCURL_ENABLE_SSL=OFF \ -DCURL_USE_LIBPSL=OFF with `configure`, on macOS: ```bash export ANDROID_NDK_HOME=~/Library/Android/sdk/ndk/25.1.8937393 # Point into your NDK. export HOST_TAG=darwin-x86_64 # Same tag for Apple Silicon. Other OS values here: https://developer.android.com/ndk/guides/other_build_systems#overview export TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$HOST_TAG export AR=$TOOLCHAIN/bin/llvm-ar export AS=$TOOLCHAIN/bin/llvm-as export CC=$TOOLCHAIN/bin/aarch64-linux-android29-clang export CXX=$TOOLCHAIN/bin/aarch64-linux-android29-clang++ export LD=$TOOLCHAIN/bin/ld export RANLIB=$TOOLCHAIN/bin/llvm-ranlib export STRIP=$TOOLCHAIN/bin/llvm-strip ``` When building on Linux or targeting other API levels or architectures, you need to adjust those variables accordingly. After that you can build curl like this: ./configure --host aarch64-linux-android --with-pic --disable-shared Note that this does not give you SSL/TLS support. If you need SSL/TLS, you have to build curl with an SSL/TLS library, e.g. OpenSSL, because it is impossible for curl to access Android's native SSL/TLS layer. To build curl for Android using OpenSSL, follow the OpenSSL build instructions and then install `libssl.a` and `libcrypto.a` to `$TOOLCHAIN/sysroot/usr/lib` and copy `include/openssl` to `$TOOLCHAIN/sysroot/usr/include`. Now you can build curl for Android using OpenSSL like this: ```bash LIBS="-lssl -lcrypto -lc++" # For OpenSSL/BoringSSL. In general, you need to the SSL/TLS layer's transitive dependencies if you are linking statically. ./configure --host aarch64-linux-android --with-pic --disable-shared --with-openssl="$TOOLCHAIN/sysroot/usr" ``` # IBM i For IBM i (formerly OS/400), you can use curl in two different ways: - Natively, running in the **ILE**. The obvious use is being able to call curl from ILE C or RPG applications. - You need to build this from source. See `packages/OS400/README` for the ILE specific build instructions. - In the **PASE** environment, which runs AIX programs. curl is built as it would be on AIX. - IBM provides builds of curl in their Yum repository for PASE software. - To build from source, follow the Unix instructions. There are some additional limitations and quirks with curl on this platform; they affect both environments. ## Multi-threading notes By default, jobs in IBM i does not start with threading enabled. (Exceptions include interactive PASE sessions started by `QP2TERM` or SSH.) If you use curl in an environment without threading when options like asynchronous DNS were enabled, you get messages like: ``` getaddrinfo() thread failed to start ``` Do not panic. curl and your program are not broken. You can fix this by: - Set the environment variable `QIBM_MULTI_THREADED` to `Y` before starting your program. This can be done at whatever scope you feel is appropriate. - Alternatively, start the job with the `ALWMLTTHD` parameter set to `*YES`. # Cross compile Download and unpack the curl package. `cd` to the new directory. (e.g. `cd curl-7.12.3`) Set environment variables to point to the cross-compile toolchain and call configure with any options you need. Be sure and specify the `--host` and `--build` parameters at configuration time. The following script is an example of cross-compiling for the IBM 405GP PowerPC processor using the toolchain on Linux. ```bash #! /bin/sh export PATH=$PATH:/opt/hardhat/devkit/ppc/405/bin export CPPFLAGS="-I/opt/hardhat/devkit/ppc/405/target/usr/include" export AR=ppc_405-ar export AS=ppc_405-as export LD=ppc_405-ld export RANLIB=ppc_405-ranlib export CC=ppc_405-gcc export NM=ppc_405-nm ./configure --target=powerpc-hardhat-linux --host=powerpc-hardhat-linux --build=i586-pc-linux-gnu --prefix=/opt/hardhat/devkit/ppc/405/target/usr/local --exec-prefix=/usr/local ``` The `--prefix` parameter specifies where curl gets installed. If `configure` completes successfully, do `make` and `make install` as usual. In some cases, you may be able to simplify the above commands to as little as: ./configure --host=ARCH-OS # REDUCING SIZE There are a number of configure options that can be used to reduce the size of libcurl for embedded applications where binary size is an important factor. First, be sure to set the `CFLAGS` variable when configuring with any relevant compiler optimization flags to reduce the size of the binary. For gcc, this would mean at minimum the `-Os` option, and others like the following that may be relevant in some environments: `-march=X`, `-mthumb`, `-m32`, `-mdynamic-no-pic`, `-flto`, `-fdata-sections`, `-ffunction-sections`, `-fno-unwind-tables`, `-fno-asynchronous-unwind-tables`, `-fno-record-gcc-switches`, `-fsection-anchors`, `-fno-plt`, `-Wl,--gc-sections`, `-Wl,-Bsymbolic`, `-Wl,-s`, For example, this is how to combine a few of these options: ./configure CC=gcc CFLAGS='-Os -ffunction-sections' LDFLAGS='-Wl,--gc-sections'... Note that newer compilers often produce smaller code than older versions due to improved optimization. Be sure to specify as many `--disable-` and `--without-` flags on the configure command-line as you can to disable all the libcurl features that you know your application is not going to need. Besides specifying the `--disable-PROTOCOL` flags for all the types of URLs your application do not use, here are some other flags that can reduce the size of the library by disabling support for some features (run `./configure --help` to see them all): - `--disable-aws` (cryptographic authentication) - `--disable-basic-auth` (cryptographic authentication) - `--disable-bearer-auth` (cryptographic authentication) - `--disable-digest-auth` (cryptographic authentication) - `--disable-http-auth` (all HTTP authentication) - `--disable-kerberos-auth` (cryptographic authentication) - `--disable-negotiate-auth` (cryptographic authentication) - `--disable-ntlm` (NTLM authentication) - `--disable-alt-svc` (HTTP Alt-Svc) - `--disable-ares` (the C-ARES DNS library) - `--disable-cookies` (HTTP cookies) - `--disable-dateparse` (date parsing for time conditionals) - `--disable-dnsshuffle` (internal server load spreading) - `--disable-doh` (DNS-over-HTTP) - `--disable-form-api` (POST form API) - `--disable-get-easy-options` (lookup easy options at runtime) - `--disable-headers-api` (API to access headers) - `--disable-hsts` (HTTP Strict Transport Security) - `--disable-ipv6` (IPv6) - `--disable-libcurl-option` (--libcurl C code generation support) - `--disable-manual` (--manual built-in documentation) - `--disable-mime` (MIME API) - `--disable-netrc` (.netrc file) - `--disable-progress-meter` (graphical progress meter in library) - `--disable-proxy` (HTTP and SOCKS proxies) - `--disable-socketpair` (socketpair for asynchronous name resolving) - `--disable-threaded-resolver` (threaded name resolver) - `--disable-tls-srp` (Secure Remote Password authentication for TLS) - `--disable-unix-sockets` (Unix sockets) - `--disable-verbose` (eliminates debugging strings and error code strings) - `--disable-versioned-symbols` (versioned symbols) - `--enable-symbol-hiding` (eliminates unneeded symbols in the shared library) - `--without-brotli` (Brotli on-the-fly decompression) - `--without-libpsl` (Public Suffix List in cookies) - `--without-nghttp2` (HTTP/2 using nghttp2) - `--without-ngtcp2` (HTTP/2 using ngtcp2) - `--without-zstd` (Zstd on-the-fly decompression) - `--without-libidn2` (internationalized domain names) - `--without-librtmp` (RTMP) - `--without-ssl` (SSL/TLS) - `--without-zlib` (gzip/deflate on-the-fly decompression) Be sure also to strip debugging symbols from your binaries after compiling using 'strip' or an option like `-s`. If space is really tight, you may be able to gain a few bytes by removing some unneeded sections of the shared library using the -R option to objcopy (e.g. the .comment section). Using these techniques it is possible to create a basic HTTP-only libcurl shared library for i386 Linux platforms that is only 137 KiB in size (as of libcurl version 8.13.0, using gcc 14.2.0). You may find that statically linking libcurl to your application results in a lower total size than dynamically linking. The curl test harness can detect the use of some, but not all, of the `--disable` statements suggested above. Use of these can cause tests relying on those features to fail. The test harness can be manually forced to skip the relevant tests by specifying certain key words on the `runtests.pl` command line. Following is a list of appropriate key words for those configure options that are not automatically detected: - `--disable-cookies` !cookies - `--disable-dateparse` !RETRY-AFTER !`CURLOPT_TIMECONDITION` !`CURLINFO_FILETIME` !`If-Modified-Since` !`curl_getdate` !`-z` - `--disable-libcurl-option` !`--libcurl` - `--disable-verbose` !verbose\ logs # Ports This is a probably incomplete list of known CPU architectures and operating systems that curl has been compiled for. If you know a system curl compiles and runs on, that is not listed, please let us know. ## 104 Operating Systems AIX, AmigaOS, Android, ArcoOS, Aros, Atari FreeMiNT, BeOS, Blackberry 10, Blackberry Tablet OS, Cell OS, CheriBSD, Chrome OS, Cisco IOS, DG/UX, DR DOS, Dragonfly BSD, eCOS, FreeBSD, FreeDOS, FreeRTOS, Fuchsia, Garmin OS, Genode, Haiku, HardenedBSD, HP-UX, Hurd, IBM I, illumos, Integrity, iOS, ipadOS, IRIX, Linux, Lua RTOS, Mac OS 9, macOS, Maemo, Mbed, Meego, Micrium, MINIX, Minoca, Moblin, MorphOS, MPE/iX, MS-DOS, NCR MP-RAS, NetBSD, Netware, NextStep, Nintendo 3DS Nintendo Switch, NonStop OS, NuttX, OpenBSD, OpenStep, Orbis OS, OS/2, OS21, Plan 9, PlayStation Portable, QNX, Qubes OS, ReactOS, Redox, RISC OS, ROS, RTEMS, Sailfish OS, SCO Unix, Serenity, SINIX-Z, SkyOS, software, Solaris, Sortix, SunOS, Syllable OS, Symbian, Tizen, TPF, Tru64, tvOS, ucLinux, Ultrix, UNICOS, UnixWare, VMS, vxWorks, watchOS, Wear OS, WebOS, Wii system Wii U, Windows CE, Windows, Xbox System, Xenix, z/OS, z/TPF, z/VM, z/VSE, Zephyr ## 28 CPU Architectures Alpha, ARC, ARM, AVR32, C-SKY, CompactRISC, Elbrus, ETRAX, HP-PA, Itanium, LoongArch, m68k, m88k, MicroBlaze, MIPS, Nios, OpenRISC, POWER, PowerPC, RISC-V, s390, SH4, SPARC, Tilera, VAX, x86, Xtensa, z/arch curl-8.14.1/docs/INTERNALS.md0000644000000000000000000000346615017756261013574 0ustar0000000000000000 # curl internals The canonical libcurl internals documentation is now in the [everything curl](https://everything.curl.dev/internals) book. This file lists supported versions of libs and build tools. ## Portability We write curl and libcurl to compile with C89 compilers on 32-bit and up machines. Most of libcurl assumes more or less POSIX compliance but that is not a requirement. We write libcurl to build and work with lots of third party tools, and we want it to remain functional and buildable with these and later versions (older versions may still work but is not what we work hard to maintain): ## Dependencies We aim to support these or later versions. - OpenSSL 1.0.2a - LibreSSL 2.9.1 - GnuTLS 3.1.10 - zlib 1.2.5.2 - libssh2 1.2.8 - c-ares 1.6.0 - libssh 0.9.0 - libidn2 2.0.0 - wolfSSL 3.4.6 - OpenLDAP 2.0 - MIT Kerberos 1.2.4 - Heimdal ? - nghttp2 1.15.0 - Winsock 2.2 (on Windows 95+ and Windows CE .NET 4.1+) ## Build tools When writing code (mostly for generating stuff included in release tarballs) we use a few "build tools" and we make sure that we remain functional with these versions: - GNU Libtool 1.4.2 - GNU Autoconf 2.59 - GNU Automake 1.7 - GNU M4 1.4 - perl 5.8 - roffit 0.5 - cmake 3.7 Library Symbols =============== All symbols used internally in libcurl must use a `Curl_` prefix if they are used in more than a single file. Single-file symbols must be made static. Public ("exported") symbols must use a `curl_` prefix. Public API functions are marked with `CURL_EXTERN` in the public header files so that all others can be hidden on platforms where this is possible. curl-8.14.1/docs/IPFS.md0000644000000000000000000001344715017756261012776 0ustar0000000000000000 # IPFS For an overview about IPFS, visit the [IPFS project site](https://ipfs.tech/). In IPFS there are two protocols. IPFS and IPNS (their workings are explained in detail [here](https://docs.ipfs.tech/concepts/)). The ideal way to access data on the IPFS network is through those protocols. For example to access the Big Buck Bunny video the ideal way to access it is like: `ipfs://bafybeigagd5nmnn2iys2f3doro7ydrevyr2mzarwidgadawmamiteydbzi` ## IPFS Gateways IPFS Gateway acts as a bridge between traditional HTTP clients and IPFS. IPFS Gateway specifications of HTTP semantics can be found [here](https://specs.ipfs.tech/http-gateways/). ### Deserialized responses By default, a gateway acts as a bridge between traditional HTTP clients and IPFS and performs necessary hash verification and deserialization. Through such gateway, users can download files, directories, and other content-addressed data stored with IPFS or IPNS as if they were stored in a traditional web server. ### Verifiable responses By explicitly requesting [application/vnd.ipld.raw](https://www.iana.org/assignments/media-types/application/vnd.ipld.raw) or [application/vnd.ipld.car](https://www.iana.org/assignments/media-types/application/vnd.ipld.car) responses, by means defined in [Trustless Gateway Specification](https://specs.ipfs.tech/http-gateways/trustless-gateway/), the user is able to fetch raw content-addressed data and [perform hash verification themselves](https://docs.ipfs.tech/reference/http/gateway/#trustless-verifiable-retrieval). This enables users to use untrusted, public gateways without worrying they might return invalid/malicious bytes. ## IPFS and IPNS protocol handling There are various ways to access data from the IPFS network. One such way is through the concept of public "[gateways](https://docs.ipfs.tech/concepts/ipfs-gateway/#overview)". The short version is that entities can offer gateway services. An example here that is hosted by Protocol Labs (who also makes IPFS) is `dweb.link` and `ipfs.io`. Both sites expose gateway functionality. Getting a file through `ipfs.io` looks like this: `https://ipfs.io/ipfs/bafybeigagd5nmnn2iys2f3doro7ydrevyr2mzarwidgadawmamiteydbzi` If you were to be [running your own IPFS node](https://docs.ipfs.tech/how-to/command-line-quick-start/) then you, by default, also have a [local gateway](https://specs.ipfs.tech/http-gateways/) running. In its default configuration the earlier example would then also work in this link: `http://127.0.0.1:8080/ipfs/bafybeigagd5nmnn2iys2f3doro7ydrevyr2mzarwidgadawmamiteydbzi` ## cURL handling of the IPFS protocols The IPFS integration in cURL hides this gateway logic for you. Instead of providing a full URL to a file on IPFS like this: ``` curl http://127.0.0.1:8080/ipfs/bafybeigagd5nmnn2iys2f3doro7ydrevyr2mzarwidgadawmamiteydbzi ``` You can provide it with the IPFS protocol instead: ``` curl ipfs://bafybeigagd5nmnn2iys2f3doro7ydrevyr2mzarwidgadawmamiteydbzi ``` With the IPFS protocol way of asking a file, cURL still needs to know the gateway. curl essentially just rewrites the IPFS based URL to a gateway URL. ### IPFS_GATEWAY environment variable If the `IPFS_GATEWAY` environment variable is found, its value is used as gateway. ### Automatic gateway detection When you provide no additional details to cURL then it: 1. First looks for the `IPFS_GATEWAY` environment variable and use that if it is set. 2. Looks for the file: `~/.ipfs/gateway`. If it can find that file then it means that you have a local gateway running and that file contains the URL to your local gateway. If cURL fails, you are presented with an error message and a link to this page to the option most applicable to solving the issue. ### `--ipfs-gateway` argument You can also provide a `--ipfs-gateway` argument to cURL. This overrules any other gateway setting. curl does not fallback to the other options if the provided gateway did not work. ## Gateway redirects A gateway could redirect to another place. For example, `dweb.link` redirects [path based](https://docs.ipfs.tech/how-to/address-ipfs-on-web/#path-gateway) requests to [subdomain based](https://docs.ipfs.tech/how-to/address-ipfs-on-web/#subdomain-gateway) ones. A request using: curl ipfs://bafybeigagd5nmnn2iys2f3doro7ydrevyr2mzarwidgadawmamiteydbzi --ipfs-gateway https://dweb.link Which would be translated to: https://dweb.link/ipfs/bafybeigagd5nmnn2iys2f3doro7ydrevyr2mzarwidgadawmamiteydbzi redirects to: https://bafybeigagd5nmnn2iys2f3doro7ydrevyr2mzarwidgadawmamiteydbzi.ipfs.dweb.link If you trust this behavior from your gateway of choice then passing the `-L` option follows the redirect. ## Error messages and hints Depending on the arguments, cURL could present the user with an error. ### Gateway file and environment variable cURL tried to look for the file: `~/.ipfs/gateway` but could not find it. It also tried to look for the `IPFS_GATEWAY` environment variable but could not find that either. This happens when no extra arguments are passed to cURL and letting it try to figure it out [automatically](#automatic-gateway-detection). Any IPFS implementation that has gateway support should expose its URL in `~/.ipfs/gateway`. If you are already running a gateway, make sure it exposes the file where cURL expects to find it. Alternatively you could set the `IPFS_GATEWAY` environment variable or pass the `--ipfs-gateway` flag to the cURL command. ### Malformed gateway URL The command executed evaluates in an invalid URL. This could be anywhere in the URL, but a likely point is a wrong gateway URL. Inspect the URL set via the `IPFS_GATEWAY` environment variable or passed with the `--ipfs-gateway` flag. Alternatively opt to go for the [automatic](#automatic-gateway-detection) gateway detection. curl-8.14.1/docs/KNOWN_BUGS0000644000000000000000000005272415017756261013353 0ustar0000000000000000 _ _ ____ _ ___| | | | _ \| | / __| | | | |_) | | | (__| |_| | _ <| |___ \___|\___/|_| \_\_____| Known Bugs These are problems and bugs known to exist at the time of this release. Feel free to join in and help us correct one or more of these. Also be sure to check the changelog of the current development status, as one or more of these problems may have been fixed or changed somewhat since this was written. 1. HTTP 2. TLS 2.1 IMAPS connection fails with Rustls error 2.3 Unable to use PKCS12 certificate with Secure Transport 2.4 Secure Transport does not import PKCS#12 client certificates without a password 2.7 Client cert (MTLS) issues with Schannel 2.11 Schannel TLS 1.2 handshake bug in old Windows versions 2.13 CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel 2.14 mbedTLS and CURLE_AGAIN handling 3. Email protocols 3.1 IMAP SEARCH ALL truncated response 3.2 No disconnect command 3.4 AUTH PLAIN for SMTP is not working on all servers 3.5 APOP authentication fails on POP3 3.6 POP3 issue when reading small chunks 4. Command line 4.1 -T /dev/stdin may upload with an incorrect content length 4.2 -T - always uploads chunked 5. Build and portability issues 5.1 OS400 port requires deprecated IBM library 5.2 curl-config --libs contains private details 5.3 LDFLAGS passed too late making libs linked incorrectly 5.6 Cygwin: make install installs curl-config.1 twice 5.11 configure --with-gssapi with Heimdal is ignored on macOS 5.12 flaky CI builds 5.13 long paths are not fully supported on Windows 5.15 Unicode on Windows 6. Authentication 6.2 MIT Kerberos for Windows build 6.3 NTLM in system context uses wrong name 6.5 NTLM does not support password with Unicode 'SECTION SIGN' character 6.6 libcurl can fail to try alternatives with --proxy-any 6.7 Do not clear digest for single realm 6.8 Heimdal memory leaks 6.9 SHA-256 digest not supported in Windows SSPI builds 6.10 curl never completes Negotiate over HTTP 6.11 Negotiate on Windows fails 6.12 cannot use Secure Transport with Crypto Token Kit 6.13 Negotiate against Hadoop HDFS 7. FTP 7.4 FTP with ACCT 7.12 FTPS directory listing hangs on Windows with Schannel 9. SFTP and SCP 9.1 SFTP does not do CURLOPT_POSTQUOTE correct 9.2 wolfssh: publickey auth does not work 9.3 Remote recursive folder creation with SFTP 9.4 libssh blocking and infinite loop problem 9.5 Cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!" 9.6 wolfssh: all tests fail 10. Connection 10.1 --interface with link-scoped IPv6 address 11. Internals 11.1 gssapi library name + version is missing in curl_version_info() 11.2 error buffer not set if connection to multiple addresses fails 11.4 HTTP test server 'connection-monitor' problems 11.5 Connection information when using TCP Fast Open 11.6 test cases sometimes timeout 11.7 CURLOPT_CONNECT_TO does not work for HTTPS proxy 11.8 WinIDN test failures 11.9 setting a disabled option should return CURLE_NOT_BUILT_IN 12. LDAP 12.1 OpenLDAP hangs after returning results 12.2 LDAP on Windows does authentication wrong? 12.3 LDAP on Windows does not work 12.4 LDAPS requests to ActiveDirectory server hang 13. TCP/IP 13.2 Trying local ports fails on Windows 15. CMake 15.1 cmake outputs: no version information available 15.6 uses -lpthread instead of Threads::Threads 15.7 generated .pc file contains strange entries 15.13 CMake build with MIT Kerberos does not work 16. aws-sigv4 16.2 aws-sigv4 does not handle multipart/form-data correctly 17. HTTP/2 17.1 HTTP/2 prior knowledge over proxy 17.2 HTTP/2 frames while in the connection pool kill reuse 17.3 ENHANCE_YOUR_CALM causes infinite retries 17.4 HTTP/2 + TLS spends a lot of time in recv 18. HTTP/3 18.1 connection migration does not work 18.2 quiche: QUIC connection is draining 19. RTSP 19.1 Some methods do not support response bodies ============================================================================== 1. HTTP 2. TLS 2.1 IMAPS connection fails with Rustls error https://github.com/curl/curl/issues/10457 2.3 Unable to use PKCS12 certificate with Secure Transport See https://github.com/curl/curl/issues/5403 2.4 Secure Transport does not import PKCS#12 client certificates without a password libcurl calls SecPKCS12Import with the PKCS#12 client certificate, but that function rejects certificates that do not have a password. https://github.com/curl/curl/issues/1308 2.7 Client cert (MTLS) issues with Schannel See https://github.com/curl/curl/issues/3145 2.11 Schannel TLS 1.2 handshake bug in old Windows versions In old versions of Windows such as 7 and 8.1 the Schannel TLS 1.2 handshake implementation likely has a bug that can rarely cause the key exchange to fail, resulting in error SEC_E_BUFFER_TOO_SMALL or SEC_E_MESSAGE_ALTERED. https://github.com/curl/curl/issues/5488 2.13 CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel https://github.com/curl/curl/issues/8741 2.14 mbedTLS and CURLE_AGAIN handling https://github.com/curl/curl/issues/15801 3. Email protocols 3.1 IMAP SEARCH ALL truncated response IMAP "SEARCH ALL" truncates output on large boxes. "A quick search of the code reveals that pingpong.c contains some truncation code, at line 408, when it deems the server response to be too large truncating it to 40 characters" https://curl.se/bug/view.cgi?id=1366 3.2 No disconnect command The disconnect commands (LOGOUT and QUIT) may not be sent by IMAP, POP3 and SMTP if a failure occurs during the authentication phase of a connection. 3.4 AUTH PLAIN for SMTP is not working on all servers Specifying "--login-options AUTH=PLAIN" on the command line does not seem to work correctly. See https://github.com/curl/curl/issues/4080 3.5 APOP authentication fails on POP3 See https://github.com/curl/curl/issues/10073 3.6 POP3 issue when reading small chunks CURL_DBG_SOCK_RMAX=4 ./runtests.pl -v 982 See https://github.com/curl/curl/issues/12063 4. Command line 4.1 -T /dev/stdin may upload with an incorrect content length -T stats the path to figure out its size in bytes to use it as Content-Length if it is a regular file. The problem with that is that, on BSDs and some other UNIXes (not Linux), open(path) may not give you a file descriptor with a 0 offset from the start of the file. See https://github.com/curl/curl/issues/12177 4.2 -T - always uploads chunked When the `<` shell operator is used. curl should realise that stdin is a regular file in this case, and that it can do a non-chunked upload, like it would do if you used -T file. See https://github.com/curl/curl/issues/12171 5. Build and portability issues 5.1 OS400 port requires deprecated IBM library curl for OS400 requires QADRT to build, which provides ASCII wrappers for libc/POSIX functions in the ILE, but IBM no longer supports or even offers this library to download. See https://github.com/curl/curl/issues/5176 5.2 curl-config --libs contains private details "curl-config --libs" include details set in LDFLAGS when configure is run that might be needed only for building libcurl. Further, curl-config --cflags suffers from the same effects with CFLAGS/CPPFLAGS. 5.3 LDFLAGS passed too late making libs linked incorrectly Compiling latest curl on HP-UX and linking against a custom OpenSSL (which is on the default loader/linker path), fails because the generated Makefile has LDFLAGS passed on after LIBS. See https://github.com/curl/curl/issues/14893 5.6 Cygwin: make install installs curl-config.1 twice https://github.com/curl/curl/issues/8839 5.11 configure --with-gssapi with Heimdal is ignored on macOS ... unless you also pass --with-gssapi-libs https://github.com/curl/curl/issues/3841 5.12 flaky CI builds We run many CI builds for each commit and PR on github, and especially a number of the Windows builds are flaky. This means that we rarely get all CI builds go green and complete without errors. This is unfortunate as it makes us sometimes miss actual build problems and it is surprising to newcomers to the project who (rightfully) do not expect this. See https://github.com/curl/curl/issues/6972 5.13 long paths are not fully supported on Windows curl on Windows cannot access long paths (paths longer than 260 characters). However, as a workaround, the Windows path prefix \\?\ which disables all path interpretation may work to allow curl to access the path. For example: \\?\c:\longpath. See https://github.com/curl/curl/issues/8361 5.15 Unicode on Windows Passing in a Unicode filename with -o: https://github.com/curl/curl/issues/11461 Passing in Unicode character with -d: https://github.com/curl/curl/issues/12231 Windows Unicode builds use homedir in current locale The Windows Unicode builds of curl use the current locale, but expect Unicode UTF-8 encoded paths for internal use such as open, access and stat. The user's home directory is retrieved via curl_getenv in the current locale and not as UTF-8 encoded Unicode. See https://github.com/curl/curl/pull/7252 and https://github.com/curl/curl/pull/7281 Cannot handle Unicode arguments in non-Unicode builds on Windows If a URL or filename cannot be encoded using the user's current codepage then it can only be encoded properly in the Unicode character set. Windows uses UTF-16 encoding for Unicode and stores it in wide characters, however curl and libcurl are not equipped for that at the moment except when built with _UNICODE and UNICODE defined. Except for Cygwin, Windows cannot use UTF-8 as a locale. https://curl.se/bug/?i=345 https://curl.se/bug/?i=731 https://curl.se/bug/?i=3747 NTLM authentication and Unicode NTLM authentication involving Unicode username or password only works properly if built with UNICODE defined together with the Schannel backend. The original problem was mentioned in: https://curl.se/mail/lib-2009-10/0024.html https://curl.se/bug/view.cgi?id=896 The Schannel version verified to work as mentioned in https://curl.se/mail/lib-2012-07/0073.html 6. Authentication 6.2 MIT Kerberos for Windows build libcurl fails to build with MIT Kerberos for Windows (KfW) due to KfW's library header files exporting symbols/macros that should be kept private to the KfW library. See ticket #5601 at https://krbdev.mit.edu/rt/ 6.3 NTLM in system context uses wrong name NTLM authentication using SSPI (on Windows) when (lib)curl is running in "system context" makes it use wrong(?) username - at least when compared to what winhttp does. See https://curl.se/bug/view.cgi?id=535 6.5 NTLM does not support password with Unicode 'SECTION SIGN' character https://en.wikipedia.org/wiki/Section_sign https://codepoints.net/U+00A7 SECTION SIGN https://github.com/curl/curl/issues/2120 6.6 libcurl can fail to try alternatives with --proxy-any When connecting via a proxy using --proxy-any, a failure to establish an authentication causes libcurl to abort trying other options if the failed method has a higher preference than the alternatives. As an example, --proxy-any against a proxy which advertise Negotiate and NTLM, but which fails to set up Kerberos authentication does not proceed to try authentication using NTLM. https://github.com/curl/curl/issues/876 6.7 Do not clear digest for single realm https://github.com/curl/curl/issues/3267 6.8 Heimdal memory leaks Running test 2077 and 2078 with curl built to do GSS with Heimdal causes valgrind errors (memory leak). https://github.com/curl/curl/issues/14446 6.9 SHA-256 digest not supported in Windows SSPI builds Windows builds of curl that have SSPI enabled use the native Windows API calls to create authentication strings. The call to InitializeSecurityContext fails with SEC_E_QOP_NOT_SUPPORTED which causes curl to fail with CURLE_AUTH_ERROR. Microsoft does not document supported digest algorithms and that SEC_E error code is not a documented error for InitializeSecurityContext (digest). https://github.com/curl/curl/issues/6302 6.10 curl never completes Negotiate over HTTP Apparently it is not working correctly...? See https://github.com/curl/curl/issues/5235 6.11 Negotiate on Windows fails When using --negotiate (or NTLM) with curl on Windows, SSL/TLS handshake fails despite having a valid kerberos ticket cached. Works without any issue in Unix/Linux. https://github.com/curl/curl/issues/5881 6.12 cannot use Secure Transport with Crypto Token Kit https://github.com/curl/curl/issues/7048 6.13 Negotiate authentication against Hadoop HDFS https://github.com/curl/curl/issues/8264 7. FTP 7.4 FTP with ACCT When doing an operation over FTP that requires the ACCT command (but not when logging in), the operation fails since libcurl does not detect this and thus fails to issue the correct command: https://curl.se/bug/view.cgi?id=635 7.12 FTPS server compatibility on Windows with Schannel FTPS is not widely used with the Schannel TLS backend and so there may be more bugs compared to other TLS backends such as OpenSSL. In the past users have reported hanging and failed connections. It is likely some changes to curl since then fixed the issues. None of the reported issues can be reproduced any longer. If you encounter an issue connecting to your server via FTPS with the latest curl and Schannel then please search for open issues or file a new issue. 9. SFTP and SCP 9.1 SFTP does not do CURLOPT_POSTQUOTE correct When libcurl sends CURLOPT_POSTQUOTE commands when connected to an SFTP server using the multi interface, the commands are not being sent correctly and instead the connection is "cancelled" (the operation is considered done) prematurely. There is a half-baked (busy-looping) patch provided in the bug report but it cannot be accepted as-is. See https://curl.se/bug/view.cgi?id=748 9.2 wolfssh: publickey auth does not work When building curl to use the wolfSSH backend for SFTP, the publickey authentication does not work. This is simply functionality not written for curl yet, the necessary API for make this work is provided by wolfSSH. See https://github.com/curl/curl/issues/4820 9.3 Remote recursive folder creation with SFTP On this servers, the curl fails to create directories on the remote server even when the CURLOPT_FTP_CREATE_MISSING_DIRS option is set. See https://github.com/curl/curl/issues/5204 9.4 libssh blocking and infinite loop problem In the SSH_SFTP_INIT state for libssh, the ssh session working mode is set to blocking mode. If the network is suddenly disconnected during sftp transmission, curl is stuck, even if curl is configured with a timeout. https://github.com/curl/curl/issues/8632 9.5 Cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!" Running SCP and SFTP tests on Cygwin makes this warning message appear. https://github.com/curl/curl/issues/11244 9.6 wolfssh: all tests fail Something fundamental stops them all from working properly. https://github.com/curl/curl/issues/16794 10. Connection 10.1 --interface with link-scoped IPv6 address When you give the `--interface` option telling curl to use a specific interface for its outgoing traffic in combination with an IPv6 address in the URL that uses a link-local scope, curl might pick the wrong address from the named interface and the subsequent transfer fails. Example command line: curl --interface eth0 'http://[fe80:928d:xxff:fexx:xxxx]/' The fact that the given IP address is link-scoped should probably be used as input to somehow make curl make a better choice for this. https://github.com/curl/curl/issues/14782 11. Internals 11.1 gssapi library name + version is missing in curl_version_info() The struct needs to be expanded and code added to store this info. See https://github.com/curl/curl/issues/13492 11.2 error buffer not set if connection to multiple addresses fails If you ask libcurl to resolve a hostname like example.com to IPv6 addresses when you only have IPv4 connectivity. libcurl fails with CURLE_COULDNT_CONNECT, but the error buffer set by CURLOPT_ERRORBUFFER remains empty. Issue: https://github.com/curl/curl/issues/544 11.4 HTTP test server 'connection-monitor' problems The 'connection-monitor' feature of the sws HTTP test server does not work properly if some tests are run in unexpected order. Like 1509 and then 1525. See https://github.com/curl/curl/issues/868 11.5 Connection information when using TCP Fast Open CURLINFO_LOCAL_PORT (and possibly a few other) fails when TCP Fast Open is enabled. See https://github.com/curl/curl/issues/1332 and https://github.com/curl/curl/issues/4296 11.6 test cases sometimes timeout Occasionally, one of the tests timeouts. Inexplicably. See https://github.com/curl/curl/issues/13350 11.7 CURLOPT_CONNECT_TO does not work for HTTPS proxy It is unclear if the same option should even cover the proxy connection or if if requires a separate option. See https://github.com/curl/curl/issues/14481 11.8 WinIDN test failures Test 165 disabled when built with WinIDN. 11.9 setting a disabled option should return CURLE_NOT_BUILT_IN When curl has been built with specific features or protocols disabled, setting such options with curl_easy_setopt() should rather return CURLE_NOT_BUILT_IN instead of CURLE_UNKNOWN_OPTION to signal the difference to the application See https://github.com/curl/curl/issues/15472 12. LDAP 12.1 OpenLDAP hangs after returning results By configuration defaults, OpenLDAP automatically chase referrals on secondary socket descriptors. The OpenLDAP backend is asynchronous and thus should monitor all socket descriptors involved. Currently, these secondary descriptors are not monitored, causing OpenLDAP library to never receive data from them. As a temporary workaround, disable referrals chasing by configuration. The fix is not easy: proper automatic referrals chasing requires a synchronous bind callback and monitoring an arbitrary number of socket descriptors for a single easy handle (currently limited to 5). Generic LDAP is synchronous: OK. See https://github.com/curl/curl/issues/622 and https://curl.se/mail/lib-2016-01/0101.html 12.2 LDAP on Windows does authentication wrong? https://github.com/curl/curl/issues/3116 12.3 LDAP on Windows does not work A simple curl command line getting "ldap://ldap.forumsys.com" returns an error that says "no memory" ! https://github.com/curl/curl/issues/4261 12.4 LDAPS requests to ActiveDirectory server hang https://github.com/curl/curl/issues/9580 13. TCP/IP 13.2 Trying local ports fails on Windows This makes '--local-port [range]' to not work since curl cannot properly detect if a port is already in use, so it tries the first port, uses that and then subsequently fails anyway if that was actually in use. https://github.com/curl/curl/issues/8112 15. CMake 15.1 cmake outputs: no version information available Something in the SONAME generation seems to be wrong in the cmake build. https://github.com/curl/curl/issues/11158 15.6 uses -lpthread instead of Threads::Threads See https://github.com/curl/curl/issues/6166 15.7 generated .pc file contains strange entries The Libs.private field of the generated .pc file contains -lgcc -lgcc_s -lc -lgcc -lgcc_s See https://github.com/curl/curl/issues/6167 15.13 CMake build with MIT Kerberos does not work Minimum CMake version was bumped in curl 7.71.0 (#5358) Since CMake 3.2 try_compile started respecting the CMAKE_EXE_FLAGS. The code dealing with MIT Kerberos detection sets few variables to potentially weird mix of space, and ;-separated flags. It had to blow up at some point. All the CMake checks that involve compilation are doomed from that point, the configured tree cannot be built. https://github.com/curl/curl/issues/6904 16. aws-sigv4 16.2 aws-sigv4 does not handle multipart/form-data correctly https://github.com/curl/curl/issues/13351 17. HTTP/2 17.1 HTTP/2 prior knowledge over proxy https://github.com/curl/curl/issues/12641 17.2 HTTP/2 frames while in the connection pool kill reuse If the server sends HTTP/2 frames (like for example an HTTP/2 PING frame) to curl while the connection is held in curl's connection pool, the socket is found readable when considered for reuse and that makes curl think it is dead and then it is closed and a new connection gets created instead. This is *best* fixed by adding monitoring to connections while they are kept in the pool so that pings can be responded to appropriately. 17.3 ENHANCE_YOUR_CALM causes infinite retries Infinite retries with 2 parallel requests on one connection receiving GOAWAY with ENHANCE_YOUR_CALM error code. See https://github.com/curl/curl/issues/5119 17.4 HTTP/2 + TLS spends a lot of time in recv It has been observed that by making the speed limit less accurate we could improve this performance. (by reverting https://github.com/curl/curl/commit/db5c9f4f9e0779b49624752b135281a0717b277b) Can we find a golden middle ground? See https://curl.se/mail/lib-2024-05/0026.html and https://github.com/curl/curl/issues/13416 18. HTTP/3 18.1 connection migration does not work https://github.com/curl/curl/issues/7695 18.2 quiche: QUIC connection is draining The transfer ends with error "QUIC connection is draining". https://github.com/curl/curl/issues/12037 19. RTSP 19.1 Some methods do not support response bodies The RTSP implementation is written to assume that a number of RTSP methods always get responses without bodies, even though there seems to be no indication in the RFC that this is always the case. https://github.com/curl/curl/issues/12414 curl-8.14.1/docs/MAIL-ETIQUETTE.md0000644000000000000000000002507415017756261014325 0ustar0000000000000000 # Mail etiquette ## About the lists ### Mailing Lists The mailing lists we have are all listed and described on the [curl website](https://curl.se/mail/). Each mailing list is targeted to a specific set of users and subjects, please use the one or the ones that suit you the most. Each mailing list has hundreds up to thousands of readers, meaning that each mail sent is received and read by a large number of people. People from various cultures, regions, religions and continents. ### Netiquette Netiquette is a common term for how to behave on the Internet. Of course, in each particular group and subculture there are differences in what is acceptable and what is considered good manners. This document outlines what we in the curl project consider to be good etiquette, and primarily this focus on how to behave on and how to use our mailing lists. ### Do Not Mail a Single Individual Many people send one question to one person. One person gets many mails, and there is only one person who can give you a reply. The question may be something that other people would also like to ask. These other people have no way to read the reply, but to ask the one person the question. The one person consequently gets overloaded with mail. If you really want to contact an individual and perhaps pay for his or her services, by all means go ahead, but if it is just another curl question, take it to a suitable list instead. ### Subscription Required All curl mailing lists require that you are subscribed to allow a mail to go through to all the subscribers. If you post without being subscribed (or from a different mail address than the one you are subscribed with), your mail is simply silently discarded. You have to subscribe first, then post. The reason for this unfortunate and strict subscription policy is of course to stop spam from pestering the lists. ### Moderation of new posters Several of the curl mailing lists automatically make all posts from new subscribers be moderated. After you have subscribed and sent your first mail to a list, that mail is not let through to the list until a mailing list administrator has verified that it is OK and permits it to get posted. Once a first post has been made that proves the sender is actually talking about curl-related subjects, the moderation "flag" is switched off and future posts go through without being moderated. The reason for this moderation policy is that we do suffer from spammers who actually subscribe and send spam to our lists. ### Handling trolls and spam Despite our good intentions and hard work to keep spam off the lists and to maintain a friendly and positive atmosphere, there are times when spam and or trolls get through. Troll - "someone who posts inflammatory, extraneous, or off-topic messages in an online community" Spam - "use of electronic messaging systems to send unsolicited bulk messages" No matter what, we NEVER EVER respond to trolls or spammers on the list. If you believe the list admin should do something in particular, contact them off-list. The subject is taken care of as much as possible to prevent repeated offenses, but responding on the list to such messages never leads to anything good and only puts the light even more on the offender: which was the entire purpose of it getting sent to the list in the first place. Do not feed the trolls. ### How to unsubscribe You can unsubscribe the same way you subscribed in the first place. You go to the page for the particular mailing list you are subscribed to and you enter your email address and password and press the unsubscribe button. Also, the instructions to unsubscribe are included in the headers of every mail that is sent out to all curl related mailing lists and there is a footer in each mail that links to the "admin" page on which you can unsubscribe and change other options. You NEVER EVER email the mailing list requesting someone else to take you off the list. ### I posted, now what? If you are not subscribed with the same email address that you used to send the email, your post is silently discarded. If you posted for the first time to the mailing list, you first need to wait for an administrator to allow your email to go through (moderated). This normally happens quickly but in case we are asleep, you may have to wait a few hours. Once your email goes through it is sent out to several hundred or even thousands of recipients. Your email may cover an area that not that many people know about or are interested in. Or possibly the person who knows about it is on vacation or under a heavy work load right now. You may have to wait for a response and you should not expect to get a response at all. Ideally, you get an answer within a couple of days. You do yourself and all of us a service when you include as many details as possible already in your first email. Mention your operating system and environment. Tell us which curl version you are using and tell us what you did, what happened and what you expected would happen. Preferably, show us what you did with details enough to allow others to help point out the problem or repeat the steps in their locations. Failing to include details only delays responses and make people respond and ask for more details and you have to send follow-up emails that include them. Expect the responses to primarily help YOU debug the issue, or ask YOU questions that can lead you or others towards a solution or explanation to whatever you experience. If you are a repeat offender to the guidelines outlined in this document, chances are that people ignore you and your chances to get responses in the future greatly diminish. ### Your emails are public Your email, its contents and all its headers and the details in those headers are received by every subscriber of the mailing list that you send your email to. Your email as sent to a curl mailing list ends up in mail archives, on the curl website and elsewhere, for others to see and read. Today and in the future. In addition to the archives, the mail is sent out to thousands of individuals. There is no way to undo a sent email. When sending emails to a curl mailing list, do not include sensitive information such as usernames and passwords; use fake ones, temporary ones or just remove them completely from the mail. Note that this includes base64 encoded HTTP Basic auth headers. This public nature of the curl mailing lists makes automatically inserted mail footers about mails being "private" or "only meant for the recipient" or similar even more silly than usual. Because they are absolutely not private when sent to a public mailing list. ## Sending mail ### Reply or New Mail Please do not reply to an existing message as a short-cut to post a message to the lists. Many mail programs and web archivers use information within mails to keep them together as "threads", as collections of posts that discuss a certain subject. If you do not intend to reply on the same or similar subject, do not just hit reply on an existing mail and change the subject, create a new mail. ### Reply to the List When replying to a message from the list, make sure that you do "group reply" or "reply to all", and not just reply to the author of the single mail you reply to. We are actively discouraging replying to the single person by setting the correct field in outgoing mails back asking for replies to get sent to the mailing list address, making it harder for people to reply to the author only by mistake. ### Use a Sensible Subject Please use a subject of the mail that makes sense and that is related to the contents of your mail. It makes it a lot easier to find your mail afterwards and it makes it easier to track mail threads and topics. ### Do Not Top-Post If you reply to a message, do not use top-posting. Top-posting is when you write the new text at the top of a mail and you insert the previous quoted mail conversation below. It forces users to read the mail in a backwards order to properly understand it. This is why top posting is so bad (in top posting order): A: Because it messes up the order in which people normally read text. Q: Why is top-posting such a bad thing? A: Top-posting. Q: What is the most annoying thing in email? Apart from the screwed up read order (especially when mixed together in a thread when someone responds using the mandated bottom-posting style), it also makes it impossible to quote only parts of the original mail. When you reply to a mail. You let the mail client insert the previous mail quoted. Then you put the cursor on the first line of the mail and you move down through the mail, deleting all parts of the quotes that do not add context for your comments. When you want to add a comment you do so, inline, right after the quotes that relate to your comment. Then you continue downwards again. When most of the quotes have been removed and you have added your own words, you are done. ### HTML is not for mails Please switch off those HTML encoded messages. You can mail all those funny mails to your friends. We speak plain text mails. ### Quoting Quote as little as possible. Just enough to provide the context you cannot eave out. A lengthy description can be found [here](https://www.netmeister.org/news/learn2quote.html). ### Digest We allow subscribers to subscribe to the "digest" version of the mailing lists. A digest is a collection of mails lumped together in one single mail. Should you decide to reply to a mail sent out as a digest, there are two things you MUST consider if you really, really cannot subscribe normally instead: Cut off all mails and chatter that is not related to the mail you want to reply to. Change the subject name to something sensible and related to the subject, preferably even the actual subject of the single mail you wanted to reply to ### Please Tell Us How You Solved The Problem Many people mail questions to the list, people spend some of their time and make an effort in providing good answers to these questions. If you are the one who asks, please consider responding once more in case one of the hints was what solved your problems. The guys who write answers feel good to know that they provided a good answer and that you fixed the problem. Far too often, the person who asked the question is never heard from again, and we never get to know if they are gone because the problem was solved or perhaps because the problem was unsolvable. Getting the solution posted also helps other users that experience the same problem(s). They get to see (possibly in the web archives) that the suggested fixes actually have helped at least one person. curl-8.14.1/docs/MANUAL.md0000644000000000000000000010675215017756261013214 0ustar0000000000000000 # curl tutorial ## Simple Usage Get the main page from a web-server: curl https://www.example.com/ Get a README file from an FTP server: curl ftp://ftp.example.com/README Get a webpage from a server using port 8000: curl http://www.example.com:8000/ Get a directory listing of an FTP site: curl ftp://ftp.example.com/ Get the all terms matching curl from a dictionary: curl dict://dict.example.com/m:curl Get the definition of curl from a dictionary: curl dict://dict.example.com/d:curl Fetch two documents at once: curl ftp://ftp.example.com/ http://www.example.com:8000/ Get a file off an FTPS server: curl ftps://files.are.example.com/secrets.txt or use the more appropriate FTPS way to get the same file: curl --ssl-reqd ftp://files.are.example.com/secrets.txt Get a file from an SSH server using SFTP: curl -u username sftp://example.com/etc/issue Get a file from an SSH server using SCP using a private key (not password-protected) to authenticate: curl -u username: --key ~/.ssh/id_rsa scp://example.com/~/file.txt Get a file from an SSH server using SCP using a private key (password-protected) to authenticate: curl -u username: --key ~/.ssh/id_rsa --pass private_key_password scp://example.com/~/file.txt Get the main page from an IPv6 web server: curl "http://[2001:1890:1112:1::20]/" Get a file from an SMB server: curl -u "domain\username:passwd" smb://server.example.com/share/file.txt ## Download to a File Get a webpage and store in a local file with a specific name: curl -o thatpage.html http://www.example.com/ Get a webpage and store in a local file, make the local file get the name of the remote document (if no filename part is specified in the URL, this fails): curl -O http://www.example.com/index.html Fetch two files and store them with their remote names: curl -O www.haxx.se/index.html -O curl.se/download.html ## Using Passwords ### FTP To ftp files using name and password, include them in the URL like: curl ftp://name:passwd@ftp.server.example:port/full/path/to/file or specify them with the `-u` flag like curl -u name:passwd ftp://ftp.server.example:port/full/path/to/file ### FTPS It is just like for FTP, but you may also want to specify and use SSL-specific options for certificates etc. Note that using `FTPS://` as prefix is the *implicit* way as described in the standards while the recommended *explicit* way is done by using `FTP://` and the `--ssl-reqd` option. ### SFTP / SCP This is similar to FTP, but you can use the `--key` option to specify a private key to use instead of a password. Note that the private key may itself be protected by a password that is unrelated to the login password of the remote system; this password is specified using the `--pass` option. Typically, curl automatically extracts the public key from the private key file, but in cases where curl does not have the proper library support, a matching public key file must be specified using the `--pubkey` option. ### HTTP curl also supports user and password in HTTP URLs, thus you can pick a file like: curl http://name:passwd@http.server.example/full/path/to/file or specify user and password separately like in curl -u name:passwd http://http.server.example/full/path/to/file HTTP offers many different methods of authentication and curl supports several: Basic, Digest, NTLM and Negotiate (SPNEGO). Without telling which method to use, curl defaults to Basic. You can also ask curl to pick the most secure ones out of the ones that the server accepts for the given URL, by using `--anyauth`. **Note**! According to the URL specification, HTTP URLs can not contain a user and password, so that style does not work when using curl via a proxy, even though curl allows it at other times. When using a proxy, you _must_ use the `-u` style for user and password. ### HTTPS Probably most commonly used with private certificates, as explained below. ## Proxy curl supports both HTTP and SOCKS proxy servers, with optional authentication. It does not have special support for FTP proxy servers since there are no standards for those, but it can still be made to work with many of them. You can also use both HTTP and SOCKS proxies to transfer files to and from FTP servers. Get an ftp file using an HTTP proxy named my-proxy that uses port 888: curl -x my-proxy:888 ftp://ftp.example.com/README Get a file from an HTTP server that requires user and password, using the same proxy as above: curl -u user:passwd -x my-proxy:888 http://www.example.com/ Some proxies require special authentication. Specify by using -U as above: curl -U user:passwd -x my-proxy:888 http://www.example.com/ A comma-separated list of hosts and domains which do not use the proxy can be specified as: curl --noproxy example.com -x my-proxy:888 http://www.example.com/ If the proxy is specified with `--proxy1.0` instead of `--proxy` or `-x`, then curl uses HTTP/1.0 instead of HTTP/1.1 for any `CONNECT` attempts. curl also supports SOCKS4 and SOCKS5 proxies with `--socks4` and `--socks5`. See also the environment variables curl supports that offer further proxy control. Most FTP proxy servers are set up to appear as a normal FTP server from the client's perspective, with special commands to select the remote FTP server. curl supports the `-u`, `-Q` and `--ftp-account` options that can be used to set up transfers through many FTP proxies. For example, a file can be uploaded to a remote FTP server using a Blue Coat FTP proxy with the options: curl -u "username@ftp.server.example Proxy-Username:Remote-Pass" --ftp-account Proxy-Password --upload-file local-file ftp://my-ftp.proxy.example:21/remote/upload/path/ See the manual for your FTP proxy to determine the form it expects to set up transfers, and curl's `-v` option to see exactly what curl is sending. ## Piping Get a key file and add it with `apt-key` (when on a system that uses `apt` for package management): curl -L https://apt.example.org/llvm-snapshot.gpg.key | sudo apt-key add - The '|' pipes the output to STDIN. `-` tells `apt-key` that the key file should be read from STDIN. ## Ranges HTTP 1.1 introduced byte-ranges. Using this, a client can request to get only one or more sub-parts of a specified document. curl supports this with the `-r` flag. Get the first 100 bytes of a document: curl -r 0-99 http://www.example.com/ Get the last 500 bytes of a document: curl -r -500 http://www.example.com/ curl also supports simple ranges for FTP files as well. Then you can only specify start and stop position. Get the first 100 bytes of a document using FTP: curl -r 0-99 ftp://www.example.com/README ## Uploading ### FTP / FTPS / SFTP / SCP Upload all data on stdin to a specified server: curl -T - ftp://ftp.example.com/myfile Upload data from a specified file, login with user and password: curl -T uploadfile -u user:passwd ftp://ftp.example.com/myfile Upload a local file to the remote site, and use the local filename at the remote site too: curl -T uploadfile -u user:passwd ftp://ftp.example.com/ Upload a local file to get appended to the remote file: curl -T localfile -a ftp://ftp.example.com/remotefile curl also supports ftp upload through a proxy, but only if the proxy is configured to allow that kind of tunneling. If it does, you can run curl in a fashion similar to: curl --proxytunnel -x proxy:port -T localfile ftp.example.com ### SMB / SMBS curl -T file.txt -u "domain\username:passwd" smb://server.example.com/share/ ### HTTP Upload all data on stdin to a specified HTTP site: curl -T - http://www.example.com/myfile Note that the HTTP server must have been configured to accept PUT before this can be done successfully. For other ways to do HTTP data upload, see the POST section below. ## Verbose / Debug If curl fails where it is not supposed to, if the servers do not let you in, if you cannot understand the responses: use the `-v` flag to get verbose fetching. curl outputs lots of info and what it sends and receives in order to let the user see all client-server interaction (but it does not show you the actual data). curl -v ftp://ftp.example.com/ To get even more details and information on what curl does, try using the `--trace` or `--trace-ascii` options with a given filename to log to, like this: curl --trace my-trace.txt www.haxx.se ## Detailed Information Different protocols provide different ways of getting detailed information about specific files/documents. To get curl to show detailed information about a single file, you should use `-I`/`--head` option. It displays all available info on a single file for HTTP and FTP. The HTTP information is a lot more extensive. For HTTP, you can get the header information (the same as `-I` would show) shown before the data by using `-i`/`--include`. curl understands the `-D`/`--dump-header` option when getting files from both FTP and HTTP, and it then stores the headers in the specified file. Store the HTTP headers in a separate file (headers.txt in the example): curl --dump-header headers.txt curl.se Note that headers stored in a separate file can be useful at a later time if you want curl to use cookies sent by the server. More about that in the cookies section. ## POST (HTTP) It is easy to post data using curl. This is done using the `-d ` option. The post data must be urlencoded. Post a simple `name` and `phone` guestbook. curl -d "name=Rafael%20Sagula&phone=3320780" http://www.example.com/guest.cgi Or automatically [URL encode the data](https://everything.curl.dev/http/post/url-encode). curl --data-urlencode "name=Rafael Sagula&phone=3320780" http://www.example.com/guest.cgi How to post a form with curl, lesson #1: Dig out all the `` tags in the form that you want to fill in. If there is a normal post, you use `-d` to post. `-d` takes a full post string, which is in the format =&=&... The variable names are the names set with `"name="` in the `` tags, and the data is the contents you want to fill in for the inputs. The data *must* be properly URL encoded. That means you replace space with + and that you replace weird letters with `%XX` where `XX` is the hexadecimal representation of the letter's ASCII code. Example: (say if `http://example.com` had the following html) ```html
``` We want to enter user `foobar` with password `12345`. To post to this, you would enter a curl command line like: curl -d "user=foobar&pass=12345&id=blablabla&ding=submit" http://example.com/post.cgi While `-d` uses the application/x-www-form-urlencoded mime-type, generally understood by CGI's and similar, curl also supports the more capable multipart/form-data type. This latter type supports things like file upload. `-F` accepts parameters like `-F "name=contents"`. If you want the contents to be read from a file, use `@filename` as contents. When specifying a file, you can also specify the file content type by appending `;type=` to the filename. You can also post the contents of several files in one field. For example, the field name `coolfiles` is used to send three files, with different content types using the following syntax: curl -F "coolfiles=@fil1.gif;type=image/gif,fil2.txt,fil3.html" http://www.example.com/postit.cgi If the content-type is not specified, curl tries to guess from the file extension (it only knows a few), or use the previously specified type (from an earlier file if several files are specified in a list) or else it uses the default type `application/octet-stream`. Emulate a fill-in form with `-F`. Let's say you fill in three fields in a form. One field is a filename which to post, one field is your name and one field is a file description. We want to post the file we have written named `cooltext.txt`. To let curl do the posting of this data instead of your favorite browser, you have to read the HTML source of the form page and find the names of the input fields. In our example, the input field names are `file`, `yourname` and `filedescription`. curl -F "file=@cooltext.txt" -F "yourname=Daniel" -F "filedescription=Cool text file with cool text inside" http://www.example.com/postit.cgi To send two files in one post you can do it in two ways: Send multiple files in a single field with a single field name: curl -F "pictures=@dog.gif,cat.gif" $URL Send two fields with two field names curl -F "docpicture=@dog.gif" -F "catpicture=@cat.gif" $URL To send a field value literally without interpreting a leading `@` or `<`, or an embedded `;type=`, use `--form-string` instead of `-F`. This is recommended when the value is obtained from a user or some other unpredictable source. Under these circumstances, using `-F` instead of `--form-string` could allow a user to trick curl into uploading a file. ## Referrer An HTTP request has the option to include information about which address referred it to the actual page. curl allows you to specify the referrer to be used on the command line. It is especially useful to fool or trick stupid servers or CGI scripts that rely on that information being available or contain certain data. curl -e www.example.org http://www.example.com/ ## User Agent An HTTP request has the option to include information about the browser that generated the request. curl allows it to be specified on the command line. It is especially useful to fool or trick stupid servers or CGI scripts that only accept certain browsers. Example: curl -A 'Mozilla/3.0 (Win95; I)' http://www.bank.example.com/ Other common strings: - `Mozilla/3.0 (Win95; I)` - Netscape Version 3 for Windows 95 - `Mozilla/3.04 (Win95; U)` - Netscape Version 3 for Windows 95 - `Mozilla/2.02 (OS/2; U)` - Netscape Version 2 for OS/2 - `Mozilla/4.04 [en] (X11; U; AIX 4.2; Nav)` - Netscape for AIX - `Mozilla/4.05 [en] (X11; U; Linux 2.0.32 i586)` - Netscape for Linux Note that Internet Explorer tries hard to be compatible in every way: - `Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)` - MSIE for W95 Mozilla is not the only possible User-Agent name: - `Konqueror/1.0` - KDE File Manager desktop client - `Lynx/2.7.1 libwww-FM/2.14` - Lynx command line browser ## Cookies Cookies are generally used by web servers to keep state information at the client's side. The server sets cookies by sending a response line in the headers that looks like `Set-Cookie: ` where the data part then typically contains a set of `NAME=VALUE` pairs (separated by semicolons `;` like `NAME1=VALUE1; NAME2=VALUE2;`). The server can also specify for what path the cookie should be used for (by specifying `path=value`), when the cookie should expire (`expire=DATE`), for what domain to use it (`domain=NAME`) and if it should be used on secure connections only (`secure`). If you have received a page from a server that contains a header like: ```http Set-Cookie: sessionid=boo123; path="/foo"; ``` it means the server wants that first pair passed on when we get anything in a path beginning with `/foo`. Example, get a page that wants my name passed in a cookie: curl -b "name=Daniel" www.example.com curl also has the ability to use previously received cookies in following sessions. If you get cookies from a server and store them in a file in a manner similar to: curl --dump-header headers www.example.com ... you can then in a second connect to that (or another) site, use the cookies from the `headers.txt` file like: curl -b headers.txt www.example.com While saving headers to a file is a working way to store cookies, it is however error-prone and not the preferred way to do this. Instead, make curl save the incoming cookies using the well-known Netscape cookie format like this: curl -c cookies.txt www.example.com Note that by specifying `-b` you enable the cookie engine and with `-L` you can make curl follow a `location:` (which often is used in combination with cookies). If a site sends cookies and a location field, you can use a non-existing file to trigger the cookie awareness like: curl -L -b empty.txt www.example.com The file to read cookies from must be formatted using plain HTTP headers OR as Netscape's cookie file. curl determines what kind it is based on the file contents. In the above command, curl parses the header and store the cookies received from www.example.com. curl sends the stored cookies which match the request to the server as it follows the location. The file `empty.txt` may be a nonexistent file. To read and write cookies from a Netscape cookie file, you can set both `-b` and `-c` to use the same file: curl -b cookies.txt -c cookies.txt www.example.com ## Progress Meter The progress meter exists to show a user that something actually is happening. The different fields in the output have the following meaning: % Total % Received % Xferd Average Speed Time Curr. Dload Upload Total Current Left Speed 0 151M 0 38608 0 0 9406 0 4:41:43 0:00:04 4:41:39 9287 From left-to-right: - `%` - percentage completed of the whole transfer - `Total` - total size of the whole expected transfer - `%` - percentage completed of the download - `Received` - currently downloaded amount of bytes - `%` - percentage completed of the upload - `Xferd` - currently uploaded amount of bytes - `Average Speed Dload` - the average transfer speed of the download - `Average Speed Upload` - the average transfer speed of the upload - `Time Total` - expected time to complete the operation - `Time Current` - time passed since the invoke - `Time Left` - expected time left to completion - `Curr.Speed` - the average transfer speed the last 5 seconds (the first 5 seconds of a transfer is based on less time of course.) The `-#` option displays a totally different progress bar that does not need much explanation! ## Speed Limit curl allows the user to set the transfer speed conditions that must be met to let the transfer keep going. By using the switch `-y` and `-Y` you can make curl abort transfers if the transfer speed is below the specified lowest limit for a specified time. To have curl abort the download if the speed is slower than 3000 bytes per second for 1 minute, run: curl -Y 3000 -y 60 www.far-away.example.com This can be used in combination with the overall time limit, so that the above operation must be completed in whole within 30 minutes: curl -m 1800 -Y 3000 -y 60 www.far-away.example.com Forcing curl not to transfer data faster than a given rate is also possible, which might be useful if you are using a limited bandwidth connection and you do not want your transfer to use all of it (sometimes referred to as *bandwidth throttle*). Make curl transfer data no faster than 10 kilobytes per second: curl --limit-rate 10K www.far-away.example.com or curl --limit-rate 10240 www.far-away.example.com Or prevent curl from uploading data faster than 1 megabyte per second: curl -T upload --limit-rate 1M ftp://uploads.example.com When using the `--limit-rate` option, the transfer rate is regulated on a per-second basis, which causes the total transfer speed to become lower than the given number. Sometimes of course substantially lower, if your transfer stalls during periods. ## Config File curl automatically tries to read the `.curlrc` file (or `_curlrc` file on Microsoft Windows systems) from the user's home directory on startup. The config file could be made up with normal command line switches, but you can also specify the long options without the dashes to make it more readable. You can separate the options and the parameter with spaces, or with `=` or `:`. Comments can be used within the file. If the first letter on a line is a `#`-symbol the rest of the line is treated as a comment. If you want the parameter to contain spaces, you must enclose the entire parameter within double quotes (`"`). Within those quotes, you specify a quote as `\"`. NOTE: You must specify options and their arguments on the same line. Example, set default time out and proxy in a config file: # We want a 30 minute timeout: -m 1800 # ... and we use a proxy for all accesses: proxy = proxy.our.domain.example.com:8080 Whitespaces ARE significant at the end of lines, but all whitespace leading up to the first characters of each line are ignored. Prevent curl from reading the default file by using -q as the first command line parameter, like: curl -q www.example.org Force curl to get and display a local help page in case it is invoked without URL by making a config file similar to: # default url to get url = "http://help.with.curl.example.com/curlhelp.html" You can specify another config file to be read by using the `-K`/`--config` flag. If you set config filename to `-` it reads the config from stdin, which can be handy if you want to hide options from being visible in process tables etc: echo "user = user:passwd" | curl -K - http://that.secret.example.com ## Extra Headers When using curl in your own programs, you may end up needing to pass on your own custom headers when getting a webpage. You can do this by using the `-H` flag. Example, send the header `X-you-and-me: yes` to the server when getting a page: curl -H "X-you-and-me: yes" love.example.com This can also be useful in case you want curl to send a different text in a header than it normally does. The `-H` header you specify then replaces the header curl would normally send. If you replace an internal header with an empty one, you prevent that header from being sent. To prevent the `Host:` header from being used: curl -H "Host:" server.example.com ## FTP and Path Names Do note that when getting files with a `ftp://` URL, the given path is relative to the directory you enter. To get the file `README` from your home directory at your ftp site, do: curl ftp://user:passwd@my.example.com/README If you want the README file from the root directory of that same site, you need to specify the absolute filename: curl ftp://user:passwd@my.example.com//README (I.e with an extra slash in front of the filename.) ## SFTP and SCP and Path Names With sftp: and scp: URLs, the path name given is the absolute name on the server. To access a file relative to the remote user's home directory, prefix the file with `/~/` , such as: curl -u $USER sftp://home.example.com/~/.bashrc ## FTP and Firewalls The FTP protocol requires one of the involved parties to open a second connection as soon as data is about to get transferred. There are two ways to do this. The default way for curl is to issue the PASV command which causes the server to open another port and await another connection performed by the client. This is good if the client is behind a firewall that does not allow incoming connections. curl ftp.example.com If the server, for example, is behind a firewall that does not allow connections on ports other than 21 (or if it just does not support the `PASV` command), the other way to do it is to use the `PORT` command and instruct the server to connect to the client on the given IP number and port (as parameters to the PORT command). The `-P` flag to curl supports a few different options. Your machine may have several IP-addresses and/or network interfaces and curl allows you to select which of them to use. Default address can also be used: curl -P - ftp.example.com Download with `PORT` but use the IP address of our `le0` interface (this does not work on Windows): curl -P le0 ftp.example.com Download with `PORT` but use 192.168.0.10 as our IP address to use: curl -P 192.168.0.10 ftp.example.com ## Network Interface Get a webpage from a server using a specified port for the interface: curl --interface eth0:1 http://www.example.com/ or curl --interface 192.168.1.10 http://www.example.com/ ## HTTPS Secure HTTP requires a TLS library to be installed and used when curl is built. If that is done, curl is capable of retrieving and posting documents using the HTTPS protocol. Example: curl https://secure.example.com curl is also capable of using client certificates to get/post files from sites that require valid certificates. The only drawback is that the certificate needs to be in PEM-format. PEM is a standard and open format to store certificates with, but it is not used by the most commonly used browsers. If you want curl to use the certificates you use with your favorite browser, you may need to download/compile a converter that can convert your browser's formatted certificates to PEM formatted ones. Example on how to automatically retrieve a document using a certificate with a personal password: curl -E /path/to/cert.pem:password https://secure.example.com/ If you neglect to specify the password on the command line, you are prompted for the correct password before any data can be received. Many older HTTPS servers have problems with specific SSL or TLS versions, which newer versions of OpenSSL etc use, therefore it is sometimes useful to specify what TLS version curl should use.: curl --tlv1.0 https://secure.example.com/ Otherwise, curl attempts to use a sensible TLS default version. ## Resuming File Transfers To continue a file transfer where it was previously aborted, curl supports resume on HTTP(S) downloads as well as FTP uploads and downloads. Continue downloading a document: curl -C - -o file ftp://ftp.example.com/path/file Continue uploading a document: curl -C - -T file ftp://ftp.example.com/path/file Continue downloading a document from a web server curl -C - -o file http://www.example.com/ ## Time Conditions HTTP allows a client to specify a time condition for the document it requests. It is `If-Modified-Since` or `If-Unmodified-Since`. curl allows you to specify them with the `-z`/`--time-cond` flag. For example, you can easily make a download that only gets performed if the remote file is newer than a local copy. It would be made like: curl -z local.html http://remote.example.com/remote.html Or you can download a file only if the local file is newer than the remote one. Do this by prepending the date string with a `-`, as in: curl -z -local.html http://remote.example.com/remote.html You can specify a plain text date as condition. Tell curl to only download the file if it was updated since January 12, 2012: curl -z "Jan 12 2012" http://remote.example.com/remote.html curl accepts a wide range of date formats. You always make the date check the other way around by prepending it with a dash (`-`). ## DICT For fun try curl dict://dict.org/m:curl curl dict://dict.org/d:heisenbug:jargon curl dict://dict.org/d:daniel:gcide Aliases for `m` are `match` and `find`, and aliases for `d` are `define` and `lookup`. For example, curl dict://dict.org/find:curl Commands that break the URL description of the RFC (but not the DICT protocol) are curl dict://dict.org/show:db curl dict://dict.org/show:strat Authentication support is still missing ## LDAP If you have installed the OpenLDAP library, curl can take advantage of it and offer `ldap://` support. On Windows, curl uses WinLDAP from Platform SDK by default. Default protocol version used by curl is LDAP version 3. Version 2 is used as a fallback mechanism in case version 3 fails to connect. LDAP is a complex thing and writing an LDAP query is not an easy task. Familiarize yourself with the exact syntax description elsewhere. One such place might be: [RFC 2255, The LDAP URL Format](https://curl.se/rfc/rfc2255.txt) To show you an example, this is how to get all people from an LDAP server that has a certain subdomain in their email address: curl -B "ldap://ldap.example.com/o=frontec??sub?mail=*sth.example.com" You also can use authentication when accessing LDAP catalog: curl -u user:passwd "ldap://ldap.example.com/o=frontec??sub?mail=*" curl "ldap://user:passwd@ldap.example.com/o=frontec??sub?mail=*" By default, if user and password are provided, OpenLDAP/WinLDAP uses basic authentication. On Windows you can control this behavior by providing one of `--basic`, `--ntlm` or `--digest` option in curl command line curl --ntlm "ldap://user:passwd@ldap.example.com/o=frontec??sub?mail=*" On Windows, if no user/password specified, auto-negotiation mechanism is used with current logon credentials (SSPI/SPNEGO). ## Environment Variables curl reads and understands the following proxy related environment variables: http_proxy, HTTPS_PROXY, FTP_PROXY They should be set for protocol-specific proxies. General proxy should be set with ALL_PROXY A comma-separated list of hostnames that should not go through any proxy is set in (only an asterisk, `*` matches all hosts) NO_PROXY If the hostname matches one of these strings, or the host is within the domain of one of these strings, transactions with that node is not done over the proxy. When a domain is used, it needs to start with a period. A user can specify that both www.example.com and foo.example.com should not use a proxy by setting `NO_PROXY` to `.example.com`. By including the full name you can exclude specific hostnames, so to make `www.example.com` not use a proxy but still have `foo.example.com` do it, set `NO_PROXY` to `www.example.com`. The usage of the `-x`/`--proxy` flag overrides the environment variables. ## Netrc Unix introduced the `.netrc` concept a long time ago. It is a way for a user to specify name and password for commonly visited FTP sites in a file so that you do not have to type them in each time you visit those sites. You realize this is a big security risk if someone else gets hold of your passwords, therefore most Unix programs do not read this file unless it is only readable by yourself (curl does not care though). curl supports `.netrc` files if told to (using the `-n`/`--netrc` and `--netrc-optional` options). This is not restricted to just FTP, so curl can use it for all protocols where authentication is used. A simple `.netrc` file could look something like: machine curl.se login iamdaniel password mysecret ## Custom Output To better allow script programmers to get to know about the progress of curl, the `-w`/`--write-out` option was introduced. Using this, you can specify what information from the previous transfer you want to extract. To display the amount of bytes downloaded together with some text and an ending newline: curl -w 'We downloaded %{size_download} bytes\n' www.example.com ## Kerberos FTP Transfer curl supports kerberos4 and kerberos5/GSSAPI for FTP transfers. You need the kerberos package installed and used at curl build time for it to be available. First, get the krb-ticket the normal way, like with the `kinit`/`kauth` tool. Then use curl in way similar to: curl --krb private ftp://krb4site.example.com -u username:fakepwd There is no use for a password on the `-u` switch, but a blank one makes curl ask for one and you already entered the real password to `kinit`/`kauth`. ## TELNET The curl telnet support is basic and easy to use. curl passes all data passed to it on stdin to the remote server. Connect to a remote telnet server using a command line similar to: curl telnet://remote.example.com Enter the data to pass to the server on stdin. The result is sent to stdout or to the file you specify with `-o`. You might want the `-N`/`--no-buffer` option to switch off the buffered output for slow connections or similar. Pass options to the telnet protocol negotiation, by using the `-t` option. To tell the server we use a vt100 terminal, try something like: curl -tTTYPE=vt100 telnet://remote.example.com Other interesting options for it `-t` include: - `XDISPLOC=` Sets the X display location. - `NEW_ENV=` Sets an environment variable. NOTE: The telnet protocol does not specify any way to login with a specified user and password so curl cannot do that automatically. To do that, you need to track when the login prompt is received and send the username and password accordingly. ## Persistent Connections Specifying multiple files on a single command line makes curl transfer all of them, one after the other in the specified order. libcurl attempts to use persistent connections for the transfers so that the second transfer to the same host can use the same connection that was already initiated and was left open in the previous transfer. This greatly decreases connection time for all but the first transfer and it makes a far better use of the network. Note that curl cannot use persistent connections for transfers that are used in subsequent curl invokes. Try to stuff as many URLs as possible on the same command line if they are using the same host, as that makes the transfers faster. If you use an HTTP proxy for file transfers, practically all transfers are persistent. ## Multiple Transfers With A Single Command Line As is mentioned above, you can download multiple files with one command line by simply adding more URLs. If you want those to get saved to a local file instead of just printed to stdout, you need to add one save option for each URL you specify. Note that this also goes for the `-O` option (but not `--remote-name-all`). For example: get two files and use `-O` for the first and a custom file name for the second: curl -O http://example.com/file.txt ftp://example.com/moo.exe -o moo.jpg You can also upload multiple files in a similar fashion: curl -T local1 ftp://example.com/moo.exe -T local2 ftp://example.com/moo2.txt ## IPv6 curl connects to a server with IPv6 when a host lookup returns an IPv6 address and fall back to IPv4 if the connection fails. The `--ipv4` and `--ipv6` options can specify which address to use when both are available. IPv6 addresses can also be specified directly in URLs using the syntax: http://[2001:1890:1112:1::20]/overview.html When this style is used, the `-g` option must be given to stop curl from interpreting the square brackets as special globbing characters. Link local and site local addresses including a scope identifier, such as `fe80::1234%1`, may also be used, but the scope portion must be numeric or match an existing network interface on Linux and the percent character must be URL escaped. The previous example in an SFTP URL might look like: sftp://[fe80::1234%251]/ IPv6 addresses provided other than in URLs (e.g. to the `--proxy`, `--interface` or `--ftp-port` options) should not be URL encoded. ## Mailing Lists For your convenience, we have several open mailing lists to discuss curl, its development and things relevant to this. Get all info at https://curl.se/mail/. Please direct curl questions, feature requests and trouble reports to one of these mailing lists instead of mailing any individual. Available lists include: ### `curl-users` Users of the command line tool. How to use it, what does not work, new features, related tools, questions, news, installations, compilations, running, porting etc. ### `curl-library` Developers using or developing libcurl. Bugs, extensions, improvements. ### `curl-announce` Low-traffic. Only receives announcements of new public versions. At worst, that makes something like one or two mails per month, but usually only one mail every second month. ### `curl-and-php` Using the curl functions in PHP. Everything curl with a PHP angle. Or PHP with a curl angle. ### `curl-and-python` Python hackers using curl with or without the python binding pycurl. curl-8.14.1/docs/Makefile.am0000644000000000000000000001323415017756261013741 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### AUTOMAKE_OPTIONS = foreign no-dependencies if BUILD_DOCS # if we disable man page building, ignore these MK_CA_DOCS = mk-ca-bundle.1 CURLCONF_DOCS = curl-config.1 TEST_DOCS = runtests.1 testcurl.1 man_MANS = curl-config.1 wcurl.1 endif CURLPAGES = curl-config.md mk-ca-bundle.md wcurl.md runtests.md testcurl.md SUBDIRS = . cmdline-opts libcurl DIST_SUBDIRS = $(SUBDIRS) examples if BUILD_DOCS CLEANFILES = $(MK_CA_DOCS) $(man_MANS) $(TEST_DOCS) endif TESTDOCS = \ tests/CI.md \ tests/FILEFORMAT.md \ tests/HTTP.md \ tests/TEST-SUITE.md INTERNALDOCS = \ internals/BUFQ.md \ internals/BUFREF.md \ internals/CHECKSRC.md \ internals/CLIENT-READERS.md \ internals/CLIENT-WRITERS.md \ internals/CODE_STYLE.md \ internals/CONNECTION-FILTERS.md \ internals/CURLX.md \ internals/DYNBUF.md \ internals/HASH.md \ internals/LLIST.md \ internals/MID.md \ internals/MQTT.md \ internals/MULTI-EV.md \ internals/NEW-PROTOCOL.md \ internals/PORTING.md \ internals/README.md \ internals/SPLAY.md \ internals/STRPARSE.md \ internals/TLS-SESSIONS.md \ internals/UINT_SETS.md \ internals/WEBSOCKET.md EXTRA_DIST = \ $(CURLPAGES) \ $(INTERNALDOCS) \ $(TESTDOCS) \ ALTSVC.md \ BINDINGS.md \ BUG-BOUNTY.md \ BUGS.md \ CIPHERS.md \ CIPHERS-TLS12.md \ CMakeLists.txt \ CODE_OF_CONDUCT.md \ CODE_REVIEW.md \ CONTRIBUTE.md \ CURL-DISABLE.md \ CURLDOWN.md \ DEPRECATE.md \ DISTROS.md \ EARLY-RELEASE.md \ ECH.md \ EXPERIMENTAL.md \ FAQ \ FEATURES.md \ GOVERNANCE.md \ HELP-US.md \ HISTORY.md \ HSTS.md \ HTTP-COOKIES.md \ HTTP3.md \ HTTPSRR.md \ INFRASTRUCTURE.md \ INSTALL \ INSTALL-CMAKE.md \ INSTALL.md \ INTERNALS.md \ IPFS.md \ KNOWN_BUGS \ MAIL-ETIQUETTE.md \ MANUAL.md \ options-in-versions \ README.md \ RELEASE-PROCEDURE.md \ RUSTLS.md \ ROADMAP.md \ SECURITY-ADVISORY.md \ SPONSORS.md \ SSL-PROBLEMS.md \ SSLCERTS.md \ THANKS TODO \ TheArtOfHttpScripting.md \ URL-SYNTAX.md \ VERSIONS.md \ VULN-DISCLOSURE-POLICY.md CD2NROFF = $(top_srcdir)/scripts/cd2nroff $< >$@ CD2 = $(CD2_$(V)) CD2_0 = @echo " RENDER " $@; CD2_1 = CD2_ = $(CD2_0) SUFFIXES = .1 .md all: $(MK_CA_DOCS) $(CURLCONF_DOCS) $(TEST_DOCS) .md.1: $(CD2)$(CD2NROFF) curl-config.1: curl-config.md mk-ca-bundle.1: mk-ca-bundle.md wcurl.1: wcurl.md distclean: rm -f $(CLEANFILES) curl-8.14.1/docs/Makefile.in0000644000000000000000000007174515017756261013765 0ustar0000000000000000# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 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) 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. # # SPDX-License-Identifier: curl # ########################################################################### 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 = docs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \ $(top_srcdir)/m4/curl-bearssl.m4 \ $(top_srcdir)/m4/curl-compilers.m4 \ $(top_srcdir)/m4/curl-confopts.m4 \ $(top_srcdir)/m4/curl-functions.m4 \ $(top_srcdir)/m4/curl-gnutls.m4 \ $(top_srcdir)/m4/curl-mbedtls.m4 \ $(top_srcdir)/m4/curl-openssl.m4 \ $(top_srcdir)/m4/curl-override.m4 \ $(top_srcdir)/m4/curl-reentrant.m4 \ $(top_srcdir)/m4/curl-rustls.m4 \ $(top_srcdir)/m4/curl-schannel.m4 \ $(top_srcdir)/m4/curl-sectransp.m4 \ $(top_srcdir)/m4/curl-sysconfig.m4 \ $(top_srcdir)/m4/curl-wolfssl.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-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 $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/lib/curl_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = 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 = depcomp = am__maybe_remake_depfiles = 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 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; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" NROFF = nroff MANS = $(man_MANS) 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 \ distdir distdir-am 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)` am__DIST_COMMON = $(srcdir)/Makefile.in INSTALL README.md THANKS TODO DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 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" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APXS = @APXS@ AR = @AR@ AR_FLAGS = @AR_FLAGS@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLANK_AT_MAKETIME = @BLANK_AT_MAKETIME@ CADDY = @CADDY@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@ CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CURLVERSION = @CURLVERSION@ CURL_CA_BUNDLE = @CURL_CA_BUNDLE@ CURL_CA_EMBED = @CURL_CA_EMBED@ CURL_CFLAG_EXTRAS = @CURL_CFLAG_EXTRAS@ CURL_CPP = @CURL_CPP@ CURL_LIBCURL_VERSIONED_SYMBOLS_PREFIX = @CURL_LIBCURL_VERSIONED_SYMBOLS_PREFIX@ CURL_LIBCURL_VERSIONED_SYMBOLS_SONAME = @CURL_LIBCURL_VERSIONED_SYMBOLS_SONAME@ CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@ CYGPATH_W = @CYGPATH_W@ 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@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@ GCOV = @GCOV@ GREP = @GREP@ HAVE_LIBZ = @HAVE_LIBZ@ HTTPD = @HTTPD@ HTTPD_NGHTTPX = @HTTPD_NGHTTPX@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBCURL_PC_CFLAGS = @LIBCURL_PC_CFLAGS@ LIBCURL_PC_CFLAGS_PRIVATE = @LIBCURL_PC_CFLAGS_PRIVATE@ LIBCURL_PC_LDFLAGS_PRIVATE = @LIBCURL_PC_LDFLAGS_PRIVATE@ LIBCURL_PC_LIBS = @LIBCURL_PC_LIBS@ LIBCURL_PC_LIBS_PRIVATE = @LIBCURL_PC_LIBS_PRIVATE@ LIBCURL_PC_REQUIRES = @LIBCURL_PC_REQUIRES@ LIBCURL_PC_REQUIRES_PRIVATE = @LIBCURL_PC_REQUIRES_PRIVATE@ 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@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ 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@ PKGCONFIG = @PKGCONFIG@ RANLIB = @RANLIB@ RC = @RC@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SSL_BACKENDS = @SSL_BACKENDS@ STRIP = @STRIP@ SUPPORT_FEATURES = @SUPPORT_FEATURES@ SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@ TEST_NGHTTPX = @TEST_NGHTTPX@ VERSION = @VERSION@ VERSIONNUM = @VERSIONNUM@ VSFTPD = @VSFTPD@ 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@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign no-dependencies # if we disable man page building, ignore these @BUILD_DOCS_TRUE@MK_CA_DOCS = mk-ca-bundle.1 @BUILD_DOCS_TRUE@CURLCONF_DOCS = curl-config.1 @BUILD_DOCS_TRUE@TEST_DOCS = runtests.1 testcurl.1 @BUILD_DOCS_TRUE@man_MANS = curl-config.1 wcurl.1 CURLPAGES = curl-config.md mk-ca-bundle.md wcurl.md runtests.md testcurl.md SUBDIRS = . cmdline-opts libcurl DIST_SUBDIRS = $(SUBDIRS) examples @BUILD_DOCS_TRUE@CLEANFILES = $(MK_CA_DOCS) $(man_MANS) $(TEST_DOCS) TESTDOCS = \ tests/CI.md \ tests/FILEFORMAT.md \ tests/HTTP.md \ tests/TEST-SUITE.md INTERNALDOCS = \ internals/BUFQ.md \ internals/BUFREF.md \ internals/CHECKSRC.md \ internals/CLIENT-READERS.md \ internals/CLIENT-WRITERS.md \ internals/CODE_STYLE.md \ internals/CONNECTION-FILTERS.md \ internals/CURLX.md \ internals/DYNBUF.md \ internals/HASH.md \ internals/LLIST.md \ internals/MID.md \ internals/MQTT.md \ internals/MULTI-EV.md \ internals/NEW-PROTOCOL.md \ internals/PORTING.md \ internals/README.md \ internals/SPLAY.md \ internals/STRPARSE.md \ internals/TLS-SESSIONS.md \ internals/UINT_SETS.md \ internals/WEBSOCKET.md EXTRA_DIST = \ $(CURLPAGES) \ $(INTERNALDOCS) \ $(TESTDOCS) \ ALTSVC.md \ BINDINGS.md \ BUG-BOUNTY.md \ BUGS.md \ CIPHERS.md \ CIPHERS-TLS12.md \ CMakeLists.txt \ CODE_OF_CONDUCT.md \ CODE_REVIEW.md \ CONTRIBUTE.md \ CURL-DISABLE.md \ CURLDOWN.md \ DEPRECATE.md \ DISTROS.md \ EARLY-RELEASE.md \ ECH.md \ EXPERIMENTAL.md \ FAQ \ FEATURES.md \ GOVERNANCE.md \ HELP-US.md \ HISTORY.md \ HSTS.md \ HTTP-COOKIES.md \ HTTP3.md \ HTTPSRR.md \ INFRASTRUCTURE.md \ INSTALL \ INSTALL-CMAKE.md \ INSTALL.md \ INTERNALS.md \ IPFS.md \ KNOWN_BUGS \ MAIL-ETIQUETTE.md \ MANUAL.md \ options-in-versions \ README.md \ RELEASE-PROCEDURE.md \ RUSTLS.md \ ROADMAP.md \ SECURITY-ADVISORY.md \ SPONSORS.md \ SSL-PROBLEMS.md \ SSLCERTS.md \ THANKS TODO \ TheArtOfHttpScripting.md \ URL-SYNTAX.md \ VERSIONS.md \ VULN-DISCLOSURE-POLICY.md CD2NROFF = $(top_srcdir)/scripts/cd2nroff $< >$@ CD2 = $(CD2_$(V)) CD2_0 = @echo " RENDER " $@; CD2_1 = CD2_ = $(CD2_0) SUFFIXES = .1 .md all: all-recursive .SUFFIXES: .SUFFIXES: .1 .md $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign docs/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man1: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(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" 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 distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @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 check-am: all-am check: check-recursive all-am: Makefile $(MANS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(man1dir)"; 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 mostlyclean-am distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-man install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-man1 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 Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-man uninstall-man: uninstall-man1 .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man1 install-pdf install-pdf-am 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-man uninstall-man1 .PRECIOUS: Makefile all: $(MK_CA_DOCS) $(CURLCONF_DOCS) $(TEST_DOCS) .md.1: $(CD2)$(CD2NROFF) curl-config.1: curl-config.md mk-ca-bundle.1: mk-ca-bundle.md wcurl.1: wcurl.md distclean: rm -f $(CLEANFILES) # 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: curl-8.14.1/docs/README.md0000644000000000000000000000112115017756261013154 0ustar0000000000000000 ![curl logo](https://curl.se/logo/curl-logo.svg) # Documentation You find a mix of various documentation in this directory and subdirectories, using several different formats. Some of them are not ideal for reading directly in your browser. If you would rather see the rendered version of the documentation, check out the curl website's [documentation section](https://curl.se/docs/) for general curl stuff or the [libcurl section](https://curl.se/libcurl/) for libcurl related documentation. curl-8.14.1/docs/RELEASE-PROCEDURE.md0000644000000000000000000001071615017756261014637 0ustar0000000000000000 curl release procedure - how to do a release ============================================ in the source code repo ----------------------- - edit `RELEASE-NOTES` to be accurate - update `docs/THANKS` - make sure all relevant changes are committed on the master branch - tag the git repo in this style: `git tag -a curl-7_34_0`. -a annotates the tag and we use underscores instead of dots in the version number. Make sure the tag is GPG signed (using -s). - run `./scripts/dmaketgz 7.34.0` to build the release tarballs. - push the git commits and the new tag - GPG sign the 4 tarballs as `maketgz` suggests - upload the 8 resulting files to the primary download directory in the curl-www repo -------------------- - edit `Makefile` (version number and date), - edit `_newslog.html` (announce the new release) and - edit `_changes.html` (insert changes+bugfixes from RELEASE-NOTES) - commit all local changes - tag the repo with the same name as used for the source repo. - make sure all relevant changes are committed and pushed on the master branch (the website then updates its contents automatically) on GitHub --------- - edit the newly made release tag so that it is listed as the latest release inform ------ - send an email to curl-users, curl-announce and curl-library. Insert the RELEASE-NOTES into the mail. - if there are any advisories associated with the release, send each markdown file to the above lists as well as to `oss-security@lists.openwall.com` (unless the problem is unique to the non-open operating systems) celebrate --------- - suitable beverage intake is encouraged for the festivities curl release scheduling ======================= Release Cycle ------------- We normally do releases every 8 weeks on Wednesdays. If important problems arise, we can insert releases outside the schedule or we can move the release date. Each 8 week (56 days) release cycle is divided into three distinct periods: - During the first 10 calendar days after a release, we are in "cool down". We do not merge features but only bug-fixes. If a regression is reported, we might do a follow-up patch release. - During the following 3 weeks (21 days) there is a feature window: we allow new features and changes to curl and libcurl. If we accept any such changes, we bump the minor number used for the next release. - During the next 25 days we are in feature freeze. We do not merge any features or changes, and we only focus on fixing bugs and polishing things to make the pending release a solid one. If a future release date happens to end up on a "bad date", like in the middle of common public holidays or when the lead release manager is unavailable, the release date can be moved forwards or backwards a full week. This is then advertised well in advance. Release Candidates ------------------ We ship release candidate tarballs on three occasions in preparation for the pending release: - Release candidate one (**rc1**) ships the same Saturday the feature freeze starts. Twenty-five days before the release. Tagged like `rc-7_34_0-1`. - Release candidate two (**rc2**) ships nine days later, sixteen days before the release. On a Monday. Tagged like `rc-7_34_0-2`. - Release candidate tree (**rc3**) ships nine days later, seven days before the release. On a Wednesday. Tagged like `rc-7_34_0-3`. Release candidate tarballs are ephemeral and each such tarball is only kept around for a few weeks. They are provided on their dedicated webpage at: https://curl.se/rc/ The git tags for release candidate are temporary and remain set only for a limited period of time. **Do not use release candidates in production**. They are work in progress. Use them for testing and verification only. Use actual releases in production. Critical problems ----------------- We can break the release cycle and do a patch release at any point if a critical enough problem is reported. There is no exact definition of how to assess such criticality, but if an issue is highly disturbing or has a security impact on a large enough share of the user population it might qualify. If you think an issue qualifies, bring it to the curl-library mailing list and push for it. Coming dates ------------ Based on the description above, here are some planned future release dates: - May 28, 2025 - July 16, 2025 - September 10, 2025 - November 5, 2025 - January 7, 2026 - March 4, 2026 - April 29, 2026 curl-8.14.1/docs/RELEASE-TOOLS.md0000644000000000000000000000114415017756261014202 0ustar0000000000000000# Release tools used for curl 8.14.1 The following tools and their Debian package version numbers were used to produce this release tarball. - autoconf: 2.71-3 - automake: 1:1.16.5-1.3 - libtool: 2.4.7-7~deb12u1 - make: 4.3-4.1 - perl: 5.36.0-7+deb12u2 - git: 1:2.39.5-0+deb12u2 # Reproduce the tarball - Clone the repo and checkout the tag/commit: curl-8_14_1 - Install the same set of tools + versions as listed above ## Do a standard build - autoreconf -fi - ./configure [...] - make ## Generate the tarball with the same timestamp - export SOURCE_DATE_EPOCH=1749015729 - ./scripts/maketgz [version] curl-8.14.1/docs/ROADMAP.md0000644000000000000000000000060015017756261013303 0ustar0000000000000000 # curl the next few years - perhaps Roadmap of things Daniel Stenberg wants to work on next. It is intended to serve as a guideline for others for information, feedback and possible participation. ## WebSocket Agree that it is a good enough API and remove the EXPERIMENTAL label. ## curl-8.14.1/docs/RUSTLS.md0000644000000000000000000000564215017756261013267 0ustar0000000000000000 # Rustls [Rustls is a TLS backend written in Rust](https://docs.rs/rustls/). curl can be built to use it as an alternative to OpenSSL or other TLS backends. We use the [rustls-ffi C bindings](https://github.com/rustls/rustls-ffi/). This version of curl is compatible with `rustls-ffi` v0.15.x. ## Getting rustls-ffi To build `curl` with `rustls` support you need to have `rustls-ffi` available first. There are three options for this: 1. Install it from your package manager, if available. 2. Download pre-built binaries. 3. Build it from source. ### Installing rustls-ffi from a package manager See the [rustls-ffi README] for packaging status. Availability and details for installation differ between distributions. Once installed, build `curl` using `--with-rustls`. % git clone https://github.com/curl/curl % cd curl % autoreconf -fi % ./configure --with-rustls % make [rustls-ffi README]: https://github.com/rustls/rustls-ffi?tab=readme-ov-file ### Downloading pre-built rustls-ffi binaries Pre-built binaries are available on the [releases page] on GitHub for releases since 0.15.0. Download the appropriate archive for your platform and extract it to a directory of your choice (e.g. `${HOME}/rustls-ffi-built`). Once downloaded, build `curl` using `--with-rustls` and the path to the extracted binaries. % git clone https://github.com/curl/curl % cd curl % autoreconf -fi % ./configure --with-rustls=${HOME}/rustls-ffi-built % make [releases page]: https://github.com/rustls/rustls-ffi/releases ### Building rustls-ffi from source Building `rustls-ffi` from source requires both a rust compiler, and the [cargo-c] cargo plugin. To install a Rust compiler, use [rustup] or your package manager to install the **1.73+** or newer toolchain. To install `cargo-c`, use your [package manager][cargo-c pkg], download [a pre-built archive][cargo-c prebuilt], or build it from source with `cargo install cargo-c`. Next, check out, build, and install the appropriate version of `rustls-ffi` using `cargo`: % git clone https://github.com/rustls/rustls-ffi -b v0.15.0 % cd rustls-ffi % cargo capi install --release --prefix=${HOME}/rustls-ffi-built Now configure and build `curl` using `--with-rustls`: % git clone https://github.com/curl/curl % cd curl % autoreconf -fi % ./configure --with-rustls=${HOME}/rustls-ffi-built % make See the [rustls-ffi README][cryptography provider] for more information on cryptography providers and their build/platform requirements. [cargo-c]: https://github.com/lu-zero/cargo-c [rustup]: https://rustup.rs/ [cargo-c pkg]: https://github.com/lu-zero/cargo-c?tab=readme-ov-file#availability [cargo-c prebuilt]: https://github.com/lu-zero/cargo-c/releases [cryptography provider]: https://github.com/cpu/rustls-ffi?tab=readme-ov-file#cryptography-provider curl-8.14.1/docs/SECURITY-ADVISORY.md0000644000000000000000000001125015017756261014730 0ustar0000000000000000 # Anatomy of a curl security advisory As described in the [Security Process](https://curl.se/dev/secprocess.html) document, when a security vulnerability has been reported to the project and confirmed, we author an advisory document for the issue. It should ideally be written in cooperation with the reporter to make sure all the angles and details of the problem are gathered and described correctly and succinctly. ## New document A security advisory for curl is created in the `docs/` folder in the [curl-www](https://github.com/curl/curl-www) repository. It should be named `$CVEID.md` where `$CVEID` is the full CVE Id that has been registered for the flaw. Like `CVE-2016-0755`. The `.md` extension of course means that the document is written using markdown. The standard way to go about this is to first write the `VULNERABILITY` section for the document, so that there is description of the flaw available, then paste this description into the CVE Id request. ### `vuln.pm` The new issue should be entered at the top of the list in the file `vuln.pm` in the same directory. It holds a large array with all published curl vulnerabilities. All fields should be filled in accordingly, separated by a pipe character (`|`). The eleven fields for each CVE in `vuln.pm` are, in order: HTML page name, first vulnerable version, last vulnerable version, name of the issue, CVE Id, announce date (`YYYYMMDD`), report to the project date (`YYYYMMDD`), CWE, awarded reward amount (USD), area (single word), C-issue (`-` if not a C issue at all, `OVERFLOW` , `OVERREAD`, `DOUBLE_FREE`, `USE_AFTER_FREE`, `NULL_MISTAKE`, `UNINIT`) ### `Makefile` The new CVE webpage filename needs to be added in the `Makefile`'s `CVELIST` macro. When the markdown is in place and the `Makefile` and `vuln.pm` are updated, all other files and metadata for all curl advisories and versions get generated automatically using those files. ## Document format The easy way is to start with a recent previously published advisory and just blank out old texts and save it using a new name. Save the subtitles and general layout. Some details and metadata are extracted from this document so it is important to stick to the existing format. The first list must be the title of the issue. ### VULNERABILITY The first subtitle should be `VULNERABILITY`. That should then include a through and detailed description of the flaw. Including how it can be triggered and maybe something about what might happen if triggered or exploited. ### INFO The next section is `INFO` which adds meta data information about the flaw. It specifically mentions the official CVE Id for the issue and it must list the CWE Id, starting on its own line. We write CWE identifiers in advisories with the full (official) explanation on the right side of a colon. Like this: `CWE-305: Authentication Bypass by Primary Weakness` ### AFFECTED VERSIONS The third section first lists what versions that are affected, then adds clarity by stressing what versions that are *not* affected. A third line adds information about which specific git commit that introduced the vulnerability. The `Introduced-in` commit should be a full URL that displays the commit, but should work as a stand-alone commit hash if everything up to the last slash is cut out. An example using the correct syntax: ~~~ - Affected versions: curl 7.16.1 to and including 7.88.1 - Not affected versions: curl < 7.16.1 and curl >= 8.0.0 - Introduced-in: https://github.com/curl/curl/commit/2147284cad ~~~ ### THE SOLUTION This section describes and discusses the fix. The only mandatory information here is the link to the git commit that fixes the problem. The `Fixed-in` value should be a full URL that displays the commit, but should work as a stand-alone commit hash if everything up to the last slash is cut out. Example: `- Fixed-in: https://github.com/curl/curl/commit/af369db4d3833272b8ed` ### RECOMMENDATIONS This section lists the recommended actions for the users in a top to bottom priority order and should ideally contain three items but no less than two. The top two are almost always `upgrade curl to version XXX` and `apply the patch to your local version`. ### TIMELINE Detail when this report was received in the project. When package distributors were notified (via the distros mailing list or similar) When the advisory and fixed version are released. ### CREDITS Mention the reporter and patch author at least, then everyone else involved you think deserves a mention. If you want to mention more than one name, separate the names with comma (`,`). ~~~ - Reported-by: Full Name - Patched-by: Full Name ~~~ curl-8.14.1/docs/SPONSORS.md0000644000000000000000000000411315017756261013511 0ustar0000000000000000 # curl sponsors A sponsor is someone who donates money or resources to the curl project for no specific service in return. curl accepts donations via [GitHub sponsors](https://github.com/sponsors/curl) and [Open Collective](https://opencollective.com/curl). An even better way to contribute to the project might be to pay an engineer or two to spend work hours on curl related tasks. We promise to use donated funds for things and activities that we believe are beneficial for the project and its development. That includes but is not limited to bug-bounties, developer conferences, infrastructure, development, services and hardware. Recurring donations above a certain amount of money puts the sponsor at a named sponsor level: **Silver**, **Gold**, **Platinum** or **Top**. Sponsors on a named level can provide their logo image and preferred URL and get recognition on the curl website's [sponsor page](https://curl.se/sponsors.html), assuming they meet the project's standards and requirements. - **Silver Sponsor** at least 100 USD/month - **Gold Sponsor** at least 500 USD/month - **Platinum Sponsor** at least 1000 USD/month - **Top Sponsor** outstanding extra valuable help ## Sponsor requirements A named level sponsor is entitled a logo and link on the curl website assuming the company, brand and link are not deemed unsuitable. The curl team reserves the right to make that decision at its own discretion. Sponsors may be denied a website presence for example if involved with drugs, gambling, pornography, social media manipulation etc. ## Past Sponsors Sponsors that stop paying are considered *Past Sponsors* and are not displayed on the sponsor page anymore. We thank you for your contributions. ## Donations Please note that sponsorship and donations are exactly that: donations to the curl project. They are used to help and further the project as the project leadership deems best. No goods or services are expected or promised in return. Requests for refunds for such purposes are rejected. curl-8.14.1/docs/SSL-PROBLEMS.md0000644000000000000000000000755515017756261014122 0ustar0000000000000000 # SSL problems First, let's establish that we often refer to TLS and SSL interchangeably as SSL here. The current protocol is called TLS, it was called SSL a long time ago. There are several known reasons why a connection that involves SSL might fail. This is a document that attempts to detail the most common ones and how to mitigate them. ## CA certs CA certs are used to digitally verify the server's certificate. You need a "ca bundle" for this. See lots of more details on this in the `SSLCERTS` document. ## CA bundle missing intermediate certificates When using said CA bundle to verify a server cert, you may experience problems if your CA store does not contain the certificates for the intermediates if the server does not provide them. The TLS protocol mandates that the intermediate certificates are sent in the handshake, but as browsers have ways to survive or work around such omissions, missing intermediates in TLS handshakes still happen that browser users do not notice. Browsers work around this problem in two ways: they cache intermediate certificates from previous transfers and some implement the TLS "AIA" extension that lets the client explicitly download such certificates on demand. ## Protocol version Some broken servers fail to support the protocol negotiation properly that SSL servers are supposed to handle. This may cause the connection to fail completely. Sometimes you may need to explicitly select an SSL version to use when connecting to make the connection succeed. An additional complication can be that modern SSL libraries sometimes are built with support for older SSL and TLS versions disabled. All versions of SSL and the TLS versions before 1.2 are considered insecure and should be avoided. Use TLS 1.2 or later. ## Ciphers Clients give servers a list of ciphers to select from. If the list does not include any ciphers the server wants/can use, the connection handshake fails. curl has recently disabled the user of a whole bunch of seriously insecure ciphers from its default set (slightly depending on SSL backend in use). You may have to explicitly provide an alternative list of ciphers for curl to use to allow the server to use a weak cipher for you. Note that these weak ciphers are identified as flawed. For example, this includes symmetric ciphers with less than 128 bit keys and RC4. Schannel in Windows XP is not able to connect to servers that no longer support the legacy handshakes and algorithms used by those versions, so we advise against building curl to use Schannel on really old Windows versions. Reference: [Prohibiting RC4 Cipher Suites](https://datatracker.ietf.org/doc/html/draft-popov-tls-prohibiting-rc4-01) ## Allow BEAST BEAST is the name of a TLS 1.0 attack that surfaced 2011. When adding means to mitigate this attack, it turned out that some broken servers out there in the wild did not work properly with the BEAST mitigation in place. To make such broken servers work, the --ssl-allow-beast option was introduced. Exactly as it sounds, it re-introduces the BEAST vulnerability but on the other hand it allows curl to connect to that kind of strange servers. ## Disabling certificate revocation checks Some SSL backends may do certificate revocation checks (CRL, OCSP, etc) depending on the OS or build configuration. The --ssl-no-revoke option was introduced in 7.44.0 to disable revocation checking but currently is only supported for Schannel (the native Windows SSL library), with an exception in the case of Windows' Untrusted Publishers block list which it seems cannot be bypassed. This option may have broader support to accommodate other SSL backends in the future. References: https://curl.se/docs/ssl-compared.html curl-8.14.1/docs/SSLCERTS.md0000644000000000000000000001127315017756261013472 0ustar0000000000000000 # TLS Certificate Verification ## Native vs file based If curl was built with Schannel or Secure Transport support, then curl uses the system native CA store for verification. All other TLS libraries use a file based CA store by default. ## Verification Every trusted server certificate is digitally signed by a Certificate Authority, a CA. In your local CA store you have a collection of certificates from *trusted* certificate authorities that TLS clients like curl use to verify servers. curl does certificate verification by default. This is done by verifying the signature and making sure the certificate was crafted for the server name provided in the URL. If you communicate with HTTPS, FTPS or other TLS-using servers using certificates signed by a CA whose certificate is present in the store, you can be sure that the remote server really is the one it claims to be. If the remote server uses a self-signed certificate, if you do not install a CA cert store, if the server uses a certificate signed by a CA that is not included in the store you use or if the remote host is an impostor impersonating your favorite site, the certificate check fails and reports an error. If you think it wrongly failed the verification, consider one of the following sections. ### Skip verification Tell curl to *not* verify the peer with `-k`/`--insecure`. We **strongly** recommend this is avoided and that even if you end up doing this for experimentation or development, **never** skip verification in production. ### Use a custom CA store Get a CA certificate that can verify the remote server and use the proper option to point out this CA cert for verification when connecting - for this specific transfer only. With the curl command line tool: `--cacert [file]` If you use the curl command line tool without a native CA store, then you can specify your own CA cert file by setting the environment variable `CURL_CA_BUNDLE` to the path of your choice. `SSL_CERT_FILE` and `SSL_CERT_DIR` are also supported. If you are using the curl command line tool on Windows, curl searches for a CA cert file named `curl-ca-bundle.crt` in these directories and in this order: 1. application's directory 2. current working directory 3. Windows System directory (e.g. C:\Windows\System32) 4. Windows Directory (e.g. C:\Windows) 5. all directories along %PATH% curl 8.11.0 added a build-time option to disable this search behavior, and another option to restrict search to the application's directory. ### Use the native store In several environments, in particular on Windows, you can ask curl to use the system's native CA store when verifying the certificate. With the curl command line tool: `--ca-native`. ### Modify the CA store Add the CA cert for your server to the existing default CA certificate store. Usually you can figure out the path to the local CA store by looking at the verbose output that `curl -v` shows when you connect to an HTTPS site. ### Change curl's default CA store The default CA certificate store curl uses is set at build time. When you build curl you can point out your preferred path. ### Extract CA cert from a server curl -w %{certs} https://example.com > cacert.pem The certificate has `BEGIN CERTIFICATE` and `END CERTIFICATE` markers. ### Get the Mozilla CA store Download a version of the Firefox CA store converted to PEM format on the [CA Extract](https://curl.se/docs/caextract.html) page. It always features the latest Firefox bundle. ## Native CA store If curl was built with Schannel, Secure Transport or were instructed to use the native CA Store, then curl uses the certificates that are built into the OS. These are the same certificates that appear in the Internet Options control panel (under Windows) or Keychain Access application (under macOS). Any custom security rules for certificates are honored. Schannel runs CRL checks on certificates unless peer verification is disabled. Secure Transport on iOS runs OCSP checks on certificates unless peer verification is disabled. Secure Transport on macOS runs either OCSP or CRL checks on certificates if those features are enabled, and this behavior can be adjusted in the preferences of Keychain Access. ## HTTPS proxy curl can do HTTPS to the proxy separately from the connection to the server. This TLS connection is handled and verified separately from the server connection so instead of `--insecure` and `--cacert` to control the certificate verification, you use `--proxy-insecure` and `--proxy-cacert`. With these options, you make sure that the TLS connection and the trust of the proxy can be kept totally separate from the TLS connection to the server. curl-8.14.1/docs/THANKS0000644000000000000000000014552715017756261012633 0ustar0000000000000000 This project has been alive for many years. Countless people have provided feedback that have improved curl. Here follows a list of people that have contributed (a-z order). If you have contributed but are missing here, please let us know! 0xee on github 0xflotus on github 12932 on github 1337vt on github 1ocalhost on github 3dyd on github 3eka on github 5533asdg on github 8U61ife on github 9cel a1346054 on github Aaro Koskinen Aaron Oneal Aaron Orenstein Aaron Scarisbrick aasivov on github Abdullah Alyan Abhinav Singh Abhinav Singhal Abram Pousada accountantM on github AceCrow on github ad0p on github Adam Averay Adam Barclay Adam Brown Adam Coyne Adam D. Moss Adam Langley Adam Light Adam Marcionek Adam Piggott Adam Rosenfield Adam Sampson Adam Tkac ad-chaos on github Aditya Garg Ádler Jonas Gross Adnan Khan adnn on github Adrian Burcea Adriano Meirelles Adrian Peniak Adrian Schuur afrind on github Aftab Alam ahodesuka on github ajak in #curl Ajit Dhumale Akhilesh Nema Akhil Kedia Aki Koskinen Aki Sakurai Akos Pasztory Akshay Vernekar Alain Danteny Alain Miniussi Alan Coopersmith Alan Jenkins Alan Pinstein Albert Chin-A-Young Albert Choy Alberto Leiva Popper Albin Vass Alejandro Alvarez Ayllon Alejandro Colomar Alejandro R. Sedeño Aleksandar Milivojevic Aleksander Mazur Aleksandr Krotov Aleksey Tulinov alervd on github Ales Mlakar Ales Novak Alessandro Ghedini Alessandro Vesely Alex aka WindEagle Alexander Bartel Alexander Beedie Alexander Chuykov Alexander Dyagilev Alexander Elgert Alexander Jaeger Alexander Kanavin Alexander Klauer Alexander Kourakos Alexander Krasnostavsky Alexander Lazic Alexander Pepper Alexander Peslyak Alexander Shtuchkin Alexander Sinditskiy Alexander Traud Alexander V. Tikhonov Alexander Zhuravlev Alexandre Bury Alexandre Ferrieux Alexandre Pion Alex Baines Alex Bligh Alex Bozarth Alex Chan Alex Crichton Alexey Borzov Alexey Eremikhin Alexey Larikov Alexey Melnichuk Alexey Pesternikov Alexey Savchuk Alexey Simak Alexey Zakhlestin Alex Fishman Alex Gaynor Alex Grebenschikov Alex Gruz Alexis Carvalho Alexis La Goutte Alexis Savin Alexis Vachette Alex Kiernan Alex Klyubin Alex Konev Alex Malinovich Alex Mayorga Alex McLellan Alex Neblett Alex Nichols Alex Potapenko Alex Rousskov Alex Samorukov Alex Snast Alex Suykov Alex Vinnik Alex Xu Alfonso Martone Alfred Gebert Ali Khodkar ALittleDruid on github Ali Utku Selen Allen Pulsifer Alois Klink Alona Rossen Amaury Denoyelle amishmm on github Amit Katyal Ammar Faizi Amol Pattekar Amr Shahin Anatol Belski Anatoli Tubman Anders Bakken Anders Berg Anders Gustafsson Anders Havn Anderson Sasaki Anderson Toshiyuki Sasaki Anders Roxell Andi Jahja Andrea Pappacoda Andreas Damm Andreas Falkenhahn Andreas Farber Andreas Fischer Andreas Huebner Andreas Kiefer Andreas Kostyrka Andreas Malzahn Andreas Ntaflos Andreas Olsson Andreas Rieke Andreas Roth Andreas Schneider Andreas Schuldei Andreas Sommer Andreas Streichardt Andreas Westin Andreas Wurf Andre Guibert de Bruet Andre Heinecke Andrei Benea Andrei Bica Andrei Cipu Andrei Florea Andrei Karas Andrei Korshikov Andrei Kurushin Andrei Neculau Andrei Rybak Andrei Sedoi Andrei Valeriu BICA Andrei Virtosu Andrej E Baranov Andrés García Andrew Andrew Ayer Andrew Barnert Andrew Barnes Andrew Benham Andrew Biggs Andrew Bushnell Andrew de los Reyes Andrew Francis Andrew Fuller Andrew Ishchuk Andrew Kaster Andrew Kirillov Andrew Krieger Andrew Kurushin Andrew Lambert Andrew Moise Andrew Potter Andrew Robbins Andrew Wansink Andrey Alifanov Andrey Gursky Andrey Labunets Andrii Moiseiev Andrius Merkys Andy Alt Andy Cedilnik Andy Fiddaman Andy Pan Andy Reitz Andy Serpa Andy Stamp Andy Tsouladze Angus Mackay anio on github annalee anon00000000 on github anshnd on github Anssi Kolehmainen Antarpreet Singh Anthon Pang Anthony Avina Anthony Bryan Anthony G. Basile Anthony Hu Anthony Ramine Anthony Shaw Antoine Aubert Antoine Bollengier Antoine Calando Antoine du Hamel Antoine Pietri Antoine Pitrou Anton Bychkov Anton Gerasimov Antonio Larrosa Antoni Villalonga Anton Kalmykov Anton Malov Antony74 on github Anton Yabchinskiy Antti Hätälä antypanty on hackerone Anubhav Rai apparentorder on github April King Aquila Macedo arainchik on github Archangel_SDY on github Arian van Putten Arjan van de Ven Arkadiusz Miskiewicz arlt on github Armel Asselin Arnaud Compan Arnaud Ebalard Arnaud Rebillout Arne Soete Aron Bergman Aron Rotteveel Artak Galoyan Arthur Murray Artur Sinila Arve Knudsen Arvid Norberg arvids-kokins-bidstack on github asavah on github Asger Hautop Drewsen Ashish Shukla Ashwin Metpalli Askar Safin Ask Bjørn Hansen AtariDreams on github Ates Goral atjg on github Augustus Saunders Aurélien Pierre Austin Green Austin Moore av223119 on github Avery Fay awesomekosm on github awesomenode on github Axel Chong Axel Morawietz Axel Tillequin Ayesh Karunaratne Ayoub Boudhar Ayushman Singh Chauhan b9a1 on github Bachue Zhou Baitinq on github Balaji Parasuram Balaji Salunke Balaji S Rao Balakrishnan Balasubramanian Balazs Kovacsics balikalina on github Balint Szilakszi baranyaib90 on github Barry Abrahamson Barry Pollard Bart Whiteley Baruch Siach Bas Mevissen Bastian Krause Bastien Bouclet Basuke Suzuki Bas van Schaik baumanj on github bdry on github beckenc on github Ben Benau on github Ben Bodenmiller Ben Boeckel Benbuck Nason Ben Darnell Ben Fritz Ben Greear Benjamin Gerard Benjamin Gilbert Benjamin Johnson Benjamin Kircher Benjamin Loison Benjamin Riefenstahl Benjamin Ritcey Benjamin Sergeant Ben Kohler Ben Madsen Ben Noordhuis Benoit Neil Benoit Pierre Benoit Sigoure Ben Van Hof Ben Voris Ben Winslow Ben Zanin Bernard Leak Bernard Spil Bernat Mut Bernd Mueller Bernhard Iselborn Bernhard M. Wiedemann Bernhard Reutner-Fischer Bernhard Walle Bert Huijben Bertrand Demiddelaer Bertrand Simonnet beslick5 on github Bevan Weiss Bhanu Prakash Bill Doyle Bill Egert Bill Hoffman billionai on github Bill Middlecamp Bill Nagel Bill Pyne Billyzou0741326 on github Bin Lan Bin Meng Biswapriyo Nath Bjarni Ingi Gislason Bjoern Franke Bjoern Sikora Bjorn Augustsson Bjorn Reese Björn Stenberg black-desk on github Blaise Potard Blake Burkhart blankie bnfp on github bo0tzz on github Bo Anderson bobmitchell1956 on github Bob Relyea Bob Richmond Bob Schader Bodo Bergmann Bogdan Nicula boilingoden Boris Kuschel Boris Okunskiy Boris Rasin Boris Verkhovskiy Brad Burdick Brad Fitzpatrick Bradford Bruce Brad Forschinger Brad Harder Brad Hards Brad House Brad King Brad Spencer bramus on github Brandon Casey Brandon Dong Brandon Wang BratSinot on github Brendan Dolan-Gavitt Brendan Jurd Brendon Smith Brennan Kinney Brent Beardsley Brett Buddin Brian Akins Brian Bergeron Brian Carpenter Brian Chaplin Brian Childs Brian Chrisman Brian Chrzanowski Brian Clemens Brian Dessent Brian E. Gallew Brian Green Brian Inglis Brian J. Murrell Brian Lund brian m. carlson Brian Nixon Brian Prodoehl Brian R Duffy Brian Ulm Brock Noland Bruce Mitchener Bruce Stephens bruce.yoon BrumBrum on hackerone Bruno Baguette Bruno de Carvalho Bruno Grasselli Bruno Henrique Batista Cruz da Silva Bruno Thomsen Bru Rom Bryan Henderson Bryan Kemp bsammon on github bsergean on github bsr13 on hackerone bubbleguuum on github Bubu on github buzo-ffm on github bxac on github Bylon2 on github Byrial Jensen Cajus Pollmeier Caleb Raitto calvin2021y on github Calvin Buckley Calvin Ruocco Cameron Blomquist Cameron Cawley Cameron Kaiser Cameron MacMinn Cameron Will Camille Moncelier Caolan McNamara Cao ZhenXiang Captain Basil Carie Pointer Carlo Alberto Carlo Cabrera Carlo Cannas Carlo Marcelo Arenas Belón Carlos Henrique Lima Melara Carlos ORyan Carlo Teubner Carlo Wood Carl Zogheib Carsten Lange Casey Bodley Casey O'Donnell Catalin Patulea Catena cyber causal-agent on github cbartl on github cclauss on github Cédric Connes Cédric Deltheil Cering on github Cesar Eduardo Barros Ch40zz on github Chad Monroe Chandrakant Bagul Chara White Charles Cazabon Charles Kerr Charles Romestant Charlie C chemodax Chen Prog chensong1211 on github Cherish98 on github Chester Liu Chih-Chung Chang Chih-Hsuan Yen Chilledheart on github Chloe Kudryavtsev Chris Araman Chris "Bob Bob" Chris Carlmar Chris Combes Chris Conlon Chris Deidun Chris Faherty Chris Flerackers Chris Gaukroger Chris Maltby Chris Mumford Chris Paulson-Ellis Chris Roberts Chris Sauer Chris Smowton Chris Stubbs Chris Swan Chris Talbot Christian Fillion Christian Grothoff Christian Hägele Christian Heimes Christian Hesse Christian Heusel Christian Krause Christian Kurz Christian Robottom Reis Christian Schmitz Christian Stewart Christian Vogt Christian Weisgerber Christophe Demory Christophe Dervieux Christophe Legry Christopher Conroy Christopher Dannemiller Christopher Degawa Christopher Head Christopher Palow Christopher Reid Christopher R. Palmer Christopher Sauer Christopher Stone Christoph Jabs Christoph Krey Christoph M. Becker Christoph Reiter Chris Webb Chris Young chrysos349 on github Chungtsun Li Ciprian Badescu civodul on github Claes Jakobsson Clarence Gardner Claudio Neves claudiusaiz on github clbr on github Clemens Gruber Clément Notin Cliff Crosland Clifford Wolf Clint Clayton Cloudogu Siebels CMD cmfrolick on github codesniffer13 on github Cody Jones Cody Mack COFFEETALES on github coinhubs on github Colby Ranger Cole Helbling Colin Blair Colin Cross Colin Hogben Colin Leroy Colin Leroy-Mira Colin O'Dell Colin Watson Colman Mbuya Colm Buckley Colton Willey Constantine Sapuntzakis consulion on github coralw on github Corinna Brandt correctmost on github Cory Benfield Cory Nelson Costya Shulyupin Craig Andrews Craig A West Craig Davison Craig de Stigter Craig Markwardt crazydef on github Cris Bailiff Cristian Greco Cristian Morales Vega Cristian Rodríguez CueXXIII on github Curt Bogmine Cynthia Coan Cyril B Cyrill Osterwalder d4d on hackerone d912e3 on github daboul on github Dag Ekengren Dagfinn Ilmari Mannsåker Dagobert Michelsen Daiki Ueno Dair Grant Dambaev Alexander Damian Dixon Damien Adant Damien Vielpeau Damien Walsh Dan Becker Dan Cristian Dan Donahue Dan Fandrich Daniel at touchtunes Dániel Bakai Daniel Bankhead Daniel Black Daniel Carpenter Daniel Cater Daniel Egger Daniel Engberg Daniel Faust Daniel Fosco Daniel Gustafsson Daniel Hallberg Daniel Hwang Daniel Jeliński Daniel J. H. Daniel Johnson Daniel Kahn Gillmor Daniel Katz Daniel Krügler Daniel Kurečka Daniel Lee Hwang Daniel Lublin Daniel Marjamäki Daniel McCarney Daniel Melani Daniel Mentz Daniel Pouzzner Daniel Romero Daniel Schauenberg Daniel Seither Daniel Shahaf Daniel Silverstone Daniel Steinberg Daniel Stenberg Daniel Szmulewicz Daniel Theron Daniel Valenzuela Daniel Woelfel Dan Johnson Dan Kenigsberg Dan Locks Dan McDonald Dan McNulty Dan Nelson Dan Petitt Dan Rosser Dan Torop Dan Zitter Daphne Luong Darío Hereñú Dario Nieuwenhuis Dario Weißer Darren Banfi Darryl House Darshan Mody dasimx on github DasKutti on github Dave Cottlehuber Dave Dribin Dave Halbakken Dave Hamilton Dave May Dave Nicolson Dave Reisner Dave Thompson Dave Vasilevsky Davey Shafik David Bau David Benjamin David Binderman David Blaikie David Bohman David Byron David Carlier David Cohen David Cook David Demelier David Earl Davide Cassioli davidedec on github Davide Masserut David E. Narváez David Eriksson David Garske David Goerger David Houlder David Hu David Hull David James David J Meyer David Kalnischkies David Kierznowski David Kimdon David L. David Lang David LeBlanc David Lopes David Lord David McCreedy David McLaughlin David Odin David Phillips David Rosenstrauch David Ryskalczyk David Sanderson David Sardari David Schweikert David Shaw David Strauss David Suter David Tarendash David Thiel David Walser David Woodhouse David Wright David Yan Da-Yoon Chung dbrowndan on github dEajL3kA on github Deal(一线灵) dekerser on github deliciouslytyped on github delogicsreal on github Demi Marie Obenour denandz on github dengjfzh on github Dengminwen Denis Baručić Denis Chaplygin Denis Feklushkin Denis Goleshchikhin Denis Laxalde Denis Ollier Deniz Sökmen Dennis Clarke Dennis Felsing dependabot[bot] Derek Higgins Derek Huang Derzsi Dániel Desmond O. Chang destman on github Detlef Schmier Dexter Gerig dfdity on github D. Flinkmann Dheeraj Sangamkar Didier Brisebourg Diego Bes Diego Casorran Dietmar Hauser Dilyan Palauzov Dima Barsky Dima Pasechnik Dima Tisnek Dimitar Boevski Dimitre Dimitrov Dimitrios Apostolou Dimitrios Siganos Dimitris Sarris Dinar Diogo Teles Sant'Anna Dion Williams Dirk Eddelbuettel Dirk Feytons Dirk Hünniger Dirkjan Bussink Dirk Manske Dirk Rosenkranz Dirk Wetter Diven Qi divinity76 on github Divy Le Ray dkjjr89 on github dkwolfe4 on github Dmitri Shubin Dmitri Tikhonov Dmitriy Sergeyev dmitrmax on github Dmitry Atamanov Dmitry Bartsevich Dmitry Eremin-Solenikov Dmitry Falko Dmitry Karpov Dmitry Kostjuchenko Dmitry Kurochkin Dmitry Mikhirev Dmitry Popov Dmitry Rechkin Dmitry S. Baikov Dmitry Tretyakov Dmitry Wagin dnivras on github dogma Dolbneff A.V Domenico Andreoli Domen Kožar Dominick Meglio Dominik Hölzl Dominik Klemba Dominik Piątkowski Dominik Thalhammer Dominique Leuenberger Dongliang Mu Donguk Kim Don J Olmstead Dorian Craps Doron Behar Doug Kaufman Douglas Creager Douglas E. Wegscheid Douglas Kilpatrick Douglas Mencken Douglas R. Horner Douglas R. Reno Douglas Steinwand Doug Porter Dov Murik dpull on github Drake Arconis dtmsecurity on github Duane Cathey Duncan Mac-Vicar Prett Duncan Wilcox Dustin Boswell Dustin Howett Dusty Mabe Duy Phan Thanh Dwarakanath Yadavalli dwickr Dylam De La Torre Dylan Anthony Dylan Ellicott Dylan Salisbury eaglegai on github Early Ehlinger Earnestly on github Eason-Yu on github Ebe Janchivdorj ebejan on github Ebenezer Ikonne ed0d2b2ce19451f2 Eddie Lumpkin Edgaras Janušauskas Edin Kadribasic edmcln on github Edmond Yu Ed Morley Edoardo Lolletti Eduard Bloch Eduard Strehlau Edward Kimmel Edward Rudd Edward Sheldrake Edward Thomson Eelco Dolstra Eetu Ojanen eeverettrbx on github Egon Eckert Egor Pugin Ehren Bendler Eldar Zaitov elelel on github elephoenix on github Elia Tufarolo Eli Schwartz Elliot Killick Elliot Saba Elliott Balsley Ellis Pritchard Elmira A Semenova Elms Eloy Degen elsamuko on github elvinasp on github emanruse on github Emanuele Bovisio Emanuele Torre Emanuel Komínek Emil Engler Emiliano Ida Emilio Cobos Álvarez Emilio López Emil Lerner Emil Österlund Emil Romanus Emmanuel Tychon Enno Boland Enrico Scholz Enrik Berkhan enWILLYado on github epicmkirzinger on github eppesuig Eramoto Masaya Eric Cooper Eric Curtin Eric Gallager Eric Hu Eric Knibbe Erick Nuwendam Eric Landes Eric Lavigne Eric Lubin Eric Melville Eric Mertens Eric Murphy Eric Musser Eric Norris Érico Nogueira Érico Nogueira Rolim Eric Rautman Eric Rescorla Eric Ridge Eric Rosenquist Eric Sauvageau Eric S. Raymond Eric Thelin Eric Vergnaud Eric Vigeant Eric Wong Eric Wu Eric Young Erik Jacobsen Erik Janssen Erik Johansson Erik Minekus Erik Olsson Erik Schnetter Erik Stenlund Ernest Beinrohr Ernst Sjöstrand Erwan Legrand Erwin Authried Esdras de Morais da Silva Estanislau Augé-Pujadas Ethan Everett Ethan Glasser Camp Ethan Wilkes Etienne Simard Eugene Kotlyarov Evangelos Foutras Evan Jordan Even Rouault Evert Pot Evgeny Grin (Karlson2k) Evgeny Turnaev eXeC64 on github extrimexxx on github Eygene Ryabinkin Eylem Ugurel Fabian Fischer Fabian Frank Fabian Hiernaux Fabian Keil Fabian Ruff Fabian Vogt Fabian Yamaguchi Fabrice Fontaine Fabrizio Ammollo Fahim Chandurwala Faizur Rahman Faraz Fallahi farazrbx on github Farzin on github Fata Nugraha Fawad Mirza Fay Stegerman FC Stegerman fds242 on github Federico Bianchi Federico Pellegrin Fedor Karpelevitch Fedor Korotkov feelingseas on github FeignClaims on github Feist Josselin Felipe Gasper Felix Hädicke Felix Kaiser Felix von Leitner Felix Yan Feng Tu Fernando Muñoz Filip Lundgren Filip Salomonsson finkjsc on github Firefox OS Flameborn on github Flavio Medeiros Florian Eckert Florian Kohnhäuser Florian Pritz Florian Schoppmann Florian Van Heghe Florian Weimer Florin Petriuc Forrest Cahoon Francisco Moraes Francisco Munoz Francisco Olarte Francisco Sedano François Charlier François Michel Francois Petitjean François Rigault Francois Rivard Frank Denis Frank Gevaerts Frank Hempel Frank Keeney Frank McGeough Frank Meier Frank Ticheler Frank Van Uffelen František Kučera Frazer Smith Frederic Lepied Frederik B Frederik Wedel-Heinen Fred Machado Fred New Fred Noz Fredrik Thulin Fred Stluka FuccDucc on github Fujii Hironori fullincome on github fundawang on github fuzzard Gabe Gabriel Corona Gabriel Kuri Gabriel Marin Gabriel Simmer Gabriel Sjoberg Gaelan Steele Gaël Portay galen11 on github Gambit Communications Ganesh Kamath Ganesh Viswanathan gaoxingwang on github Garrett Holmstrom Garrett Squire Gary Maxwell Gaurav Malhotra Gautam Kachroo Gautam Mani Gavin Wong Gavrie Philipson Gaz Iqbal gclinch on github Gealber Morales Geeknik Labs Geoff Beier Georeth Zhou George Liu Georg Horn Georg Huettenegger Georg Lippitsch Georg Wicherski Gerd v. Egidy Gergely Nagy Gerhard Herre Gerome Fournier Gerrit Bruchhäuser Gerrit Renker Ghennadi Procopciuc Giancarlo Formicuccia Giaslas Georgios Gilad Gilbert Ramirez Jr. Gilles Blanc Gilles Vollant Gil Weber Giorgos Oikonomou Gisle Vanem git-bruh on github GitYuanQu on github Giuseppe Attardi Giuseppe D'Ambrosio Giuseppe Persico gkarracer on github Gleb Ivanovsky Glen A Johnson Jr. Glen Nakamura Glenn de boer Glenn Sheridan Glenn Strauss Glen Scott godmar on github Godwin Stewart Gökhan Şengün Gonçalo Carvalho Google Inc. Gordon Marler Gordon Parke Gorilla Maguila Goro FUJI Götz Babin-Ebell Gou Lingfeng Graham Campbell Graham Christensen Grant Erickson Grant Pannell graywolf on github Greg Hewgill Greg Morse Greg Onufer Gregor Jasny Gregory Jefferis Gregory Muchka Gregory Nicholls Gregory Panakkal Gregory Szorc Greg Pratt Greg Rowe Greg Zavertnik Griffin Downs Grigory Entin Grisha Levit Gruber Glass Guenole Bescon Guido Berhoerster Guilherme Puida Guillaume Algis Guillaume Arluison guitared on github Gunamoi Software Gunter Knauf guoxinvmware on github Gustaf Hui Gustavo Grieco Gusted Guy Poizat GwanYeong Kim Gwenole Beauchesne Gwen Shapira h1zzz on github H3RSKO on github Hagai Auro Haibo Huang Hakan Sunay Halil Hamish Mackenzie hammlee96 on github hamstergene on github Hang Kin Lau Hang Su Han Han Hannah Schierling Hannes Magnusson Hanno Böck Hanno Kranzhoff Han Qiao Hans-Christian Egtvedt Hans-Christian Noren Egtvedt Hans-Jurgen May Hans Steegers Hao Wu Hardeep Singh Haris Okanovic Harmen Stoppels Harold Stuart Harry Mallon Harry Sarson Harry Sintonen Harshal Pradhan Hauke Duden Haydar Alaidrus Hayden Roche Heikki Korpela Heinrich Ko Heinrich Schaefer Helge Klein Helmut Grohne Helmut K. C. Tessarek Helwing Lutz Hendrik Visage Henning Schild Henri Gomez Henrik Gaßmann Henrik Holst henrikjehgmti on github Henrik Storner Henry Ludemann Henry Roeland He Qin Hermes Zhang Herve Amblard HexTheDragon hgdagon on github Hide Ishikawa Hidemoto Nakada highmtworks on github hiimmat on github Himanshu Gupta Hind Montassif Hiroki Kurosawa Hirotaka Tagawa Ho-chi Chen Hoi-Ho Chan Hongfei Li Hongli Lai Hongyi Zhao Howard Blaise Howard Chu hsiao yi HsiehYuho on github htasta on github Hubert Kario Hugh Macdonald Hugo van Kemenade humbleacolyte Huzaifa Sidhpurwala huzunhao on github hydra3333 on github Hzhijun iammrtau on github Ian Blanes Ian D Allen Ian Fette Ian Ford Ian Gulliver Ian Lynagh Ian Spence Ian Turner Ian Wilkes iAroc on github IcedCoffeee on github iconoclasthero icy17 on github Ignacio Vazquez-Abrams Igor Franchuk Igor Khristophorov Igor Makarov Igor Novoseltsev Igor Polyakov Igor Todorovski Ihor Karpenko ihsinme on github Iida Yosiaki Ikko Ashimine Ilguiz Latypov Ilja van Sprundel Illarion Taev illusory-dream on github Ilmari Lauhakangas Ilya Kosarev imilli on github Immanuel Gregoire ImpatientHippo on github Inca R infinnovation-dev on github Ingmar Runge Ingo Ralf Blum Ingo Wilken Inho Oh Int64x86 on github Ionuț-Francisc Oancea Irfan Adilovic Ironbars13 on github Irving Wolfe Isaac Boukris Isaiah Norton Ishan SinghLevett İsmail Dönmez Ithubg on github Ivan Ivan Avdeev ivanfywang Ivan Kuchin IvanoG on github Ivan Tsybulin Ivo Bellin Salarin iz8mbw on github Jackarain on github JackBoosY on github Jack Boos Yu Jacky Lam Jack Zhang Jacob Barthelmeh Jacob Champion Jacob Hoffman-Andrews Jacob Mealey Jacob Meuser Jacob Moshenko Jacob Tolar Jactry Zeng Jad Chamcham Jaime Fullaondo Jake Yuesong Li jakirkham on github Jakob Hirsch Jakub Bochenski Jakub Jelen Jakub Wilk Jakub Zakrzewski James Abbatiello James Atwill James Brown James Bursa James Cheng James Clancy James Cone James Dury James Fuller James Gallagher James Griffiths James Housley James Keast James Knight James Le Cuirot James Lucas James MacMillan James Slaughter Jamie Lokier Jamie Newton Jamie Wilkinson Jan Alexander Steffens JanB on github Jan Chren janedenone on github Jan Ehrhardt Jan Engelhardt Jan Koen Annot janko-js on github Jan Kunder Jan Macku Jan Mazur Janne Blomqvist Janne Johansson János Fekete Jan-Piet Mens Jan Schaumann Jan Schmidt Jan Van Boghout Jan Venekamp Jan Verbeek Jared Jennings Jared Lundell Jari Aalto Jari Sundell jasal82 on github Jason Baietto Jason Glasgow Jason Hood Jason Juang Jason Lee Jason Liu Jason McDonald Jason S. Priebe Javier Barroso Javier Blazquez Javier G. Sogo Javier Navarro Javier Sixto Jay Austin Jay Dommaschk Jayesh A Shah Jay Guerette Jay Wu Jaz Fresh JazJas on github jbgoog on github J. Bromley Jean-Christophe Amiel Jean-Claude Chauve Jean Fabrice Jean-Francois Bertrand Jean-Francois Durand Jean Gressmann Jean Jacques Drouin Jean-Louis Lemaire Jean-Marc Ranger Jean-Noël Rouvignac Jean-Philippe Barrette-LaPierre Jean-Philippe Menil Jeff Connelly Jeff Hodges Jeff Johnson Jeff King Jeff Lawson Jeff Luszcz Jeff Mears Jeff Phillips Jeff Pohlmeyer Jeffrey Tolar Jeffrey Walton jeffrson on github Jeff Weber Jelle van der Waa Jenny Heino Jens Finkhaeuser Jens Rantil Jens Schleusener Jeremie Rapin Jeremy Drake Jeremy Falcon Jeremy Friesner Jeremy Huddleston Jeremy Lainé Jeremy Lin Jeremy Maitin-Shepard Jeremy Pearson Jérémy Rabasco Jérémy Rocher Jeremy Tan Jeremy Thibault Jeroen Koekkoek Jeroen Ooms Jérôme Leclercq Jerome Mao Jerome Muffat-Meridol Jerome Robert Jerome St-Louis Jerome Vouillon Jerry Krinock Jerry Wu Jes Badwal Jesper Jensen Jesse Chisholm Jesse Noller Jesse Tan Jess Lowe Jesus Malo Poyatos jethrogb on github jhoyla on github Jiacai Liu Jiang Wenjian Jiawen Geng Jie He Jiehong on github Jilayne Lovejoy Jim Beveridge Jim Drash Jim Freeman Jim Fuller Jim Hollinger Jim King Jim Meyering Jimmy Gaussen Jimmy Sjölund Jiří Bok Jiri Dvorak Jiri Hruska Jiri Jaburek Jiří Malák Jiri Stary Jishan Shaikh Jiwoo Park Jixinqi jkamp-aws on github jmdavitt on github jnbr on github Jocelyn Jaubert Jochem Broekhoff Jochen Sprickerhof Joe Birr-Pixton Joe Cise Joe Halpin JoelAtWisetech on github Joel Chen Joel Depooter Joel Jakobsson Joel Teichroeb Joe Malicki Joe Mason joey-l-us on github Jofell Gallardo Johan Anderson Johan Eliasson Johan Lantz Johann150 on github Johannes Bauer Johannes Ernst Johannes G. Kristinsson Johannes Lesr Johannes Schindelin Johan Nilsson Johann Sebastian Schicho Johan van Selst John A. Bristor John Bampton John Bradshaw John Butterfield John Coffey John Crow John David Anglin John DeHelian John Dennis John Dunn John E. Malmberg John Gardiner Myers John Hascall John Haugabook John Hawthorn John H. Ayad John Janssen John Joseph Bachir John Kelly John Kohl John Lask John Levon John Lightsey John Marino John-Mark Bell John Marshall John McGowan Johnny Luong John P. McCaskey John Porter John Schroeder John Sherrill John Simpson John Starks John Suprock John V. Chow John Walker John Wanghui John Weismiller John Wilkinson Jojojov on github Jonas Bülow Jonas Forsman Jonas Haag Jonas Minnberg Jonas Schnelli Jonas 'Sortie' Termansen Jonas Vautherin Jonatan Lander Jonatan Vela Jonathan Cardoso Machado Jonathan Hseu Jonathan Matthews Jonathan Moerman Jonathan Nieder Jonathan Perkin Jonathan Rosa Jonathan Watt Jonathan Wernberg Jon DeVree Jongki Suwandi Jon Grubbs Jon Johnson Jr Jon Nelson jonny112 on github Jon Rumsey Jon Sargeant Jon Seymour Jon Spencer Jon Torrey Jon Travis Jon Turner Jon Wilkes Joombalaya on github Joonas Kuorilehto Jordan Brown Jörg Mueller-Tolk Jörn Hartroth Jose Alf Josef Wolf José Joaquín Atria Jose Kahan Joseph Chen Joseph Tharayil Josh Bialkowski Josh Brobst joshhe on github Joshix-1 on github Josh Kapell Josh McCullough Josh Soref Joshua Kwan Joshua Root Joshua Swink Josie Huddleston Josip Medved Josue Andrade Gomes Jozef Kralik Juan Barreto Juan Cruz Viotti Juan F. Codagnone Juan Ignacio Hervás Juan RP Judson Bishop Juergen Hoetzel Juergen Wilke Jukka Pihl Julian K. Julian Montes Julian Noble Julian Ospald Julian Romero Nieto Julian Taylor Julian Z Julien Chaffraix Julien Nabet Julien Royer Juliusz Sosinowicz jungle-boogie on github Junho Choi Jun-ichiro itojun Hagino junsik on github Jun Tseng Jun-ya Kato Jürgen Gmach Jurij Smakov jurisuk on github Juro Bystricky JustAnotherArchivist on github justchen1369 on github Justin Clift Justin Ehlert Justin Fletcher Justin Karneges Justin Maggard Justin Steventon jveazey on github jvreelanda on github jvvprasad78 on github jzinn on github ka7 on github Kadambini Nema Kael1117 on github Kai Engert Kailun Qin Kai Noda Kai Pastor Kai Sommerfeld Kai-Uwe Rommel Kalle Vahlman kalvdans on github Kamil Dudka Kane York Kang-Jin Lee Kang Lin Kantanat Wannapaka Kareem Kari Pahula Karl Chen Karl Moerder Karol Pietrzak Kartatz on github Karthikdasari0423 on github Kartik Mahajan Kaspar Brand Katie Wang Katsuhiko YOSHIDA kayrus on github Kazuho Oku kchow-FTNT on github Keerthi Timmaraju Kees Cook Kees Dekker Keitagit-kun on github Keith MacDonald Keith McGuigan Keith Mok Kelly Kaoudis Ken Brown Ken Hirsch Kenneth Davidson Kenneth Myhra Kenny To Ken Rastatter Kent Boortz Kerem Kat Keshav Krity Kevin Adler Kevin Baughman Kevin Burke Kevin Daudt Kevin Fisk Kevin Ji Kevin Lussier Kevin R. Bulgrien Kevin Reed Kevin Roth Kevin Ryan Kevin Smith Kevin Sun Kevin Ushey Kev Jackson Kim Minjoong Kimmo Kinnunen Kim Rinnewitz Kim Vandry kirbyn17 on hackerone Kirill Efimov Kirill Marchuk kit-ty-kate on github Kjell Ericson Kjetil Jacobsen kkalganov on github Klaus Crusius Klaus Stein Klevtsov Vadim Kobi Gurkan Koen Dergent Koichi Shiraishi kokke on github Konstantin Isakov Konstantin Kushnir Konstantin Kuzov Konstantin Vlasov KotlinIsland on github kotoriのねこ koujaz on github kouzhudong on github Kovalkov Dmitrii kpcyrd on github kreshano on github Krishnendu Majumdar Kris Kennaway Krister Johansen Kristian Gunstone Kristian Köhntopp Kristian Mide Kristiyan Tsaklev Kristoffer Gleditsch kriztalz K. R. Walker Kuan-Wei Chiu Kunal Chandarana Kunal Ekawde Kurt Fankhauser Kushal Das Kvarec Lezki kwind on github Kwon-Young Choi Kyle Abramowitz kyled-dell on github Kyle Edwards Kyle J. McKay Kyle L. Huff Kyle Sallee Kyohei Kadota Kyselgov E.N l00p3r on Hackerone Lachlan O'Dea Ladar Levison Lance Ware Laramie Leavitt Larry Campbell Larry Fahnoe Larry Lin Larry Stefani Larry Stone Lars Buitinck Lars Francke Lars Gustafsson Lars J. Aas Lars Johannesen Lars Karlitski Lars Kellogg-Stedman Lars Nilsson Lars Torben Wilson Lau Laurent Bonnans Laurent Dufresne Laurențiu Nicola Laurent Rabret Laurie Clark-Michalek Lauri Kasanen Lawrence Gripper Lawrence Matthews Lawrence Wagerfield Leah Neukirchen Lealem Amedie Leandro Coutinho Lee Li LeeRiva Legoff Vincent Lehel Bernadt Leif W Leigh Purdie Leith Bade Lenaic Lefever Len Krause Len Marinaccio Lenny Rachitsky Leonardo Rosati Leonardo Taccari Leon Breedt Leo Neat Leon Timmermans Leon Winter Leszek Kubik lf- on github Liam Healy Liam Warfield LigH-de on github lijian996 on github Lijo Antony lilongyan-huawei on github Linas Vepstas Lindley French Ling Thio Linos Giannopoulos Lin Sun Linus Lewandowski Linus Nielsen Feltzing Linus Nordberg Lior Kaplan Lisa Xu Litter White Liviu Chircu Li Xinwei Liza Alenchery lizhuang0630 on github lkordos on github lllaffer on github Lloyd Fournier Lluís Batlle i Rossell locpyl-tidnyd on github Loganaden Velvindron Logan Buth Loic Dachary Loïc Yhuel lolbinarycat on github lomberd2 on github LoRd_MuldeR Loren Kirkby Lorenzo Miniero Louis Solofrizzo lRoccoon on github Luan Cestari Luật Nguyễn Luca Altea Luca Boccassi Luca Niccoli Lucas Adamski Lucas Clemente Vella Lucas Holt Lucas Nussbaum Lucas Pardue Lucas Servén Marín Lucas Severo Lucien Zürcher Ludek Finstrle Ludovico Cavedon Ludwig Nussel Lukas Ruzicka Lukas Tribus Lukáš Zaoral Lukasz Czekierda Łukasz Domeradzki lukaszgn on github Luke Amery Luke Call Luke Dashjr Luke Granger-Brown Luke Hamburg luminixinc on github Luo Jinghua Luong Dinh Dung Luz Paz lwthiker on github Lyman Epp Lyndon Hill Maarten Billemont Maciej Domanski Maciej Karpiuk Maciej Puzio Maciej W. Rozycki MacKenzie madblobfish on github MaeIsBad on github magisterquis on hackerone Mahmoud Samir Fayed Maksim Arhipov Maksim Kuzevanov Maksim Ściepanienka Maksim Stsepanenka Maks Naumov Maksymilian Arciemowicz Malik Idrees Hasan Khan Mamoru Tasaka Mamta Upadhyay Mandy Wu Manfred Schwarb Manuel Einfalt Manuel Massing Manuel Strehl Manuj Bhatia Marc Aldorasi Marc-Antoine Perennou Marc Boucher Marc Deslauriers Marc Doughty Marcel Hernandez Marcelo Echeverria Marcelo Juchem Marcel Raad Marcel Roelofs marc-groundctl on github Marc Hesse Marc Hörsken Marcin Adamski Marcin Gryszkalis Marcin Konicki Marcin Rataj Marc Kleine-Budde Marco Deckel Marco G. Salvagno Marco Kamner Marco Maggi Marcos Diazr marcos-ng on github Marc Renault Marc Schlatter Marcus Hoffmann Marcus Klein Marcus Müller Marcus Sundberg Marcus T Marcus Webster Margu Marian Klymov Marin Hannache Mario Schroeder Marius Albrecht Marius Kleidl Mark Brand Mark Butler Mark Davies Mark Dodgson Mark Gaiser Mark Hamilton Mark Huang Mark Incley Mark Itzcovitz Mark Karpeles Mark Lentczner Mark Nottingham Mark Phillips Mark Roszko Mark Salisbury Mark Seuffert Mark Sinkovics Mark Snelling Mark Swaanenburg Mark Tully Markus Duft Markus Elfring Markus Koetter Markus Moeller Markus Oberhumer Markus Olsson Markus Sommer Markus Westerlind Mark W. Eichin Mark Wotton Maros Priputen Marquis de Muesli marski on github Martijn Koster Martin Ågren Martin Ankerl Martin Bašti Martin C. Martin Martin D'Aloia Martin Dorey Martin Drasar Martin Dreher martinevsky Martin Frodl Martin Galvan Martin Gartner Martin Hager Martin Halle Martin Harrigan Martin Hedenfalk Martin Howarth Martin Jansen Martin Kammerhofer Martin Kepplinger Martin Lemke Martin Peck Martin Schmatz Martin Skinner Martin Staael Martin Storsjö Martin Strunz Martin V Martin Vejnár Martin Waleczek Martxel Marty Kuhrt Maruko Marwan Yassini Masaya Suzuki masbug on github Massimiliano Fantuzzi Massimiliano Ziccardi Massimo Callegari MasterInQuestion on github Master Inspire Mateusz Loskot Mathew Benson Mathias Axelsson Mathias Fuchs Mathias Gumz Mathieu Carbonneaux Mathieu Garaud Mathieu Legare Matias N. Goldberg Mats Lidell Mats Lindestam Matt Arsenault Matteo Baccan Matteo Bignotti Matteo Bignottignotti Matteo Rocco Matt Ford Matthew Blain Matthew Clarke Matthew Hall Matthew Kerwin Matthew Thompson Matthew Whitehead Matthias Bolte Matthias Gatto Matthias Naegler Matthieu Baerts Matt Holt Mattias Fornander Matt Jolly Matt Kraai Matt McClure Matt Veenstra Matt Witherspoon Matt Wixson Matus Uzak mauke Maurice Barnum Maurício Meneghini Fauth Mauricio Scheffer Mauro Iorio Mauro Rappa Max Dymond Max Eliaser Max Faxälv Maxim Dzhura Maxime Larocque Maxime Legros Maxim Ivanov Maxim Perenesenko Maxim Prohorov Max Katsev Max Kellermann Max Khon Max Mehl Max Peal Max Savenkov Max Zettlmeißl mbeifuss on github mccormickt12 on github Median Median Stride mehatzri on github Mehmet Bozkurt Mekonikum Melissa Mears Melroy van den Berg Mel Zuser Mert Yazıcıoğlu Mettgut Jamalla Micah Snyder Michael Afanasiev Michael Anti Michael Baentsch Michael Benedict Michael Brehm Michael Brown Michael Calmer Michael Cronenworth Michael Curtis Michael Day Michael Drake Michael Felt Michael Forney Michael Gmelin Michael Goffioul Michael Heimpold Michael Hordijk Michael Jahn Michael Jerris Michael Kalinin Michael Kaufmann Michael Kilburn Michael Kolechkin Michael König Michael Kujawa Michael Lee Michael Litwak Michael Maltese Michael Mealling Michael Mueller Michael Musset Michael O'Farrell Michael Olbrich Michael Osipov Michael Schmid Michael Schuster Michael Smith Michael Stapelberg Michael Steuer Michael Stillwell Michael Trebilcock Michael Vittiglio Michael Wallner Michał Antoniak Michal Bonino Michal Čaplygin Michał Fita Michał Górny Michał Janiszewski Michał Kowalczyk Michal Marek Michał Petryka Michał Piechowski Michal Rus Michal Trybus Michele Bini Michel Promonet Miguel Angel Miguel Diaz migueljcrum on github Mihai Ionescu Mikael Johansson Mikael Sennerholm Mikalai Ananenka Mike Bytnar Mike Crowe Mike Dobbs Mike Dowell Mike Duglas Mike Frysinger Mike Gelfand Mike Giancola Mike Hasselberg Mike Henshaw Mike Hommey Mike Mio Mike Norton Mike Power Mike Protts Mike Revi Mike Tzou Mikhail Kuznetsov Miklos Nemeth Milon Renatus Miloš Ljumović Mingliang Zhu Mingtao Yang Miroslav Franc Miroslav Spousta Mischa Salle Mitz Wark mkzero on github modbw on github Mohamed Daahir Mohamed Lrhazi Mohamed Osama Mohammad AlSaleh Mohammad Hasbini Mohammadreza Hendiani Mohammed Naser Mohammed Sadiq Mohun Biswas momala454 on github Momoka Yamamoto MonkeybreadSoftware on github Montg0mery on github moohoorama on github Morgan Willcock Moritz Moritz Buhl Moritz Knüsel Morten Minde Neergaard Mostyn Bramley-Moore Moti Avrahami MrdUkk on github MrSorcus on github M.R.T on github mschroeder-fzj on github Muhammad Herdiansyah Muhammad Hussein Ammari Muhammed Yavuz Nuzumlalı Murugan Balraj musvaage on github Muz Dima Myk Taylor n0name321 on github Nach M. S. Nagai H naost3rn on github Nao Yonashiro Natanael Copa Nate Prewitt Nathanael Nerode Nathan Coulter Nathaniel J. Smith Nathaniel R. Lewis Nathaniel Waisbrot Nathan Moinvaziri Nathan O'Sullivan na-trium-144 on github Naveen Chandran Naveen Noel Neal McBurnett Neal Poole nedres on github neex on github Nehal J Wani neheb on github Neil Bowers Neil Dunbar Neil Horman Neil Johari Neil Kolban Neil Spring NeimadTL nekopsykose on github Nemos2024 on github neutric on github nevv on HackerOne/curl newfunction newfunction on hackerone Niall McGee Niall O'Reilly nian6324 on github nianxuejie on github Nicholas Maniscalco Nicholas Nethercote Nick Banks Nick Coghlan Nick Draffen Nick Gimbrone Nick Humfrey Nicklas Avén Nick Miyake nick-telia on github Nick Zitzmann nico-abram on github Nico Baggus Nicolas Berloquin Nicolas Croiset Nicolas F. Nicolas François Nicolas George Nicolas Grekas Nicolas Guillier Nicolas Morey-Chaisemartin Nicolas Noben Nicolás Ojeda Bär Nicolás San Martín Nicolas Sterchele Nico Rieck Nic Roets Niels Martignène Niels van Tongeren Nigel Brittain Nikita Schmidt Nikita Taranov Nikitinskit Dmitriy Niklas Angebrand Niklas Hambüchen Nikolai Kondrashov Nikos Mavrogiannopoulos Nikos Tsipinakis Nils Goroll nimaje on github niner on github Ning Dong Niracler Li Niranjan Hasabnis Nir Soffer Nis Jorgensen nk Noam Moshe nobedee on github NobodyXu on github Nobuhiro Ban Nodak Sodak nono303 on github nopjmp on github Norbert Frese Norbert Kett norbertmm on github Norbert Novotny nosajsnikta on github NTMan on github Nuru on github Octavio Schroeder odek86 on github Ofer ohyeaah on github Okhin Vasilij Olaf Flebbe Olaf Hering Olaf Stüben Ola Mork Oleg Jukovec Oleg Pudeyev Oleguer Llopart Olen Andoni olesteban on github Oli Kingshott Oliver Chang Oliver Gondža Oliver Graute Oliver Kuckertz oliverpool on github Oliver Roberts Oliver Schindler Oliver Urbann Olivier Berger Olivier Bonaventure Olivier Brunel Omar Ramadan omau on github Ondřej Hlavatý Ondřej Koláček opensignature on github opensslonzos-github on github Ophir Lojkine Orange Tsai Oren Souroujon Oren Tirosh Orgad Shaneh Ori Avtalion orycho on github osabc on github Osaila on github Osama Albahrani Oscar Koeroo Oscar Norlander Oskar Liljeblad Oskar Sigvardsson Oumph on github Outvi V ovidiu-benea on github Ozan Cansel Pablo Busse Palo Markovic pandada8 on github Paolo Mossino Paolo Piacentini Paras Sethia parazyd on github Pascal Gaudette Pascal Terjan Pasha Kuznetsov Pasi Karkkainen patelvivekv1993 on github patnyb on github Pat Ray Patrice Guerin Patricia Muscalu Patrick Bihan-Faou Patrick Dawson Patrick McManus Patrick Monnerat Patrick Rapin Patrick Schlangen Patrick Scott Patrick Smith Patrick Steinhardt Patrick Watson Patrik Thunstrom Pau Garcia i Quiles Paul B. Omta Paul Donohue Paul Dreik Paul Gilmartin Paul Groke Paul Harrington Paul Harris Paul Hoffman Paul Howarth Paul Johnson Paul Joyce Paul Marks Paul Marquis Paul Moore Paul Nolan Paul Oliver Paulo Roberto Tomasi Paul Querna Paul Saab Paul Seligman Paul Vixie Paul Wise Pavel Cenek Pavel Gushchin Pavel Kalyugin Pavel Kropachev Pavel Löbl Pavel Mayorov Pavel Orehov Pavel Pavlov Pavel Raiskup Pavel Rochnyak Pavel Volgarev Pavol Markovic Pawel A. Gajda Pawel Kierski Paweł Kowalski Paweł Wegner Paweł Witas PBudmark on github Pedro Henrique Pedro Larroy Pedro Monreal Pedro Neves pendrek at hackerone Peng Li Peng-Yu Chen Per Jensen Per Lundberg Per Malmberg Per Nilsson Pete Cordell Pete Lomax Peter Bray Peter Forret Peter Frühberger Peter Gal Peter Goodman Peter Heuchert Peter Hjalmarsson Pēteris Caune Peteris Krumins Peter Kokot Peter Körner Peter Korsgaard Peter Krefting Peter Lamare Peter Lamberg Peter Laser Peter Marko Peter O'Gorman Peter Pentchev Peter Piekarski Peter Silva Peter Simonyi Peter Su Peter Sumatra Peter Sylvester Peter Todd Peter Varga Peter Verhas Peter Wang Peter Wu Peter Wullinger Petr Bahula Petr Novak Petr Pisar Petr Štetiar Petr Voytsik Phil Blundell Phil Crump Phil E. Taylor Philip Chan Philip Craig Philip Gladstone Philip Heiduck Philip Langdale Philippe Antoine Philippe Antoine on HackerOne Philippe Hameau Philippe Marguinaud Philipp Engel Philippe Raoult Philippe Vaucher Philipp Klaus Krause Philip Prindeville Philipp Waehnert Philip Sanetra Phil Karn Phil Lisiecki Phil Pellouchoud Pierre Pierre Brico Pierre Chapuis Pierre-Etienne Meunier Pierre Joye Pierre Yager Pierre Ynard Pierre-Yves Bigourdan Pierrick Charron Piotr Dobrogost Piotr Komborski PleaseJustDont Po-Chuan Hsieh Pontakorn Prasertsuk Pontus Lundkvist Pooyan McSporran Poul T Lomholt Pramod Sharma Prash Dush Praveen Pvs Prithvi MK privetryan on github Priyanka Shah ProceduralMan on github promptfuzz_ on hackerone Pronyushkin Petr prpr19xx on github P R Schaffner Przemysław Tomaszewski pszemus on github pszlazak on github puckipedia on github Puneet Pawaia qhill qhill on github qiandu2006 on github Qriist on github Quagmire Quanah Gibson-Mount Quentin Balland Quinn Slack Radek Brich Radek Zajic Radoslav Georgiev Radu Hociung Radu Simionescu Rafael Antonio Rafaël Carré Rafael Sagula Rafał Mikrut Rafa Muyo Rafayel Mkrtchyan Rahul Krishna M Rainer Canavan Rainer Jung Rainer Koenig Rainer Müller RainRat Raito Bezarius Rajesh Naganathan Rajkumar Mandal Ralf A. Timmermann ralfjunker on github Ralf S. Engelschall Ralph Beckmann Ralph Langendam Ralph Mitchell Ralph Sennhauser Ramiro Garcia Ram Krushna Mishra rampageX on github ramsay-jones on github RanBarLavie on github Randall S. Becker Randolf J Randy Armstrong Randy McMurchy Ran Mozes Raphael Gozzo r-a-sattarov on github Rasmus Melchior Jacobsen Rasmus Thomsen Raul Onitza-Klugman Ravi Pratap Ray Dassen Ray Pekowski Ray Satiro Razvan Cojocaru Razvan Pricope rcombs on github R. Dennis Steed Red Hat Product Security Reed Loden Reinhard Max Reinout van Schouwen RekGRpth on github Remco van Hooff Remi Gacogne Remo E Rémy Léone Renato Botelho Renaud Allard Renaud Chaillat Renaud Duhaut Renaud Guillard Renaud Lehoux Rene Bernhardt Rene Rebe renovate[bot] renovate[bot] Reuven Wachtfogel RevaliQaQ on github Reza Arbab Rianov Viacheslav riastradh on github Ricardo Cadime Ricardo Gomes Ricardo Martins Ricardo M. Correia Richard Adams Richard Alcock Richard Archer Richard Atterer Richard Bowker Richard Bramante Richard Clayton Richard Cooper Richard Gorton Richard Gray Richard Hosking Richard Hsu Richard Levitte Richard Marion Richard Michael Richard Moore Richard Prescott Richard Silverman Richard van den Berg Richard Whitehouse Richard W.M. Jones Rich Burridge Rich FitzJohn Rich Gray Rich Mirch Rich Rauenzahn Rich Salz Rich Turner Richy Kim Rici Lake Rickard Hallerbäck Rick Deist Ricki Hirner Rick Jones Rick Lane Rick Richardson Rick Welykochy Ricky Leverence Ricky-Tigg on github RiderALT on github Rider Linden Rikard Falkeborn rilysh Rinku Das rl1987 on github rmg-x on github Rob Boeckermann RobBotic1 on github Robby Simpson Rob Cotrone Rob Crittenden Rob Davies Rob de Wit Robert A. Monat Robert B. Harris Robert Brose Robert Charles Muir Robert Dunaj Robert D. Young Robert Foreman Robert Iakobashvili Robert Kolcun Robert Linden Robert Maynard Robert Moreton Robert Olson Robert Prag Robert Ronto Robert Schumann Robert Simpson Robert Southee Robert Weaver Robert Wruck Robin A. Meade Robin Cornelius Robin Douine Robin Johnson Robin Kay Robin Marx Rob Jones Rob Sanders Robson Braga Araujo Rob Stanzel Rob Ward Rodger Combs Rodney Simmons Rodric Glaser Rodrigo Silva Rod Widdowson Roger Leigh Roger Orr Roger Young Roland Blom Roland Hieber Roland Krikava Roland Zimmermann Rolf Eike Beer Rolland Dudemaine Romain Coltel Romain Fliedel Romain Geissler romamik om github Roman Koifman Roman Mamedov Roman Zharkov Romulo A. Ceccon Ronald Crane Ronan Pigott Ron Eldor Ronnie Mose Ron Parker Ron Zapp Rosen Penev Rosimildo da Silva Ross Burton roughtex on github Roy Bellingan Roy Li Roy Shan RubisetCie on github Rudi Heitbaum Rui LIU Rui Pinheiro Rune Kleveland Ruslan Baratov Ruslan Gazizov Rutger Broekhoff Rutger Hofman Ruurd Beerstra rwmjones on github Ryan Beck-Buysse Ryan Braud ryancaicse on github Ryan Carsten Schmidt Ryan Chan Ryan Mast Ryan Nelson Ryan Schmidt Ryan Scott Ryan Sleevi Ryan Winograd Ryuichi KAWAMATA rzrymiak on github s0urc3_ on hackerone saimen Sai Ram Kunala Salah-Eddin Shaban Saleem Abdulrasool SaltyMilk Salvador Dávila Salvatore Sorrentino Samanta Navarro Sam Deane Sam Hurst Sam James Sam Jessup Sampo Kellomaki Sam Roth Sam Schanken Samuel Chiang Samuel Díaz García Samuel Dionne-Riel Samuel Henrique Samuel Listopad Samuel Marks Samuel Surtees Samuel Thibault Samuel Tranchet SandakovMM on github Sander Gates Sandor Feldi Sandro Jaeckel Sanjay Pujare Santhana Todatry Santino Keupp Saqib Ali Sara Golemon Sarah Gooding Saran Neti Sascha Swiercy Sascha Zengler Satadru Pramanik Satana de Sant'Ana Saul good saurabhsingh-dev on github Saurav Babu sayrer on github sbernatsky on github SBKarr on github Scarlett McAllister Scott Bailey Scott Barrett Scott Cantor Scott Davis Scott McCreary Scott Mutter Scott Talbert sd0 on hackerone Sean Boudreau Sean Burford Sean MacLennan Sean McArthur Sean Miller Sean Molenaar Sebastiaan van Erk Sebastian Andersson Sebastian Haglund Sebastian Mundry Sebastian Neubauer Sebastian Pohlschmidt Sebastian Rasmussen Sebastian Sterk Sebastian Walz Sébastien Helleu Sébastien Willemijns selmelc on hackerone SendSonS on github Senthil Raja Velu Sergei Kuzmin Sergei Nikulov Sergey Sergey Alirzaev Sergey Bronnikov Sergey Fionov Sergey Markelov Sergey Ogryzkov Sergey Ryabinin Sergey Tatarincev Sergii Kavunenko Sergii Pylypenko Sergio Ballestrero Sergio Barresi Sergio Borghese Sergio Durigan Junior Sergio-IME on github Sergio Mijatovic sergio-nsk on github Serj Kalichev Sertonix SerusDev on github Seshubabu Pasam Seth Mos Sevan Janiyan sfan5 on github Sgharat on github Shachaf Ben-Kiki ShadowZzj on github Shailesh Kapse Shankar Jadhavar Shao Shuchao Sharad Gupta Shard Sharon Brizinov Shaun Jackman Shaun Mirani Shawn Landden Shawn Poulson Sh Diao Sheshadri.V Shikha Sharma Shine Fan Shiraz Kanga shithappens2016 on github Shlomi Fish Shmulik Regev Shohei Maeda Siddhartha Prakash Jain siddharthchhabrap on github Sidney San Martín Siegfried Gyuricsko silveja1 on github Simon Berger Simon Chalifoux Simon Dick Simon H. Simon Josefsson Simon K Simon Legner Simon Liu Simon Warta simplerobot on github Sinkevich Artem Siva Sivaraman Slaven Rezić SLDiggie on github Smackd0wn on github S. Moonesamy smuellerDD on github sn on hackerone sofaboss on github Sohom Datta Somnath Kundu Song Ma Sonia Subramanian Sören Tempel southernedge on github Spacen Jasset Spezifant on github Spiridonoff A.V Spoon Man Spork Schivago ssdbest on github sspiri on github sstruchtrup on github Stadler Stephan Stan Hu Stanislav Ivochkin Stanislav Lange Stanislav Zidek Stanley Wucw Stan van de Burgt Stathis Kapnidis Stav Nir steelman on github Stefan Agner Stefan Bühler Stefan Eissing Stefan Esser Stefan Grether Stefan Huber Stefan Kanthak Stefan Karpinski Stefan Krause Štefan Kremeň Stefan Neis Stefano Simonelli Stefan Strogin Stefan Talpalaru Stefan Teleman Stefan Tomanek Stefan Ulrich Stefan Yohansson Steffen Kieß Steinar H. Gunderson steini2000 on github Stepan Broz Stepan Efremov Stephan Bergmann Stephane Pellegrino Stephan Guilloux Stephan Lagerholm Stephan Mühlstrasser Stephan Szabo Stephen Boost Stephen Brokenshire Stephen Collyer Stephen Farrell Stephen Kick Stephen M. Coakley Stephen More Stephen Toub Sterling Hughes Steve Green Steve Havelka Steve Herrell Steve Holme Steve H Truong Steve Lhomme Steve Little Steve Marx Steven Allen Steven Bazyl Steven G. Johnson Steven Gu Steven M. Schweda stevenpackardblp on github Steven Parkes Steven Penny Steve Oliphant Steve Roskowski Steve Walch Stewart Gebbie Stian Soiland-Reyes Stoned Elipot stootill on github Stuart Henderson Sukanya Hanumanthu SumatraPeter on github Sune Ahlgren Sunny Bean Sunny Purushe SuperIlu on github SuperStormer on github Sven Anders Sven Blumenstein Sven Neuhaus Sven Wegener Svyatoslav Mishyn swalkaus at yahoo.com sylgal on github Sylvestre Ledru Symeon Paraschoudis T200proX7 on github Tadej Vengust Tae Hyoung Ahn Taiyu Len Tal Regev Tamás Bálint Misius Tamir Duberstein Taneli Vähäkangas Tanguy Fautre Taras Kushnir tarek112 on github Tatsuhiko Miyagawa Tatsuhiro Tsujikawa tawmoto on github T. Bharath tbugfinder on github Ted Lyngmo Teemu Yli-Elsila Teh Kok How Temprimus Terence Eden Terri Oda Terry Wu thanhchungbtc on github TheAssassin on github The Infinnovation team TheKnarf on github Theo Theodore Dubois therealhirudo on github Thiago Suchorski thisisgk on github tholin on github Thomas Thomas1664 on github Thomas Bouzerar Thomas Braun Thomas Danielsson Thomas Ferguson Thomas Gamper Thomas Glanzmann Thomas Guillem Thomas J. Moore Thomas Klausner Thomas Lopatic Thomas L. Shinnick Thomas M. DuBuisson Thomas Petazzoni Thomas Pyle Thomas Ruecker Thomas Schwinge Thomas Taylor Thomas Tonino Thomas van Hesteren Thomas Vegas Thomas Weißschuh Thorsten Klein Thorsten Schöning Tianyi Song Tiit Pikma Till Maas Till Wegmüller Tim Ansell Tim Baker Tim Bartley Tim Chen Tim Costello Tim Harder Tim Heckman Tim Hill Tim Mcdonough Timmy Schierling Tim Newsome Timo Lange Timo Sirainen Timotej Lazar Timothe Litt Timothy Gu Timothy Polich Timo Tijhof Tim Rühsen Tim Sedlmeyer Tim Sneddon Tim Stack Tim Starling Tim Tassonis Timur Artikov Tim Verhoeven Tim Yuer Tinus van den Berg tinyboxvk tiymat TJ Saunders Tk Xiong tkzv on github tlahn on github tmkk on github Tobias Blomberg Tobias Bora Tobias Gabriel Tobias Hieta Tobias Hintze Tobias Lindgren Tobias Markus Tobias Nießen Tobias Nygren Tobias Nyholm Tobias Rundström Tobias Schaefer Tobias Stoeckmann Tobias Wendorff Toby Peterson Todd A Ouska Todd Kaufmann Todd Kulesza Todd Short Todd Vierling Tomas Berger Tomas Hoger Tomas Jakobsson Tomas Mlcoch Tomas Mraz Tomas Pospisek Tomas Szepe Tomas Tomecek Tomas Volf Tomasz Kojm Tomasz Lacki Tom Benoist Tom Donovan Tom Eccles Tom G. Christensen Tom Grace Tom Greenslade Tom Lee Tom Mattison Tommie Gannert tommink[at]post.pl Tom Moers Tom Mueller Tommy Chiang Tommy Odom Tommy Petty Tommy Tam Tom Regner Tom Seddon Tom Sparrow Tom van der Woerdt Tom Wright tomy2105 on github Tom Zerucha Toni Moreno Ton Voon Tony Kelman tonystz on github Toon Claes Toon Verwaest Tor Arntsen Torben Dannhauer Torben Dury Török Edwin Torsten Foertsch Toshio Kuratomi Toshiyuki Maezawa tpaukrt on github Traian Nicolescu Trail of Bits tranzystorekk on github Travis Burtrum Travis Lane Travis Obenhaus Trivikram Kamat Troels Walsted Hansen Troy Engel trrui-huawei Trumeet on github Trzik on github Tseng Jun Tuomas Siipola Tuomo Rinne Tupone Alfredo Turiiya T. Yamada Tyler Hall u20221022 on github Ulf Härnhammar Ulf Samuelsson Ulrich Doehner Ulrich Telle Ulrich Zadow UnicornZhang on github updatede on github UrsusArctos on github User Sg ustcqidi on github Vadim Grinshpun Valentin David Valentín Gutiérrez Valentin Richter Valentyn Korniienko Valerii Zapodovnikov vanillajonathan on github Varnavas Papaioannou Vasiliy Faronov Vasiliy Ulyanov Vasily Lobaskin Vasy Okhin Venkat Akella Venkataramana Mokkapati Venkat Krishna R Vicente Garcia Victor Kislov Victor Magierski Victor Snezhko VictorVG on github Victor Vieux Vijay Panghal Vikram Saxena Viktor Petersson Viktor Szakats Vilhelm Prytz Ville Skyttä Vilmos Nebehaj Vincas Razma Vincent Bronner Vincent Grande Vincent Le Normand Vincent Penquerc'h Vincent Sanders Vincent Torri violetlige on github vitaha85 on github Vitaly Varyvdin Vítor Galvão vl409 on github Vlad Grachov Vladimir Grishchenko Vladimir Kotal Vladimir Lazarenko Vladimir Panteleev Vladimir Varlamov Vladislavs Sokurenko Vlad Ureche Vlastimil Ovčáčík vlkl-sap on github vlubart on github Vojtech Janota Vojtěch Král Vojtech Minarik Volker Schmid Vollstrecker on github Vsevolod Novikov vshmuk on hackerone vulnerabilityspotter on hackerone Vulpes Vulpes vuonganh1993 on github vvb2060 on github Vyron Tsingaras w0x42 on hackerone Waldek Kozba Walter J. Mack wangzhikun Ward Willats Warren Menzer Wayne Haigh Wei Chong Tan Wenchao Li Weng Xuetian Wenxiang Qian Werner Koch Werner Stolz Wes Hinsley wesinator on github Wesley Laxton Wesley Miaw Wez Furlong Wham Bang Wilfredo Sanchez Wilhelm von Thiele Will Dietz Willem Hoek Willem Sparreboom William Ahern William A. Rowe Jr William Desportes William Tang Will Roberts Winni Neessen W. Mark Kubacki wmsch on github wncboy on github Wojciech Zwiefka wolfsage on hackerone Wolf Vollprecht Wouter Van Rooy Wu Yongzheng Wu Zheng wxiaoguang on github Wyatt O'Day Wyatt OʼDay x1sc0 on github x2018 on github Xavier Bouchoux XhmikosR on github XhstormR on github xiadnoring on github Xiangbin Li xianghongai on github Xiang Xiao xiaofeng Xiaoke Wang Xiaoyin Liu Xì Gà Xi Ruoyao XmiliaH on github xnynx on github xtonik on github xwxbug on github x-xiang on github XYenon Yaakov Selkowitz Yadhu Krishna M Yair Lenga Yang Tse Yaobin Wen Yarram Sunil Yasuharu Yamada Yasuhiro Matsumoto Yechiel Kalmenson Yedaya Katsman Yehezkel Horowitz Yehoshua Hershberg ygthien on github Yifei Kong Yihang Zhou Yi Huang Yiming Jing Yingwei Liu yiyuaner on github Ymir1711 on github Yonggang Luo Yongkang Huang Yoshimasa Ohno Younes El-karama youngchopin on github Yousuke Kimoto Yukihiro Kawada Yun SangHo Yurii Rashkovskii Yuri Slobodyanyuk Yuriy Chernyshov Yuriy Sosov yushicheng7788 on github Yusuke Nakamura Yu Xin Yuyi Wang Yves Arrouye Yves Lejeune YX Hao z2_ Zachary Seguin Zdenek Pavlas Zekun Ni zelinchen on github zengwei zengwei2000 Zenju on github Zero King Zespre Schmidt zhanghu on xiaomi Zhang Wen Zhang Xiuhua Zhaoming Luo Zhaoyang Wu Zhao Yisha zhengqwe on github Zhibiao Wu zhihaoy on github Zhouyihai Ding ZimCodes on github zjyhjqs zloi-user on github zmcx16 on github Zmey Petroff zopsicle on github Zvi Har'El zzq1015 on github Борис Верховский Коваленко Анатолий Викторович наб Никита Дорохин ウさん 不确定 加藤郁之 南宫雪珊 左潇峰 李四 梦终无痕 積丹尼 Dan Jacobson 罗朝辉 curl-8.14.1/docs/TODO0000644000000000000000000014166015017756261012402 0ustar0000000000000000 _ _ ____ _ ___| | | | _ \| | / __| | | | |_) | | | (__| |_| | _ <| |___ \___|\___/|_| \_\_____| Things that could be nice to do in the future Things to do in project curl. Please tell us what you think, contribute and send us patches that improve things. Be aware that these are things that we could do, or have once been considered things we could do. If you want to work on any of these areas, please consider bringing it up for discussions first on the mailing list so that we all agree it is still a good idea for the project. All bugs documented in the KNOWN_BUGS document are subject for fixing. 1. libcurl 1.1 TFO support on Windows 1.2 Consult %APPDATA% also for .netrc 1.3 struct lifreq 1.4 alt-svc sharing 1.5 get rid of PATH_MAX 1.6 thread-safe sharing 1.8 CURLOPT_RESOLVE for any port number 1.9 Cache negative name resolves 1.10 auto-detect proxy 1.11 minimize dependencies with dynamically loaded modules 1.12 updated DNS server while running 1.13 c-ares and CURLOPT_OPENSOCKETFUNCTION 1.14 connect to multiple IPs in parallel 1.15 Monitor connections in the connection pool 1.16 Try to URL encode given URL 1.17 Add support for IRIs 1.18 try next proxy if one does not work 1.19 provide timing info for each redirect 1.20 SRV and URI DNS records 1.21 netrc caching and sharing 1.22 CURLINFO_PAUSE_STATE 1.23 Offer API to flush the connection pool 1.25 Expose tried IP addresses that failed 1.28 FD_CLOEXEC 1.29 WebSocket read callback 1.30 config file parsing 1.31 erase secrets from heap/stack after use 1.32 add asynch getaddrinfo support 1.33 make DoH inherit more transfer properties 2. libcurl - multi interface 2.1 More non-blocking 2.2 Better support for same name resolves 2.3 Non-blocking curl_multi_remove_handle() 2.4 Split connect and authentication process 2.5 Edge-triggered sockets should work 2.6 multi upkeep 2.7 Virtual external sockets 2.8 dynamically decide to use socketpair 3. Documentation 3.1 Improve documentation about fork safety 4. FTP 4.1 HOST 4.4 Support CURLOPT_PREQUOTE for directories listings 4.6 GSSAPI via Windows SSPI 4.7 STAT for LIST without data connection 4.8 Passive transfer could try other IP addresses 5. HTTP 5.1 Provide the error body from a CONNECT response 5.2 Obey Retry-After in redirects 5.3 Rearrange request header order 5.4 Allow SAN names in HTTP/2 server push 5.5 auth= in URLs 5.6 alt-svc should fallback if alt-svc does not work 5.7 Require HTTP version X or higher 6. TELNET 6.1 ditch stdin 6.2 ditch telnet-specific select 6.3 feature negotiation debug data 6.4 exit immediately upon connection if stdin is /dev/null 7. SMTP 7.1 Passing NOTIFY option to CURLOPT_MAIL_RCPT 7.2 Enhanced capability support 7.3 Add CURLOPT_MAIL_CLIENT option 8. POP3 8.2 Enhanced capability support 9. IMAP 9.1 Enhanced capability support 10. LDAP 10.1 SASL based authentication mechanisms 10.2 CURLOPT_SSL_CTX_FUNCTION for LDAPS 10.3 Paged searches on LDAP server 10.4 Certificate-Based Authentication 11. SMB 11.1 File listing support 11.2 Honor file timestamps 11.3 Use NTLMv2 11.4 Create remote directories 12. FILE 12.1 Directory listing on non-POSIX 13. TLS 13.1 TLS-PSK with OpenSSL 13.2 TLS channel binding 13.3 Defeat TLS fingerprinting 13.4 Consider OCSP stapling by default 13.5 Export session ids 13.6 Provide callback for cert verification 13.7 Less memory massaging with Schannel 13.8 Support DANE 13.9 TLS record padding 13.10 Support Authority Information Access certificate extension (AIA) 13.11 Some TLS options are not offered for HTTPS proxies 13.13 Make sure we forbid TLS 1.3 post-handshake authentication 13.14 Support the clienthello extension 13.16 Share the CA cache 13.17 Add missing features to TLS backends 14. Proxy 14.1 Retry SOCKS handshake on address type not supported 15. Schannel 15.1 Extend support for client certificate authentication 15.2 Extend support for the --ciphers option 15.4 Add option to allow abrupt server closure 16. SASL 16.1 Other authentication mechanisms 16.2 Add QOP support to GSSAPI authentication 17. SSH protocols 17.1 Multiplexing 17.2 Handle growing SFTP files 17.3 Read keys from ~/.ssh/id_ecdsa, id_ed25519 17.4 Support CURLOPT_PREQUOTE 17.5 SSH over HTTPS proxy with more backends 17.6 SFTP with SCP:// 18. Command line tool 18.1 sync 18.2 glob posts 18.4 --proxycommand 18.5 UTF-8 filenames in Content-Disposition 18.6 Option to make -Z merge lined based outputs on stdout 18.7 specify which response codes that make -f/--fail return error 18.9 Choose the name of file in braces for complex URLs 18.10 improve how curl works in a Windows console window 18.11 Windows: set attribute 'archive' for completed downloads 18.12 keep running, read instructions from pipe/socket 18.13 Acknowledge Ratelimit headers 18.14 --dry-run 18.15 --retry should resume 18.17 consider filename from the redirected URL with -O ? 18.18 retry on network is unreachable 18.19 expand ~/ in config files 18.20 hostname sections in config files 18.21 retry on the redirected-to URL 18.23 Set the modification date on an uploaded file 18.24 Use multiple parallel transfers for a single download 18.25 Prevent terminal injection when writing to terminal 18.26 Custom progress meter update interval 18.27 -J and -O with %-encoded filenames 18.28 -J with -C - 18.29 --retry and transfer timeouts 19. Build 19.2 Enable PIE and RELRO by default 19.3 Do not use GNU libtool on OpenBSD 19.4 Package curl for Windows in a signed installer 19.5 make configure use --cache-file more and better 20. Test suite 20.1 SSL tunnel 20.2 more protocols supported 20.3 more platforms supported 20.4 write an SMB test server to replace impacket 20.5 Use the RFC 6265 test suite 20.6 Run web-platform-tests URL tests 21. MQTT 21.1 Support rate-limiting 21.2 Support MQTTS 21.3 Handle network blocks 22. TFTP 22.1 TFTP does not convert LF to CRLF for mode=netascii 23. Gopher 23.1 Handle network blocks ============================================================================== 1. libcurl 1.1 TFO support on Windows libcurl supports the CURLOPT_TCP_FASTOPEN option since 7.49.0 for Linux and macOS. Windows supports TCP Fast Open starting with Windows 10, version 1607 and we should add support for it. TCP Fast Open is supported on several platforms but not on Windows. Work on this was once started but never finished. See https://github.com/curl/curl/pull/3378 1.2 Consult %APPDATA% also for .netrc %APPDATA%\.netrc is not considered when running on Windows. should not it? See https://github.com/curl/curl/issues/4016 1.3 struct lifreq Use 'struct lifreq' and SIOCGLIFADDR instead of 'struct ifreq' and SIOCGIFADDR on newer Solaris versions as they claim the latter is obsolete. To support IPv6 interface addresses for network interfaces properly. 1.4 alt-svc sharing The share interface could benefit from allowing the alt-svc cache to be possible to share between easy handles. See https://github.com/curl/curl/issues/4476 The share interface offers CURL_LOCK_DATA_CONNECT to have multiple easy handle share a connection cache, but due to how connections are used they are still not thread-safe when used shared. See https://github.com/curl/curl/issues/4915 and lib1541.c The share interface offers CURL_LOCK_DATA_HSTS to have multiple easy handle share an HSTS cache, but this is not thread-safe. 1.5 get rid of PATH_MAX Having code use and rely on PATH_MAX is not nice: https://insanecoding.blogspot.com/2007/11/pathmax-simply-isnt.html Currently the libssh2 SSH based code uses it, but to remove PATH_MAX from there we need libssh2 to properly tell us when we pass in a too small buffer and its current API (as of libssh2 1.2.7) does not. 1.6 thread-safe sharing Using the share interface users can share some data between easy handles but several of the sharing options are documented as not safe and supported to share between multiple concurrent threads. Fixing this would enable more users to share data in more powerful ways. 1.8 CURLOPT_RESOLVE for any port number This option allows applications to set a replacement IP address for a given host + port pair. Consider making support for providing a replacement address for the hostname on all port numbers. See https://github.com/curl/curl/issues/1264 1.9 Cache negative name resolves A name resolve that has failed is likely to fail when made again within a short period of time. Currently we only cache positive responses. 1.10 auto-detect proxy libcurl could be made to detect the system proxy setup automatically and use that. On Windows, macOS and Linux desktops for example. The pull-request to use libproxy for this was deferred due to doubts on the reliability of the dependency and how to use it: https://github.com/curl/curl/pull/977 libdetectproxy is a (C++) library for detecting the proxy on Windows https://github.com/paulharris/libdetectproxy 1.11 minimize dependencies with dynamically loaded modules We can create a system with loadable modules/plug-ins, where these modules would be the ones that link to 3rd party libs. That would allow us to avoid having to load ALL dependencies since only the necessary ones for this app/invoke/used protocols would be necessary to load. See https://github.com/curl/curl/issues/349 1.12 updated DNS server while running If /etc/resolv.conf gets updated while a program using libcurl is running, it is may cause name resolves to fail unless res_init() is called. We should consider calling res_init() + retry once unconditionally on all name resolve failures to mitigate against this. Firefox works like that. Note that Windows does not have res_init() or an alternative. https://github.com/curl/curl/issues/2251 1.13 c-ares and CURLOPT_OPENSOCKETFUNCTION curl creates most sockets via the CURLOPT_OPENSOCKETFUNCTION callback and close them with the CURLOPT_CLOSESOCKETFUNCTION callback. However, c-ares does not use those functions and instead opens and closes the sockets itself. This means that when curl passes the c-ares socket to the CURLMOPT_SOCKETFUNCTION it is not owned by the application like other sockets. See https://github.com/curl/curl/issues/2734 1.14 connect to multiple IPs in parallel curl currently implements the happy eyeball algorithm for connecting to the IPv4 and IPv6 alternatives for a host in parallel, sticking with the connection that "wins". We could implement a similar algorithm per individual IP family as well when there are multiple available addresses: start with the first address, then start a second attempt N milliseconds after and then a third another N milliseconds later. That way there would be less waiting when the first IP has problems. It also improves the connection timeout value handling for multiple address situations. 1.15 Monitor connections in the connection pool libcurl's connection cache or pool holds a number of open connections for the purpose of possible subsequent connection reuse. It may contain a few up to a significant amount of connections. Currently, libcurl leaves all connections as they are and first when a connection is iterated over for matching or reuse purpose it is verified that it is still alive. Those connections may get closed by the server side for idleness or they may get an HTTP/2 ping from the peer to verify that they are still alive. By adding monitoring of the connections while in the pool, libcurl can detect dead connections (and close them) better and earlier, and it can handle HTTP/2 pings to keep such ones alive even when not actively doing transfers on them. 1.16 Try to URL encode given URL Given a URL that for example contains spaces, libcurl could have an option that would try somewhat harder than it does now and convert spaces to %20 and perhaps URL encoded byte values over 128 etc (basically do what the redirect following code already does). https://github.com/curl/curl/issues/514 1.17 Add support for IRIs IRIs (RFC 3987) allow localized, non-ASCII, names in the URL. To properly support this, curl/libcurl would need to translate/encode the given input from the input string encoding into percent encoded output "over the wire". To make that work smoothly for curl users even on Windows, curl would probably need to be able to convert from several input encodings. 1.18 try next proxy if one does not work Allow an application to specify a list of proxies to try, and failing to connect to the first go on and try the next instead until the list is exhausted. Browsers support this feature at least when they specify proxies using PACs. https://github.com/curl/curl/issues/896 1.19 provide timing info for each redirect curl and libcurl provide timing information via a set of different time-stamps (CURLINFO_*_TIME). When curl is following redirects, those returned time value are the accumulated sums. An improvement could be to offer separate timings for each redirect. https://github.com/curl/curl/issues/6743 1.20 SRV and URI DNS records Offer support for resolving SRV and URI DNS records for libcurl to know which server to connect to for various protocols (including HTTP). 1.21 netrc caching and sharing The netrc file is read and parsed each time a connection is setup, which means that if a transfer needs multiple connections for authentication or redirects, the file might be reread (and parsed) multiple times. This makes it impossible to provide the file as a pipe. 1.22 CURLINFO_PAUSE_STATE Return information about the transfer's current pause state, in both directions. https://github.com/curl/curl/issues/2588 1.23 Offer API to flush the connection pool Sometimes applications want to flush all the existing connections kept alive. An API could allow a forced flush or just a forced loop that would properly close all connections that have been closed by the server already. 1.25 Expose tried IP addresses that failed When libcurl fails to connect to a host, it could offer the application the addresses that were used in the attempt. Source + dest IP, source + dest port and protocol (UDP or TCP) for each failure. Possibly as a callback. Perhaps also provide "reason". https://github.com/curl/curl/issues/2126 1.28 FD_CLOEXEC It sets the close-on-exec flag for the file descriptor, which causes the file descriptor to be automatically (and atomically) closed when any of the exec-family functions succeed. Should probably be set by default? https://github.com/curl/curl/issues/2252 1.29 WebSocket read callback Call the read callback once the connection is established to allow sending the first message in the connection. https://github.com/curl/curl/issues/11402 1.30 config file parsing Consider providing an API, possibly in a separate companion library, for parsing a config file like curl's -K/--config option to allow applications to get the same ability to read curl options from files. See https://github.com/curl/curl/issues/3698 1.31 erase secrets from heap/stack after use Introducing a concept and system to erase secrets from memory after use, it could help mitigate and lessen the impact of (future) security problems etc. However: most secrets are passed to libcurl as clear text from the application and then clearing them within the library adds nothing... https://github.com/curl/curl/issues/7268 1.32 add asynch getaddrinfo support Use getaddrinfo_a() to provide an asynch name resolver backend to libcurl that does not use threads and does not depend on c-ares. The getaddrinfo_a function is (probably?) glibc specific but that is a widely used libc among our users. https://github.com/curl/curl/pull/6746 1.33 make DoH inherit more transfer properties Some options are not inherited because they are not relevant for the DoH SSL connections, or inheriting the option may result in unexpected behavior. For example the user's debug function callback is not inherited because it would be unexpected for internal handles (ie DoH handles) to be passed to that callback. If an option is not inherited then it is not possible to set it separately for DoH without a DoH-specific option. For example: CURLOPT_DOH_SSL_VERIFYHOST, CURLOPT_DOH_SSL_VERIFYPEER and CURLOPT_DOH_SSL_VERIFYSTATUS. See https://github.com/curl/curl/issues/6605 2. libcurl - multi interface 2.1 More non-blocking Make sure we do not ever loop because of non-blocking sockets returning EWOULDBLOCK or similar. Blocking cases include: - Name resolves on non-Windows unless c-ares or the threaded resolver is used. - The threaded resolver may block on cleanup: https://github.com/curl/curl/issues/4852 - file:// transfers - TELNET transfers - GSSAPI authentication for FTP transfers - The "DONE" operation (post transfer protocol-specific actions) for the protocols SFTP, SMTP, FTP. Fixing multi_done() for this is a worthy task. - curl_multi_remove_handle for any of the above. See section 2.3. - Calling curl_ws_send() from a callback 2.2 Better support for same name resolves If a name resolve has been initiated for name NN and a second easy handle wants to resolve that name as well, make it wait for the first resolve to end up in the cache instead of doing a second separate resolve. This is especially needed when adding many simultaneous handles using the same host name when the DNS resolver can get flooded. 2.3 Non-blocking curl_multi_remove_handle() The multi interface has a few API calls that assume a blocking behavior, like add_handle() and remove_handle() which limits what we can do internally. The multi API need to be moved even more into a single function that "drives" everything in a non-blocking manner and signals when something is done. A remove or add would then only ask for the action to get started and then multi_perform() etc still be called until the add/remove is completed. 2.4 Split connect and authentication process The multi interface treats the authentication process as part of the connect phase. As such any failures during authentication does not trigger the relevant QUIT or LOGOFF for protocols such as IMAP, POP3 and SMTP. 2.5 Edge-triggered sockets should work The multi_socket API should work with edge-triggered socket events. One of the internal actions that need to be improved for this to work perfectly is the 'maxloops' handling in transfer.c:readwrite_data(). 2.6 multi upkeep In libcurl 7.62.0 we introduced curl_easy_upkeep. It unfortunately only works on easy handles. We should introduces a version of that for the multi handle, and also consider doing "upkeep" automatically on connections in the connection pool when the multi handle is in used. See https://github.com/curl/curl/issues/3199 2.7 Virtual external sockets libcurl performs operations on the given file descriptor that presumes it is a socket and an application cannot replace them at the moment. Allowing an application to fully replace those would allow a larger degree of freedom and flexibility. See https://github.com/curl/curl/issues/5835 2.8 dynamically decide to use socketpair For users who do not use curl_multi_wait() or do not care for curl_multi_wakeup(), we could introduce a way to make libcurl NOT create a socketpair in the multi handle. See https://github.com/curl/curl/issues/4829 3. Documentation 3.1 Improve documentation about fork safety See https://github.com/curl/curl/issues/6968 4. FTP 4.1 HOST HOST is a command for a client to tell which hostname to use, to offer FTP servers named-based virtual hosting: https://datatracker.ietf.org/doc/html/rfc7151 4.4 Support CURLOPT_PREQUOTE for directions listings The lack of support is mostly an oversight and requires the FTP state machine to get updated to get fixed. https://github.com/curl/curl/issues/8602 4.6 GSSAPI via Windows SSPI In addition to currently supporting the SASL GSSAPI mechanism (Kerberos V5) via third-party GSS-API libraries, such as Heimdal or MIT Kerberos, also add support for GSSAPI authentication via Windows SSPI. 4.7 STAT for LIST without data connection Some FTP servers allow STAT for listing directories instead of using LIST, and the response is then sent over the control connection instead of as the otherwise usedw data connection: https://www.nsftools.com/tips/RawFTP.htm#STAT This is not detailed in any FTP specification. 4.8 Passive transfer could try other IP addresses When doing FTP operations through a proxy at localhost, the reported spotted that curl only tried to connect once to the proxy, while it had multiple addresses and a failed connect on one address should make it try the next. After switching to passive mode (EPSV), curl could try all IP addresses for "localhost". Currently it tries ::1, but it should also try 127.0.0.1. See https://github.com/curl/curl/issues/1508 5. HTTP 5.1 Provide the error body from a CONNECT response When curl receives a body response from a CONNECT request to a proxy, it always just reads and ignores it. It would make some users happy if curl instead optionally would be able to make that responsible available. Via a new callback? Through some other means? See https://github.com/curl/curl/issues/9513 5.2 Obey Retry-After in redirects The Retry-After is said to dicate "the minimum time that the user agent is asked to wait before issuing the redirected request" and libcurl does not obey this. See https://github.com/curl/curl/issues/11447 5.3 Rearrange request header order Server implementers often make an effort to detect browser and to reject clients it can detect to not match. One of the last details we cannot yet control in libcurl's HTTP requests, which also can be exploited to detect that libcurl is in fact used even when it tries to impersonate a browser, is the order of the request headers. I propose that we introduce a new option in which you give headers a value, and then when the HTTP request is built it sorts the headers based on that number. We could then have internally created headers use a default value so only headers that need to be moved have to be specified. 5.4 Allow SAN names in HTTP/2 server push curl only allows HTTP/2 push promise if the provided :authority header value exactly matches the hostname given in the URL. It could be extended to allow any name that would match the Subject Alternative Names in the server's TLS certificate. See https://github.com/curl/curl/pull/3581 5.5 auth= in URLs Add the ability to specify the preferred authentication mechanism to use by using ;auth= in the login part of the URL. For example: http://test:pass;auth=NTLM@example.com would be equivalent to specifying --user test:pass;auth=NTLM or --user test:pass --ntlm from the command line. Additionally this should be implemented for proxy base URLs as well. 5.6 alt-svc should fallback if alt-svc does not work The alt-svc: header provides a set of alternative services for curl to use instead of the original. If the first attempted one fails, it should try the next etc and if all alternatives fail go back to the original. See https://github.com/curl/curl/issues/4908 5.7 Require HTTP version X or higher curl and libcurl provide options for trying higher HTTP versions (for example HTTP/2) but then still allows the server to pick version 1.1. We could consider adding a way to require a minimum version. See https://github.com/curl/curl/issues/7980 6. TELNET 6.1 ditch stdin Reading input (to send to the remote server) on stdin is a crappy solution for library purposes. We need to invent a good way for the application to be able to provide the data to send. 6.2 ditch telnet-specific select Move the telnet support's network select() loop go away and merge the code into the main transfer loop. Until this is done, the multi interface does not work for telnet. 6.3 feature negotiation debug data Add telnet feature negotiation data to the debug callback as header data. 6.4 exit immediately upon connection if stdin is /dev/null If it did, curl could be used to probe if there is an server there listening on a specific port. That is, the following command would exit immediately after the connection is established with exit code 0: curl -s --connect-timeout 2 telnet://example.com:80 NOTIFY=SUCCESS,FAILURE" ); https://github.com/curl/curl/issues/8232 7.2 Enhanced capability support Add the ability, for an application that uses libcurl, to obtain the list of capabilities returned from the EHLO command. 7.3 Add CURLOPT_MAIL_CLIENT option Rather than use the URL to specify the mail client string to present in the HELO and EHLO commands, libcurl should support a new CURLOPT specifically for specifying this data as the URL is non-standard and to be honest a bit of a hack ;-) Please see the following thread for more information: https://curl.se/mail/lib-2012-05/0178.html 8. POP3 8.2 Enhanced capability support Add the ability, for an application that uses libcurl, to obtain the list of capabilities returned from the CAPA command. 9. IMAP 9.1 Enhanced capability support Add the ability, for an application that uses libcurl, to obtain the list of capabilities returned from the CAPABILITY command. 10. LDAP 10.1 SASL based authentication mechanisms Currently the LDAP module only supports ldap_simple_bind_s() in order to bind to an LDAP server. However, this function sends username and password details using the simple authentication mechanism (as clear text). However, it should be possible to use ldap_bind_s() instead specifying the security context information ourselves. 10.2 CURLOPT_SSL_CTX_FUNCTION for LDAPS CURLOPT_SSL_CTX_FUNCTION works perfectly for HTTPS and email protocols, but it has no effect for LDAPS connections. https://github.com/curl/curl/issues/4108 10.3 Paged searches on LDAP server https://github.com/curl/curl/issues/4452 10.4 Certificate-Based Authentication LDAPS not possible with macOS and Windows with Certificate-Based Authentication https://github.com/curl/curl/issues/9641 11. SMB 11.1 File listing support Add support for listing the contents of an SMB share. The output should probably be the same as/similar to FTP. 11.2 Honor file timestamps The timestamp of the transferred file should reflect that of the original file. 11.3 Use NTLMv2 Currently the SMB authentication uses NTLMv1. 11.4 Create remote directories Support for creating remote directories when uploading a file to a directory that does not exist on the server, just like --ftp-create-dirs. 12. FILE 12.1 Directory listing on non-POSIX Listing the contents of a directory accessed with FILE only works on platforms with opendir. Support could be added for more systems, like Windows. 13. TLS 13.1 TLS-PSK with OpenSSL Transport Layer Security pre-shared key ciphersuites (TLS-PSK) is a set of cryptographic protocols that provide secure communication based on pre-shared keys (PSKs). These pre-shared keys are symmetric keys shared in advance among the communicating parties. https://github.com/curl/curl/issues/5081 13.2 TLS channel binding TLS 1.2 and 1.3 provide the ability to extract some secret data from the TLS connection and use it in the client request (usually in some sort of authentication) to ensure that the data sent is bound to the specific TLS connection and cannot be successfully intercepted by a proxy. This functionality can be used in a standard authentication mechanism such as GSS-API or SCRAM, or in custom approaches like custom HTTP Authentication headers. For TLS 1.2, the binding type is usually tls-unique, and for TLS 1.3 it is tls-exporter. https://datatracker.ietf.org/doc/html/rfc5929 https://datatracker.ietf.org/doc/html/rfc9266 https://github.com/curl/curl/issues/9226 13.3 Defeat TLS fingerprinting By changing the order of TLS extensions provided in the TLS handshake, it is sometimes possible to circumvent TLS fingerprinting by servers. The TLS extension order is of course not the only way to fingerprint a client. 13.4 Consider OCSP stapling by default Treat a negative response a reason for aborting the connection. Since OCSP stapling is presumed to get used much less in the future when Let's Encrypt drops the OCSP support, the benefit of this might however be limited. https://github.com/curl/curl/issues/15483 13.5 Export session ids Add an interface to libcurl that enables "session IDs" to get exported/imported. Cris Bailiff said: "OpenSSL has functions which can serialise the current SSL state to a buffer of your choice, and recover/reset the state from such a buffer at a later date - this is used by mod_ssl for apache to implement and SSL session ID cache". 13.6 Provide callback for cert verification OpenSSL supports a callback for customised verification of the peer certificate, but this does not seem to be exposed in the libcurl APIs. Could it be? There is so much that could be done if it were. 13.7 Less memory massaging with Schannel The Schannel backend does a lot of custom memory management we would rather avoid: the repeated alloc + free in sends and the custom memory + realloc system for encrypted and decrypted data. That should be avoided and reduced for 1) efficiency and 2) safety. 13.8 Support DANE DNS-Based Authentication of Named Entities (DANE) is a way to provide SSL keys and certs over DNS using DNSSEC as an alternative to the CA model. https://www.rfc-editor.org/rfc/rfc6698.txt An initial patch was posted by Suresh Krishnaswamy on March 7th 2013 (https://curl.se/mail/lib-2013-03/0075.html) but it was a too simple approach. See Daniel's comments: https://curl.se/mail/lib-2013-03/0103.html . libunbound may be the correct library to base this development on. Björn Stenberg wrote a separate initial take on DANE that was never completed. 13.9 TLS record padding TLS (1.3) offers optional record padding and OpenSSL provides an API for it. I could make sense for libcurl to offer this ability to applications to make traffic patterns harder to figure out by network traffic observers. See https://github.com/curl/curl/issues/5398 13.10 Support Authority Information Access certificate extension (AIA) AIA can provide various things like CRLs but more importantly information about intermediate CA certificates that can allow validation path to be fulfilled when the HTTPS server does not itself provide them. Since AIA is about downloading certs on demand to complete a TLS handshake, it is probably a bit tricky to get done right. See https://github.com/curl/curl/issues/2793 13.11 Some TLS options are not offered for HTTPS proxies Some TLS related options to the command line tool and libcurl are only provided for the server and not for HTTPS proxies. --proxy-tls-max, --proxy-tlsv1.3, --proxy-curves and a few more. For more Documentation on this see: https://curl.se/libcurl/c/tls-options.html https://github.com/curl/curl/issues/12286 13.13 Make sure we forbid TLS 1.3 post-handshake authentication RFC 8740 explains how using HTTP/2 must forbid the use of TLS 1.3 post-handshake authentication. We should make sure to live up to that. See https://github.com/curl/curl/issues/5396 13.14 Support the clienthello extension Certain stupid networks and middle boxes have a problem with SSL handshake packets that are within a certain size range because how that sets some bits that previously (in older TLS version) were not set. The clienthello extension adds padding to avoid that size range. https://datatracker.ietf.org/doc/html/rfc7685 https://github.com/curl/curl/issues/2299 13.16 Share the CA cache For TLS backends that supports CA caching, it makes sense to allow the share object to be used to store the CA cache as well via the share API. Would allow multiple easy handles to reuse the CA cache and save themselves from a lot of extra processing overhead. 13.17 Add missing features to TLS backends The feature matrix at https://curl.se/libcurl/c/tls-options.html shows which features are supported by which TLS backends, and thus also where there are feature gaps. 14. Proxy 14.1 Retry SOCKS handshake on address type not supported When curl resolves a hostname, it might get a mix of IPv6 and IPv4 returned. curl might then use an IPv6 address with a SOCKS5 proxy, which - if it does not support IPv6 - returns "Address type not supported" and curl exits with that error. Perhaps it is preferred if curl would in this situation instead first retry the SOCKS handshake again for this case and then use one of the IPv4 addresses for the target host. See https://github.com/curl/curl/issues/17222 15. Schannel 15.1 Extend support for client certificate authentication The existing support for the -E/--cert and --key options could be extended by supplying a custom certificate and key in PEM format, see: - Getting a Certificate for Schannel https://msdn.microsoft.com/en-us/library/windows/desktop/aa375447.aspx 15.2 Extend support for the --ciphers option The existing support for the --ciphers option could be extended by mapping the OpenSSL/GnuTLS cipher suites to the Schannel APIs, see - Specifying Schannel Ciphers and Cipher Strengths https://msdn.microsoft.com/en-us/library/windows/desktop/aa380161.aspx 15.4 Add option to allow abrupt server closure libcurl with Schannel errors without a known termination point from the server (such as length of transfer, or SSL "close notify" alert) to prevent against a truncation attack. Really old servers may neglect to send any termination point. An option could be added to ignore such abrupt closures. https://github.com/curl/curl/issues/4427 16. SASL 16.1 Other authentication mechanisms Add support for other authentication mechanisms such as OLP, GSS-SPNEGO and others. 16.2 Add QOP support to GSSAPI authentication Currently the GSSAPI authentication only supports the default QOP of auth (Authentication), whilst Kerberos V5 supports both auth-int (Authentication with integrity protection) and auth-conf (Authentication with integrity and privacy protection). 17. SSH protocols 17.1 Multiplexing SSH is a perfectly fine multiplexed protocols which would allow libcurl to do multiple parallel transfers from the same host using the same connection, much in the same spirit as HTTP/2 does. libcurl however does not take advantage of that ability but does instead always create a new connection for new transfers even if an existing connection already exists to the host. To fix this, libcurl would have to detect an existing connection and "attach" the new transfer to the existing one. 17.2 Handle growing SFTP files The SFTP code in libcurl checks the file size *before* a transfer starts and then proceeds to transfer exactly that amount of data. If the remote file grows while the transfer is in progress libcurl does not notice and does not adapt. The OpenSSH SFTP command line tool does and libcurl could also just attempt to download more to see if there is more to get... https://github.com/curl/curl/issues/4344 17.3 Read keys from ~/.ssh/id_ecdsa, id_ed25519 The libssh2 backend in curl is limited to only reading keys from id_rsa and id_dsa, which makes it fail connecting to servers that use more modern key types. https://github.com/curl/curl/issues/8586 17.4 Support CURLOPT_PREQUOTE The two other QUOTE options are supported for SFTP, but this was left out for unknown reasons. 17.5 SSH over HTTPS proxy with more backends The SSH based protocols SFTP and SCP did not work over HTTPS proxy at all until PR https://github.com/curl/curl/pull/6021 brought the functionality with the libssh2 backend. Presumably, this support can/could be added for the other backends as well. 17.6 SFTP with SCP:// OpenSSH 9 switched their 'scp' tool to speak SFTP under the hood. Going forward it might be worth having curl or libcurl attempt SFTP if SCP fails to follow suite. 18. Command line tool 18.1 sync "curl --sync http://example.com/feed[1-100].rss" or "curl --sync http://example.net/{index,calendar,history}.html" Downloads a range or set of URLs using the remote name, but only if the remote file is newer than the local file. A Last-Modified HTTP date header should also be used to set the mod date on the downloaded file. 18.2 glob posts Globbing support for -d and -F, as in 'curl -d "name=foo[0-9]" URL'. This is easily scripted though. 18.4 --proxycommand Allow the user to make curl run a command and use its stdio to make requests and not do any network connection by itself. Example: curl --proxycommand 'ssh pi@raspberrypi.local -W 10.1.1.75 80' \ http://some/otherwise/unavailable/service.php See https://github.com/curl/curl/issues/4941 18.5 UTF-8 filenames in Content-Disposition RFC 6266 documents how UTF-8 names can be passed to a client in the Content-Disposition header, and curl does not support this. https://github.com/curl/curl/issues/1888 18.6 Option to make -Z merge lined based outputs on stdout When a user requests multiple lined based files using -Z and sends them to stdout, curl does not "merge" and send complete lines fine but may send partial lines from several sources. https://github.com/curl/curl/issues/5175 18.7 specify which response codes that make -f/--fail return error Allows a user to better specify exactly which error code(s) that are fine and which are errors for their specific uses cases 18.9 Choose the name of file in braces for complex URLs When using braces to download a list of URLs and you use complicated names in the list of alternatives, it could be handy to allow curl to use other names when saving. Consider a way to offer that. Possibly like {partURL1:name1,partURL2:name2,partURL3:name3} where the name following the colon is the output name. See https://github.com/curl/curl/issues/221 18.10 improve how curl works in a Windows console window If you pull the scrollbar when transferring with curl in a Windows console window, the transfer is interrupted and can get disconnected. This can probably be improved. See https://github.com/curl/curl/issues/322 18.11 Windows: set attribute 'archive' for completed downloads The archive bit (FILE_ATTRIBUTE_ARCHIVE, 0x20) separates files that shall be backed up from those that are either not ready or have not changed. Downloads in progress are neither ready to be backed up, nor should they be opened by a different process. Only after a download has been completed it is sensible to include it in any integer snapshot or backup of the system. See https://github.com/curl/curl/issues/3354 18.12 keep running, read instructions from pipe/socket Provide an option that makes curl not exit after the last URL (or even work without a given URL), and then make it read instructions passed on a pipe or over a socket to make further instructions so that a second subsequent curl invoke can talk to the still running instance and ask for transfers to get done, and thus maintain its connection pool, DNS cache and more. 18.13 Acknowledge Ratelimit headers Consider a command line option that can make curl do multiple serial requests while acknowledging server specified rate limits: https://datatracker.ietf.org/doc/draft-ietf-httpapi-ratelimit-headers/ See https://github.com/curl/curl/issues/5406 18.14 --dry-run A command line option that makes curl show exactly what it would do and send if it would run for real. See https://github.com/curl/curl/issues/5426 18.15 --retry should resume When --retry is used and curl actually retries transfer, it should use the already transferred data and do a resumed transfer for the rest (when possible) so that it does not have to transfer the same data again that was already transferred before the retry. See https://github.com/curl/curl/issues/1084 18.17 consider filename from the redirected URL with -O ? When a user gives a URL and uses -O, and curl follows a redirect to a new URL, the filename is not extracted and used from the newly redirected-to URL even if the new URL may have a much more sensible filename. This is clearly documented and helps for security since there is no surprise to users which filename that might get overwritten, but maybe a new option could allow for this or maybe -J should imply such a treatment as well as -J already allows for the server to decide what filename to use so it already provides the "may overwrite any file" risk. This is extra tricky if the original URL has no filename part at all since then the current code path does error out with an error message, and we cannot *know* already at that point if curl is redirected to a URL that has a filename... See https://github.com/curl/curl/issues/1241 18.18 retry on network is unreachable The --retry option retries transfers on "transient failures". We later added --retry-connrefused to also retry for "connection refused" errors. Suggestions have been brought to also allow retry on "network is unreachable" errors and while totally reasonable, maybe we should consider a way to make this more configurable than to add a new option for every new error people want to retry for? https://github.com/curl/curl/issues/1603 18.19 expand ~/ in config files For example .curlrc could benefit from being able to do this. See https://github.com/curl/curl/issues/2317 18.20 hostname sections in config files config files would be more powerful if they could set different configurations depending on used URLs, hostname or possibly origin. Then a default .curlrc could a specific user-agent only when doing requests against a certain site. 18.21 retry on the redirected-to URL When curl is told to --retry a failed transfer and follows redirects, it might get an HTTP 429 response from the redirected-to URL and not the original one, which then could make curl decide to rather retry the transfer on that URL only instead of the original operation to the original URL. Perhaps extra emphasized if the original transfer is a large POST that redirects to a separate GET, and that GET is what gets the 529 See https://github.com/curl/curl/issues/5462 18.23 Set the modification date on an uploaded file For SFTP and possibly FTP, curl could offer an option to set the modification time for the uploaded file. See https://github.com/curl/curl/issues/5768 18.24 Use multiple parallel transfers for a single download To enhance transfer speed, downloading a single URL can be split up into multiple separate range downloads that get combined into a single final result. An ideal implementation would not use a specified number of parallel transfers, but curl could: - First start getting the full file as transfer A - If after N seconds have passed and the transfer is expected to continue for M seconds or more, add a new transfer (B) that asks for the second half of A's content (and stop A at the middle). - If splitting up the work improves the transfer rate, it could then be done again. Then again, etc up to a limit. This way, if transfer B fails (because Range: is not supported) it lets transfer A remain the single one. N and M could be set to some sensible defaults. See https://github.com/curl/curl/issues/5774 18.25 Prevent terminal injection when writing to terminal curl could offer an option to make escape sequence either non-functional or avoid cursor moves or similar to reduce the risk of a user getting tricked by clever tricks. See https://github.com/curl/curl/issues/6150 18.26 Custom progress meter update interval Users who are for example doing large downloads in CI or remote setups might want the occasional progress meter update to see that the transfer is progressing and has not stuck, but they may not appreciate the many-times-a-second frequency curl can end up doing it with now. 18.27 -J and -O with %-encoded filenames -J/--remote-header-name does not decode %-encoded filenames. RFC 6266 details how it should be done. The can of worm is basically that we have no charset handling in curl and ASCII >=128 is a challenge for us. Not to mention that decoding also means that we need to check for nastiness that is attempted, like "../" sequences and the like. Probably everything to the left of any embedded slashes should be cut off. https://curl.se/bug/view.cgi?id=1294 -O also does not decode %-encoded names, and while it has even less information about the charset involved the process is similar to the -J case. Note that we do not decode -O without the user asking for it with some other means, since -O has always been documented to use the name exactly as specified in the URL. 18.28 -J with -C - When using -J (with -O), automatically resumed downloading together with "-C -" fails. Without -J the same command line works. This happens because the resume logic is worked out before the target filename (and thus its pre-transfer size) has been figured out. This can be improved. https://curl.se/bug/view.cgi?id=1169 18.29 --retry and transfer timeouts If using --retry and the transfer timeouts (possibly due to using -m or -y/-Y) the next attempt does not resume the transfer properly from what was downloaded in the previous attempt but truncates and restarts at the original position where it was at before the previous failed attempt. See https://curl.se/mail/lib-2008-01/0080.html and Mandriva bug report https://qa.mandriva.com/show_bug.cgi?id=22565 19. Build 19.2 Enable PIE and RELRO by default Especially when having programs that execute curl via the command line, PIE renders the exploitation of memory corruption vulnerabilities a lot more difficult. This can be attributed to the additional information leaks being required to conduct a successful attack. RELRO, on the other hand, masks different binary sections like the GOT as read-only and thus kills a handful of techniques that come in handy when attackers are able to arbitrarily overwrite memory. A few tests showed that enabling these features had close to no impact, neither on the performance nor on the general functionality of curl. 19.3 Do not use GNU libtool on OpenBSD When compiling curl on OpenBSD with "--enable-debug" it gives linking errors when you use GNU libtool. This can be fixed by using the libtool provided by OpenBSD itself. However for this the user always needs to invoke make with "LIBTOOL=/usr/bin/libtool". It would be nice if the script could have some magic to detect if this system is an OpenBSD host and then use the OpenBSD libtool instead. See https://github.com/curl/curl/issues/5862 19.4 Package curl for Windows in a signed installer See https://github.com/curl/curl/issues/5424 19.5 make configure use --cache-file more and better The configure script can be improved to cache more values so that repeated invokes run much faster. See https://github.com/curl/curl/issues/7753 20. Test suite 20.1 SSL tunnel Make our own version of stunnel for simple port forwarding to enable HTTPS and FTP-SSL tests without the stunnel dependency, and it could allow us to provide test tools built with either OpenSSL or GnuTLS 20.2 more protocols supported Extend the test suite to include more protocols. The telnet could just do FTP or http operations (for which we have test servers). 20.3 more platforms supported Make the test suite work on more platforms. OpenBSD and macOS. Remove fork()s and it should become even more portable. 20.4 write an SMB test server to replace impacket This would allow us to run SMB tests on more platforms and do better and more covering tests. See https://github.com/curl/curl/issues/15697 20.5 Use the RFC 6265 test suite A test suite made for HTTP cookies (RFC 6265) by Adam Barth is available at https://github.com/abarth/http-state/tree/master/tests It would be good if someone would write a script/setup that would run curl with that test suite and detect deviances. Ideally, that would even be incorporated into our regular test suite. 20.6 Run web-platform-tests URL tests Run web-platform-tests URL tests and compare results with browsers on wpt.fyi It would help us find issues to fix and help us document where our parser differs from the WHATWG URL spec parsers. See https://github.com/curl/curl/issues/4477 21. MQTT 21.1 Support rate-limiting The rate-limiting logic is done in the PERFORMING state in multi.c but MQTT is not (yet) implemented to use that. 21.2 Support MQTTS 21.3 Handle network blocks Running test suite with `CURL_DBG_SOCK_WBLOCK=90 ./runtests.pl -a mqtt` makes several MQTT test cases fail where they should not. 22. TFTP 22.1 TFTP does not convert LF to CRLF for mode=netascii RFC 3617 defines that an TFTP transfer can be done using "netascii" mode. curl does not support extracting that mode from the URL nor does it treat such transfers specifically. It should probably do LF to CRLF translations for them. See https://github.com/curl/curl/issues/12655 23. Gopher 23.1 Handle network blocks Running test suite with `CURL_DBG_SOCK_WBLOCK=90 ./runtests.pl -a 1200 to 1300` makes several Gopher test cases fail where they should not. curl-8.14.1/docs/TheArtOfHttpScripting.md0000644000000000000000000006772315017756261016442 0ustar0000000000000000 # The Art Of Scripting HTTP Requests Using curl ## Background This document assumes that you are familiar with HTML and general networking. The increasing amount of applications moving to the web has made "HTTP Scripting" more frequently requested and wanted. To be able to automatically extract information from the web, to fake users, to post or upload data to web servers are all important tasks today. curl is a command line tool for doing all sorts of URL manipulations and transfers, but this particular document focuses on how to use it when doing HTTP requests for fun and profit. This documents assumes that you know how to invoke `curl --help` or `curl --manual` to get basic information about it. curl is not written to do everything for you. It makes the requests, it gets the data, it sends data and it retrieves the information. You probably need to glue everything together using some kind of script language or repeated manual invokes. ## The HTTP Protocol HTTP is the protocol used to fetch data from web servers. It is a simple protocol that is built upon TCP/IP. The protocol also allows information to get sent to the server from the client using a few different methods, as is shown here. HTTP is plain ASCII text lines being sent by the client to a server to request a particular action, and then the server replies a few text lines before the actual requested content is sent to the client. The client, curl, sends an HTTP request. The request contains a method (like GET, POST, HEAD etc), a number of request headers and sometimes a request body. The HTTP server responds with a status line (indicating if things went well), response headers and most often also a response body. The "body" part is the plain data you requested, like the actual HTML or the image etc. ## See the Protocol Using curl's option [`--verbose`](https://curl.se/docs/manpage.html#-v) (`-v` as a short option) displays what kind of commands curl sends to the server, as well as a few other informational texts. `--verbose` is the single most useful option when it comes to debug or even understand the curl<->server interaction. Sometimes even `--verbose` is not enough. Then [`--trace`](https://curl.se/docs/manpage.html#-trace) and [`--trace-ascii`](https://curl.se/docs/manpage.html#--trace-ascii) offer even more details as they show **everything** curl sends and receives. Use it like this: curl --trace-ascii debugdump.txt http://www.example.com/ ## See the Timing Many times you may wonder what exactly is taking all the time, or you just want to know the amount of milliseconds between two points in a transfer. For those, and other similar situations, the [`--trace-time`](https://curl.se/docs/manpage.html#--trace-time) option is what you need. It prepends the time to each trace output line: curl --trace-ascii d.txt --trace-time http://example.com/ ## See which Transfer When doing parallel transfers, it is relevant to see which transfer is doing what. When response headers are received (and logged) you need to know which transfer these are for. [`--trace-ids`](https://curl.se/docs/manpage.html#--trace-ids) option is what you need. It prepends the transfer and connection identifier to each trace output line: curl --trace-ascii d.txt --trace-ids http://example.com/ ## See the Response By default curl sends the response to stdout. You need to redirect it somewhere to avoid that, most often that is done with `-o` or `-O`. # URL ## Spec The Uniform Resource Locator format is how you specify the address of a particular resource on the Internet. You know these, you have seen URLs like https://curl.se or https://example.com a million times. RFC 3986 is the canonical spec. The formal name is not URL, it is **URI**. ## Host The hostname is usually resolved using DNS or your /etc/hosts file to an IP address and that is what curl communicates with. Alternatively you specify the IP address directly in the URL instead of a name. For development and other trying out situations, you can point to a different IP address for a hostname than what would otherwise be used, by using curl's [`--resolve`](https://curl.se/docs/manpage.html#--resolve) option: curl --resolve www.example.org:80:127.0.0.1 http://www.example.org/ ## Port number Each protocol curl supports operates on a default port number, be it over TCP or in some cases UDP. Normally you do not have to take that into consideration, but at times you run test servers on other ports or similar. Then you can specify the port number in the URL with a colon and a number immediately following the hostname. Like when doing HTTP to port 1234: curl http://www.example.org:1234/ The port number you specify in the URL is the number that the server uses to offer its services. Sometimes you may use a proxy, and then you may need to specify that proxy's port number separately from what curl needs to connect to the server. Like when using an HTTP proxy on port 4321: curl --proxy http://proxy.example.org:4321 http://remote.example.org/ ## Username and password Some services are setup to require HTTP authentication and then you need to provide name and password which is then transferred to the remote site in various ways depending on the exact authentication protocol used. You can opt to either insert the user and password in the URL or you can provide them separately: curl http://user:password@example.org/ or curl -u user:password http://example.org/ You need to pay attention that this kind of HTTP authentication is not what is usually done and requested by user-oriented websites these days. They tend to use forms and cookies instead. ## Path part The path part is just sent off to the server to request that it sends back the associated response. The path is what is to the right side of the slash that follows the hostname and possibly port number. # Fetch a page ## GET The simplest and most common request/operation made using HTTP is to GET a URL. The URL could itself refer to a webpage, an image or a file. The client issues a GET request to the server and receives the document it asked for. If you issue the command line curl https://curl.se you get a webpage returned in your terminal window. The entire HTML document this URL identifies. All HTTP replies contain a set of response headers that are normally hidden, use curl's [`--include`](https://curl.se/docs/manpage.html#-i) (`-i`) option to display them as well as the rest of the document. ## HEAD You can ask the remote server for ONLY the headers by using the [`--head`](https://curl.se/docs/manpage.html#-I) (`-I`) option which makes curl issue a HEAD request. In some special cases servers deny the HEAD method while others still work, which is a particular kind of annoyance. The HEAD method is defined and made so that the server returns the headers exactly the way it would do for a GET, but without a body. It means that you may see a `Content-Length:` in the response headers, but there must not be an actual body in the HEAD response. ## Multiple URLs in a single command line A single curl command line may involve one or many URLs. The most common case is probably to just use one, but you can specify any amount of URLs. Yes any. No limits. You then get requests repeated over and over for all the given URLs. Example, send two GET requests: curl http://url1.example.com http://url2.example.com If you use [`--data`](https://curl.se/docs/manpage.html#-d) to POST to the URL, using multiple URLs means that you send that same POST to all the given URLs. Example, send two POSTs: curl --data name=curl http://url1.example.com http://url2.example.com ## Multiple HTTP methods in a single command line Sometimes you need to operate on several URLs in a single command line and do different HTTP methods on each. For this, you might enjoy the [`--next`](https://curl.se/docs/manpage.html#-:) option. It is basically a separator that separates a bunch of options from the next. All the URLs before `--next` get the same method and get all the POST data merged into one. When curl reaches the `--next` on the command line, it resets the method and the POST data and allow a new set. Perhaps this is best shown with a few examples. To send first a HEAD and then a GET: curl -I http://example.com --next http://example.com To first send a POST and then a GET: curl -d score=10 http://example.com/post.cgi --next http://example.com/results.html # HTML forms ## Forms explained Forms are the general way a website can present an HTML page with fields for the user to enter data in, and then press some kind of 'OK' or 'Submit' button to get that data sent to the server. The server then typically uses the posted data to decide how to act. Like using the entered words to search in a database, or to add the info in a bug tracking system, display the entered address on a map or using the info as a login-prompt verifying that the user is allowed to see what it is about to see. Of course there has to be some kind of program on the server end to receive the data you send. You cannot just invent something out of the air. ## GET A GET-form uses the method GET, as specified in HTML like: ```html
``` In your favorite browser, this form appears with a text box to fill in and a press-button labeled "OK". If you fill in '1905' and press the OK button, your browser then creates a new URL to get for you. The URL gets `junk.cgi?birthyear=1905&press=OK` appended to the path part of the previous URL. If the original form was seen on the page `www.example.com/when/birth.html`, the second page you get becomes `www.example.com/when/junk.cgi?birthyear=1905&press=OK`. Most search engines work this way. To make curl do the GET form post for you, just enter the expected created URL: curl "http://www.example.com/when/junk.cgi?birthyear=1905&press=OK" ## POST The GET method makes all input field names get displayed in the URL field of your browser. That is generally a good thing when you want to be able to bookmark that page with your given data, but it is an obvious disadvantage if you entered secret information in one of the fields or if there are a large amount of fields creating a long and unreadable URL. The HTTP protocol then offers the POST method. This way the client sends the data separated from the URL and thus you do not see any of it in the URL address field. The form would look similar to the previous one: ```html
``` And to use curl to post this form with the same data filled in as before, we could do it like: curl --data "birthyear=1905&press=%20OK%20" http://www.example.com/when/junk.cgi This kind of POST uses the Content-Type `application/x-www-form-urlencoded` and is the most widely used POST kind. The data you send to the server MUST already be properly encoded, curl does not do that for you. For example, if you want the data to contain a space, you need to replace that space with `%20`, etc. Failing to comply with this most likely causes your data to be received wrongly and messed up. Recent curl versions can in fact url-encode POST data for you, like this: curl --data-urlencode "name=I am Daniel" http://www.example.com If you repeat `--data` several times on the command line, curl concatenates all the given data pieces - and put a `&` symbol between each data segment. ## File Upload POST Back in late 1995 they defined an additional way to post data over HTTP. It is documented in the RFC 1867, why this method sometimes is referred to as RFC 1867-posting. This method is mainly designed to better support file uploads. A form that allows a user to upload a file could be written like this in HTML:
This clearly shows that the Content-Type about to be sent is `multipart/form-data`. To post to a form like this with curl, you enter a command line like: curl --form upload=@localfilename --form press=OK [URL] ## Hidden Fields A common way for HTML based applications to pass state information between pages is to add hidden fields to the forms. Hidden fields are already filled in, they are not displayed to the user and they get passed along just as all the other fields. A similar example form with one visible field, one hidden field and one submit button could look like: ```html
``` To POST this with curl, you do not have to think about if the fields are hidden or not. To curl they are all the same: curl --data "birthyear=1905&press=OK&person=daniel" [URL] ## Figure Out What A POST Looks Like When you are about to fill in a form and send it to a server by using curl instead of a browser, you are of course interested in sending a POST exactly the way your browser does. An easy way to get to see this, is to save the HTML page with the form on your local disk, modify the 'method' to a GET, and press the submit button (you could also change the action URL if you want to). You then clearly see the data get appended to the URL, separated with a `?`-letter as GET forms are supposed to. # HTTP upload ## PUT Perhaps the best way to upload data to an HTTP server is to use PUT. Then again, this of course requires that someone put a program or script on the server end that knows how to receive an HTTP PUT stream. Put a file to an HTTP server with curl: curl --upload-file uploadfile http://www.example.com/receive.cgi # HTTP Authentication ## Basic Authentication HTTP Authentication is the ability to tell the server your username and password so that it can verify that you are allowed to do the request you are doing. The Basic authentication used in HTTP (which is the type curl uses by default) is **plain text** based, which means it sends username and password only slightly obfuscated, but still fully readable by anyone that sniffs on the network between you and the remote server. To tell curl to use a user and password for authentication: curl --user name:password http://www.example.com ## Other Authentication The site might require a different authentication method (check the headers returned by the server), and then [`--ntlm`](https://curl.se/docs/manpage.html#--ntlm), [`--digest`](https://curl.se/docs/manpage.html#--digest), [`--negotiate`](https://curl.se/docs/manpage.html#--negotiate) or even [`--anyauth`](https://curl.se/docs/manpage.html#--anyauth) might be options that suit you. ## Proxy Authentication Sometimes your HTTP access is only available through the use of an HTTP proxy. This seems to be especially common at various companies. An HTTP proxy may require its own user and password to allow the client to get through to the Internet. To specify those with curl, run something like: curl --proxy-user proxyuser:proxypassword curl.se If your proxy requires the authentication to be done using the NTLM method, use [`--proxy-ntlm`](https://curl.se/docs/manpage.html#--proxy-ntlm), if it requires Digest use [`--proxy-digest`](https://curl.se/docs/manpage.html#--proxy-digest). If you use any one of these user+password options but leave out the password part, curl prompts for the password interactively. ## Hiding credentials Do note that when a program is run, its parameters might be possible to see when listing the running processes of the system. Thus, other users may be able to watch your passwords if you pass them as plain command line options. There are ways to circumvent this. It is worth noting that while this is how HTTP Authentication works, many websites do not use this concept when they provide logins etc. See the Web Login chapter further below for more details on that. # More HTTP Headers ## Referer An HTTP request may include a 'referer' field (yes it is misspelled), which can be used to tell from which URL the client got to this particular resource. Some programs/scripts check the referer field of requests to verify that this was not arriving from an external site or an unknown page. While this is a stupid way to check something so easily forged, many scripts still do it. Using curl, you can put anything you want in the referer-field and thus more easily be able to fool the server into serving your request. Use curl to set the referer field with: curl --referer http://www.example.come http://www.example.com ## User Agent Similar to the referer field, all HTTP requests may set the User-Agent field. It names what user agent (client) that is being used. Many applications use this information to decide how to display pages. Silly web programmers try to make different pages for users of different browsers to make them look the best possible for their particular browsers. They usually also do different kinds of JavaScript etc. At times, you may learn that getting a page with curl does not return the same page that you see when getting the page with your browser. Then you know it is time to set the User Agent field to fool the server into thinking you are one of those browsers. By default, curl uses curl/VERSION, such as User-Agent: curl/8.11.0. To make curl look like Internet Explorer 5 on a Windows 2000 box: curl --user-agent "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" [URL] Or why not look like you are using Netscape 4.73 on an old Linux box: curl --user-agent "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" [URL] ## Redirects ## Location header When a resource is requested from a server, the reply from the server may include a hint about where the browser should go next to find this page, or a new page keeping newly generated output. The header that tells the browser to redirect is `Location:`. curl does not follow `Location:` headers by default, but simply displays such pages in the same manner it displays all HTTP replies. It does however feature an option that makes it attempt to follow the `Location:` pointers. To tell curl to follow a Location: curl --location http://www.example.com If you use curl to POST to a site that immediately redirects you to another page, you can safely use [`--location`](https://curl.se/docs/manpage.html#-L) (`-L`) and `--data`/`--form` together. curl only uses POST in the first request, and then revert to GET in the following operations. ## Other redirects Browsers typically support at least two other ways of redirects that curl does not: first the html may contain a meta refresh tag that asks the browser to load a specific URL after a set number of seconds, or it may use JavaScript to do it. # Cookies ## Cookie Basics The way the web browsers do "client side state control" is by using cookies. Cookies are just names with associated contents. The cookies are sent to the client by the server. The server tells the client for what path and hostname it wants the cookie sent back, and it also sends an expiration date and a few more properties. When a client communicates with a server with a name and path as previously specified in a received cookie, the client sends back the cookies and their contents to the server, unless of course they are expired. Many applications and servers use this method to connect a series of requests into a single logical session. To be able to use curl in such occasions, we must be able to record and send back cookies the way the web application expects them. The same way browsers deal with them. ## Cookie options The simplest way to send a few cookies to the server when getting a page with curl is to add them on the command line like: curl --cookie "name=Daniel" http://www.example.com Cookies are sent as common HTTP headers. This is practical as it allows curl to record cookies simply by recording headers. Record cookies with curl by using the [`--dump-header`](https://curl.se/docs/manpage.html#-D) (`-D`) option like: curl --dump-header headers_and_cookies http://www.example.com (Take note that the [`--cookie-jar`](https://curl.se/docs/manpage.html#-c) option described below is a better way to store cookies.) curl has a full blown cookie parsing engine built-in that comes in use if you want to reconnect to a server and use cookies that were stored from a previous connection (or hand-crafted manually to fool the server into believing you had a previous connection). To use previously stored cookies, you run curl like: curl --cookie stored_cookies_in_file http://www.example.com curl's "cookie engine" gets enabled when you use the [`--cookie`](https://curl.se/docs/manpage.html#-b) option. If you only want curl to understand received cookies, use `--cookie` with a file that does not exist. Example, if you want to let curl understand cookies from a page and follow a location (and thus possibly send back cookies it received), you can invoke it like: curl --cookie nada --location http://www.example.com curl has the ability to read and write cookie files that use the same file format that Netscape and Mozilla once used. It is a convenient way to share cookies between scripts or invokes. The `--cookie` (`-b`) switch automatically detects if a given file is such a cookie file and parses it, and by using the `--cookie-jar` (`-c`) option you make curl write a new cookie file at the end of an operation: curl --cookie cookies.txt --cookie-jar newcookies.txt \ http://www.example.com # HTTPS ## HTTPS is HTTP secure There are a few ways to do secure HTTP transfers. By far the most common protocol for doing this is what is generally known as HTTPS, HTTP over SSL. SSL encrypts all the data that is sent and received over the network and thus makes it harder for attackers to spy on sensitive information. SSL (or TLS as the current version of the standard is called) offers a set of advanced features to do secure transfers over HTTP. curl supports encrypted fetches when built to use a TLS library and it can be built to use one out of a fairly large set of libraries - `curl -V` shows which one your curl was built to use (if any). To get a page from an HTTPS server, simply run curl like: curl https://secure.example.com ## Certificates In the HTTPS world, you use certificates to validate that you are the one you claim to be, as an addition to normal passwords. curl supports client- side certificates. All certificates are locked with a passphrase, which you need to enter before the certificate can be used by curl. The passphrase can be specified on the command line or if not, entered interactively when curl queries for it. Use a certificate with curl on an HTTPS server like: curl --cert mycert.pem https://secure.example.com curl also tries to verify that the server is who it claims to be, by verifying the server's certificate against a locally stored CA cert bundle. Failing the verification causes curl to deny the connection. You must then use [`--insecure`](https://curl.se/docs/manpage.html#-k) (`-k`) in case you want to tell curl to ignore that the server cannot be verified. More about server certificate verification and ca cert bundles can be read in the [`SSLCERTS` document](https://curl.se/docs/sslcerts.html). At times you may end up with your own CA cert store and then you can tell curl to use that to verify the server's certificate: curl --cacert ca-bundle.pem https://example.com/ # Custom Request Elements ## Modify method and headers Doing fancy stuff, you may need to add or change elements of a single curl request. For example, you can change the POST method to `PROPFIND` and send the data as `Content-Type: text/xml` (instead of the default `Content-Type`) like this: curl --data "" --header "Content-Type: text/xml" \ --request PROPFIND example.com You can delete a default header by providing one without content. Like you can ruin the request by chopping off the `Host:` header: curl --header "Host:" http://www.example.com You can add headers the same way. Your server may want a `Destination:` header, and you can add it: curl --header "Destination: http://nowhere" http://example.com ## More on changed methods It should be noted that curl selects which methods to use on its own depending on what action to ask for. `-d` makes a POST, `-I` makes a HEAD and so on. If you use the [`--request`](https://curl.se/docs/manpage.html#-X) / `-X` option you can change the method keyword curl selects, but you do not modify curl's behavior. This means that if you for example use -d "data" to do a POST, you can modify the method to a `PROPFIND` with `-X` and curl still thinks it sends a POST. You can change the normal GET to a POST method by simply adding `-X POST` in a command line like: curl -X POST http://example.org/ curl however still acts as if it sent a GET so it does not send any request body etc. # Web Login ## Some login tricks While not strictly just HTTP related, it still causes a lot of people problems so here's the executive run-down of how the vast majority of all login forms work and how to login to them using curl. It can also be noted that to do this properly in an automated fashion, you most certainly need to script things and do multiple curl invokes etc. First, servers mostly use cookies to track the logged-in status of the client, so you need to capture the cookies you receive in the responses. Then, many sites also set a special cookie on the login page (to make sure you got there through their login page) so you should make a habit of first getting the login-form page to capture the cookies set there. Some web-based login systems feature various amounts of JavaScript, and sometimes they use such code to set or modify cookie contents. Possibly they do that to prevent programmed logins, like this manual describes how to... Anyway, if reading the code is not enough to let you repeat the behavior manually, capturing the HTTP requests done by your browsers and analyzing the sent cookies is usually a working method to work out how to shortcut the JavaScript need. In the actual `
` tag for the login, lots of sites fill-in random/session or otherwise secretly generated hidden tags and you may need to first capture the HTML code for the login form and extract all the hidden fields to be able to do a proper login POST. Remember that the contents need to be URL encoded when sent in a normal POST. # Debug ## Some debug tricks Many times when you run curl on a site, you notice that the site does not seem to respond the same way to your curl requests as it does to your browser's. Then you need to start making your curl requests more similar to your browser's requests: - Use the `--trace-ascii` option to store fully detailed logs of the requests for easier analyzing and better understanding - Make sure you check for and use cookies when needed (both reading with `--cookie` and writing with `--cookie-jar`) - Set user-agent (with [`-A`](https://curl.se/docs/manpage.html#-A)) to one like a recent popular browser does - Set referer (with [`-E`](https://curl.se/docs/manpage.html#-E)) like it is set by the browser - If you use POST, make sure you send all the fields and in the same order as the browser does it. ## Check what the browsers do A good helper to make sure you do this right, is the web browsers' developers tools that let you view all headers you send and receive (even when using HTTPS). A more raw approach is to capture the HTTP traffic on the network with tools such as Wireshark or tcpdump and check what headers that were sent and received by the browser. (HTTPS forces you to use `SSLKEYLOGFILE` to do that.) curl-8.14.1/docs/URL-SYNTAX.md0000644000000000000000000003522715017756261013723 0ustar0000000000000000 # URL syntax and their use in curl ## Specifications The official "URL syntax" is primarily defined in these two different specifications: - [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986) (although URL is called "URI" in there) - [The WHATWG URL Specification](https://url.spec.whatwg.org/) RFC 3986 is the earlier one, and curl has always tried to adhere to that one (since it shipped in January 2005). The WHATWG URL spec was written later, is incompatible with the RFC 3986 and changes over time. ## Variations URL parsers as implemented in browsers, libraries and tools usually opt to support one of the mentioned specifications. Bugs, differences in interpretations and the moving nature of the WHATWG spec does however make it unlikely that multiple parsers treat URLs the same way. ## Security Due to the inherent differences between URL parser implementations, it is considered a security risk to mix different implementations and assume the same behavior. For example, if you use one parser to check if a URL uses a good hostname or the correct auth field, and then pass on that same URL to a *second* parser, there is always a risk it treats the same URL differently. There is no right and wrong in URL land, only differences of opinions. libcurl offers a separate API to its URL parser for this reason, among others. Applications may at times find it convenient to allow users to specify URLs for various purposes and that string would then end up fed to curl. Getting a URL from an external untrusted party and using it with curl brings several security concerns: 1. If you have an application that runs as or in a server application, getting an unfiltered URL can trick your application to access a local resource instead of a remote resource. Protecting yourself against localhost accesses is hard when accepting user provided URLs. 2. Such custom URLs can access other ports than you planned as port numbers are part of the regular URL format. The combination of a local host and a custom port number can allow external users to play tricks with your local services. 3. Such a URL might use other schemes than you thought of or planned for. ## "RFC 3986 plus" curl recognizes a URL syntax that we call "RFC 3986 plus". It is grounded on the well established RFC 3986 to make sure previously written command lines and curl using scripts remain working. curl's URL parser allows a few deviations from the spec in order to inter-operate better with URLs that appear in the wild. ### Spaces A URL provided to curl cannot contain spaces. They need to be provided URL encoded to be accepted in a URL by curl. An exception to this rule: `Location:` response headers that indicate to a client where a resource has been redirected to, sometimes contain spaces. This is a violation of RFC 3986 but is fine in the WHATWG spec. curl handles these by re-encoding them to `%20`. ### Non-ASCII Byte values in a provided URL that are outside of the printable ASCII range are percent-encoded by curl. ### Multiple slashes An absolute URL always starts with a "scheme" followed by a colon. For all the schemes curl supports, the colon must be followed by two slashes according to RFC 3986 but not according to the WHATWG spec - which allows one to infinity amount. curl allows one, two or three slashes after the colon to still be considered a valid URL. ### "scheme-less" curl supports "URLs" that do not start with a scheme. This is not supported by any of the specifications. This is a shortcut to entering URLs that was supported by browsers early on and has been mimicked by curl. Based on what the hostname starts with, curl "guesses" what protocol to use: - `ftp.` means FTP - `dict.` means DICT - `ldap.` means LDAP - `imap.` means IMAP - `smtp.` means SMTP - `pop3.` means POP3 - all other means HTTP ### Globbing letters The curl command line tool supports "globbing" of URLs. It means that you can create ranges and lists using `[N-M]` and `{one,two,three}` sequences. The letters used for this (`[]{}`) are reserved in RFC 3986 and can therefore not legitimately be part of such a URL. They are however not reserved or special in the WHATWG specification, so globbing can mess up such URLs. Globbing can be turned off for such occasions (using `--globoff`). # URL syntax details A URL may consist of the following components - many of them are optional: [scheme][divider][userinfo][hostname][port number][path][query][fragment] Each component is separated from the following component with a divider character or string. For example, this could look like: http://user:password@www.example.com:80/index.html?foo=bar#top ## Scheme The scheme specifies the protocol to use. A curl build can support a few or many different schemes. You can limit what schemes curl should accept. curl supports the following schemes on URLs specified to transfer. They are matched case insensitively: `dict`, `file`, `ftp`, `ftps`, `gopher`, `gophers`, `http`, `https`, `imap`, `imaps`, `ldap`, `ldaps`, `mqtt`, `pop3`, `pop3s`, `rtmp`, `rtmpe`, `rtmps`, `rtmpt`, `rtmpte`, `rtmpts`, `rtsp`, `smb`, `smbs`, `smtp`, `smtps`, `telnet`, `tftp` When the URL is specified to identify a proxy, curl recognizes the following schemes: `http`, `https`, `socks4`, `socks4a`, `socks5`, `socks5h`, `socks` ## Userinfo The userinfo field can be used to set username and password for authentication purposes in this transfer. The use of this field is discouraged since it often means passing around the password in plain text and is thus a security risk. URLs for IMAP, POP3 and SMTP also support *login options* as part of the userinfo field. They are provided as a semicolon after the password and then the options. ## Hostname The hostname part of the URL contains the address of the server that you want to connect to. This can be the fully qualified domain name of the server, the local network name of the machine on your network or the IP address of the server or machine represented by either an IPv4 or IPv6 address (within brackets). For example: http://www.example.com/ http://hostname/ http://192.168.0.1/ http://[2001:1890:1112:1::20]/ ### "localhost" Starting in curl 7.77.0, curl uses loopback IP addresses for the name `localhost`: `127.0.0.1` and `::1`. It does not resolve the name using the resolver functions. This is done to make sure the host accessed is truly the localhost - the local machine. ### IDNA If curl was built with International Domain Name (IDN) support, it can also handle hostnames using non-ASCII characters. When built with libidn2, curl uses the IDNA 2008 standard. This is equivalent to the WHATWG URL spec, but differs from certain browsers that use IDNA 2003 Transitional Processing. The two standards have a huge overlap but differ slightly, perhaps most famously in how they deal with the [German "double s"](https://en.wikipedia.org/wiki/%c3%9f) ([LATIN SMALL LETTER SHARP S](https://codepoints.net/U+00DF)). When WinIDN is used, curl uses IDNA 2003 Transitional Processing, like the rest of Windows. ## Port number If there is a colon after the hostname, that should be followed by the port number to use. 1 - 65535. curl also supports a blank port number field - but only if the URL starts with a scheme. If the port number is not specified in the URL, curl uses a default port number based on the provide scheme: DICT 2628, FTP 21, FTPS 990, GOPHER 70, GOPHERS 70, HTTP 80, HTTPS 443, IMAP 132, IMAPS 993, LDAP 369, LDAPS 636, MQTT 1883, POP3 110, POP3S 995, RTMP 1935, RTMPS 443, RTMPT 80, RTSP 554, SCP 22, SFTP 22, SMB 445, SMBS 445, SMTP 25, SMTPS 465, TELNET 23, TFTP 69 # Scheme specific behaviors ## FTP The path part of an FTP request specifies the file to retrieve and from which directory. If the file part is omitted then libcurl downloads the directory listing for the directory specified. If the directory is omitted then the directory listing for the root / home directory is returned. FTP servers typically put the user in its "home directory" after login, which then differs between users. To explicitly specify the root directory of an FTP server, start the path with double slash `//` or `/%2f` (2F is the hexadecimal value of the ASCII code for the slash). ## FILE When a `FILE://` URL is accessed on Windows systems, it can be crafted in a way so that Windows attempts to connect to a (remote) machine when curl wants to read or write such a path. curl only allows the hostname part of a FILE URL to be one out of these three alternatives: `localhost`, `127.0.0.1` or blank ("", zero characters). Anything else makes curl fail to parse the URL. ### Windows-specific FILE details curl accepts that the FILE URL's path starts with a "drive letter". That is a single letter `a` to `z` followed by a colon or a pipe character (`|`). The Windows operating system itself converts some file accesses to perform network accesses over SMB/CIFS, through several different file path patterns. This way, a `file://` URL passed to curl *might* be converted into a network access inadvertently and unknowingly to curl. This is a Windows feature curl cannot control or disable. ## IMAP The path part of an IMAP request not only specifies the mailbox to list or select, but can also be used to check the `UIDVALIDITY` of the mailbox, to specify the `UID`, `SECTION` and `PARTIAL` octets of the message to fetch and to specify what messages to search for. A top level folder list: imap://user:password@mail.example.com A folder list on the user's inbox: imap://user:password@mail.example.com/INBOX Select the user's inbox and fetch message with `uid = 1`: imap://user:password@mail.example.com/INBOX/;UID=1 Select the user's inbox and fetch the first message in the mail box: imap://user:password@mail.example.com/INBOX/;MAILINDEX=1 Select the user's inbox, check the `UIDVALIDITY` of the mailbox is 50 and fetch message 2 if it is: imap://user:password@mail.example.com/INBOX;UIDVALIDITY=50/;UID=2 Select the user's inbox and fetch the text portion of message 3: imap://user:password@mail.example.com/INBOX/;UID=3/;SECTION=TEXT Select the user's inbox and fetch the first 1024 octets of message 4: imap://user:password@mail.example.com/INBOX/;UID=4/;PARTIAL=0.1024 Select the user's inbox and check for NEW messages: imap://user:password@mail.example.com/INBOX?NEW Select the user's inbox and search for messages containing "shadows" in the subject line: imap://user:password@mail.example.com/INBOX?SUBJECT%20shadows Searching via the query part of the URL `?` is a search request for the results to be returned as message sequence numbers (`MAILINDEX`). It is possible to make a search request for results to be returned as unique ID numbers (`UID`) by using a custom curl request via `-X`. `UID` numbers are unique per session (and multiple sessions when `UIDVALIDITY` is the same). For example, if you are searching for `"foo bar"` in header+body (`TEXT`) and you want the matching `MAILINDEX` numbers returned then you could search via URL: imap://user:password@mail.example.com/INBOX?TEXT%20%22foo%20bar%22 If you want matching `UID` numbers you have to use a custom request: imap://user:password@mail.example.com/INBOX -X "UID SEARCH TEXT \"foo bar\"" For more information about IMAP commands please see RFC 9051. For more information about the individual components of an IMAP URL please see RFC 5092. * Note old curl versions would `FETCH` by message sequence number when `UID` was specified in the URL. That was a bug fixed in 7.62.0, which added `MAILINDEX` to `FETCH` by mail sequence number. ## LDAP The path part of an LDAP request can be used to specify the: Distinguished Name, Attributes, Scope, Filter and Extension for an LDAP search. Each field is separated by a question mark and when that field is not required an empty string with the question mark separator should be included. Search for the `DN` as `My Organization`: ldap://ldap.example.com/o=My%20Organization the same search but only return `postalAddress` attributes: ldap://ldap.example.com/o=My%20Organization?postalAddress Search for an empty `DN` and request information about the `rootDomainNamingContext` attribute for an Active Directory server: ldap://ldap.example.com/?rootDomainNamingContext For more information about the individual components of an LDAP URL please see [RFC 4516](https://datatracker.ietf.org/doc/html/rfc4516). ## POP3 The path part of a POP3 request specifies the message ID to retrieve. If the ID is not specified then a list of waiting messages is returned instead. ## SCP The path part of an SCP URL specifies the path and file to retrieve or upload. The file is taken as an absolute path from the root directory on the server. To specify a path relative to the user's home directory on the server, prepend `~/` to the path portion. ## SFTP The path part of an SFTP URL specifies the file to retrieve or upload. If the path ends with a slash (`/`) then a directory listing is returned instead of a file. If the path is omitted entirely then the directory listing for the root / home directory is returned. ## SMB The path part of an SMB request specifies the file to retrieve and from what share and directory or the share to upload to and as such, may not be omitted. If the username is embedded in the URL then it must contain the domain name and as such, the backslash must be URL encoded as %2f. When uploading to SMB, the size of the file needs to be known ahead of time, meaning that you can upload a file passed to curl over a pipe like stdin. curl supports SMB version 1 (only) ## SMTP The path part of an SMTP request specifies the hostname to present during communication with the mail server. If the path is omitted, then libcurl attempts to resolve the local computer's hostname. However, this may not return the fully qualified domain name that is required by some mail servers and specifying this path allows you to set an alternative name, such as your machine's fully qualified domain name, which you might have obtained from an external function such as gethostname or getaddrinfo. The default smtp port is 25. Some servers use port 587 as an alternative. ## RTMP There is no official URL spec for RTMP so libcurl uses the URL syntax supported by the underlying librtmp library. It has a syntax where it wants a traditional URL, followed by a space and a series of space-separated `name=value` pairs. While space is not typically a "legal" letter, libcurl accepts them. When a user wants to pass in a `#` (hash) character it is treated as a fragment and it gets cut off by libcurl if provided literally. You have to escape it by providing it as backslash and its ASCII value in hexadecimal: `\23`. curl-8.14.1/docs/VERSIONS.md0000644000000000000000000002151415017756261013477 0ustar0000000000000000 Version Numbers and Releases ============================ The command line tool curl and the library libcurl are individually versioned, but they usually follow each other closely. The version numbering is always built up using the same system: X.Y.Z - X is main version number - Y is release number - Z is patch number ## Bumping numbers One of these numbers get bumped in each new release. The numbers to the right of a bumped number are reset to zero. The main version number is bumped when *really* big, world colliding changes are made. The release number is bumped when changes are performed or things/features are added. The patch number is bumped when the changes are mere bugfixes. It means that after release 1.2.3, we can release 2.0.0 if something really big has been made, 1.3.0 if not that big changes were made or 1.2.4 if only bugs were fixed. Bumping, as in increasing the number with 1, is unconditionally only affecting one of the numbers (except the ones to the right of it, that may be set to zero). 1 becomes 2, 3 becomes 4, 9 becomes 10, 88 becomes 89 and 99 becomes 100. So, after 1.2.9 comes 1.2.10. After 3.99.3, 3.100.0 might come. All original curl source release archives are named according to the libcurl version (not according to the curl client version that, as said before, might differ). As a service to any application that might want to support new libcurl features while still being able to build with older versions, all releases have the libcurl version stored in the `curl/curlver.h` file using a static numbering scheme that can be used for comparison. The version number is defined as: ```c #define LIBCURL_VERSION_NUM 0xXXYYZZ ``` Where `XX`, `YY` and `ZZ` are the main version, release and patch numbers in hexadecimal. All three number fields are always represented using two digits (eight bits each). 1.2 would appear as "0x010200" while version 9.11.7 appears as `0x090b07`. This 6-digit hexadecimal number is always a greater number in a more recent release. It makes comparisons with greater than and less than work. This number is also available as three separate defines: `LIBCURL_VERSION_MAJOR`, `LIBCURL_VERSION_MINOR` and `LIBCURL_VERSION_PATCH`. ## Past releases This is a list of all public releases with their version numbers and release dates. The tool was called `httpget` before 2.0, `urlget` before 4.0 then `curl` since 4.0. `libcurl` and `curl` are always released in sync, using the same version numbers. - 8.14.0: pending - 8.13.0: April 2 2025 - 8.12.1: February 13 2025 - 8.12.0: February 5 2025 - 8.11.1: December 11 2024 - 8.11.0: November 6 2024 - 8.10.1: September 18 2024 - 8.10.0: September 11 2024 - 8.9.1: July 31 2024 - 8.9.0: July 24 2024 - 8.8.0: May 22 2024 - 8.7.1: March 27 2024 - 8.7.0: March 27 2024 - 8.6.0: January 31 2024 - 8.5.0: December 6 2023 - 8.4.0: October 11 2023 - 8.3.0: September 13 2023 - 8.2.1: July 26 2023 - 8.2.0: July 19 2023 - 8.1.2: May 30 2023 - 8.1.1: May 23 2023 - 8.1.0: May 17 2023 - 8.0.1: March 20 2023 - 8.0.0: March 20 2023 - 7.88.1: February 20 2023 - 7.88.0: February 15 2023 - 7.87.0: December 21 2022 - 7.86.0: October 26 2022 - 7.85.0: August 31 2022 - 7.84.0: June 27 2022 - 7.83.1: May 11 2022 - 7.83.0: April 27 2022 - 7.82.0: March 5 2022 - 7.81.0: January 5 2022 - 7.80.0: November 10 2021 - 7.79.1: September 22 2021 - 7.79.0: September 15 2021 - 7.78.0: July 21 2021 - 7.77.0: May 26 2021 - 7.76.1: April 14 2021 - 7.76.0: March 31 2021 - 7.75.0: February 3 2021 - 7.74.0: December 9 2020 - 7.73.0: October 14 2020 - 7.72.0: August 19 2020 - 7.71.1: July 1 2020 - 7.71.0: June 24 2020 - 7.70.0: April 29 2020 - 7.69.1: March 11 2020 - 7.69.0: March 4 2020 - 7.68.0: January 8 2020 - 7.67.0: November 6 2019 - 7.66.0: September 11 2019 - 7.65.3: July 19 2019 - 7.65.2: July 17 2019 - 7.65.1: June 5 2019 - 7.65.0: May 22 2019 - 7.64.1: March 27 2019 - 7.64.0: February 6 2019 - 7.63.0: December 12 2018 - 7.62.0: October 31 2018 - 7.61.1: September 5 2018 - 7.61.0: July 11 2018 - 7.60.0: May 16 2018 - 7.59.0: March 14 2018 - 7.58.0: January 24 2018 - 7.57.0: November 29 2017 - 7.56.1: October 23 2017 - 7.56.0: October 4 2017 - 7.55.1: August 14 2017 - 7.55.0: August 9 2017 - 7.54.1: June 14 2017 - 7.54.0: April 19 2017 - 7.53.1: February 24 2017 - 7.53.0: February 22 2017 - 7.52.1: December 23 2016 - 7.52.0: December 21 2016 - 7.51.0: November 2 2016 - 7.50.3: September 14 2016 - 7.50.2: September 7 2016 - 7.50.1: August 3 2016 - 7.50.0: July 21 2016 - 7.49.1: May 30 2016 - 7.49.0: May 18 2016 - 7.48.0: March 23 2016 - 7.47.1: February 8 2016 - 7.47.0: January 27 2016 - 7.46.0: December 2 2015 - 7.45.0: October 7 2015 - 7.44.0: August 12 2015 - 7.43.0: June 17 2015 - 7.42.1: April 29 2015 - 7.42.0: April 22 2015 - 7.41.0: February 25 2015 - 7.40.0: January 8 2015 - 7.39.0: November 5 2014 - 7.38.0: September 10 2014 - 7.37.1: July 16 2014 - 7.37.0: May 21 2014 - 7.36.0: March 26 2014 - 7.35.0: January 29 2014 - 7.34.0: December 17 2013 - 7.33.0: October 14 2013 - 7.32.0: August 12 2013 - 7.31.0: June 22 2013 - 7.30.0: April 12 2013 - 7.29.0: February 6 2013 - 7.28.1: November 20 2012 - 7.28.0: October 10 2012 - 7.27.0: July 27 2012 - 7.26.0: May 24 2012 - 7.25.0: March 22 2012 - 7.24.0: January 24 2012 - 7.23.1: November 17 2011 - 7.23.0: November 15 2011 - 7.22.0: September 13 2011 - 7.21.7: June 23 2011 - 7.21.6: April 22 2011 - 7.21.5: April 17 2011 - 7.21.4: February 17 2011 - 7.21.3: December 15 2010 - 7.21.2: October 13 2010 - 7.21.1: August 11 2010 - 7.21.0: June 16 2010 - 7.20.1: April 14 2010 - 7.20.0: February 9 2010 - 7.19.7: November 4 2009 - 7.19.6: August 12 2009 - 7.19.5: May 18 2009 - 7.19.4: March 3 2009 - 7.19.3: January 19 2009 - 7.19.2: November 13 2008 - 7.19.1: November 5 2008 - 7.19.0: September 1 2008 - 7.18.2: June 4 2008 - 7.18.1: March 30 2008 - 7.18.0: January 28 2008 - 7.17.1: October 29 2007 - 7.17.0: September 13 2007 - 7.16.4: July 10 2007 - 7.16.3: June 25 2007 - 7.16.2: April 11 2007 - 7.16.1: January 29 2007 - 7.16.0: October 30 2006 - 7.15.5: August 7 2006 - 7.15.4: June 12 2006 - 7.15.3: March 20 2006 - 7.15.2: February 27 2006 - 7.15.1: December 7 2005 - 7.15.0: October 13 2005 - 7.14.1: September 1 2005 - 7.14.0: May 16 2005 - 7.13.2: April 4 2005 - 7.13.1: March 4 2005 - 7.13.0: February 1 2005 - 7.12.3: December 20 2004 - 7.12.2: October 18 2004 - 7.12.1: August 10 2004 - 7.12.0: June 2 2004 - 7.11.2: April 26 2004 - 7.11.1: March 19 2004 - 7.11.0: January 22 2004 - 7.10.8: November 1 2003 - 7.10.7: August 15 2003 - 7.10.6: July 28 2003 - 7.10.5: May 19 2003 - 7.10.4: April 2 2003 - 7.10.3: January 14 2003 - 7.10.2: November 18 2002 - 7.10.1: October 11 2002 - 7.10: October 1 2002 - 7.9.8: June 13 2002 - 7.9.7: May 10 2002 - 7.9.6: April 14 2002 - 7.9.5: March 7 2002 - 7.9.4: March 4 2002 - 7.9.3: January 23 2002 - 7.9.2: December 5 2001 - 7.9.1: November 4 2001 - 7.9: September 23 2001 - 7.8.1: August 20 2001 - 7.8: June 7 2001 - 7.7.3: May 4 2001 - 7.7.2: April 22 2001 - 7.7.1: April 3 2001 - 7.7: March 22 2001 - 7.6.1: February 9 2001 - 7.6: January 26 2001 - 7.5.2: January 4 2001 - 7.5.1: December 11 2000 - 7.5: December 1 2000 - 7.4.2: November 15 2000 - 7.4.1: October 16 2000 - 7.4: October 16 2000 - 7.3: September 28 2000 - 7.2.1: August 31 2000 - 7.2: August 30 2000 - 7.1.1: August 21 2000 - 7.1: August 7 2000 - 6.5.2: March 21 2000 - 6.5.1: March 20 2000 - 6.5: March 13 2000 - 6.4: January 17 2000 - 6.3.1: November 23 1999 - 6.3: November 10 1999 - 6.2: October 21 1999 - 6.1: October 17 1999 - 6.0: September 13 1999 - 5.11: August 25 1999 - 5.10: August 13 1999 - 5.9.1: July 30 1999 - 5.9: May 22 1999 - 5.8: May 5 1999 - 5.7.1: April 23 1999 - 5.7: April 20 1999 - 5.5.1: January 27 1999 - 5.5: January 15 1999 - 5.4: January 7 1999 - 5.3: December 21 1998 - 5.2.1: December 14 1998 - 5.2: December 14 1998 - 5.0: December 1 1998 - 4.10: October 26 1998 - 4.9: October 7 1998 - 4.8.4: September 20 1998 - 4.8.3: September 7 1998 - 4.8.2: August 14 1998 - 4.8.1: August 7 1998 - 4.8: July 30 1998 - 4.7: July 20 1998 - 4.6: July 3 1998 - 4.5.1: June 12 1998 - 4.5: May 30 1998 - 4.4: May 13 1998 - 4.3: April 30 1998 - 4.2: April 15 1998 - 4.1: April 3 1998 - 4.0: March 20 1998 - 3.12: March 14 1998 - 3.11: February 9 1998 - 3.10: February 4 1998 - 3.9: February 4 1998 - 3.7: January 15 1998 - 3.6: January 1 1998 - 3.5: December 15 1997 - 3.2: December 1 1997 - 3.1: November 24 1997 - 3.0: November 1 1997 - 2.9: October 15 1997 - 2.8: October 1 1997 - 2.7: September 20 1997 - 2.6: September 10 1997 - 2.5: September 1 1997 - 2.4: August 27 1997 - 2.3: August 21 1997 - 2.2: August 14 1997 - 2.1: August 10 1997 - 2.0: August 1 1997 - 1.5: July 21 1997 - 1.4: July 15 1997 - 1.3: June 1 1997 - 1.2: May 1 1997 - 1.1: April 20 1997 - 1.0: April 8 1997 - 0.3: February 1 1997 - 0.2: December 17 1996 - 0.1: November 11 1996 curl-8.14.1/docs/VULN-DISCLOSURE-POLICY.md0000644000000000000000000003531415017756261015465 0ustar0000000000000000 # curl vulnerability disclosure policy This document describes how security vulnerabilities are handled in the curl project. ## Publishing Information All known and public curl or libcurl related vulnerabilities are listed on [the curl website security page](https://curl.se/docs/security.html). Security vulnerabilities **should not** be entered in the project's public bug tracker. ## Vulnerability Handling The typical process for handling a new security vulnerability is as follows. No information should be made public about a vulnerability until it is formally announced at the end of this process. That means, for example, that a bug tracker entry must NOT be created to track the issue since that makes the issue public and it should not be discussed on any of the project's public mailing lists. Messages associated with any commits should not make any reference to the security nature of the commit if done prior to the public announcement. - The person discovering the issue, the reporter, reports the vulnerability on [HackerOne](https://hackerone.com/curl). Issues filed there reach a handful of selected and trusted people. - Messages that do not relate to the reporting or managing of an undisclosed security vulnerability in curl or libcurl are ignored and no further action is required. - A person in the security team responds to the original report to acknowledge that a human has seen the report. - The security team investigates the report and either rejects it or accepts it. See below for examples of problems that are not considered vulnerabilities. - If the report is rejected, the team writes to the reporter to explain why. - If the report is accepted, the team writes to the reporter to let them know it is accepted and that they are working on a fix. - The security team discusses the problem, works out a fix, considers the impact of the problem and suggests a release schedule. This discussion should involve the reporter as much as possible. - The release of the information should be "as soon as possible" and is most often synchronized with an upcoming release that contains the fix. If the reporter, or anyone else involved, thinks the next planned release is too far away, then a separate earlier release should be considered. - Write a security advisory draft about the problem that explains what the problem is, its impact, which versions it affects, solutions or workarounds, when the release is out and make sure to credit all contributors properly. Figure out the CWE (Common Weakness Enumeration) number for the flaw. See [SECURITY-ADVISORY](https://curl.se/dev/advisory.html) for help on creating the advisory. - Request a CVE Id for the issue. curl is a CNA (CVE Numbering Authority) and can request its own numbers. - Update the "security advisory" with the CVE number. - The security team commits the fix in a private branch. The commit message should ideally contain the CVE number. If the severity level of the issue is set to Low or Medium, the fix is allowed to get merged into the master repository via a normal PR - but without mentioning it being a security vulnerability. - The monetary reward part of the bug-bounty is managed by the Internet Bug Bounty team and the reporter is asked to request the reward from them after the issue has been completely handled and published by curl. - No more than seven days before release, inform [distros@openwall](https://oss-security.openwall.org/wiki/mailing-lists/distros) to prepare them about the upcoming public security vulnerability announcement - attach the advisory draft for information with CVE and current patch. 'distros' does not accept an embargo longer than 14 days and they do not care for Windows-specific flaws. - No more than 48 hours before the release, the private branch is merged into the master branch and pushed. Once pushed, the information is accessible to the public and the actual release should follow suit immediately afterwards. The time between the push and the release is used for final tests and reviews. - The project team creates a release that includes the fix. - The project team announces the release and the vulnerability to the world in the same manner we always announce releases. It gets sent to the curl-announce, curl-library and curl-users mailing lists. - The security webpage on the website should get the new vulnerability mentioned. ## security (at curl dot se) This is a private mailing list for discussions on and about curl security issues. Who is on this list? There are a couple of criteria you must meet, and then we might ask you to join the list or you can ask to join it. It really is not a formal process. We basically only require that you have a long-term presence in the curl project and you have shown an understanding for the project and its way of working. You must have been around for a good while and you should have no plans of vanishing in the near future. We do not make the list of participants public mostly because it tends to vary somewhat over time and a list somewhere only risks getting outdated. ## Publishing Security Advisories 1. Write up the security advisory, using markdown syntax. Use the same subtitles as last time to maintain consistency. 2. Name the advisory file after the allocated CVE id. 3. Add a line on the top of the array in `curl-www/docs/vuln.pm`. 4. Put the new advisory markdown file in the `curl-www/docs/` directory. Add it to the git repository. 5. Run `make` in your local web checkout and verify that things look fine. 6. On security advisory release day, push the changes on the curl-www repository's remote master branch. ## HackerOne Request the issue to be disclosed. If there are sensitive details present in the report and discussion, those should be redacted from the disclosure. The default policy is to disclose as much as possible as soon as the vulnerability has been published. ## Bug Bounty See [BUG-BOUNTY](https://curl.se/docs/bugbounty.html) for details on the bug bounty program. # Severity levels The curl project's security team rates security problems using four severity levels depending how serious we consider the problem to be. We use **Low**, **Medium**, **High** and **Critical**. We refrain from using numerical scoring of vulnerabilities. We do not support CVSS as a method to grade security vulnerabilities, so we do not set them for CVE records published by the curl project. We believe CVSS is a broken system that often does not properly evaluate to suitable severity levels that reflect all dimensions and factors involved. Other organizations however set and provide CVSS scores for curl vulnerabilities. You need to decide for yourself if you believe they know enough about the subjects involved to make reasonable assessments. Deciding between four different severity levels is hard enough for us. When deciding severity level on a particular issue, we take all the factors into account: attack vector, attack complexity, required privileges, necessary build configuration, protocols involved, platform specifics and also what effects a possible exploit or trigger of the issue can lead do, including confidentiality, integrity or availability problems. ## Low This is a security problem that is truly hard or unlikely to exploit or trigger. Due to timing, platform requirements or the fact that options or protocols involved are rare etc. [Past example](https://curl.se/docs/CVE-2022-43552.html) ## Medium This is a security problem that is less hard than **Low** to exploit or trigger. Less strict timing, wider platforms availability or involving more widely used options or protocols. A problem that usually needs something else to also happen to become serious. [Past example](https://curl.se/docs/CVE-2022-32206.html) ## High This issue in itself a serious problem with real world impact. Flaws that can easily compromise the confidentiality, integrity or availability of resources. Exploiting or triggering this problem is not hard. [Past example](https://curl.se/docs/CVE-2019-3822.html) ## Critical Easily exploitable by a remote unauthenticated attacker and lead to system compromise (arbitrary code execution) without requiring user interaction, with a common configuration on a popular platform. This issue has few restrictions and requirements and can be exploited easily using most curl configurations. [Past example](https://curl.se/docs/CVE-2000-0973.html) # Not security issues This is an incomplete list of issues that are not considered vulnerabilities. ## Small memory leaks We do not consider a small memory leak a security problem; even if the amount of allocated memory grows by a small amount every now and then. Long-living applications and services already need to have counter-measures and deal with growing memory usage, be it leaks or just increased use. A small memory or resource leak is then expected to *not* cause a security problem. Of course there can be a discussion if a leak is small or not. A large leak can be considered a security problem due to the DOS risk. If leaked memory contains sensitive data it might also qualify as a security problem. ## Never-ending transfers We do not consider flaws that cause a transfer to never end to be a security problem. There are already several benign and likely reasons for transfers to stall and never end, so applications that cannot deal with never-ending transfers already need to have counter-measures established. If the problem avoids the regular counter-measures when it causes a never- ending transfer, it might be a security problem. ## Not practically possible If the flaw or vulnerability cannot practically get executed on existing hardware it is not a security problem. ## API misuse If a reported issue only triggers by an application using the API in a way that is not documented to work or even documented to not work, it is probably not going to be considered a security problem. We only guarantee secure and proper functionality when the APIs are used as expected and documented. There can be a discussion about what the documentation actually means and how to interpret the text, which might end up with us still agreeing that it is a security problem. ## Local attackers already present When an issue can only be attacked or misused by an attacker present on the local system or network, the bar is raised. If a local user wrongfully has elevated rights on your system enough to attack curl, they can probably already do much worse harm and the problem is not really in curl. ## Debug & Experiments Vulnerabilities in features which are off by default (in the build) and documented as experimental, or exist only in debug mode, are not eligible for a reward and we do not consider them security problems. ## URL inconsistencies URL parser inconsistencies between browsers and curl are expected and are not considered security vulnerabilities. The WHATWG URL Specification and RFC 3986+ (the plus meaning that it is an extended version) [are not completely interoperable](https://github.com/bagder/docs/blob/master/URL-interop.md). Obvious parser bugs can still be vulnerabilities of course. ## Visible command line arguments The curl command blanks the contents of a number of command line arguments to prevent them from appearing in process listings. It does not blank all arguments even if some of them that are not blanked might contain sensitive data. We consider this functionality a best-effort and omissions are not security vulnerabilities. - not all systems allow the arguments to be blanked in the first place - since curl blanks the argument itself they are readable for a short moment no matter what - virtually every argument can contain sensitive data, depending on use - blanking all arguments would make it impractical for users to differentiate curl command lines in process listings ## Busy-loops Busy-loops that consume 100% CPU time but eventually end (perhaps due to a set timeout value or otherwise) are not considered security problems. Applications are supposed to already handle situations when the transfer loop legitimately consumes 100% CPU time, so while a prolonged such busy-loop is a nasty bug, we do not consider it a security problem. ## Saving files curl cannot protect against attacks where an attacker has write access to the same directory where curl is directed to save files. ## Tricking a user to run a command line A creative, misleading or funny looking command line is not a security problem. The curl command line tool takes options and URLs on the command line and if an attacker can trick the user to run a specifically crafted curl command line, all bets are off. Such an attacker can just as well have the user run a much worse command that can do something fatal (like `sudo rm -rf /`). ## Terminal output and escape sequences Content that is transferred from a server and gets displayed in a terminal by curl may contain escape sequences or use other tricks to fool the user. This is curl working as designed and is not a curl security problem. Escape sequences, moving cursor, changing color etc, is also frequently used for good. To reduce the risk of getting fooled, save files and browse them after download using a display method that minimizes risks. ## NULL dereferences and crashes If a malicious server can trigger a NULL dereference in curl or otherwise cause curl to crash (and nothing worse), chances are big that we do not consider that a security problem. Malicious servers can already cause considerable harm and denial of service like scenarios without having to trigger such code paths. For example by stalling, being terribly slow or by delivering enormous amounts of data. Additionally, applications are expected to handle "normal" crashes without that being the end of the world. There need to be more and special circumstances to treat such problems as security issues. ## Legacy dependencies Problems that can be triggered only by the use of a *legacy dependency* are not considered security problems. A *legacy dependency* is here defined as: - the legacy version was released over ten years ago AND - the legacy version is no longer in use by any existing still supported operating system or distribution AND - there are modern versions of equivalent or better functionality offered and in common use ## weak algorithms required for functionality curl supports several algorithms that are considered weak, like DES and MD5. These algorithms are still not curl security vulnerabilities or security problems as they are only used when the users explicitly ask for their use by using the protocols or options that require the use of those algorithms. When servers upgrade to use secure alternatives, curl users should use those options/protocols. curl-8.14.1/docs/cmdline-opts/0000755000000000000000000000000015017756261014300 5ustar0000000000000000curl-8.14.1/docs/cmdline-opts/CMakeLists.txt0000644000000000000000000000336715017756261017051 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Get 'DPAGES' variable curl_transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake") include("${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake") add_custom_command(OUTPUT "${CURL_MANPAGE}" "${CURL_ASCIIPAGE}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND "${PERL_EXECUTABLE}" "${PROJECT_SOURCE_DIR}/scripts/managen" mainpage ${DPAGES} > "${CURL_MANPAGE}" COMMAND "${PERL_EXECUTABLE}" "${PROJECT_SOURCE_DIR}/scripts/managen" ascii ${DPAGES} > "${CURL_ASCIIPAGE}" DEPENDS "${PROJECT_SOURCE_DIR}/scripts/managen" ${DPAGES} VERBATIM ) add_custom_target(generate-curl.1 ALL DEPENDS "${CURL_MANPAGE}") if(NOT CURL_DISABLE_INSTALL) install(FILES "${CURL_MANPAGE}" DESTINATION "${CMAKE_INSTALL_MANDIR}/man1") endif() curl-8.14.1/docs/cmdline-opts/MANPAGE.md0000644000000000000000000000760315017756261015700 0ustar0000000000000000 # curl man page generator `managen` is the curl man page generator. It generates a single nroff man page output from the set of sources files in this directory. The `mainpage.idx` file lists all files that are rendered in that order to produce the output. The magic `%options` keyword inserts all command line options documented. The `%options` documentation is created with one source file for each supported command line option. The documentation file format is described below. It is meant to look similar to markdown which is why it uses `.md` file extensions. ## Option files Each command line option is described in a file named `.d`, where option name is written without any prefixing dashes. Like the filename for the `-v, --verbose` option is named `verbose.d`. Each file has a set of meta-data in the top of the file, followed by a body of text. The documentation files that do not document options have no meta-data part. A line that starts with ``. ### Meta-data --- (start of meta-data) Added: (version number in which this was added) Arg: (the argument the option takes) c: (copyright line) Example: - (an example command line, without "curl" and can use `$URL`) - (another example) Experimental: yes (if so) Help: (short text for the --help output for this option) Long: (long form name, without dashes) Magic: (description of "magic" options) Multi: single/append/boolean/mutex/custom/per-URL (if used more than once) Mutexed: (space separated list of options this overrides, no dashes) Protocols: (space separated list for which protocols this option works) Requires: (space separated list of features this requires, no dashes) Scope: global (if the option is global) See-also: - (a related option, no dashes) - (another related option, no dashes) Short: (single letter, without dash) SPDX-License-Identifier: curl Tags: (space separated list) --- (end of meta-data) ### Body The body of the description. Only refer to options with their long form option version, like `--verbose`. The output generator replaces such option with the correct markup that shows both short and long version. Text written within `*asterisks*` is shown using italics. Text within two `**asterisks**` is shown using bold. Text that is prefixed with a space is treated like an "example" and gets output in monospace. Within the body, describe a list of items like this: ## item 1 description ## item 2 second description The list is automatically terminated at end of file, or you can do it explicitly with an empty "header": ## Angle brackets (`<>`) need to be escaped when used in text like `\<` and `\>`. This, to ensure that the text renders nicely as markdown. ### Headers The `#` header can be used by non-option files and it produces a `.SH` output. If the `#` header is used for a command line option file, that header is simply ignored in the generated output. It can still serve a purpose in the source file as it helps the user identify what option the file is for. ### Variables There are three different "variables" that can be used when creating the output. They need to be written within backticks in the source file (to escape getting spellchecked by CI jobs): `%DATE`, `%VERSION` and `%GLOBALS`. ## Generate `managen mainpage [list of markdown option file names]` This command outputs a single huge nroff file, meant to become `curl.1`. The full curl man page. `managen ascii [list of markdown option file names]` This command outputs a single text file, meant to become `curl.txt`. The full curl man page in text format, used to build `tool_hugehelp.c`. `managen listhelp` Generates a full `curl --help` output for all known command line options. curl-8.14.1/docs/cmdline-opts/Makefile.am0000644000000000000000000000412715017756261016340 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### AUTOMAKE_OPTIONS = foreign no-dependencies MANPAGE = curl.1 ASCIIPAGE = curl.txt include Makefile.inc EXTRA_DIST = $(DPAGES) MANPAGE.md $(SUPPORT) CMakeLists.txt mainpage.idx GEN = $(GN_$(V)) GN_0 = @echo " GENERATE" $@; GN_1 = GN_ = $(GN_0) MANAGEN=$(top_srcdir)/scripts/managen MAXLINE=$(top_srcdir)/scripts/maxline # Maximum number of columns accepted in the ASCII version of the manpage INCDIR=$(top_srcdir)/include if BUILD_DOCS CLEANFILES = $(MANPAGE) $(ASCIIPAGE) man_MANS = $(MANPAGE) all: $(MANPAGE) $(ASCIIPAGE) endif $(MANPAGE): $(DPAGES) $(SUPPORT) mainpage.idx Makefile.inc $(MANAGEN) $(GEN)(rm -f $(MANPAGE) && @PERL@ $(MANAGEN) -d $(srcdir) -I $(INCDIR) mainpage $(DPAGES) > manpage.tmp.$$$$ && mv manpage.tmp.$$$$ $(MANPAGE)) $(ASCIIPAGE): $(DPAGES) $(SUPPORT) mainpage.idx Makefile.inc $(MANAGEN) $(GEN)(rm -f $(ASCIIPAGE) && @PERL@ $(MANAGEN) -d $(srcdir) -I $(INCDIR) ascii $(DPAGES) > asciipage.tmp.$$$$ && mv asciipage.tmp.$$$$ $(ASCIIPAGE)) listhelp: $(MANAGEN) -d $(srcdir) listhelp $(DPAGES) > $(top_builddir)/src/tool_listhelp.c listcats: @$(MANAGEN) listcats $(DPAGES) curl-8.14.1/docs/cmdline-opts/Makefile.in0000644000000000000000000006314315017756261016354 0ustar0000000000000000# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 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) 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. # # SPDX-License-Identifier: curl # ########################################################################### #*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Shared between Makefile.am and CMakeLists.txt 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 = docs/cmdline-opts ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \ $(top_srcdir)/m4/curl-bearssl.m4 \ $(top_srcdir)/m4/curl-compilers.m4 \ $(top_srcdir)/m4/curl-confopts.m4 \ $(top_srcdir)/m4/curl-functions.m4 \ $(top_srcdir)/m4/curl-gnutls.m4 \ $(top_srcdir)/m4/curl-mbedtls.m4 \ $(top_srcdir)/m4/curl-openssl.m4 \ $(top_srcdir)/m4/curl-override.m4 \ $(top_srcdir)/m4/curl-reentrant.m4 \ $(top_srcdir)/m4/curl-rustls.m4 \ $(top_srcdir)/m4/curl-schannel.m4 \ $(top_srcdir)/m4/curl-sectransp.m4 \ $(top_srcdir)/m4/curl-sysconfig.m4 \ $(top_srcdir)/m4/curl-wolfssl.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-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 $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/lib/curl_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = 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 = depcomp = am__maybe_remake_depfiles = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac 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; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" NROFF = nroff MANS = $(man_MANS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.inc DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APXS = @APXS@ AR = @AR@ AR_FLAGS = @AR_FLAGS@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BLANK_AT_MAKETIME = @BLANK_AT_MAKETIME@ CADDY = @CADDY@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@ CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CURLVERSION = @CURLVERSION@ CURL_CA_BUNDLE = @CURL_CA_BUNDLE@ CURL_CA_EMBED = @CURL_CA_EMBED@ CURL_CFLAG_EXTRAS = @CURL_CFLAG_EXTRAS@ CURL_CPP = @CURL_CPP@ CURL_LIBCURL_VERSIONED_SYMBOLS_PREFIX = @CURL_LIBCURL_VERSIONED_SYMBOLS_PREFIX@ CURL_LIBCURL_VERSIONED_SYMBOLS_SONAME = @CURL_LIBCURL_VERSIONED_SYMBOLS_SONAME@ CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@ CYGPATH_W = @CYGPATH_W@ 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@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@ GCOV = @GCOV@ GREP = @GREP@ HAVE_LIBZ = @HAVE_LIBZ@ HTTPD = @HTTPD@ HTTPD_NGHTTPX = @HTTPD_NGHTTPX@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBCURL_PC_CFLAGS = @LIBCURL_PC_CFLAGS@ LIBCURL_PC_CFLAGS_PRIVATE = @LIBCURL_PC_CFLAGS_PRIVATE@ LIBCURL_PC_LDFLAGS_PRIVATE = @LIBCURL_PC_LDFLAGS_PRIVATE@ LIBCURL_PC_LIBS = @LIBCURL_PC_LIBS@ LIBCURL_PC_LIBS_PRIVATE = @LIBCURL_PC_LIBS_PRIVATE@ LIBCURL_PC_REQUIRES = @LIBCURL_PC_REQUIRES@ LIBCURL_PC_REQUIRES_PRIVATE = @LIBCURL_PC_REQUIRES_PRIVATE@ 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@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ 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@ PKGCONFIG = @PKGCONFIG@ RANLIB = @RANLIB@ RC = @RC@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SSL_BACKENDS = @SSL_BACKENDS@ STRIP = @STRIP@ SUPPORT_FEATURES = @SUPPORT_FEATURES@ SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@ TEST_NGHTTPX = @TEST_NGHTTPX@ VERSION = @VERSION@ VERSIONNUM = @VERSIONNUM@ VSFTPD = @VSFTPD@ 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@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign no-dependencies MANPAGE = curl.1 ASCIIPAGE = curl.txt SUPPORT = \ _AUTHORS.md \ _BUGS.md \ _DESCRIPTION.md \ _ENVIRONMENT.md \ _EXITCODES.md \ _FILES.md \ _GLOBBING.md \ _NAME.md \ _OPTIONS.md \ _OUTPUT.md \ _PROGRESS.md \ _PROTOCOLS.md \ _PROXYPREFIX.md \ _SEEALSO.md \ _SYNOPSIS.md \ _URL.md \ _VARIABLES.md \ _VERSION.md \ _WWW.md DPAGES = \ abstract-unix-socket.md \ alt-svc.md \ anyauth.md \ append.md \ aws-sigv4.md \ basic.md \ ca-native.md \ cacert.md \ capath.md \ cert-status.md \ cert-type.md \ cert.md \ ciphers.md \ compressed-ssh.md \ compressed.md \ config.md \ connect-timeout.md \ connect-to.md \ continue-at.md \ cookie-jar.md \ cookie.md \ create-dirs.md \ create-file-mode.md \ crlf.md \ crlfile.md \ curves.md \ data-ascii.md \ data-binary.md \ data-raw.md \ data-urlencode.md \ data.md \ delegation.md \ digest.md \ disable-eprt.md \ disable-epsv.md \ disable.md \ disallow-username-in-url.md \ dns-interface.md \ dns-ipv4-addr.md \ dns-ipv6-addr.md \ dns-servers.md \ doh-cert-status.md \ doh-insecure.md \ doh-url.md \ dump-ca-embed.md \ dump-header.md \ ech.md \ egd-file.md \ engine.md \ etag-compare.md \ etag-save.md \ expect100-timeout.md \ fail-early.md \ fail-with-body.md \ fail.md \ false-start.md \ form-escape.md \ form-string.md \ form.md \ ftp-account.md \ ftp-alternative-to-user.md \ ftp-create-dirs.md \ ftp-method.md \ ftp-pasv.md \ ftp-port.md \ ftp-pret.md \ ftp-skip-pasv-ip.md \ ftp-ssl-ccc-mode.md \ ftp-ssl-ccc.md \ ftp-ssl-control.md \ get.md \ globoff.md \ happy-eyeballs-timeout-ms.md \ haproxy-protocol.md \ haproxy-clientip.md \ head.md \ header.md \ help.md \ hostpubmd5.md \ hostpubsha256.md \ hsts.md \ http0.9.md \ http1.0.md \ http1.1.md \ http2-prior-knowledge.md \ http2.md \ http3.md \ http3-only.md \ ignore-content-length.md \ insecure.md \ interface.md \ ip-tos.md \ ipfs-gateway.md \ ipv4.md \ ipv6.md \ json.md \ junk-session-cookies.md \ keepalive-cnt.md \ keepalive-time.md \ key-type.md \ key.md \ krb.md \ libcurl.md \ limit-rate.md \ list-only.md \ local-port.md \ location-trusted.md \ location.md \ login-options.md \ mail-auth.md \ mail-from.md \ mail-rcpt-allowfails.md \ mail-rcpt.md \ manual.md \ max-filesize.md \ max-redirs.md \ max-time.md \ metalink.md \ mptcp.md \ negotiate.md \ netrc-file.md \ netrc-optional.md \ netrc.md \ next.md \ no-alpn.md \ no-buffer.md \ no-clobber.md \ no-keepalive.md \ no-npn.md \ no-progress-meter.md \ no-sessionid.md \ noproxy.md \ ntlm-wb.md \ ntlm.md \ oauth2-bearer.md \ output-dir.md \ output.md \ parallel-immediate.md \ parallel-max.md \ parallel.md \ pass.md \ path-as-is.md \ pinnedpubkey.md \ post301.md \ post302.md \ post303.md \ preproxy.md \ progress-bar.md \ proto-default.md \ proto-redir.md \ proto.md \ proxy-anyauth.md \ proxy-basic.md \ proxy-ca-native.md \ proxy-cacert.md \ proxy-capath.md \ proxy-cert-type.md \ proxy-cert.md \ proxy-ciphers.md \ proxy-crlfile.md \ proxy-digest.md \ proxy-header.md \ proxy-http2.md \ proxy-insecure.md \ proxy-key-type.md \ proxy-key.md \ proxy-negotiate.md \ proxy-ntlm.md \ proxy-pass.md \ proxy-pinnedpubkey.md \ proxy-service-name.md \ proxy-ssl-allow-beast.md \ proxy-ssl-auto-client-cert.md \ proxy-tls13-ciphers.md \ proxy-tlsauthtype.md \ proxy-tlspassword.md \ proxy-tlsuser.md \ proxy-tlsv1.md \ proxy-user.md \ proxy.md \ proxy1.0.md \ proxytunnel.md \ pubkey.md \ quote.md \ random-file.md \ range.md \ rate.md \ raw.md \ referer.md \ remote-header-name.md \ remote-name-all.md \ remote-name.md \ remote-time.md \ remove-on-error.md \ request-target.md \ request.md \ resolve.md \ retry-all-errors.md \ retry-connrefused.md \ retry-delay.md \ retry-max-time.md \ retry.md \ sasl-authzid.md \ sasl-ir.md \ service-name.md \ show-error.md \ show-headers.md \ silent.md \ sigalgs.md \ skip-existing.md \ socks4.md \ socks4a.md \ socks5-basic.md \ socks5-gssapi-nec.md \ socks5-gssapi-service.md \ socks5-gssapi.md \ socks5-hostname.md \ socks5.md \ speed-limit.md \ speed-time.md \ ssl-allow-beast.md \ ssl-auto-client-cert.md \ ssl-no-revoke.md \ ssl-reqd.md \ ssl-revoke-best-effort.md \ ssl-sessions.md \ ssl.md \ sslv2.md \ sslv3.md \ stderr.md \ styled-output.md \ suppress-connect-headers.md \ tcp-fastopen.md \ tcp-nodelay.md \ telnet-option.md \ tftp-blksize.md \ tftp-no-options.md \ time-cond.md \ tls-earlydata.md \ tls-max.md \ tls13-ciphers.md \ tlsauthtype.md \ tlspassword.md \ tlsuser.md \ tlsv1.0.md \ tlsv1.1.md \ tlsv1.2.md \ tlsv1.3.md \ tlsv1.md \ tr-encoding.md \ trace-ascii.md \ trace-config.md \ trace-ids.md \ trace-time.md \ trace.md \ unix-socket.md \ upload-file.md \ upload-flags.md \ url.md \ url-query.md \ use-ascii.md \ user-agent.md \ user.md \ variable.md \ verbose.md \ version.md \ vlan-priority.md \ write-out.md \ xattr.md EXTRA_DIST = $(DPAGES) MANPAGE.md $(SUPPORT) CMakeLists.txt mainpage.idx GEN = $(GN_$(V)) GN_0 = @echo " GENERATE" $@; GN_1 = GN_ = $(GN_0) MANAGEN = $(top_srcdir)/scripts/managen MAXLINE = $(top_srcdir)/scripts/maxline # Maximum number of columns accepted in the ASCII version of the manpage INCDIR = $(top_srcdir)/include @BUILD_DOCS_TRUE@CLEANFILES = $(MANPAGE) $(ASCIIPAGE) @BUILD_DOCS_TRUE@man_MANS = $(MANPAGE) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/cmdline-opts/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign docs/cmdline-opts/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(srcdir)/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man1: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @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 check-am: all-am check: check-am all-am: Makefile $(MANS) installdirs: for dir in "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am 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-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man1 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-man uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man1 install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags-am uninstall uninstall-am uninstall-man \ uninstall-man1 .PRECIOUS: Makefile @BUILD_DOCS_TRUE@all: $(MANPAGE) $(ASCIIPAGE) $(MANPAGE): $(DPAGES) $(SUPPORT) mainpage.idx Makefile.inc $(MANAGEN) $(GEN)(rm -f $(MANPAGE) && @PERL@ $(MANAGEN) -d $(srcdir) -I $(INCDIR) mainpage $(DPAGES) > manpage.tmp.$$$$ && mv manpage.tmp.$$$$ $(MANPAGE)) $(ASCIIPAGE): $(DPAGES) $(SUPPORT) mainpage.idx Makefile.inc $(MANAGEN) $(GEN)(rm -f $(ASCIIPAGE) && @PERL@ $(MANAGEN) -d $(srcdir) -I $(INCDIR) ascii $(DPAGES) > asciipage.tmp.$$$$ && mv asciipage.tmp.$$$$ $(ASCIIPAGE)) listhelp: $(MANAGEN) -d $(srcdir) listhelp $(DPAGES) > $(top_builddir)/src/tool_listhelp.c listcats: @$(MANAGEN) listcats $(DPAGES) # 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: curl-8.14.1/docs/cmdline-opts/Makefile.inc0000644000000000000000000001430015017756261016506 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### # Shared between Makefile.am and CMakeLists.txt SUPPORT = \ _AUTHORS.md \ _BUGS.md \ _DESCRIPTION.md \ _ENVIRONMENT.md \ _EXITCODES.md \ _FILES.md \ _GLOBBING.md \ _NAME.md \ _OPTIONS.md \ _OUTPUT.md \ _PROGRESS.md \ _PROTOCOLS.md \ _PROXYPREFIX.md \ _SEEALSO.md \ _SYNOPSIS.md \ _URL.md \ _VARIABLES.md \ _VERSION.md \ _WWW.md DPAGES = \ abstract-unix-socket.md \ alt-svc.md \ anyauth.md \ append.md \ aws-sigv4.md \ basic.md \ ca-native.md \ cacert.md \ capath.md \ cert-status.md \ cert-type.md \ cert.md \ ciphers.md \ compressed-ssh.md \ compressed.md \ config.md \ connect-timeout.md \ connect-to.md \ continue-at.md \ cookie-jar.md \ cookie.md \ create-dirs.md \ create-file-mode.md \ crlf.md \ crlfile.md \ curves.md \ data-ascii.md \ data-binary.md \ data-raw.md \ data-urlencode.md \ data.md \ delegation.md \ digest.md \ disable-eprt.md \ disable-epsv.md \ disable.md \ disallow-username-in-url.md \ dns-interface.md \ dns-ipv4-addr.md \ dns-ipv6-addr.md \ dns-servers.md \ doh-cert-status.md \ doh-insecure.md \ doh-url.md \ dump-ca-embed.md \ dump-header.md \ ech.md \ egd-file.md \ engine.md \ etag-compare.md \ etag-save.md \ expect100-timeout.md \ fail-early.md \ fail-with-body.md \ fail.md \ false-start.md \ form-escape.md \ form-string.md \ form.md \ ftp-account.md \ ftp-alternative-to-user.md \ ftp-create-dirs.md \ ftp-method.md \ ftp-pasv.md \ ftp-port.md \ ftp-pret.md \ ftp-skip-pasv-ip.md \ ftp-ssl-ccc-mode.md \ ftp-ssl-ccc.md \ ftp-ssl-control.md \ get.md \ globoff.md \ happy-eyeballs-timeout-ms.md \ haproxy-protocol.md \ haproxy-clientip.md \ head.md \ header.md \ help.md \ hostpubmd5.md \ hostpubsha256.md \ hsts.md \ http0.9.md \ http1.0.md \ http1.1.md \ http2-prior-knowledge.md \ http2.md \ http3.md \ http3-only.md \ ignore-content-length.md \ insecure.md \ interface.md \ ip-tos.md \ ipfs-gateway.md \ ipv4.md \ ipv6.md \ json.md \ junk-session-cookies.md \ keepalive-cnt.md \ keepalive-time.md \ key-type.md \ key.md \ krb.md \ libcurl.md \ limit-rate.md \ list-only.md \ local-port.md \ location-trusted.md \ location.md \ login-options.md \ mail-auth.md \ mail-from.md \ mail-rcpt-allowfails.md \ mail-rcpt.md \ manual.md \ max-filesize.md \ max-redirs.md \ max-time.md \ metalink.md \ mptcp.md \ negotiate.md \ netrc-file.md \ netrc-optional.md \ netrc.md \ next.md \ no-alpn.md \ no-buffer.md \ no-clobber.md \ no-keepalive.md \ no-npn.md \ no-progress-meter.md \ no-sessionid.md \ noproxy.md \ ntlm-wb.md \ ntlm.md \ oauth2-bearer.md \ output-dir.md \ output.md \ parallel-immediate.md \ parallel-max.md \ parallel.md \ pass.md \ path-as-is.md \ pinnedpubkey.md \ post301.md \ post302.md \ post303.md \ preproxy.md \ progress-bar.md \ proto-default.md \ proto-redir.md \ proto.md \ proxy-anyauth.md \ proxy-basic.md \ proxy-ca-native.md \ proxy-cacert.md \ proxy-capath.md \ proxy-cert-type.md \ proxy-cert.md \ proxy-ciphers.md \ proxy-crlfile.md \ proxy-digest.md \ proxy-header.md \ proxy-http2.md \ proxy-insecure.md \ proxy-key-type.md \ proxy-key.md \ proxy-negotiate.md \ proxy-ntlm.md \ proxy-pass.md \ proxy-pinnedpubkey.md \ proxy-service-name.md \ proxy-ssl-allow-beast.md \ proxy-ssl-auto-client-cert.md \ proxy-tls13-ciphers.md \ proxy-tlsauthtype.md \ proxy-tlspassword.md \ proxy-tlsuser.md \ proxy-tlsv1.md \ proxy-user.md \ proxy.md \ proxy1.0.md \ proxytunnel.md \ pubkey.md \ quote.md \ random-file.md \ range.md \ rate.md \ raw.md \ referer.md \ remote-header-name.md \ remote-name-all.md \ remote-name.md \ remote-time.md \ remove-on-error.md \ request-target.md \ request.md \ resolve.md \ retry-all-errors.md \ retry-connrefused.md \ retry-delay.md \ retry-max-time.md \ retry.md \ sasl-authzid.md \ sasl-ir.md \ service-name.md \ show-error.md \ show-headers.md \ silent.md \ sigalgs.md \ skip-existing.md \ socks4.md \ socks4a.md \ socks5-basic.md \ socks5-gssapi-nec.md \ socks5-gssapi-service.md \ socks5-gssapi.md \ socks5-hostname.md \ socks5.md \ speed-limit.md \ speed-time.md \ ssl-allow-beast.md \ ssl-auto-client-cert.md \ ssl-no-revoke.md \ ssl-reqd.md \ ssl-revoke-best-effort.md \ ssl-sessions.md \ ssl.md \ sslv2.md \ sslv3.md \ stderr.md \ styled-output.md \ suppress-connect-headers.md \ tcp-fastopen.md \ tcp-nodelay.md \ telnet-option.md \ tftp-blksize.md \ tftp-no-options.md \ time-cond.md \ tls-earlydata.md \ tls-max.md \ tls13-ciphers.md \ tlsauthtype.md \ tlspassword.md \ tlsuser.md \ tlsv1.0.md \ tlsv1.1.md \ tlsv1.2.md \ tlsv1.3.md \ tlsv1.md \ tr-encoding.md \ trace-ascii.md \ trace-config.md \ trace-ids.md \ trace-time.md \ trace.md \ unix-socket.md \ upload-file.md \ upload-flags.md \ url.md \ url-query.md \ use-ascii.md \ user-agent.md \ user.md \ variable.md \ verbose.md \ version.md \ vlan-priority.md \ write-out.md \ xattr.md curl-8.14.1/docs/cmdline-opts/_AUTHORS.md0000644000000000000000000000033715017756261016111 0ustar0000000000000000 # AUTHORS Daniel Stenberg is the main author, but the whole list of contributors is found in the separate THANKS file. curl-8.14.1/docs/cmdline-opts/_BUGS.md0000644000000000000000000000036515017756261015525 0ustar0000000000000000 # BUGS If you experience any problems with curl, submit an issue in the project's bug tracker on GitHub: https://github.com/curl/curl/issues curl-8.14.1/docs/cmdline-opts/_DESCRIPTION.md0000644000000000000000000000075415017756261016552 0ustar0000000000000000 # DESCRIPTION **curl** is a tool for transferring data from or to a server using URLs. It supports these protocols: DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. curl is powered by libcurl for all transfer-related features. See *libcurl(3)* for details. curl-8.14.1/docs/cmdline-opts/_ENVIRONMENT.md0000644000000000000000000001113715017756261016570 0ustar0000000000000000 # ENVIRONMENT The environment variables can be specified in lower case or upper case. The lower case version has precedence. `http_proxy` is an exception as it is only available in lower case. Using an environment variable to set the proxy has the same effect as using the --proxy option. ## `http_proxy` [protocol://][:port] Sets the proxy server to use for HTTP. ## `HTTPS_PROXY` [protocol://][:port] Sets the proxy server to use for HTTPS. ## `[url-protocol]_PROXY` [protocol://][:port] Sets the proxy server to use for [url-protocol], where the protocol is a protocol that curl supports and as specified in a URL. FTP, FTPS, POP3, IMAP, SMTP, LDAP, etc. ## `ALL_PROXY` [protocol://][:port] Sets the proxy server to use if no protocol-specific proxy is set. ## `NO_PROXY` list of hostnames that should not go through any proxy. If set to an asterisk '*' only, it matches all hosts. Each name in this list is matched as either a domain name which contains the hostname, or the hostname itself. This environment variable disables use of the proxy even when specified with the --proxy option. That is NO_PROXY=direct.example.com curl -x http://proxy.example.com http://direct.example.com accesses the target URL directly, and NO_PROXY=direct.example.com curl -x http://proxy.example.com http://somewhere.example.com accesses the target URL through the proxy. The list of hostnames can also include numerical IP addresses, and IPv6 versions should then be given without enclosing brackets. IP addresses can be specified using CIDR notation: an appended slash and number specifies the number of "network bits" out of the address to use in the comparison (added in 7.86.0). For example "192.168.0.0/16" would match all addresses starting with "192.168". ## `APPDATA` On Windows, this variable is used when trying to find the home directory. If the primary home variables are all unset. ## `COLUMNS` If set, the specified number of characters is used as the terminal width when the alternative progress-bar is shown. If not set, curl tries to figure it out using other ways. ## `CURL_CA_BUNDLE` If set, it is used as the --cacert value. This environment variable is ignored if Schannel is used as the TLS backend. ## `CURL_HOME` If set, is the first variable curl checks when trying to find its home directory. If not set, it continues to check *XDG_CONFIG_HOME* ## `CURL_SSL_BACKEND` If curl was built with support for "MultiSSL", meaning that it has built-in support for more than one TLS backend, this environment variable can be set to the case insensitive name of the particular backend to use when curl is invoked. Setting a name that is not a built-in alternative makes curl stay with the default. SSL backend names (case-insensitive): **bearssl**, **gnutls**, **mbedtls**, **openssl**, **rustls**, **schannel**, **secure-transport**, **wolfssl** ## `HOME` If set, this is used to find the home directory when that is needed. Like when looking for the default .curlrc. *CURL_HOME* and *XDG_CONFIG_HOME* have preference. ## `QLOGDIR` If curl was built with HTTP/3 support, setting this environment variable to a local directory makes curl produce **qlogs** in that directory, using file names named after the destination connection id (in hex). Do note that these files can become rather large. Works with the ngtcp2 and quiche QUIC backends. ## `SHELL` Used on VMS when trying to detect if using a **DCL** or a **Unix** shell. ## `SSL_CERT_DIR` If set, it is used as the --capath value. This environment variable is ignored if Schannel is used as the TLS backend. ## `SSL_CERT_FILE` If set, it is used as the --cacert value. This environment variable is ignored if Schannel is used as the TLS backend. ## `SSLKEYLOGFILE` If you set this environment variable to a filename, curl stores TLS secrets from its connections in that file when invoked to enable you to analyze the TLS traffic in real time using network analyzing tools such as Wireshark. This works with the following TLS backends: OpenSSL, LibreSSL (TLS 1.2 max), BoringSSL, GnuTLS, wolfSSL and Rustls. ## `USERPROFILE` On Windows, this variable is used when trying to find the home directory. If the other, primary, variables are all unset. If set, curl uses the path **"$USERPROFILE\Application Data"**. ## `XDG_CONFIG_HOME` If *CURL_HOME* is not set, this variable is checked when looking for a default .curlrc file. curl-8.14.1/docs/cmdline-opts/_EXITCODES.md0000644000000000000000000001431315017756261016312 0ustar0000000000000000 # EXIT CODES There are a bunch of different error codes and their corresponding error messages that may appear under error conditions. At the time of this writing, the exit codes are: ## 0 Success. The operation completed successfully according to the instructions. ## 1 Unsupported protocol. This build of curl has no support for this protocol. ## 2 Failed to initialize. ## 3 URL malformed. The syntax was not correct. ## 4 A feature or option that was needed to perform the desired request was not enabled or was explicitly disabled at build-time. To make curl able to do this, you probably need another build of libcurl. ## 5 Could not resolve proxy. The given proxy host could not be resolved. ## 6 Could not resolve host. The given remote host could not be resolved. ## 7 Failed to connect to host. ## 8 Weird server reply. The server sent data curl could not parse. ## 9 FTP access denied. The server denied login or denied access to the particular resource or directory you wanted to reach. Most often you tried to change to a directory that does not exist on the server. ## 10 FTP accept failed. While waiting for the server to connect back when an active FTP session is used, an error code was sent over the control connection or similar. ## 11 FTP weird PASS reply. curl could not parse the reply sent to the PASS request. ## 12 During an active FTP session while waiting for the server to connect back to curl, the timeout expired. ## 13 FTP weird PASV reply, curl could not parse the reply sent to the PASV request. ## 14 FTP weird 227 format. curl could not parse the 227-line the server sent. ## 15 FTP cannot use host. Could not resolve the host IP we got in the 227-line. ## 16 HTTP/2 error. A problem was detected in the HTTP2 framing layer. This is somewhat generic and can be one out of several problems, see the error message for details. ## 17 FTP could not set binary. Could not change transfer method to binary. ## 18 Partial file. Only a part of the file was transferred. ## 19 FTP could not download/access the given file, the RETR (or similar) command failed. ## 21 FTP quote error. A quote command returned error from the server. ## 22 HTTP page not retrieved. The requested URL was not found or returned another error with the HTTP error code being 400 or above. This return code only appears if --fail is used. ## 23 Write error. curl could not write data to a local filesystem or similar. ## 25 Failed starting the upload. For FTP, the server typically denied the STOR command. ## 26 Read error. Various reading problems. ## 27 Out of memory. A memory allocation request failed. ## 28 Operation timeout. The specified time-out period was reached according to the conditions. ## 30 FTP PORT failed. The PORT command failed. Not all FTP servers support the PORT command, try doing a transfer using PASV instead. ## 31 FTP could not use REST. The REST command failed. This command is used for resumed FTP transfers. ## 33 HTTP range error. The range "command" did not work. ## 34 HTTP post error. Internal post-request generation error. ## 35 SSL connect error. The SSL handshaking failed. ## 36 Bad download resume. Could not continue an earlier aborted download. ## 37 FILE could not read file. Failed to open the file. Permissions? ## 38 LDAP cannot bind. LDAP bind operation failed. ## 39 LDAP search failed. ## 41 Function not found. A required LDAP function was not found. ## 42 Aborted by callback. An application told curl to abort the operation. ## 43 Internal error. A function was called with a bad parameter. ## 45 Interface error. A specified outgoing interface could not be used. ## 47 Too many redirects. When following redirects, curl hit the maximum amount. ## 48 Unknown option specified to libcurl. This indicates that you passed a weird option to curl that was passed on to libcurl and rejected. Read up in the manual. ## 49 Malformed telnet option. ## 52 The server did not reply anything, which here is considered an error. ## 53 SSL crypto engine not found. ## 54 Cannot set SSL crypto engine as default. ## 55 Failed sending network data. ## 56 Failure in receiving network data. ## 58 Problem with the local certificate. ## 59 Could not use specified SSL cipher. ## 60 Peer certificate cannot be authenticated with known CA certificates. ## 61 Unrecognized transfer encoding. ## 63 Maximum file size exceeded. ## 64 Requested FTP SSL level failed. ## 65 Sending the data requires a rewind that failed. ## 66 Failed to initialize SSL Engine. ## 67 The username, password, or similar was not accepted and curl failed to log in. ## 68 File not found on TFTP server. ## 69 Permission problem on TFTP server. ## 70 Out of disk space on TFTP server. ## 71 Illegal TFTP operation. ## 72 Unknown TFTP transfer ID. ## 73 File already exists (TFTP). ## 74 No such user (TFTP). ## 77 Problem reading the SSL CA cert (path? access rights?). ## 78 The resource referenced in the URL does not exist. ## 79 An unspecified error occurred during the SSH session. ## 80 Failed to shut down the SSL connection. ## 82 Could not load CRL file, missing or wrong format (added in 7.19.0). ## 83 Issuer check failed (added in 7.19.0). ## 84 The FTP PRET command failed. ## 85 Mismatch of RTSP CSeq numbers. ## 86 Mismatch of RTSP Session Identifiers. ## 87 Unable to parse FTP file list. ## 88 FTP chunk callback reported error. ## 89 No connection available, the session is queued. ## 90 SSL public key does not match pinned public key. ## 91 Invalid SSL certificate status. ## 92 Stream error in HTTP/2 framing layer. ## 93 An API function was called from inside a callback. ## 94 An authentication function returned an error. ## 95 A problem was detected in the HTTP/3 layer. This is somewhat generic and can be one out of several problems, see the error message for details. ## 96 QUIC connection error. This error may be caused by an SSL library error. QUIC is the protocol used for HTTP/3 transfers. ## 97 Proxy handshake error. ## 98 A client-side certificate is required to complete the TLS handshake. ## 99 Poll or select returned fatal error. ## 100 A value or data field grew larger than allowed. ## XX More error codes might appear here in future releases. The existing ones are meant to never change. curl-8.14.1/docs/cmdline-opts/_FILES.md0000644000000000000000000000025415017756261015624 0ustar0000000000000000 # FILES *~/.curlrc* Default config file, see --config for details. curl-8.14.1/docs/cmdline-opts/_GLOBBING.md0000644000000000000000000000227615017756261016153 0ustar0000000000000000 # GLOBBING You can specify multiple URLs or parts of URLs by writing lists within braces or ranges within brackets. We call this "globbing". Provide a list with three different names like this: "http://site.{one,two,three}.com" Do sequences of alphanumeric series by using [] as in: "ftp://ftp.example.com/file[1-100].txt" With leading zeroes: "ftp://ftp.example.com/file[001-100].txt" With letters through the alphabet: "ftp://ftp.example.com/file[a-z].txt" Nested sequences are not supported, but you can use several ones next to each other: "http://example.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html" You can specify a step counter for the ranges to get every Nth number or letter: "http://example.com/file[1-100:10].txt" "http://example.com/file[a-z:2].txt" When using [] or {} sequences when invoked from a command line prompt, you probably have to put the full URL within double quotes to avoid the shell from interfering with it. This also goes for other characters treated special, like for example '&', '?' and '*'. Switch off globbing with --globoff. curl-8.14.1/docs/cmdline-opts/_NAME.md0000644000000000000000000000020515017756261015476 0ustar0000000000000000 # NAME curl - transfer a URL curl-8.14.1/docs/cmdline-opts/_OPTIONS.md0000644000000000000000000000266415017756261016124 0ustar0000000000000000 # OPTIONS Options start with one or two dashes. Many of the options require an additional value next to them. If provided text does not start with a dash, it is presumed to be and treated as a URL. The short "single-dash" form of the options, -d for example, may be used with or without a space between it and its value, although a space is a recommended separator. The long double-dash form, --data for example, requires a space between it and its value. Short version options that do not need any additional values can be used immediately next to each other, like for example you can specify all the options *-O*, *-L* and *-v* at once as *-OLv*. In general, all boolean options are enabled with --**option** and yet again disabled with --**no-**option. That is, you use the same option name but prefix it with `no-`. However, in this list we mostly only list and show the --**option** version of them. When --next is used, it resets the parser state and you start again with a clean option state, except for the options that are global. Global options retain their values and meaning even after --next. The first argument that is exactly two dashes (`--`), marks the end of options; any argument after the end of options is interpreted as a URL argument even if it starts with a dash. The following options are global: `%GLOBALS`. # ALL OPTIONS curl-8.14.1/docs/cmdline-opts/_OUTPUT.md0000644000000000000000000000112515017756261016020 0ustar0000000000000000 # OUTPUT If not told otherwise, curl writes the received data to stdout. It can be instructed to instead save that data into a local file, using the --output or --remote-name options. If curl is given multiple URLs to transfer on the command line, it similarly needs multiple options for where to save them. curl does not parse or otherwise "understand" the content it gets or writes as output. It does no encoding or decoding, unless explicitly asked to with dedicated command line options. curl-8.14.1/docs/cmdline-opts/_PROGRESS.md0000644000000000000000000000214415017756261016226 0ustar0000000000000000 # PROGRESS METER curl normally displays a progress meter during operations, indicating the amount of transferred data, transfer speeds and estimated time left, etc. The progress meter displays the transfer rate in bytes per second. The suffixes (k, M, G, T, P) are 1024 based. For example 1k is 1024 bytes. 1M is 1048576 bytes. curl displays this data to the terminal by default, so if you invoke curl to do an operation and it is about to write data to the terminal, it *disables* the progress meter as otherwise it would mess up the output mixing progress meter and response data. If you want a progress meter for HTTP POST or PUT requests, you need to redirect the response output to a file, using shell redirect (\>), --output or similar. This does not apply to FTP upload as that operation does not spit out any response data to the terminal. If you prefer a progress bar instead of the regular meter, --progress-bar is your friend. You can also disable the progress meter completely with the --silent option. curl-8.14.1/docs/cmdline-opts/_PROTOCOLS.md0000644000000000000000000000356515017756261016356 0ustar0000000000000000 # PROTOCOLS curl supports numerous protocols, or put in URL terms: schemes. Your particular build may not support them all. ## DICT Lets you lookup words using online dictionaries. ## FILE Read or write local files. curl does not support accessing file:// URL remotely, but when running on Microsoft Windows using the native UNC approach works. ## FTP(S) curl supports the File Transfer Protocol with a lot of tweaks and levers. With or without using TLS. ## GOPHER(S) Retrieve files. ## HTTP(S) curl supports HTTP with numerous options and variations. It can speak HTTP version 0.9, 1.0, 1.1, 2 and 3 depending on build options and the correct command line options. ## IMAP(S) Using the mail reading protocol, curl can download emails for you. With or without using TLS. ## LDAP(S) curl can do directory lookups for you, with or without TLS. ## MQTT curl supports MQTT version 3. Downloading over MQTT equals subscribing to a topic while uploading/posting equals publishing on a topic. MQTT over TLS is not supported (yet). ## POP3(S) Downloading from a pop3 server means getting an email. With or without using TLS. ## RTMP(S) The **Realtime Messaging Protocol** is primarily used to serve streaming media and curl can download it. ## RTSP curl supports RTSP 1.0 downloads. ## SCP curl supports SSH version 2 scp transfers. ## SFTP curl supports SFTP (draft 5) done over SSH version 2. ## SMB(S) curl supports SMB version 1 for upload and download. ## SMTP(S) Uploading contents to an SMTP server means sending an email. With or without TLS. ## TELNET Fetching a telnet URL starts an interactive session where it sends what it reads on stdin and outputs what the server sends it. ## TFTP curl can do TFTP downloads and uploads. ## WS(S) WebSocket done over HTTP/1. WSS implies that it works over HTTPS. curl-8.14.1/docs/cmdline-opts/_PROXYPREFIX.md0000644000000000000000000000142215017756261016617 0ustar0000000000000000 # PROXY PROTOCOL PREFIXES The proxy string may be specified with a protocol:// prefix to specify alternative proxy protocols. (Added in 7.21.7) If no protocol is specified in the proxy string or if the string does not match a supported one, the proxy is treated as an HTTP proxy. The supported proxy protocol prefixes are as follows: ## http:// Makes it use it as an HTTP proxy. The default if no scheme prefix is used. ## https:// Makes it treated as an **HTTPS** proxy. ## socks4:// Makes it the equivalent of --socks4 ## socks4a:// Makes it the equivalent of --socks4a ## socks5:// Makes it the equivalent of --socks5 ## socks5h:// Makes it the equivalent of --socks5-hostname curl-8.14.1/docs/cmdline-opts/_SEEALSO.md0000644000000000000000000000021415017756261016051 0ustar0000000000000000 # SEE ALSO **ftp(1)**, **wget(1)** curl-8.14.1/docs/cmdline-opts/_SYNOPSIS.md0000644000000000000000000000021615017756261016247 0ustar0000000000000000 # SYNOPSIS **curl [options / URLs]** curl-8.14.1/docs/cmdline-opts/_URL.md0000644000000000000000000000236015017756261015424 0ustar0000000000000000 # URL The URL syntax is protocol-dependent. You find a detailed description in RFC 3986. If you provide a URL without a leading **protocol://** scheme, curl guesses what protocol you want. It then defaults to HTTP but assumes others based on often-used hostname prefixes. For example, for hostnames starting with `ftp.` curl assumes you want FTP. You can specify any amount of URLs on the command line. They are fetched in a sequential manner in the specified order unless you use --parallel. You can specify command line options and URLs mixed and in any order on the command line. curl attempts to reuse connections when doing multiple transfers, so that getting many files from the same server do not use multiple connects and setup handshakes. This improves speed. Connection reuse can only be done for URLs specified for a single command line invocation and cannot be performed between separate curl runs. Provide an IPv6 zone id in the URL with an escaped percentage sign. Like in "http://[fe80::3%25eth0]/" Everything provided on the command line that is not a command line option or its argument, curl assumes is a URL and treats it as such. curl-8.14.1/docs/cmdline-opts/_VARIABLES.md0000644000000000000000000000406715017756261016300 0ustar0000000000000000 # VARIABLES curl supports command line variables (added in 8.3.0). Set variables with --variable name=content or --variable name@file (where `file` can be stdin if set to a single dash (-)). Variable contents can be expanded in option parameters using `{{name}}` if the option name is prefixed with `--expand-`. This gets the contents of the variable `name` inserted, or a blank if the name does not exist as a variable. Insert `{{` verbatim in the string by prefixing it with a backslash, like `\{{`. You access and expand environment variables by first importing them. You select to either require the environment variable to be set or you can provide a default value in case it is not already set. Plain `--variable %name` imports the variable called `name` but exits with an error if that environment variable is not already set. To provide a default value if it is not set, use `--variable %name=content` or `--variable %name@content`. Example. Get the USER environment variable into the URL, fail if USER is not set: --variable '%USER' --expand-url = "https://example.com/api/{{USER}}/method" When expanding variables, curl supports a set of functions that can make the variable contents more convenient to use. It can trim leading and trailing white space with `trim`, it can output the contents as a JSON quoted string with `json`, URL encode the string with `url`, base64 encode it with `b64` and base64 decode it with `64dec`. To apply functions to a variable expansion, add them colon separated to the right side of the variable. Variable content holding null bytes that are not encoded when expanded causes an error. Example: get the contents of a file called $HOME/.secret into a variable called "fix". Make sure that the content is trimmed and percent-encoded when sent as POST data: --variable %HOME --expand-variable fix@{{HOME}}/.secret --expand-data "{{fix:trim:url}}" https://example.com/ Command line variables and expansions were added in 8.3.0. curl-8.14.1/docs/cmdline-opts/_VERSION.md0000644000000000000000000000111015017756261016077 0ustar0000000000000000 # VERSION This man page describes curl `%VERSION`. If you use a later version, chances are this man page does not fully document it. If you use an earlier version, this document tries to include version information about which specific version that introduced changes. You can always learn which the latest curl version is by running curl https://curl.se/info The online version of this man page is always showing the latest incarnation: https://curl.se/docs/manpage.html curl-8.14.1/docs/cmdline-opts/_WWW.md0000644000000000000000000000017615017756261015451 0ustar0000000000000000 # WWW https://curl.se curl-8.14.1/docs/cmdline-opts/abstract-unix-socket.md0000644000000000000000000000107415017756261020676 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: abstract-unix-socket Arg: Help: Connect via abstract Unix domain socket Added: 7.53.0 Protocols: HTTP Category: connection Multi: single See-also: - unix-socket Example: - --abstract-unix-socket socketpath $URL --- # `--abstract-unix-socket` Connect through an abstract Unix domain socket, instead of using the network. Note: netstat shows the path of an abstract socket prefixed with `@`, however the \ argument should not have this leading character. curl-8.14.1/docs/cmdline-opts/alt-svc.md0000644000000000000000000000134015017756261016171 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: alt-svc Arg: Protocols: HTTPS Help: Enable alt-svc with this cache file Added: 7.64.1 Category: http Multi: append See-also: - resolve - connect-to Example: - --alt-svc svc.txt $URL --- # `--alt-svc` Enable the alt-svc parser. If the filename points to an existing alt-svc cache file, that gets used. After a completed transfer, the cache is saved to the filename again if it has been modified. Specify a "" filename (zero length) to avoid loading/saving and make curl just handle the cache in memory. If this option is used several times, curl loads contents from all the files but the last one is used for saving. curl-8.14.1/docs/cmdline-opts/anyauth.md0000644000000000000000000000170015017756261016271 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: anyauth Help: Pick any authentication method Protocols: HTTP Category: http proxy auth Added: 7.10.6 Multi: mutex See-also: - proxy-anyauth - basic - digest Example: - --anyauth --user me:pwd $URL --- # `--anyauth` Figure out authentication method automatically, and use the most secure one the remote site claims to support. This is done by first doing a request and checking the response-headers, thus possibly inducing an extra network round-trip. This option is used instead of setting a specific authentication method, which you can do with --basic, --digest, --ntlm, and --negotiate. Using --anyauth is not recommended if you do uploads from stdin, since it may require data to be sent twice and then the client must be able to rewind. If the need should arise when uploading from stdin, the upload operation fails. Used together with --user. curl-8.14.1/docs/cmdline-opts/append.md0000644000000000000000000000106215017756261016070 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Short: a Long: append Help: Append to target file when uploading Protocols: FTP SFTP Category: ftp sftp Added: 4.8 Multi: boolean See-also: - range - continue-at Example: - --upload-file local --append ftp://example.com/ --- # `--append` When used in an upload, this option makes curl append to the target file instead of overwriting it. If the remote file does not exist, it is created. Note that this flag is ignored by some SFTP servers (including OpenSSH). curl-8.14.1/docs/cmdline-opts/aws-sigv4.md0000644000000000000000000000150015017756261016442 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: aws-sigv4 Protocols: HTTP Arg: Help: AWS V4 signature auth Category: auth http Added: 7.75.0 Multi: single See-also: - basic - user Example: - --aws-sigv4 "aws:amz:us-east-2:es" --user "key:secret" $URL --- # `--aws-sigv4` Use AWS V4 signature authentication in the transfer. The provider argument is a string that is used by the algorithm when creating outgoing authentication headers. The region argument is a string that points to a geographic area of a resources collection (region-code) when the region name is omitted from the endpoint. The service argument is a string that points to a function provided by a cloud (service-code) when the service name is omitted from the endpoint. curl-8.14.1/docs/cmdline-opts/basic.md0000644000000000000000000000107115017756261015702 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: basic Help: HTTP Basic Authentication Protocols: HTTP Category: auth Added: 7.10.6 Multi: mutex See-also: - proxy-basic Example: - -u name:password --basic $URL --- # `--basic` Use HTTP Basic authentication with the remote host. This method is the default and this option is usually pointless, unless you use it to override a previously set option that sets a different authentication method (such as --ntlm, --digest, or --negotiate). Used together with --user. curl-8.14.1/docs/cmdline-opts/ca-native.md0000644000000000000000000000253315017756261016474 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ca-native Help: Load CA certs from the OS Protocols: TLS Category: tls Added: 8.2.0 Multi: boolean See-also: - cacert - capath - dump-ca-embed - insecure - proxy-ca-native Example: - --ca-native $URL --- # `--ca-native` Use the operating system's native CA store for certificate verification. This option is independent of other CA certificate locations set at run time or build time. Those locations are searched in addition to the native CA store. This option works with OpenSSL and its forks (LibreSSL, BoringSSL, etc) on Windows. (Added in 7.71.0) This option works with wolfSSL on Windows, Linux (Debian, Ubuntu, Gentoo, Fedora, RHEL), macOS, Android and iOS. (Added in 8.3.0) This option works with GnuTLS. (Added in 8.5.0) This option works with rustls on Windows, macOS, Android and iOS. On Linux it is equivalent to using the Mozilla CA certificate bundle. When used with rustls _only_ the native CA store is consulted, not other locations set at run time or build time. (Added in 8.13.0) This option currently has no effect for Schannel or Secure Transport. Those are native TLS libraries from Microsoft and Apple, respectively, that by default use the native CA store for verification unless overridden by a CA certificate location setting. curl-8.14.1/docs/cmdline-opts/cacert.md0000644000000000000000000000333415017756261016066 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: cacert Arg: Help: CA certificate to verify peer against Protocols: TLS Category: tls Added: 7.5 Multi: single See-also: - capath - dump-ca-embed - insecure Example: - --cacert CA-file.txt $URL --- # `--cacert` Use the specified certificate file to verify the peer. The file may contain multiple CA certificates. The certificate(s) must be in PEM format. Normally curl is built to use a default file for this, so this option is typically used to alter that default file. curl recognizes the environment variable named 'CURL_CA_BUNDLE' if it is set and the TLS backend is not Schannel, and uses the given path as a path to a CA cert bundle. This option overrides that variable. (Windows) curl automatically looks for a CA certs file named 'curl-ca-bundle.crt', either in the same directory as curl.exe, or in the Current Working Directory, or in any folder along your PATH. curl 8.11.0 added a build-time option to disable this search behavior, and another option to restrict search to the application's directory. (iOS and macOS only) If curl is built against Secure Transport, then this option is supported for backward compatibility with other SSL engines, but it should not be set. If the option is not set, then curl uses the certificates in the system and user Keychain to verify the peer, which is the preferred method of verifying the peer's certificate chain. (Schannel only) This option is supported for Schannel in Windows 7 or later (added in 7.60.0). This option is supported for backward compatibility with other SSL engines; instead it is recommended to use Windows' store of root certificates (the default for Schannel). curl-8.14.1/docs/cmdline-opts/capath.md0000644000000000000000000000155515017756261016070 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: capath Arg: Help: CA directory to verify peer against Protocols: TLS Category: tls Added: 7.9.8 Multi: single See-also: - cacert - dump-ca-embed - insecure Example: - --capath /local/directory $URL --- # `--capath` Use the specified certificate directory to verify the peer. Multiple paths can be provided by separating them with colon (`:`) (e.g. `path1:path2:path3`). The certificates must be in PEM format, and if curl is built against OpenSSL, the directory must have been processed using the c_rehash utility supplied with OpenSSL. Using --capath can allow OpenSSL-powered curl to make SSL-connections much more efficiently than using --cacert if the --cacert file contains many CA certificates. If this option is set, the default capath value is ignored. curl-8.14.1/docs/cmdline-opts/cert-status.md0000644000000000000000000000130615017756261017100 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: cert-status Protocols: TLS Added: 7.41.0 Help: Verify server cert status OCSP-staple Category: tls Multi: boolean See-also: - pinnedpubkey Example: - --cert-status $URL --- # `--cert-status` Verify the status of the server certificate by using the Certificate Status Request (aka. OCSP stapling) TLS extension. If this option is enabled and the server sends an invalid (e.g. expired) response, if the response suggests that the server certificate has been revoked, or no response at all is received, the verification fails. This support is currently only implemented in the OpenSSL and GnuTLS backends. curl-8.14.1/docs/cmdline-opts/cert-type.md0000644000000000000000000000120015017756261016527 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: cert-type Protocols: TLS Arg: Help: Certificate type (DER/PEM/ENG/PROV/P12) Category: tls Added: 7.9.3 Multi: single See-also: - cert - key - key-type Example: - --cert-type PEM --cert file $URL --- # `--cert-type` Set type of the provided client certificate. PEM, DER, ENG, PROV and P12 are recognized types. The default type depends on the TLS backend and is usually PEM, however for Secure Transport and Schannel it is P12. If --cert is a pkcs11: URI then ENG or PROV is the default type (depending on OpenSSL version). curl-8.14.1/docs/cmdline-opts/cert.md0000644000000000000000000000523515017756261015564 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Short: E Long: cert Arg: Help: Client certificate file and password Protocols: TLS Category: tls Added: 5.0 Multi: single See-also: - cert-type - key - key-type Example: - --cert certfile --key keyfile $URL --- # `--cert` Use the specified client certificate file when getting a file with HTTPS, FTPS or another SSL-based protocol. The certificate must be in PKCS#12 format if using Secure Transport, or PEM format if using any other engine. If the optional password is not specified, it is queried for on the terminal. Note that this option assumes a certificate file that is the private key and the client certificate concatenated. See --cert and --key to specify them independently. In the \ portion of the argument, you must escape the character `:` as `\:` so that it is not recognized as the password delimiter. Similarly, you must escape the double quote character as \" so that it is not recognized as an escape character. If curl is built against OpenSSL, and the engine pkcs11 or pkcs11 provider is available, then a PKCS#11 URI (RFC 7512) can be used to specify a certificate located in a PKCS#11 device. A string beginning with `pkcs11:` is interpreted as a PKCS#11 URI. If a PKCS#11 URI is provided, then the --engine option is set as `pkcs11` if none was provided and the --cert-type option is set as `ENG` or `PROV` if none was provided (depending on OpenSSL version). If curl is built against GnuTLS, a PKCS#11 URI can be used to specify a certificate located in a PKCS#11 device. A string beginning with `pkcs11:` is interpreted as a PKCS#11 URI. (iOS and macOS only) If curl is built against Secure Transport, then the certificate string can either be the name of a certificate/private key in the system or user keychain, or the path to a PKCS#12-encoded certificate and private key. If you want to use a file from the current directory, please precede it with `./` prefix, in order to avoid confusion with a nickname. (Schannel only) Client certificates must be specified by a path expression to a certificate store. (Loading *PFX* is not supported; you can import it to a store first). You can use "\\\\\" to refer to a certificate in the system certificates store, for example, *"CurrentUser\MY\934a7ac6f8a5d579285a74fa61e19f23ddfe8d7a"*. Thumbprint is usually a SHA-1 hex string which you can see in certificate details. Following store locations are supported: *CurrentUser*, *LocalMachine*, *CurrentService*, *Services*, *CurrentUserGroupPolicy*, *LocalMachineGroupPolicy* and *LocalMachineEnterprise*. curl-8.14.1/docs/cmdline-opts/ciphers.md0000644000000000000000000000113515017756261016257 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ciphers Arg: Help: TLS 1.2 (1.1, 1.0) ciphers to use Protocols: TLS Category: tls Added: 7.9 Multi: single See-also: - tls13-ciphers - proxy-ciphers - curves Example: - --ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256 $URL --- # `--ciphers` Specify which cipher suites to use in the connection if it negotiates TLS 1.2 (1.1, 1.0). The list of ciphers suites must specify valid ciphers. Read up on cipher suite details on this URL: https://curl.se/docs/ssl-ciphers.html curl-8.14.1/docs/cmdline-opts/compressed-ssh.md0000644000000000000000000000062215017756261017561 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: compressed-ssh Help: Enable SSH compression Protocols: SCP SFTP Added: 7.56.0 Category: scp ssh Multi: boolean See-also: - compressed Example: - --compressed-ssh sftp://example.com/ --- # `--compressed-ssh` Enable SSH compression. This is a request, not an order; the server may or may not do it. curl-8.14.1/docs/cmdline-opts/compressed.md0000644000000000000000000000144615017756261016773 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: compressed Help: Request compressed response Protocols: HTTP Category: http Added: 7.10 Multi: boolean See-also: - compressed-ssh Example: - --compressed $URL --- # `--compressed` Request a compressed response using one of the algorithms curl supports, and automatically decompress the content. Response headers are not modified when saved, so if they are "interpreted" separately again at a later point they might appear to be saying that the content is (still) compressed; while in fact it has already been decompressed. If this option is used and the server sends an unsupported encoding, curl reports an error. This is a request, not an order; the server may or may not deliver data compressed. curl-8.14.1/docs/cmdline-opts/config.md0000644000000000000000000000540415017756261016072 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: config Arg: Help: Read config from a file Short: K Category: curl Added: 4.10 Multi: append See-also: - disable Example: - --config file.txt $URL --- # `--config` Specify a text file to read curl arguments from. The command line arguments found in the text file are used as if they were provided on the command line. Options and their parameters must be specified on the same line in the file, separated by whitespace, colon, or the equals sign. Long option names can optionally be given in the config file without the initial double dashes and if so, the colon or equals characters can be used as separators. If the option is specified with one or two dashes, there can be no colon or equals character between the option and its parameter. If the parameter contains whitespace or starts with a colon (:) or equals sign (=), it must be specified enclosed within double quotes ("like this"). Within double quotes the following escape sequences are available: \\, \", \t, \n, \r and \v. A backslash preceding any other letter is ignored. If the first non-blank column of a config line is a '#' character, that line is treated as a comment. Only write one option per physical line in the config file. A single line is required to be no more than 10 megabytes (since 8.2.0). Specify the filename to --config as minus "-" to make curl read the file from stdin. Note that to be able to specify a URL in the config file, you need to specify it using the --url option, and not by simply writing the URL on its own line. So, it could look similar to this: url = "https://curl.se/docs/" # --- Example file --- # this is a comment url = "example.com" output = "curlhere.html" user-agent = "superagent/1.0" # and fetch another URL too url = "example.com/docs/manpage.html" -O referer = "http://nowhereatall.example.com/" # --- End of example file --- When curl is invoked, it (unless --disable is used) checks for a default config file and uses it if found, even when --config is used. The default config file is checked for in the following places in this order: 1) **"$CURL_HOME/.curlrc"** 2) **"$XDG_CONFIG_HOME/curlrc"** (Added in 7.73.0) 3) **"$HOME/.curlrc"** 4) Windows: **"%USERPROFILE%\.curlrc"** 5) Windows: **"%APPDATA%\.curlrc"** 6) Windows: **"%USERPROFILE%\Application Data\.curlrc"** 7) Non-Windows: use getpwuid to find the home directory 8) On Windows, if it finds no *.curlrc* file in the sequence described above, it checks for one in the same directory the curl executable is placed. On Windows two filenames are checked per location: *.curlrc* and *_curlrc*, preferring the former. Older versions on Windows checked for *_curlrc* only. curl-8.14.1/docs/cmdline-opts/connect-timeout.md0000644000000000000000000000151215017756261017736 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: connect-timeout Arg: Help: Maximum time allowed to connect Category: connection timeout Added: 7.7 Multi: single See-also: - max-time Example: - --connect-timeout 20 $URL - --connect-timeout 3.14 $URL --- # `--connect-timeout` Maximum time in seconds that you allow curl's connection to take. This only limits the connection phase, so if curl connects within the given period it continues - if not it exits. This option accepts decimal values (added in 7.32.0). The decimal value needs to be provided using a dot (.) as decimal separator - not the local version even if it might be using another separator. The connection phase is considered complete when the DNS lookup and requested TCP, TLS or QUIC handshakes are done. curl-8.14.1/docs/cmdline-opts/connect-to.md0000644000000000000000000000251115017756261016672 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: connect-to Arg: Help: Connect to host2 instead of host1 Added: 7.49.0 Category: connection dns Multi: append See-also: - resolve - header Example: - --connect-to example.com:443:example.net:8443 $URL --- # `--connect-to` For a request intended for the `HOST1:PORT1` pair, connect to `HOST2:PORT2` instead. This option is only used to establish the network connection. It does NOT affect the hostname/port number that is used for TLS/SSL (e.g. SNI, certificate verification) or for the application protocols. `HOST1` and `PORT1` may be empty strings, meaning any host or any port number. `HOST2` and `PORT2` may also be empty strings, meaning use the request's original hostname and port number. A hostname specified to this option is compared as a string, so it needs to match the name used in the request URL. It can be either numerical such as `127.0.0.1` or the full host name such as `example.org`. Example: redirect connects from the example.com hostname to 127.0.0.1 independently of port number: curl --connect-to example.com::127.0.0.1: https://example.com/ Example: redirect connects from all hostnames to 127.0.0.1 independently of port number: curl --connect-to ::127.0.0.1: http://example.com/ curl-8.14.1/docs/cmdline-opts/continue-at.md0000644000000000000000000000231415017756261017050 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Short: C Long: continue-at Arg: Help: Resumed transfer offset Category: connection Added: 4.8 Multi: single See-also: - range Example: - -C - $URL - -C 400 $URL --- # `--continue-at` Resume a previous transfer from the given byte offset. The given offset is the exact number of bytes that are skipped, counting from the beginning of the source file before it is transferred to the destination. If used with uploads, the FTP server command SIZE is not used by curl. Use "-C -" to instruct curl to automatically find out where/how to resume the transfer. It then uses the given output/input files to figure that out. When using this option for HTTP uploads using POST or PUT, functionality is not guaranteed. The HTTP protocol has no standard interoperable resume upload and curl uses a set of headers for this purpose that once proved working for some servers and have been left for those who find that useful. This command line option is mutually exclusive with --range: you can only use one of them for a single transfer. The --no-clobber and --remove-on-error options cannot be used together with --continue-at. curl-8.14.1/docs/cmdline-opts/cookie-jar.md0000644000000000000000000000254315017756261016651 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Short: c Long: cookie-jar Arg: Protocols: HTTP Help: Save cookies to after operation Category: http Added: 7.9 Multi: single See-also: - cookie - junk-session-cookies Example: - -c store-here.txt $URL - -c store-here.txt -b read-these $URL --- # `--cookie-jar` Specify to which file you want curl to write all cookies after a completed operation. curl writes all cookies from its in-memory cookie storage to the given file at the end of operations. Even if no cookies are known, a file is created so that it removes any formerly existing cookies from the file. The file uses the Netscape cookie file format. If you set the filename to a single minus, "-", the cookies are written to stdout. The file specified with --cookie-jar is only used for output. No cookies are read from the file. To read cookies, use the --cookie option. Both options can specify the same file. This command line option activates the cookie engine that makes curl record and use cookies. The --cookie option also activates it. If the cookie jar cannot be created or written to, the whole curl operation does not fail or even report an error clearly. Using --verbose gets a warning displayed, but that is the only visible feedback you get about this possibly lethal situation. curl-8.14.1/docs/cmdline-opts/cookie.md0000644000000000000000000000463615017756261016104 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Short: b Long: cookie Arg: Protocols: HTTP Help: Send cookies from string/load from file Category: http Added: 4.9 Multi: append See-also: - cookie-jar - junk-session-cookies Example: - -b "" $URL - -b cookiefile $URL - -b cookiefile -c cookiefile $URL - -b name=Jane $URL --- # `--cookie` This option has two slightly separate cookie sending functions. Either: pass the exact data to send to the HTTP server in the Cookie header. It is supposedly data previously received from the server in a `Set-Cookie:` line. The data should be in the format `NAME1=VALUE1; NAME2=VALUE2`. When given a set of specific cookies, curl populates its cookie header with this content explicitly in all outgoing request(s). If multiple requests are done due to authentication, followed redirects or similar, they all get this cookie header passed on. Or: If no `=` symbol is used in the argument, it is instead treated as a filename to read previously stored cookie from. This option also activates the cookie engine which makes curl record incoming cookies, which may be handy if you are using this in combination with the --location option or do multiple URL transfers on the same invoke. If the filename is a single minus ("-"), curl reads the contents from stdin. If the filename is an empty string ("") and is the only cookie input, curl activates the cookie engine without any cookies. The file format of the file to read cookies from should be plain HTTP headers (Set-Cookie style) or the Netscape/Mozilla cookie file format. The file specified with --cookie is only used as input. No cookies are written to that file. To store cookies, use the --cookie-jar option. If you use the Set-Cookie file format and do not specify a domain then the cookie is not sent since the domain never matches. To address this, set a domain in Set-Cookie line (doing that includes subdomains) or preferably: use the Netscape format. Users often want to both read cookies from a file and write updated cookies back to a file, so using both --cookie and --cookie-jar in the same command line is common. If curl is built with PSL (**Public Suffix List**) support, it detects and discards cookies that are specified for such suffix domains that should not be allowed to have cookies. If curl is *not* built with PSL support, it has no ability to stop super cookies. curl-8.14.1/docs/cmdline-opts/create-dirs.md0000644000000000000000000000152215017756261017024 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: create-dirs Help: Create necessary local directory hierarchy Category: output Added: 7.10.3 Multi: boolean See-also: - ftp-create-dirs - output-dir Example: - --create-dirs --output local/dir/file $URL --- # `--create-dirs` When used in conjunction with the --output option, curl creates the necessary local directory hierarchy as needed. This option creates the directories mentioned with the --output option combined with the path possibly set with --output-dir. If the combined output filename uses no directory, or if the directories it mentions already exist, no directories are created. Created directories are made with mode 0750 on Unix-style file systems. To create remote directories when using FTP or SFTP, try --ftp-create-dirs. curl-8.14.1/docs/cmdline-opts/create-file-mode.md0000644000000000000000000000115515017756261017726 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: create-file-mode Arg: Help: File mode for created files Protocols: SFTP SCP FILE Category: sftp scp file upload Added: 7.75.0 Multi: single See-also: - ftp-create-dirs Example: - --create-file-mode 0777 -T localfile sftp://example.com/new --- # `--create-file-mode` When curl is used to create files remotely using one of the supported protocols, this option allows the user to set which 'mode' to set on the file at creation time, instead of the default 0644. This option takes an octal number as argument. curl-8.14.1/docs/cmdline-opts/crlf.md0000644000000000000000000000060215017756261015546 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: crlf Help: Convert LF to CRLF in upload Protocols: FTP SMTP Category: ftp smtp Added: 5.7 Multi: boolean See-also: - use-ascii Example: - --crlf -T file ftp://example.com/ --- # `--crlf` Convert line feeds to carriage return plus line feeds in upload. Useful for **MVS (OS/390)**. curl-8.14.1/docs/cmdline-opts/crlfile.md0000644000000000000000000000066715017756261016253 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: crlfile Arg: Protocols: TLS Help: Certificate Revocation list Added: 7.19.7 Category: tls Multi: single See-also: - cacert - capath Example: - --crlfile rejects.txt $URL --- # `--crlfile` Provide a file using PEM format with a Certificate Revocation List that may specify peer certificates that are to be considered revoked. curl-8.14.1/docs/cmdline-opts/curves.md0000644000000000000000000000145715017756261016140 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: curves Arg: Help: (EC) TLS key exchange algorithms to request Protocols: TLS Added: 7.73.0 Category: tls Multi: single See-also: - ciphers Example: - --curves X25519 $URL --- # `--curves` Set specific curves to use during SSL session establishment according to RFC 8422, 5.1. Multiple algorithms can be provided by separating them with `:` (e.g. `X25519:P-521`). The parameter is available identically in the OpenSSL `s_client` and `s_server` utilities. --curves allows a OpenSSL powered curl to make SSL-connections with exactly the (EC) curve requested by the client, avoiding nontransparent client/server negotiations. If this option is set, the default curves list built into OpenSSL are ignored. curl-8.14.1/docs/cmdline-opts/data-ascii.md0000644000000000000000000000057015017756261016623 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: data-ascii Arg: Help: HTTP POST ASCII data Protocols: HTTP Category: http post upload Added: 7.2 Multi: append See-also: - data-binary - data-raw - data-urlencode Example: - --data-ascii @file $URL --- # `--data-ascii` This option is just an alias for --data. curl-8.14.1/docs/cmdline-opts/data-binary.md0000644000000000000000000000174115017756261017020 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: data-binary Arg: Help: HTTP POST binary data Protocols: HTTP Category: http post upload Added: 7.2 Multi: append See-also: - data-ascii Example: - --data-binary @filename $URL --- # `--data-binary` Post data exactly as specified with no extra processing whatsoever. If you start the data with the letter @, the rest should be a filename. `@-` makes curl read the data from stdin. Data is posted in a similar manner as --data does, except that newlines and carriage returns are preserved and conversions are never done. Like --data the default content-type sent to the server is application/x-www-form-urlencoded. If you want the data to be treated as arbitrary binary data by the server then set the content-type to octet-stream: -H "Content-Type: application/octet-stream". If this option is used several times, the ones following the first append data as described in --data. curl-8.14.1/docs/cmdline-opts/data-raw.md0000644000000000000000000000064515017756261016327 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: data-raw Arg: Protocols: HTTP Help: HTTP POST data, '@' allowed Added: 7.43.0 Category: http post upload Multi: append See-also: - data Example: - --data-raw "hello" $URL - --data-raw "@at@at@" $URL --- # `--data-raw` Post data similarly to --data but without the special interpretation of the @ character. curl-8.14.1/docs/cmdline-opts/data-urlencode.md0000644000000000000000000000310015017756261017503 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: data-urlencode Arg: Help: HTTP POST data URL encoded Protocols: HTTP Added: 7.18.0 Category: http post upload Multi: append See-also: - data - data-raw Example: - --data-urlencode name=val $URL - --data-urlencode =encodethis $URL - --data-urlencode name@file $URL - --data-urlencode @fileonly $URL --- # `--data-urlencode` Post data, similar to the other --data options with the exception that this performs URL-encoding. To be CGI-compliant, the \ part should begin with a *name* followed by a separator and a content specification. The \ part can be passed to curl using one of the following syntaxes: ## content URL-encode the content and pass that on. Just be careful so that the content does not contain any `=` or `@` symbols, as that makes the syntax match one of the other cases below. ## =content URL-encode the content and pass that on. The preceding `=` symbol is not included in the data. ## name=content URL-encode the content part and pass that on. Note that the name part is expected to be URL-encoded already. ## @filename load data from the given file (including any newlines), URL-encode that data and pass it on in the POST. Using `@-` makes curl read the data from stdin. ## name@filename load data from the given file (including any newlines), URL-encode that data and pass it on in the POST. The name part gets an equal sign appended, resulting in *name=urlencoded-file-content*. Note that the name is expected to be URL-encoded already. curl-8.14.1/docs/cmdline-opts/data.md0000644000000000000000000000347615017756261015545 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: data Short: d Arg: Help: HTTP POST data Protocols: HTTP MQTT Mutexed: form head upload-file Category: important http post upload Added: 4.0 Multi: append See-also: - data-binary - data-urlencode - data-raw Example: - -d "name=curl" $URL - -d "name=curl" -d "tool=cmdline" $URL - -d @filename $URL --- # `--data` Send the specified data in a POST request to the HTTP server, in the same way that a browser does when a user has filled in an HTML form and presses the submit button. This option makes curl pass the data to the server using the content-type application/x-www-form-urlencoded. Compared to --form. --data-raw is almost the same but does not have a special interpretation of the @ character. To post data purely binary, you should instead use the --data-binary option. To URL-encode the value of a form field you may use --data-urlencode. If any of these options is used more than once on the same command line, the data pieces specified are merged with a separating &-symbol. Thus, using '-d name=daniel -d skill=lousy' would generate a post chunk that looks like 'name=daniel&skill=lousy'. If you start the data with the letter @, the rest should be a filename to read the data from, or - if you want curl to read the data from stdin. Posting data from a file named 'foobar' would thus be done with --data @foobar. When --data is told to read from a file like that, carriage returns, newlines and null bytes are stripped out. If you do not want the @ character to have a special interpretation use --data-raw instead. The data for this option is passed on to the server exactly as provided on the command line. curl does not convert, change or improve it. It is up to the user to provide the data in the correct form. curl-8.14.1/docs/cmdline-opts/delegation.md0000644000000000000000000000116115017756261016734 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: delegation Arg: Help: GSS-API delegation permission Protocols: GSS/kerberos Category: auth Added: 7.22.0 Multi: single See-also: - insecure - ssl Example: - --delegation "none" $URL --- # `--delegation` Set LEVEL what curl is allowed to delegate when it comes to user credentials. ## none Do not allow any delegation. ## policy Delegates if and only if the OK-AS-DELEGATE flag is set in the Kerberos service ticket, which is a matter of realm policy. ## always Unconditionally allow the server to delegate. curl-8.14.1/docs/cmdline-opts/digest.md0000644000000000000000000000105215017756261016077 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: digest Help: HTTP Digest Authentication Protocols: HTTP Mutexed: basic ntlm negotiate Category: proxy auth http Added: 7.10.6 Multi: boolean See-also: - user - proxy-digest - anyauth Example: - -u name:password --digest $URL --- # `--digest` Enable HTTP Digest authentication. This authentication scheme avoids sending the password over the wire in clear text. Use this in combination with the normal --user option to set username and password. curl-8.14.1/docs/cmdline-opts/disable-eprt.md0000644000000000000000000000175615017756261017206 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: disable-eprt Help: Inhibit using EPRT or LPRT Protocols: FTP Category: ftp Added: 7.10.5 Multi: boolean See-also: - disable-epsv - ftp-port Example: - --disable-eprt ftp://example.com/ --- # `--disable-eprt` Disable the use of the EPRT and LPRT commands when doing active FTP transfers. curl normally first attempts to use EPRT before using PORT, but with this option, it uses PORT right away. EPRT is an extension to the original FTP protocol, and does not work on all servers, but enables more functionality in a better way than the traditional PORT command. --eprt can be used to explicitly enable EPRT again and --no-eprt is an alias for --disable-eprt. If the server is accessed using IPv6, this option has no effect as EPRT is necessary then. Disabling EPRT only changes the active behavior. If you want to switch to passive mode you need to not use --ftp-port or force it with --ftp-pasv. curl-8.14.1/docs/cmdline-opts/disable-epsv.md0000644000000000000000000000140515017756261017200 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: disable-epsv Help: Inhibit using EPSV Protocols: FTP Category: ftp Added: 7.9.2 Multi: boolean See-also: - disable-eprt - ftp-port Example: - --disable-epsv ftp://example.com/ --- # `--disable-epsv` Disable the use of the EPSV command when doing passive FTP transfers. curl normally first attempts to use EPSV before PASV, but with this option, it does not try EPSV. --epsv can be used to explicitly enable EPSV again and --no-epsv is an alias for --disable-epsv. If the server is an IPv6 host, this option has no effect as EPSV is necessary then. Disabling EPSV only changes the passive behavior. If you want to switch to active mode you need to use --ftp-port. curl-8.14.1/docs/cmdline-opts/disable.md0000644000000000000000000000063415017756261016230 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: disable Short: q Help: Disable .curlrc Category: curl Added: 5.0 Multi: boolean See-also: - config Example: - -q $URL --- # `--disable` If used as the **first** parameter on the command line, the *curlrc* config file is not read or used. See the --config for details on the default config file search path. curl-8.14.1/docs/cmdline-opts/disallow-username-in-url.md0000644000000000000000000000065715017756261021471 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: disallow-username-in-url Help: Disallow username in URL Added: 7.61.0 Category: curl Multi: boolean See-also: - proto Example: - --disallow-username-in-url $URL --- # `--disallow-username-in-url` Exit with error if passed a URL containing a username. Probably most useful when the URL is being provided at runtime or similar. curl-8.14.1/docs/cmdline-opts/dns-interface.md0000644000000000000000000000104415017756261017343 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: dns-interface Arg: Help: Interface to use for DNS requests Protocols: DNS Added: 7.33.0 Requires: c-ares Category: dns Multi: single See-also: - dns-ipv4-addr - dns-ipv6-addr Example: - --dns-interface eth0 $URL --- # `--dns-interface` Send outgoing DNS requests through the given interface. This option is a counterpart to --interface (which does not affect DNS). The supplied string must be an interface name (not an address). curl-8.14.1/docs/cmdline-opts/dns-ipv4-addr.md0000644000000000000000000000101115017756261017167 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: dns-ipv4-addr Arg:
Help: IPv4 address to use for DNS requests Protocols: DNS Added: 7.33.0 Requires: c-ares Category: dns Multi: single See-also: - dns-interface - dns-ipv6-addr Example: - --dns-ipv4-addr 10.1.2.3 $URL --- # `--dns-ipv4-addr` Bind to a specific IP address when making IPv4 DNS requests, so that the DNS requests originate from this address. The argument should be a single IPv4 address. curl-8.14.1/docs/cmdline-opts/dns-ipv6-addr.md0000644000000000000000000000101715017756261017177 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: dns-ipv6-addr Arg:
Help: IPv6 address to use for DNS requests Protocols: DNS Added: 7.33.0 Requires: c-ares Category: dns Multi: single See-also: - dns-interface - dns-ipv4-addr Example: - --dns-ipv6-addr 2a04:4e42::561 $URL --- # `--dns-ipv6-addr` Bind to a specific IP address when making IPv6 DNS requests, so that the DNS requests originate from this address. The argument should be a single IPv6 address. curl-8.14.1/docs/cmdline-opts/dns-servers.md0000644000000000000000000000114715017756261017100 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: dns-servers Arg: Help: DNS server addrs to use Protocols: DNS Requires: c-ares Added: 7.33.0 Category: dns Multi: single See-also: - dns-interface - dns-ipv4-addr Example: - --dns-servers 192.168.0.1,192.168.0.2 $URL - --dns-servers 10.0.0.1:53 $URL --- # `--dns-servers` Set the list of DNS servers to be used instead of the system default. The list of IP addresses should be separated with commas. Port numbers may also optionally be given, appended to the IP address separated with a colon. curl-8.14.1/docs/cmdline-opts/doh-cert-status.md0000644000000000000000000000145515017756261017655 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: doh-cert-status Help: Verify DoH server cert status OCSP-staple Added: 7.76.0 Category: dns tls Multi: boolean See-also: - doh-insecure Example: - --doh-cert-status --doh-url https://doh.example $URL --- # `--doh-cert-status` Same as --cert-status but used for DoH (DNS-over-HTTPS). Verify the status of the DoH servers' certificate by using the Certificate Status Request (aka. OCSP stapling) TLS extension. If this option is enabled and the DoH server sends an invalid (e.g. expired) response, if the response suggests that the server certificate has been revoked, or no response at all is received, the verification fails. This support is currently only implemented in the OpenSSL and GnuTLS backends. curl-8.14.1/docs/cmdline-opts/doh-insecure.md0000644000000000000000000000133115017756261017205 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: doh-insecure Help: Allow insecure DoH server connections Added: 7.76.0 Category: dns tls Multi: boolean See-also: - doh-url - insecure - proxy-insecure Example: - --doh-insecure --doh-url https://doh.example $URL --- # `--doh-insecure` By default, every connection curl makes to a DoH server is verified to be secure before the transfer takes place. This option tells curl to skip the verification step and proceed without checking. **WARNING**: using this option makes the DoH transfer and name resolution insecure. This option is equivalent to --insecure and --proxy-insecure but used for DoH (DNS-over-HTTPS) only. curl-8.14.1/docs/cmdline-opts/doh-url.md0000644000000000000000000000176215017756261016202 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: doh-url Arg: Help: Resolve hostnames over DoH Added: 7.62.0 Category: dns Multi: single See-also: - doh-insecure Example: - --doh-url https://doh.example $URL - --doh-url https://doh.example --resolve doh.example:443:192.0.2.1 $URL --- # `--doh-url` Specify which DNS-over-HTTPS (DoH) server to use to resolve hostnames, instead of using the default name resolver mechanism. The URL must be HTTPS. Some SSL options that you set for your transfer also apply to DoH since the name lookups take place over SSL. However, the certificate verification settings are not inherited but are controlled separately via --doh-insecure and --doh-cert-status. By default, DoH is bypassed when initially looking up DNS records of the DoH server. You can specify the IP address(es) of the DoH server with --resolve to avoid this. This option is unset if an empty string "" is used as the URL. (Added in 7.85.0) curl-8.14.1/docs/cmdline-opts/dump-ca-embed.md0000644000000000000000000000103215017756261017216 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: dump-ca-embed Help: Write the embedded CA bundle to standard output Protocols: TLS Category: http proxy tls Added: 8.10.0 Multi: boolean See-also: - ca-native - cacert - capath - proxy-ca-native - proxy-cacert - proxy-capath Example: - --dump-ca-embed --- # `--dump-ca-embed` Write the CA bundle embedded in curl to standard output, then quit. If curl was not built with a default CA bundle embedded, the output is empty. curl-8.14.1/docs/cmdline-opts/dump-header.md0000644000000000000000000000205615017756261017020 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: dump-header Short: D Arg: Help: Write the received headers to Protocols: HTTP FTP Category: http ftp Added: 5.7 Multi: single See-also: - output Example: - --dump-header store.txt $URL - --dump-header - $URL -o save --- # `--dump-header` Write the received protocol headers to the specified file. If no headers are received, the use of this option creates an empty file. Specify `-` as filename (a single minus) to have it written to stdout. Starting in curl 8.10.0, specify `%` (a single percent sign) as filename writes the output to stderr. When used in FTP, the FTP server response lines are considered being "headers" and thus are saved there. Starting in curl 8.11.0, using the --create-dirs option can also create missing directory components for the path provided in --dump-header. Having multiple transfers in one set of operations (i.e. the URLs in one --next clause), appends them to the same file, separated by a blank line. curl-8.14.1/docs/cmdline-opts/ech.md0000644000000000000000000000177115017756261015367 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ech Arg: Help: Configure ECH Added: 8.8.0 Category: tls Protocols: HTTPS Multi: single See-also: - doh-url Example: - --ech true $URL --- # `--ech` Specify how to do ECH (Encrypted Client Hello). The values allowed for \ can be: ## `false` Do not attempt ECH. The is the default. ## `grease` Send a GREASE ECH extension ## `true` Attempt ECH if possible, but do not fail if ECH is not attempted. (The connection fails if ECH is attempted but fails.) ## `hard` Attempt ECH and fail if that is not possible. ECH only works with TLS 1.3 and also requires using DoH or providing an ECHConfigList on the command line. ## `ecl:` A base64 encoded ECHConfigList that is used for ECH. ## `pn:` A name to use to over-ride the `public_name` field of an ECHConfigList (only available with OpenSSL TLS support) ## Most ECH related errors cause error *CURLE_ECH_REQUIRED* (101). curl-8.14.1/docs/cmdline-opts/egd-file.md0000644000000000000000000000105715017756261016301 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: egd-file Arg: Help: EGD socket path for random data Protocols: TLS Category: deprecated Added: 7.7 Multi: single See-also: - random-file Example: - --egd-file /random/here $URL --- # `--egd-file` Deprecated option (added in 7.84.0). Prior to that it only had an effect on curl if built to use old versions of OpenSSL. Specify the path name to the Entropy Gathering Daemon socket. The socket is used to seed the random engine for SSL connections. curl-8.14.1/docs/cmdline-opts/engine.md0000644000000000000000000000076315017756261016075 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: engine Arg: Help: Crypto engine to use Protocols: TLS Category: tls Added: 7.9.3 Multi: single See-also: - ciphers - curves Example: - --engine flavor $URL --- # `--engine` Select the OpenSSL crypto engine to use for cipher operations. Use --engine list to print a list of build-time supported engines. Note that not all (and possibly none) of the engines may be available at runtime. curl-8.14.1/docs/cmdline-opts/etag-compare.md0000644000000000000000000000145715017756261017175 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: etag-compare Arg: Help: Load ETag from file Protocols: HTTP Added: 7.68.0 Category: http Multi: single See-also: - etag-save - time-cond Example: - --etag-compare etag.txt $URL --- # `--etag-compare` Make a conditional HTTP request for the specific ETag read from the given file by sending a custom If-None-Match header using the stored ETag. For correct results, make sure that the specified file contains only a single line with the desired ETag. A non-existing or empty file is treated as an empty ETag. Use the option --etag-save to first save the ETag from a response, and then use this option to compare against the saved ETag in a subsequent request. Use this option with a single URL only. curl-8.14.1/docs/cmdline-opts/etag-save.md0000644000000000000000000000165615017756261016506 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: etag-save Arg: Help: Parse incoming ETag and save to a file Protocols: HTTP Added: 7.68.0 Category: http Multi: single See-also: - etag-compare Example: - --etag-save storetag.txt $URL --- # `--etag-save` Save an HTTP ETag to the specified file. An ETag is a caching related header, usually returned in a response. Use this option with a single URL only. If no ETag is sent by the server, an empty file is created. In many situations you want to use an existing etag in the request to avoid downloading the same resource again but also save the new etag if it has indeed changed, by using both etag options --etag-save and --etag-compare with the same filename, in the same command line. Starting in curl 8.12.0, using the --create-dirs option can also create missing directory components for the path provided in --etag-save. curl-8.14.1/docs/cmdline-opts/expect100-timeout.md0000644000000000000000000000141415017756261020017 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: expect100-timeout Arg: Help: How long to wait for 100-continue Protocols: HTTP Added: 7.47.0 Category: http timeout Multi: single See-also: - connect-timeout Example: - --expect100-timeout 2.5 -T file $URL --- # `--expect100-timeout` Maximum time in seconds that you allow curl to wait for a 100-continue response when curl emits an Expects: 100-continue header in its request. By default curl waits one second. This option accepts decimal values. When curl stops waiting, it continues as if a response was received. The decimal value needs to be provided using a dot (`.`) as decimal separator - not the local version even if it might be using another separator. curl-8.14.1/docs/cmdline-opts/fail-early.md0000644000000000000000000000213415017756261016647 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: fail-early Help: Fail on first transfer error Added: 7.52.0 Category: curl global Multi: boolean Scope: global See-also: - fail - fail-with-body Example: - --fail-early $URL https://two.example --- # `--fail-early` Fail and exit on the first detected transfer error. When curl is used to do multiple transfers on the command line, it attempts to operate on each given URL, one by one. By default, it ignores errors if there are more URLs given and the last URL's success determines the error code curl returns. Early failures are "hidden" by subsequent successful transfers. Using this option, curl instead returns an error on the first transfer that fails, independent of the amount of URLs that are given on the command line. This way, no transfer failures go undetected by scripts and similar. This option does not imply --fail, which causes transfers to fail due to the server's HTTP status code. You can combine the two options, however note --fail is not global and is therefore contained by --next. curl-8.14.1/docs/cmdline-opts/fail-with-body.md0000644000000000000000000000140315017756261017437 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: fail-with-body Protocols: HTTP Help: Fail on HTTP errors but save the body Category: http output Added: 7.76.0 Mutexed: fail Multi: boolean See-also: - fail - fail-early Example: - --fail-with-body $URL --- # `--fail-with-body` Return an error on server errors where the HTTP response code is 400 or greater). In normal cases when an HTTP server fails to deliver a document, it returns an HTML document stating so (which often also describes why and more). This option allows curl to output and save that content but also to return error 22. This is an alternative option to --fail which makes curl fail for the same circumstances but without saving the content. curl-8.14.1/docs/cmdline-opts/fail.md0000644000000000000000000000207215017756261015536 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: fail Short: f Protocols: HTTP Help: Fail fast with no output on HTTP errors Category: important http Mutexed: fail-with-body Added: 4.0 Multi: boolean See-also: - fail-with-body - fail-early Example: - --fail $URL --- # `--fail` Fail with error code 22 and with no response body output at all for HTTP transfers returning HTTP response codes at 400 or greater. In normal cases when an HTTP server fails to deliver a document, it returns a body of text stating so (which often also describes why and more) and a 4xx HTTP response code. This command line option prevents curl from outputting that data and instead returns error 22 early. By default, curl does not consider HTTP response codes to indicate failure. To get both the error code and also save the content, use --fail-with-body instead. This method is not fail-safe and there are occasions where non-successful response codes slip through, especially when authentication is involved (response codes 401 and 407). curl-8.14.1/docs/cmdline-opts/false-start.md0000644000000000000000000000117015017756261017046 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: false-start Help: Enable TLS False Start Protocols: TLS Added: 7.42.0 Category: tls Multi: boolean See-also: - tcp-fastopen Example: - --false-start $URL --- # `--false-start` Use false start during the TLS handshake. False start is a mode where a TLS client starts sending application data before verifying the server's Finished message, thus saving a round trip when performing a full handshake. This functionality is currently only implemented in the Secure Transport (on iOS 7.0 or later, or macOS 10.9 or later) backend. curl-8.14.1/docs/cmdline-opts/form-escape.md0000644000000000000000000000070515017756261017025 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: form-escape Help: Escape form fields using backslash Protocols: HTTP imap smtp Added: 7.81.0 Category: http upload post Multi: single See-also: - form Example: - --form-escape -F 'field\name=curl' -F 'file=@load"this' $URL --- # `--form-escape` Pass on names of multipart form fields and files using backslash-escaping instead of percent-encoding. curl-8.14.1/docs/cmdline-opts/form-string.md0000644000000000000000000000122715017756261017073 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: form-string Help: Specify multipart MIME data Protocols: HTTP SMTP IMAP Arg: Category: http upload post smtp imap Added: 7.13.2 Multi: append See-also: - form Example: - --form-string "name=data" $URL --- # `--form-string` Similar to --form except that the value string for the named parameter is used literally. Leading @ and \< characters, and the `;type=` string in the value have no special meaning. Use this in preference to --form if there is any possibility that the string value may accidentally trigger the @ or \< features of --form. curl-8.14.1/docs/cmdline-opts/form.md0000644000000000000000000001210415017756261015563 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: form Short: F Arg: Help: Specify multipart MIME data Protocols: HTTP SMTP IMAP Mutexed: data head upload-file Category: http upload post imap smtp Added: 5.0 Multi: append See-also: - data - form-string - form-escape Example: - --form "name=curl" --form "file=@loadthis" $URL --- # `--form` For the HTTP protocol family, emulate a filled-in form in which a user has pressed the submit button. This makes curl POST data using the Content-Type multipart/form-data according to RFC 2388. For SMTP and IMAP protocols, this composes a multipart mail message to transmit. This enables uploading of binary files etc. To force the 'content' part to be a file, prefix the filename with an @ sign. To just get the content part from a file, prefix the filename with the symbol \<. The difference between @ and \< is then that @ makes a file get attached in the post as a file upload, while the \< makes a text field and just gets the contents for that text field from a file. Read content from stdin instead of a file by using a single "-" as filename. This goes for both @ and \< constructs. When stdin is used, the contents is buffered in memory first by curl to determine its size and allow a possible resend. Defining a part's data from a named non-regular file (such as a named pipe or similar) is not subject to buffering and is instead read at transmission time; since the full size is unknown before the transfer starts, such data is sent as chunks by HTTP and rejected by IMAP. Example: send an image to an HTTP server, where 'profile' is the name of the form-field to which the file **portrait.jpg** is the input: curl -F profile=@portrait.jpg https://example.com/upload.cgi Example: send your name and shoe size in two text fields to the server: curl -F name=John -F shoesize=11 https://example.com/ Example: send your essay in a text field to the server. Send it as a plain text field, but get the contents for it from a local file: curl -F "story=HTML message;type=text/html' \ -F '=)' -F '=@textfile.txt' ... smtp://example.com Data can be encoded for transfer using encoder=. Available encodings are *binary* and *8bit* that do nothing else than adding the corresponding Content-Transfer-Encoding header, *7bit* that only rejects 8-bit characters with a transfer error, *quoted-printable* and *base64* that encodes data according to the corresponding schemes, limiting lines length to 76 characters. Example: send multipart mail with a quoted-printable text message and a base64 attached file: curl -F '=text message;encoder=quoted-printable' \ -F '=@localfile;encoder=base64' ... smtp://example.com See further examples and details in the MANUAL. curl-8.14.1/docs/cmdline-opts/ftp-account.md0000644000000000000000000000067715017756261017057 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ftp-account Arg: Help: Account data string Protocols: FTP Added: 7.13.0 Category: ftp auth Multi: single See-also: - user Example: - --ftp-account "mr.robot" ftp://example.com/ --- # `--ftp-account` When an FTP server asks for "account data" after username and password has been provided, this data is sent off using the ACCT command. curl-8.14.1/docs/cmdline-opts/ftp-alternative-to-user.md0000644000000000000000000000115215017756261021322 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ftp-alternative-to-user Arg: Help: String to replace USER [name] Protocols: FTP Added: 7.15.5 Category: ftp Multi: single See-also: - ftp-account - user Example: - --ftp-alternative-to-user "U53r" ftp://example.com --- # `--ftp-alternative-to-user` If authenticating with the USER and PASS commands fails, send this command. When connecting to Tumbleweed's Secure Transport server over FTPS using a client certificate, using "SITE AUTH" tells the server to retrieve the username from the certificate. curl-8.14.1/docs/cmdline-opts/ftp-create-dirs.md0000644000000000000000000000106015017756261017610 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ftp-create-dirs Protocols: FTP SFTP Help: Create the remote dirs if not present Category: ftp sftp Added: 7.10.7 Multi: boolean See-also: - create-dirs Example: - --ftp-create-dirs -T file ftp://example.com/remote/path/file --- # `--ftp-create-dirs` When an FTP or SFTP URL/operation uses a path that does not currently exist on the server, the standard behavior of curl is to fail. Using this option, curl instead attempts to create missing directories. curl-8.14.1/docs/cmdline-opts/ftp-method.md0000644000000000000000000000221715017756261016673 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ftp-method Arg: Help: Control CWD usage Protocols: FTP Added: 7.15.1 Category: ftp Multi: single See-also: - list-only Example: - --ftp-method multicwd ftp://example.com/dir1/dir2/file - --ftp-method nocwd ftp://example.com/dir1/dir2/file - --ftp-method singlecwd ftp://example.com/dir1/dir2/file --- # `--ftp-method` Control what method curl should use to reach a file on an FTP(S) server. The method argument should be one of the following alternatives: ## multicwd Do a single CWD operation for each path part in the given URL. For deep hierarchies this means many commands. This is how RFC 1738 says it should be done. This is the default but the slowest behavior. ## nocwd Do no CWD at all. curl does SIZE, RETR, STOR etc and gives the full path to the server for each of these commands. This is the fastest behavior. ## singlecwd Do one CWD with the full target directory and then operate on the file "normally" (like in the multicwd case). This is somewhat more standards compliant than `nocwd` but without the full penalty of `multicwd`. curl-8.14.1/docs/cmdline-opts/ftp-pasv.md0000644000000000000000000000124315017756261016362 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ftp-pasv Help: Send PASV/EPSV instead of PORT Protocols: FTP Added: 7.11.0 Category: ftp Multi: boolean See-also: - disable-epsv Example: - --ftp-pasv ftp://example.com/ --- # `--ftp-pasv` Use passive mode for the data connection. Passive is the internal default behavior, but using this option can be used to override a previous --ftp-port option. Reversing an enforced passive really is not doable but you must then instead enforce the correct --ftp-port again. Passive mode means that curl tries the EPSV command first and then PASV, unless --disable-epsv is used. curl-8.14.1/docs/cmdline-opts/ftp-port.md0000644000000000000000000000275215017756261016403 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ftp-port Arg:
Help: Send PORT instead of PASV Short: P Protocols: FTP Category: ftp Added: 4.0 Multi: single See-also: - ftp-pasv - disable-eprt Example: - -P - ftp:/example.com - -P eth0 ftp:/example.com - -P 192.168.0.2 ftp:/example.com --- # `--ftp-port` Reverse the default initiator/listener roles when connecting with FTP. This option makes curl use active mode. curl then commands the server to connect back to the client's specified address and port, while passive mode asks the server to setup an IP address and port for it to connect to. \ should be one of: ## interface e.g. **eth0** to specify which interface's IP address you want to use (Unix only) ## IP address e.g. **192.168.10.1** to specify the exact IP address ## hostname e.g. **my.host.domain** to specify the machine ## - make curl pick the same IP address that is already used for the control connection. This is the recommended choice. ## Disable the use of PORT with --ftp-pasv. Disable the attempt to use the EPRT command instead of PORT by using --disable-eprt. EPRT is really PORT++. You can also append ":[start]-[end]" to the right of the address, to tell curl what TCP port range to use. That means you specify a port range, from a lower to a higher number. A single number works as well, but do note that it increases the risk of failure since the port may not be available. (Added in 7.19.5) curl-8.14.1/docs/cmdline-opts/ftp-pret.md0000644000000000000000000000073115017756261016364 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ftp-pret Help: Send PRET before PASV Protocols: FTP Added: 7.20.0 Category: ftp Multi: boolean See-also: - ftp-port - ftp-pasv Example: - --ftp-pret ftp://example.com/ --- # `--ftp-pret` Send a PRET command before PASV (and EPSV). Certain FTP servers, mainly drftpd, require this non-standard command for directory listings as well as up and downloads in PASV mode. curl-8.14.1/docs/cmdline-opts/ftp-skip-pasv-ip.md0000644000000000000000000000121115017756261017727 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ftp-skip-pasv-ip Help: Skip the IP address for PASV Protocols: FTP Added: 7.15.0 Category: ftp Multi: boolean See-also: - ftp-pasv Example: - --ftp-skip-pasv-ip ftp://example.com/ --- # `--ftp-skip-pasv-ip` Do not use the IP address the server suggests in its response to curl's PASV command when curl connects the data connection. Instead curl reuses the same IP address it already uses for the control connection. This option is enabled by default (added in 7.74.0). This option has no effect if PORT, EPRT or EPSV is used instead of PASV. curl-8.14.1/docs/cmdline-opts/ftp-ssl-ccc-mode.md0000644000000000000000000000111315017756261017656 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ftp-ssl-ccc-mode Arg: Help: Set CCC mode Protocols: FTP Added: 7.16.2 Category: ftp tls Multi: boolean See-also: - ftp-ssl-ccc Example: - --ftp-ssl-ccc-mode active --ftp-ssl-ccc ftps://example.com/ --- # `--ftp-ssl-ccc-mode` Set the CCC mode. The passive mode does not initiate the shutdown, but instead waits for the server to do it, and does not reply to the shutdown from the server. The active mode initiates the shutdown and waits for a reply from the server. curl-8.14.1/docs/cmdline-opts/ftp-ssl-ccc.md0000644000000000000000000000104415017756261016737 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ftp-ssl-ccc Help: Send CCC after authenticating Protocols: FTP Added: 7.16.1 Category: ftp tls Multi: boolean See-also: - ssl - ftp-ssl-ccc-mode Example: - --ftp-ssl-ccc ftps://example.com/ --- # `--ftp-ssl-ccc` Use CCC (Clear Command Channel) Shuts down the SSL/TLS layer after authenticating. The rest of the control channel communication is unencrypted. This allows NAT routers to follow the FTP transaction. The default mode is passive. curl-8.14.1/docs/cmdline-opts/ftp-ssl-control.md0000644000000000000000000000100115017756261017660 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ftp-ssl-control Help: Require TLS for login, clear for transfer Protocols: FTP Added: 7.16.0 Category: ftp tls Multi: boolean See-also: - ssl Example: - --ftp-ssl-control ftp://example.com --- # `--ftp-ssl-control` Require SSL/TLS for the FTP login, clear for transfer. Allows secure authentication, but non-encrypted data transfers for efficiency. Fails the transfer if the server does not support SSL/TLS. curl-8.14.1/docs/cmdline-opts/get.md0000644000000000000000000000131415017756261015400 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: get Short: G Help: Put the post data in the URL and use GET Protocols: HTTP Category: http Added: 7.8.1 Multi: boolean See-also: - data - request Example: - --get $URL - --get -d "tool=curl" -d "age=old" $URL - --get -I -d "tool=curl" $URL --- # `--get` When used, this option makes all data specified with --data, --data-binary or --data-urlencode to be used in an HTTP GET request instead of the POST request that otherwise would be used. curl appends the provided data to the URL as a query string. If used in combination with --head, the POST data is instead appended to the URL with a HEAD request. curl-8.14.1/docs/cmdline-opts/globoff.md0000644000000000000000000000107415017756261016242 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: globoff Short: g Help: Disable URL globbing with {} and [] Category: curl Added: 7.6 Multi: boolean See-also: - config - disable Example: - -g "https://example.com/{[]}}}}" --- # `--globoff` Switch off the URL globbing function. When you set this option, you can specify URLs that contain the letters {}[] without having curl itself interpret them. Note that these letters are not normal legal URL contents but they should be encoded according to the URI standard. curl-8.14.1/docs/cmdline-opts/happy-eyeballs-timeout-ms.md0000644000000000000000000000202315017756261021637 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: happy-eyeballs-timeout-ms Arg: Help: Time for IPv6 before IPv4 Added: 7.59.0 Category: connection timeout Multi: single See-also: - max-time - connect-timeout Example: - --happy-eyeballs-timeout-ms 500 $URL --- # `--happy-eyeballs-timeout-ms` Set the timeout for Happy Eyeballs. Happy Eyeballs is an algorithm that attempts to connect to both IPv4 and IPv6 addresses for dual-stack hosts, giving IPv6 a head-start of the specified number of milliseconds. If the IPv6 address cannot be connected to within that time, then a connection attempt is made to the IPv4 address in parallel. The first connection to be established is the one that is used. The range of suggested useful values is limited. Happy Eyeballs RFC 6555 says "It is RECOMMENDED that connection attempts be paced 150-250 ms apart to balance human factors against network load." libcurl currently defaults to 200 ms. Firefox and Chrome currently default to 300 ms. curl-8.14.1/docs/cmdline-opts/haproxy-clientip.md0000644000000000000000000000221515017756261020121 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: haproxy-clientip Arg: Help: Set address in HAProxy PROXY Protocols: HTTP Added: 8.2.0 Category: http proxy Multi: single See-also: - proxy Example: - --haproxy-clientip $IP --- # `--haproxy-clientip` Set a client IP in HAProxy PROXY protocol v1 header at the beginning of the connection. For valid requests, IPv4 addresses must be indicated as a series of exactly 4 integers in the range [0..255] inclusive written in decimal representation separated by exactly one dot between each other. Heading zeroes are not permitted in front of numbers in order to avoid any possible confusion with octal numbers. IPv6 addresses must be indicated as series of 4 hexadecimal digits (upper or lower case) delimited by colons between each other, with the acceptance of one double colon sequence to replace the largest acceptable range of consecutive zeroes. The total number of decoded bits must be exactly 128. Otherwise, any string can be accepted for the client IP and get sent. It replaces --haproxy-protocol if used, it is not necessary to specify both flags. curl-8.14.1/docs/cmdline-opts/haproxy-protocol.md0000644000000000000000000000112215017756261020147 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: haproxy-protocol Help: Send HAProxy PROXY protocol v1 header Protocols: HTTP Added: 7.60.0 Category: http proxy Multi: boolean See-also: - proxy Example: - --haproxy-protocol $URL --- # `--haproxy-protocol` Send a HAProxy PROXY protocol v1 header at the beginning of the connection. This is used by some load balancers and reverse proxies to indicate the client's true IP address and port. This option is primarily useful when sending test requests to a service that expects this header. curl-8.14.1/docs/cmdline-opts/head.md0000644000000000000000000000100715017756261015521 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: head Short: I Help: Show document info only Protocols: HTTP FTP FILE Category: http ftp file Added: 4.0 Multi: boolean See-also: - get - verbose - trace-ascii Example: - -I $URL --- # `--head` Fetch the headers only. HTTP-servers feature the command HEAD which this uses to get nothing but the header of a document. When used on an FTP or FILE URL, curl displays the file size and last modification time only. curl-8.14.1/docs/cmdline-opts/header.md0000644000000000000000000000553615017756261016063 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: header Short: H Arg:
Help: Pass custom header(s) to server Protocols: HTTP IMAP SMTP Category: http imap smtp Added: 5.0 Multi: append See-also: - user-agent - referer Example: - -H "X-First-Name: Joe" $URL - -H "User-Agent: yes-please/2000" $URL - -H "Host:" $URL - -H @headers.txt $URL --- # `--header` Extra header to include in information sent. When used within an HTTP request, it is added to the regular request headers. For an IMAP or SMTP MIME uploaded mail built with --form options, it is prepended to the resulting MIME document, effectively including it at the mail global level. It does not affect raw uploaded mails (Added in 7.56.0). You may specify any number of extra headers. Note that if you should add a custom header that has the same name as one of the internal ones curl would use, your externally set header is used instead of the internal one. This allows you to make even trickier stuff than curl would normally do. You should not replace internally set headers without knowing perfectly well what you are doing. Remove an internal header by giving a replacement without content on the right side of the colon, as in: -H `Host:`. If you send the custom header with no-value then its header must be terminated with a semicolon, such as -H `X-Custom-Header;` to send `X-Custom-Header:`. curl makes sure that each header you add/replace is sent with the proper end-of-line marker, you should thus **not** add that as a part of the header content: do not add newlines or carriage returns, they only mess things up for you. curl passes on the verbatim string you give it without any filter or other safe guards. That includes white space and control characters. This option can take an argument in @filename style, which then adds a header for each line in the input file. Using @- makes curl read the header file from stdin. (Added in 7.55.0) Please note that most anti-spam utilities check the presence and value of several MIME mail headers: these are `From:`, `To:`, `Date:` and `Subject:` among others and should be added with this option. You need --proxy-header to send custom headers intended for an HTTP proxy. (Added in 7.37.0) Passing on a `Transfer-Encoding: chunked` header when doing an HTTP request with a request body, makes curl send the data using chunked encoding. **WARNING**: headers set with this option are set in all HTTP requests - even after redirects are followed, like when told with --location. This can lead to the header being sent to other hosts than the original host, so sensitive headers should be used with caution combined with following redirects. `Authorization:` and `Cookie:` headers are explicitly *not* passed on in HTTP requests when following redirects to other origins, unless --location-trusted is used. curl-8.14.1/docs/cmdline-opts/help.md0000644000000000000000000000214715017756261015556 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: help Arg: Short: h Help: Get help for commands Category: important curl Added: 4.0 Multi: custom See-also: - verbose Example: - --help all - --help --insecure - --help -f --- # `--help` Usage help. Provide help for the subject given as an optional argument. If no argument is provided, curl displays the most important command line arguments. The argument can either be a **category** or a **command line option**. When a category is provided, curl shows all command line options within the given category. Specify category `all` to list all available options. If `category` is specified, curl displays all available help categories. If the provided subject is instead an existing command line option, specified either in its short form with a single dash and a single letter, or in the long form with two dashes and a longer name, curl displays a help text for that option in the terminal. The help output is extensive for some options. If the provided command line option is not known, curl says so. curl-8.14.1/docs/cmdline-opts/hostpubmd5.md0000644000000000000000000000107015017756261016712 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: hostpubmd5 Arg: Help: Acceptable MD5 hash of host public key Protocols: SFTP SCP Added: 7.17.1 Category: sftp scp ssh Multi: single See-also: - hostpubsha256 Example: - --hostpubmd5 e5c1c49020640a5ab0f2034854c321a8 sftp://example.com/ --- # `--hostpubmd5` Pass a string containing 32 hexadecimal digits. The string should be the 128 bit **MD5** checksum of the remote host's public key, curl refuses the connection with the host unless the checksums match. curl-8.14.1/docs/cmdline-opts/hostpubsha256.md0000644000000000000000000000120415017756261017234 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: hostpubsha256 Arg: Help: Acceptable SHA256 hash of host public key Protocols: SFTP SCP Added: 7.80.0 Category: sftp scp ssh Multi: single See-also: - hostpubmd5 Example: - --hostpubsha256 NDVkMTQxMGQ1ODdmMjQ3MjczYjAyOTY5MmRkMjVmNDQ= sftp://example.com/ --- # `--hostpubsha256` Pass a string containing a Base64-encoded SHA256 hash of the remote host's public key. curl refuses the connection with the host unless the hashes match. This feature requires libcurl to be built with libssh2 and does not work with other SSH backends. curl-8.14.1/docs/cmdline-opts/hsts.md0000644000000000000000000000165115017756261015606 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: hsts Arg: Protocols: HTTPS Help: Enable HSTS with this cache file Added: 7.74.0 Category: http Multi: append See-also: - proto Example: - --hsts cache.txt $URL --- # `--hsts` Enable HSTS for the transfer. If the filename points to an existing HSTS cache file, that is used. After a completed transfer, the cache is saved to the filename again if it has been modified. If curl is told to use HTTP:// for a transfer involving a hostname that exists in the HSTS cache, it upgrades the transfer to use HTTPS. Each HSTS cache entry has an individual lifetime after which the upgrade is no longer performed. Specify a "" filename (zero length) to avoid loading/saving and make curl just handle HSTS in memory. If this option is used several times, curl loads contents from all the files but the last one is used for saving. curl-8.14.1/docs/cmdline-opts/http0.9.md0000644000000000000000000000110215017756261016022 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: http0.9 Tags: Versions Protocols: HTTP Help: Allow HTTP/0.9 responses Category: http Added: 7.64.0 Multi: boolean See-also: - http1.1 - http2 - http3 Example: - --http0.9 $URL --- # `--http0.9` Accept an HTTP version 0.9 response. HTTP/0.9 is a response without headers and therefore you can also connect with this to non-HTTP servers and still get a response since curl simply transparently downgrades - if allowed. HTTP/0.9 is disabled by default (added in 7.66.0) curl-8.14.1/docs/cmdline-opts/http1.0.md0000644000000000000000000000064115017756261016021 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Short: 0 Long: http1.0 Tags: Versions Protocols: HTTP Added: 7.9.1 Mutexed: http1.1 http2 http2-prior-knowledge http3 Help: Use HTTP/1.0 Category: http Multi: mutex See-also: - http0.9 - http1.1 Example: - --http1.0 $URL --- # `--http1.0` Use HTTP version 1.0 instead of using its internally preferred HTTP version. curl-8.14.1/docs/cmdline-opts/http1.1.md0000644000000000000000000000061115017756261016017 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: http1.1 Tags: Versions Protocols: HTTP Added: 7.33.0 Mutexed: http1.0 http2 http2-prior-knowledge http3 Help: Use HTTP/1.1 Category: http Multi: mutex See-also: - http1.0 - http0.9 Example: - --http1.1 $URL --- # `--http1.1` Use HTTP version 1.1. This is the default with HTTP:// URLs. curl-8.14.1/docs/cmdline-opts/http2-prior-knowledge.md0000644000000000000000000000152515017756261020774 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: http2-prior-knowledge Tags: Versions Protocols: HTTP Added: 7.49.0 Mutexed: http1.1 http1.0 http2 http3 Requires: HTTP/2 Help: Use HTTP/2 without HTTP/1.1 Upgrade Category: http Multi: boolean See-also: - http2 - http3 Example: - --http2-prior-knowledge $URL --- # `--http2-prior-knowledge` Issue a non-TLS HTTP request using HTTP/2 directly without HTTP/1.1 Upgrade. It requires prior knowledge that the server supports HTTP/2 straight away. HTTPS requests still do HTTP/2 the standard way with negotiated protocol versions in the TLS handshake. Since 8.10.0 if this option is set for an HTTPS request then the application layer protocol version (ALPN) offered to the server is only HTTP/2. Prior to that both HTTP/1.1 and HTTP/2 were offered. curl-8.14.1/docs/cmdline-opts/http2.md0000644000000000000000000000136115017756261015664 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: http2 Tags: Versions Protocols: HTTP Added: 7.33.0 Mutexed: http1.1 http1.0 http2-prior-knowledge http3 Requires: HTTP/2 Help: Use HTTP/2 Category: http Multi: mutex See-also: - http1.1 - http3 - no-alpn Example: - --http2 $URL --- # `--http2` Use HTTP/2. For HTTPS, this means curl negotiates HTTP/2 in the TLS handshake. curl does this by default. For HTTP, this means curl attempts to upgrade the request to HTTP/2 using the Upgrade: request header. When curl uses HTTP/2 over HTTPS, it does not itself insist on TLS 1.2 or higher even though that is required by the specification. A user can add this version requirement with --tlsv1.2. curl-8.14.1/docs/cmdline-opts/http3-only.md0000644000000000000000000000162015017756261016642 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: http3-only Tags: Versions Protocols: HTTP Added: 7.88.0 Mutexed: http1.1 http1.0 http2 http2-prior-knowledge http3 Requires: HTTP/3 Help: Use HTTP/3 only Category: http Multi: mutex See-also: - http1.1 - http2 - http3 Example: - --http3-only $URL --- # `--http3-only` Instruct curl to use HTTP/3 to the host in the URL, with no fallback to earlier HTTP versions. HTTP/3 can only be used for HTTPS and not for HTTP URLs. For HTTP, this option triggers an error. This option allows a user to avoid using the Alt-Svc method of upgrading to HTTP/3 when you know that the target speaks HTTP/3 on the given host and port. This option makes curl fail if a QUIC connection cannot be established, it does not attempt any other HTTP versions on its own. Use --http3 for similar functionality *with* a fallback. curl-8.14.1/docs/cmdline-opts/http3.md0000644000000000000000000000204015017756261015660 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: http3 Tags: Versions Protocols: HTTP Added: 7.66.0 Mutexed: http1.1 http1.0 http2 http2-prior-knowledge http3-only Requires: HTTP/3 Help: Use HTTP/3 Category: http Multi: mutex See-also: - http1.1 - http2 Example: - --http3 $URL --- # `--http3` Attempt HTTP/3 to the host in the URL, but fallback to earlier HTTP versions if the HTTP/3 connection establishment fails or is slow. HTTP/3 is only available for HTTPS and not for HTTP URLs. This option allows a user to avoid using the Alt-Svc method of upgrading to HTTP/3 when you know or suspect that the target speaks HTTP/3 on the given host and port. When asked to use HTTP/3, curl issues a separate attempt to use older HTTP versions with a slight delay, so if the HTTP/3 transfer fails or is slow, curl still tries to proceed with an older HTTP version. The fallback performs the regular negotiation between HTTP/1 and HTTP/2. Use --http3-only for similar functionality *without* a fallback. curl-8.14.1/docs/cmdline-opts/ignore-content-length.md0000644000000000000000000000117315017756261021036 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ignore-content-length Help: Ignore the size of the remote resource Protocols: FTP HTTP Category: http ftp Added: 7.14.1 Multi: boolean See-also: - ftp-skip-pasv-ip Example: - --ignore-content-length $URL --- # `--ignore-content-length` For HTTP, ignore the Content-Length header. This is particularly useful for servers running Apache 1.x, which reports incorrect Content-Length for files larger than 2 gigabytes. For FTP, this makes curl skip the SIZE command to figure out the size before downloading a file (added in 7.46.0). curl-8.14.1/docs/cmdline-opts/insecure.md0000644000000000000000000000260515017756261016442 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: insecure Short: k Help: Allow insecure server connections Protocols: TLS SFTP SCP Category: tls sftp scp ssh Added: 7.10 Multi: boolean See-also: - proxy-insecure - cacert - capath Example: - --insecure $URL --- # `--insecure` By default, every secure connection curl makes is verified to be secure before the transfer takes place. This option makes curl skip the verification step and proceed without checking. When this option is not used for protocols using TLS, curl verifies the server's TLS certificate before it continues: that the certificate contains the right name which matches the hostname used in the URL and that the certificate has been signed by a CA certificate present in the cert store. See this online resource for further details: **https://curl.se/docs/sslcerts.html** For SFTP and SCP, this option makes curl skip the *known_hosts* verification. *known_hosts* is a file normally stored in the user's home directory in the ".ssh" subdirectory, which contains hostnames and their public keys. **WARNING**: using this option makes the transfer insecure. When curl uses secure protocols it trusts responses and allows for example HSTS and Alt-Svc information to be stored and used subsequently. Using --insecure can make curl trust and use such information from malicious servers. curl-8.14.1/docs/cmdline-opts/interface.md0000644000000000000000000000240515017756261016563 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: interface Arg: Help: Use network interface Category: connection Added: 7.3 Multi: single See-also: - dns-interface Example: - --interface eth0 $URL - --interface "host!10.0.0.1" $URL - --interface "if!enp3s0" $URL --- # `--interface` Perform the operation using a specified interface. You can enter interface name, IP address or hostname. If you prefer to be specific, you can use the following special syntax: ## if! Interface name. If the provided name does not match an existing interface, curl returns with error 45. ## host! IP address or hostname. ## ifhost!! Interface name and IP address or hostname. This syntax requires libcurl 8.9.0 or later. If the provided name does not match an existing interface, curl returns with error 45. ## curl does not support using network interface names for this option on Windows. That name resolve operation if a hostname is provided does **not** use DNS-over-HTTPS even if --doh-url is set. On Linux this option can be used to specify a **VRF** (Virtual Routing and Forwarding) device, but the binary then needs to either have the **CAP_NET_RAW** capability set or to be run as root. curl-8.14.1/docs/cmdline-opts/ip-tos.md0000644000000000000000000000126015017756261016034 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ip-tos Arg: Help: Set IP Type of Service or Traffic Class Added: 8.9.0 Category: connection Protocols: All Multi: single See-also: - tcp-nodelay - vlan-priority Example: - --ip-tos CS5 $URL --- # `--ip-tos` Set Type of Service (TOS) for IPv4 or Traffic Class for IPv6. The values allowed for \ can be a numeric value between 1 and 255 or one of the following: CS0, CS1, CS2, CS3, CS4, CS5, CS6, CS7, AF11, AF12, AF13, AF21, AF22, AF23, AF31, AF32, AF33, AF41, AF42, AF43, EF, VOICE-ADMIT, ECT1, ECT0, CE, LE, LOWCOST, LOWDELAY, THROUGHPUT, RELIABILITY, MINCOST curl-8.14.1/docs/cmdline-opts/ipfs-gateway.md0000644000000000000000000000257615017756261017234 0ustar0000000000000000--- c: Copyright (C) Mark Gaiser, SPDX-License-Identifier: curl Long: ipfs-gateway Arg: Help: Gateway for IPFS Protocols: IPFS Added: 8.4.0 Category: curl Multi: single See-also: - help - manual Example: - --ipfs-gateway $URL ipfs:// --- # `--ipfs-gateway` Specify which gateway to use for IPFS and IPNS URLs. Not specifying this instead makes curl check if the IPFS_GATEWAY environment variable is set, or if a `~/.ipfs/gateway` file holding the gateway URL exists. If you run a local IPFS node, this gateway is by default available under `http://localhost:8080`. A full example URL would look like: curl --ipfs-gateway http://localhost:8080 \ ipfs://bafybeigagd5nmnn2iys2f3 There are many public IPFS gateways. See for example: https://ipfs.github.io/public-gateway-checker/ If you opt to go for a remote gateway you need to be aware that you completely trust the gateway. This might be fine in local gateways that you host yourself. With remote gateways there could potentially be malicious actors returning you data that does not match the request you made, inspect or even interfere with the request. You may not notice this when using curl. A mitigation could be to go for a "trustless" gateway. This means you locally verify the data. Consult the docs page on trusted vs trustless: https://docs.ipfs.tech/reference/http/gateway/#trusted-vs-trustless curl-8.14.1/docs/cmdline-opts/ipv4.md0000644000000000000000000000062715017756261015511 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Short: 4 Long: ipv4 Tags: Versions Protocols: Added: 7.10.8 Mutexed: ipv6 Requires: Help: Resolve names to IPv4 addresses Category: connection dns Multi: mutex See-also: - http1.1 - http2 Example: - --ipv4 $URL --- # `--ipv4` Use IPv4 addresses only when resolving hostnames, and not for example try IPv6. curl-8.14.1/docs/cmdline-opts/ipv6.md0000644000000000000000000000111215017756261015501 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Short: 6 Long: ipv6 Tags: Versions Protocols: Added: 7.10.8 Mutexed: ipv4 Requires: Help: Resolve names to IPv6 addresses Category: connection dns Multi: mutex See-also: - http1.1 - http2 Example: - --ipv6 $URL --- # `--ipv6` Use IPv6 addresses only when resolving hostnames, and not for example try IPv4. Your resolver may respond to an IPv6-only resolve request by returning IPv6 addresses that contain "mapped" IPv4 addresses for compatibility purposes. macOS is known to do this. curl-8.14.1/docs/cmdline-opts/json.md0000644000000000000000000000242315017756261015574 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: json Arg: Help: HTTP POST JSON Protocols: HTTP Mutexed: form head upload-file Category: http post upload Added: 7.82.0 Multi: append See-also: - data-binary - data-raw Example: - --json '{ "drink": "coffe" }' $URL - --json '{ "drink":' --json ' "coffe" }' $URL - --json @prepared $URL - --json @- $URL < json.txt --- # `--json` Send the specified JSON data in a POST request to the HTTP server. --json works as a shortcut for passing on these three options: --data-binary [arg] --header "Content-Type: application/json" --header "Accept: application/json" There is **no verification** that the passed in data is actual JSON or that the syntax is correct. If you start the data with the letter @, the rest should be a filename to read the data from, or a single dash (-) if you want curl to read the data from stdin. Posting data from a file named 'foobar' would thus be done with --json @foobar and to instead read the data from stdin, use --json @-. If this option is used more than once on the same command line, the additional data pieces are concatenated to the previous before sending. The headers this option sets can be overridden with --header as usual. curl-8.14.1/docs/cmdline-opts/junk-session-cookies.md0000644000000000000000000000111315017756261020700 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: junk-session-cookies Short: j Help: Ignore session cookies read from file Protocols: HTTP Category: http Added: 7.9.7 Multi: boolean See-also: - cookie - cookie-jar Example: - --junk-session-cookies -b cookies.txt $URL --- # `--junk-session-cookies` When curl is told to read cookies from a given file, this option makes it discard all "session cookies". This has the same effect as if a new session is started. Typical browsers discard session cookies when they are closed down. curl-8.14.1/docs/cmdline-opts/keepalive-cnt.md0000644000000000000000000000131315017756261017347 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: keepalive-cnt Arg: Help: Maximum number of keepalive probes Added: 8.9.0 Category: connection Multi: single See-also: - keepalive-time - no-keepalive Example: - --keepalive-cnt 3 $URL --- # `--keepalive-cnt` Set the maximum number of keepalive probes TCP should send but get no response before dropping the connection. This option is usually used in conjunction with --keepalive-time. This option is supported on Linux, *BSD/macOS, Windows \>=10.0.16299, Solaris 11.4, and recent AIX, HP-UX and more. This option has no effect if --no-keepalive is used. If unspecified, the option defaults to 9. curl-8.14.1/docs/cmdline-opts/keepalive-time.md0000644000000000000000000000211715017756261017524 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: keepalive-time Arg: Help: Interval time for keepalive probes Added: 7.18.0 Category: connection timeout Multi: single See-also: - no-keepalive - keepalive-cnt - max-time Example: - --keepalive-time 20 $URL --- # `--keepalive-time` Set the time a connection needs to remain idle before sending keepalive probes and the time between individual keepalive probes. It is currently effective on operating systems offering the `TCP_KEEPIDLE` and `TCP_KEEPINTVL` socket options (meaning Linux, *BSD/macOS, Windows, Solaris, and recent AIX, HP-UX and more). Keepalive is used by the TCP stack to detect broken networks on idle connections. The number of missed keepalive probes before declaring the connection down is OS dependent and is commonly 8 (*BSD/macOS/AIX), 9 (Linux/AIX) or 5/10 (Windows), and this number can be changed by specifying the curl option `keepalive-cnt`. Note that this option has no effect if --no-keepalive is used. If unspecified, the option defaults to 60 seconds. curl-8.14.1/docs/cmdline-opts/key-type.md0000644000000000000000000000067615017756261016402 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: key-type Arg: Help: Private key file type (DER/PEM/ENG) Protocols: TLS Category: tls Added: 7.9.3 Multi: single See-also: - key Example: - --key-type DER --key here $URL --- # `--key-type` Private key file type. Specify which type your --key provided private key is. DER, PEM, and ENG are supported. If not specified, PEM is assumed. curl-8.14.1/docs/cmdline-opts/key.md0000644000000000000000000000227415017756261015417 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: key Arg: Protocols: TLS SSH Help: Private key filename Category: tls ssh Added: 7.9.3 Multi: single See-also: - key-type - cert Example: - --cert certificate --key here $URL --- # `--key` Private key filename. Allows you to provide your private key in this separate file. For SSH, if not specified, curl tries the following candidates in order: `~/.ssh/id_rsa`, `~/.ssh/id_dsa`, `./id_rsa`, `./id_dsa`. If curl is built against OpenSSL library, and the engine pkcs11 or pkcs11 provider is available, then a PKCS#11 URI (RFC 7512) can be used to specify a private key located in a PKCS#11 device. A string beginning with `pkcs11:` is interpreted as a PKCS#11 URI. If a PKCS#11 URI is provided, then the --engine option is set as `pkcs11` if none was provided and the --key-type option is set as `ENG` or `PROV` if none was provided (depending on OpenSSL version). If curl is built against Secure Transport or Schannel then this option is ignored for TLS protocols (HTTPS, etc). Those backends expect the private key to be already present in the keychain or PKCS#12 file containing the certificate. curl-8.14.1/docs/cmdline-opts/krb.md0000644000000000000000000000102015017756261015371 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: krb Arg: Help: Enable Kerberos with security Protocols: FTP Requires: Kerberos Category: ftp Added: 7.3 Multi: single See-also: - delegation - ssl Example: - --krb clear ftp://example.com/ --- # `--krb` Enable Kerberos authentication and use. The level must be entered and should be one of 'clear', 'safe', 'confidential', or 'private'. Should you use a level that is not one of these, 'private' is used. curl-8.14.1/docs/cmdline-opts/libcurl.md0000644000000000000000000000075515017756261016265 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: libcurl Arg: Help: Generate libcurl code for this command line Added: 7.16.1 Category: curl global Multi: single Scope: global See-also: - verbose Example: - --libcurl client.c $URL --- # `--libcurl` Append this option to any ordinary curl command line, and you get libcurl-using C source code written to the file that does the equivalent of what your command-line operation does. curl-8.14.1/docs/cmdline-opts/limit-rate.md0000644000000000000000000000226515017756261016676 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: limit-rate Arg: Help: Limit transfer speed to RATE Category: connection Added: 7.10 Multi: single See-also: - rate - speed-limit - speed-time Example: - --limit-rate 100K $URL - --limit-rate 1000 $URL - --limit-rate 10M $URL --- # `--limit-rate` Specify the maximum transfer rate you want curl to use - for both downloads and uploads. This feature is useful if you have a limited pipe and you would like your transfer not to use your entire bandwidth. To make it slower than it otherwise would be. The given speed is measured in bytes/second, unless a suffix is appended. Appending 'k' or 'K' counts the number as kilobytes, 'm' or 'M' makes it megabytes, while 'g' or 'G' makes it gigabytes. The suffixes (k, M, G, T, P) are 1024 based. For example 1k is 1024. Examples: 200K, 3m and 1G. The rate limiting logic works on averaging the transfer speed to no more than the set threshold over a period of multiple seconds. If you also use the --speed-limit option, that option takes precedence and might cripple the rate-limiting slightly, to help keep the speed-limit logic working. curl-8.14.1/docs/cmdline-opts/list-only.md0000644000000000000000000000300015017756261016545 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: list-only Short: l Protocols: FTP POP3 SFTP FILE Help: List only mode Added: 4.0 Category: ftp pop3 sftp file Multi: boolean See-also: - quote - request Example: - --list-only ftp://example.com/dir/ --- # `--list-only` When listing an FTP directory, force a name-only view. Maybe particularly useful if the user wants to machine-parse the contents of an FTP directory since the normal directory view does not use a standard look or format. When used like this, the option causes an NLST command to be sent to the server instead of LIST. Note: Some FTP servers list only files in their response to NLST; they do not include sub-directories and symbolic links. When listing an SFTP directory, this switch forces a name-only view, one per line. This is especially useful if the user wants to machine-parse the contents of an SFTP directory since the normal directory view provides more information than just filenames. When retrieving a specific email from POP3, this switch forces a LIST command to be performed instead of RETR. This is particularly useful if the user wants to see if a specific message-id exists on the server and what size it is. For FILE, this option has no effect yet as directories are always listed in this mode. Note: When combined with --request, this option can be used to send a UIDL command instead, so the user may use the email's unique identifier rather than its message-id to make the request. curl-8.14.1/docs/cmdline-opts/local-port.md0000644000000000000000000000105215017756261016674 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: local-port Arg: Help: Use a local port number within RANGE Added: 7.15.2 Category: connection Multi: single See-also: - globoff Example: - --local-port 1000-3000 $URL --- # `--local-port` Set a preferred single number or range (FROM-TO) of local port numbers to use for the connection(s). Note that port numbers by nature are a scarce resource so setting this range to something too narrow might cause unnecessary connection setup failures. curl-8.14.1/docs/cmdline-opts/location-trusted.md0000644000000000000000000000150715017756261020125 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: location-trusted Help: As --location, but send secrets to other hosts Protocols: HTTP Category: http auth Added: 7.10.4 Multi: boolean See-also: - user Example: - --location-trusted -u user:password $URL - --location-trusted -H "Cookie: session=abc" $URL --- # `--location-trusted` Instruct curl to follow HTTP redirects like --location, but permit curl to send credentials and other secrets along to other hosts than the initial one. This may or may not introduce a security breach if the site redirects you to a site to which you send this sensitive data to. Another host means that one or more of hostname, protocol scheme or port number changed. This option also allows curl to pass long cookies set explicitly with --header. curl-8.14.1/docs/cmdline-opts/location.md0000644000000000000000000000257015017756261016436 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: location Short: L Help: Follow redirects Protocols: HTTP Category: http Added: 4.9 Multi: boolean See-also: - resolve - alt-svc Example: - -L $URL --- # `--location` If the server reports that the requested page has moved to a different location (indicated with a Location: header and a 3XX response code), this option makes curl redo the request to the new place. If used together with --show-headers or --head, headers from all requested pages are shown. When authentication is used, or when sending a cookie with `-H Cookie:`, curl only sends its credentials to the initial host. If a redirect takes curl to a different host, it does not get the credentials passed on. See --location-trusted on how to change this. Limit the amount of redirects to follow by using the --max-redirs option. When curl follows a redirect and if the request is a POST, it sends the following request with a GET if the HTTP response was 301, 302, or 303. If the response code was any other 3xx code, curl resends the following request using the same unmodified method. You can tell curl to not change POST requests to GET after a 30x response by using the dedicated options for that: --post301, --post302 and --post303. The method set with --request overrides the method curl would otherwise select to use. curl-8.14.1/docs/cmdline-opts/login-options.md0000644000000000000000000000213315017756261017422 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: login-options Arg: Protocols: IMAP LDAP POP3 SMTP Help: Server login options Added: 7.34.0 Category: imap pop3 smtp auth ldap Multi: single See-also: - user Example: - --login-options 'AUTH=*' imap://example.com --- # `--login-options` Specify the login options to use during server authentication. You can use login options to specify protocol specific options that may be used during authentication. At present only IMAP, POP3 and SMTP support login options. For more information about login options please see RFC 2384, RFC 5092 and the IETF draft https://datatracker.ietf.org/doc/html/draft-earhart-url-smtp-00 Since 8.2.0, IMAP supports the login option `AUTH=+LOGIN`. With this option, curl uses the plain (not SASL) `LOGIN IMAP` command even if the server advertises SASL authentication. Care should be taken in using this option, as it sends your password over the network in plain text. This does not work if the IMAP server disables the plain `LOGIN` (e.g. to prevent password snooping). curl-8.14.1/docs/cmdline-opts/mail-auth.md0000644000000000000000000000100015017756261016472 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: mail-auth Arg:
Protocols: SMTP Help: Originator address of the original email Added: 7.25.0 Category: smtp Multi: single See-also: - mail-rcpt - mail-from Example: - --mail-auth user@example.com -T mail smtp://example.com/ --- # `--mail-auth` Specify a single address. This is used to specify the authentication address (identity) of a submitted message that is being relayed to another server. curl-8.14.1/docs/cmdline-opts/mail-from.md0000644000000000000000000000063115017756261016505 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: mail-from Arg:
Help: Mail from this address Protocols: SMTP Added: 7.20.0 Category: smtp Multi: single See-also: - mail-rcpt - mail-auth Example: - --mail-from user@example.com -T mail smtp://example.com/ --- # `--mail-from` Specify a single address that the given mail should get sent from. curl-8.14.1/docs/cmdline-opts/mail-rcpt-allowfails.md0000644000000000000000000000154115017756261020646 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: mail-rcpt-allowfails Help: Allow RCPT TO command to fail Protocols: SMTP Added: 7.69.0 Category: smtp Multi: boolean See-also: - mail-rcpt Example: - --mail-rcpt-allowfails --mail-rcpt dest@example.com smtp://example.com --- # `--mail-rcpt-allowfails` When sending data to multiple recipients, by default curl aborts SMTP conversation if at least one of the recipients causes RCPT TO command to return an error. The default behavior can be changed by passing --mail-rcpt-allowfails command-line option which makes curl ignore errors and proceed with the remaining valid recipients. If all recipients trigger RCPT TO failures and this flag is specified, curl still aborts the SMTP conversation and returns the error received from to the last RCPT TO command. curl-8.14.1/docs/cmdline-opts/mail-rcpt.md0000644000000000000000000000146015017756261016513 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: mail-rcpt Arg:
Help: Mail to this address Protocols: SMTP Added: 7.20.0 Category: smtp Multi: append See-also: - mail-rcpt-allowfails Example: - --mail-rcpt user@example.net smtp://example.com --- # `--mail-rcpt` Specify a single email address, username or mailing list name. Repeat this option several times to send to multiple recipients. When performing an address verification (**VRFY** command), the recipient should be specified as the username or username and domain (as per Section 3.5 of RFC 5321). (Added in 7.34.0) When performing a mailing list expand (EXPN command), the recipient should be specified using the mailing list name, such as "Friends" or "London-Office". (Added in 7.34.0) curl-8.14.1/docs/cmdline-opts/mainpage.idx0000644000000000000000000000235615017756261016575 0ustar0000000000000000#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 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. # # SPDX-License-Identifier: curl # ########################################################################### _NAME.md _SYNOPSIS.md _DESCRIPTION.md _URL.md _GLOBBING.md _VARIABLES.md _OUTPUT.md _PROTOCOLS.md _PROGRESS.md _VERSION.md _OPTIONS.md %options _FILES.md _ENVIRONMENT.md _PROXYPREFIX.md _EXITCODES.md _BUGS.md _AUTHORS.md _WWW.md _SEEALSO.md curl-8.14.1/docs/cmdline-opts/manual.md0000644000000000000000000000046215017756261016101 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: manual Short: M Help: Display the full manual Category: curl Added: 5.2 Multi: custom See-also: - verbose - libcurl - trace Example: - --manual --- # `--manual` Manual. Display the huge help text. curl-8.14.1/docs/cmdline-opts/max-filesize.md0000644000000000000000000000210215017756261017212 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: max-filesize Arg: Help: Maximum file size to download Protocols: FTP HTTP MQTT Category: connection Added: 7.10.8 Multi: single See-also: - limit-rate Example: - --max-filesize 100K $URL --- # `--max-filesize` When set to a non-zero value, it specifies the maximum size (in bytes) of a file to download. If the file requested is larger than this value, the transfer does not start and curl returns with exit code 63. Setting the maximum value to zero disables the limit. A size modifier may be used. For example, Appending 'k' or 'K' counts the number as kilobytes, 'm' or 'M' makes it megabytes, while 'g' or 'G' makes it gigabytes. Examples: 200K, 3m and 1G. (Added in 7.58.0) **NOTE**: before curl 8.4.0, when the file size is not known prior to download, for such files this option has no effect even if the file transfer ends up being larger than this given limit. Starting with curl 8.4.0, this option aborts the transfer if it reaches the threshold during transfer. curl-8.14.1/docs/cmdline-opts/max-redirs.md0000644000000000000000000000101515017756261016672 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: max-redirs Arg: Help: Maximum number of redirects allowed Protocols: HTTP Category: http Added: 7.5 Multi: single See-also: - location Example: - --max-redirs 3 --location $URL --- # `--max-redirs` Set the maximum number of redirections to follow. When --location is used, to prevent curl from following too many redirects, by default, the limit is set to 50 redirects. Set this option to -1 to make it unlimited. curl-8.14.1/docs/cmdline-opts/max-time.md0000644000000000000000000000157015017756261016346 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: max-time Short: m Arg: Help: Maximum time allowed for transfer Category: connection timeout Added: 4.0 Multi: single See-also: - connect-timeout - retry-max-time Example: - --max-time 10 $URL - --max-time 2.92 $URL --- # `--max-time` Set the maximum time in seconds that you allow each transfer to take. Prevents your batch jobs from hanging for hours due to slow networks or links going down. This option accepts decimal values (added in 7.32.0). If you enable retrying the transfer (--retry) then the maximum time counter is reset each time the transfer is retried. You can use --retry-max-time to limit the retry time. The decimal value needs to be provided using a dot (.) as decimal separator - not the local version even if it might be using another separator. curl-8.14.1/docs/cmdline-opts/metalink.md0000644000000000000000000000064615017756261016434 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: metalink Help: Process given URLs as metalink XML file Added: 7.27.0 Category: deprecated Multi: single See-also: - parallel Example: - --metalink file $URL --- # `--metalink` This option was previously used to specify a Metalink resource. Metalink support is disabled in curl for security reasons (added in 7.78.0). curl-8.14.1/docs/cmdline-opts/mptcp.md0000644000000000000000000000205415017756261015746 0ustar0000000000000000--- c: Copyright (C) Dorian Craps, SPDX-License-Identifier: curl Long: mptcp Added: 8.9.0 Help: Enable Multipath TCP Category: connection Multi: boolean See-also: - tcp-fastopen Example: - --mptcp $URL --- # `--mptcp` Enable the use of Multipath TCP (MPTCP) for connections. MPTCP is an extension to the standard TCP that allows multiple TCP streams over different network paths between the same source and destination. This can enhance bandwidth and improve reliability by using multiple paths simultaneously. MPTCP is beneficial in networks where multiple paths exist between clients and servers, such as mobile networks where a device may switch between WiFi and cellular data or in wired networks with multiple Internet Service Providers. This option is currently only supported on Linux starting from kernel 5.6. Only TCP connections are modified, hence this option does not affect HTTP/3 (QUIC) or UDP connections. The server curl connects to must also support MPTCP. If not, the connection seamlessly falls back to TCP. curl-8.14.1/docs/cmdline-opts/negotiate.md0000644000000000000000000000133415017756261016602 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: negotiate Help: Use HTTP Negotiate (SPNEGO) authentication Protocols: HTTP Category: auth http Added: 7.10.6 Multi: mutex See-also: - basic - ntlm - anyauth - proxy-negotiate Example: - --negotiate -u : $URL --- # `--negotiate` Enable Negotiate (SPNEGO) authentication. This option requires a library built with GSS-API or SSPI support. Use --version to see if your curl supports GSS-API/SSPI or SPNEGO. When using this option, you must also provide a fake --user option to activate the authentication code properly. Sending a '-u :' is enough as the username and password from the --user option are not actually used. curl-8.14.1/docs/cmdline-opts/netrc-file.md0000644000000000000000000000072315017756261016654 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: netrc-file Help: Specify FILE for netrc Arg: Added: 7.21.5 Mutexed: netrc Category: auth Multi: single See-also: - netrc - user - config Example: - --netrc-file netrc $URL --- # `--netrc-file` Set the netrc file to use. Similar to --netrc, except that you also provide the path (absolute or relative). It abides by --netrc-optional if specified. curl-8.14.1/docs/cmdline-opts/netrc-optional.md0000644000000000000000000000063015017756261017557 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: netrc-optional Help: Use either .netrc or URL Mutexed: netrc Category: auth Added: 7.9.8 Multi: boolean See-also: - netrc-file Example: - --netrc-optional $URL --- # `--netrc-optional` Similar to --netrc, but this option makes the .netrc usage **optional** and not mandatory as the --netrc option does. curl-8.14.1/docs/cmdline-opts/netrc.md0000644000000000000000000000221515017756261015735 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: netrc Short: n Help: Must read .netrc for username and password Category: auth Added: 4.6 Mutexed: netrc-file netrc-optional Multi: boolean See-also: - netrc-file - config - user Example: - --netrc $URL --- # `--netrc` Make curl scan the *.netrc* file in the user's home directory for login name and password. This is typically used for FTP on Unix. If used with HTTP, curl enables user authentication. See *netrc(5)* and *ftp(1)* for details on the file format. curl does not complain if that file does not have the right permissions (it should be neither world- nor group-readable). The environment variable "HOME" is used to find the home directory. On Windows two filenames in the home directory are checked: *.netrc* and *_netrc*, preferring the former. Older versions on Windows checked for *_netrc* only. A quick and simple example of how to setup a *.netrc* to allow curl to FTP to the machine host.example.com with username 'myself' and password 'secret' could look similar to: machine host.example.com login myself password secret curl-8.14.1/docs/cmdline-opts/next.md0000644000000000000000000000166215017756261015605 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Short: : Long: next Tags: Protocols: Added: 7.36.0 Magic: divider Help: Make next URL use separate options Category: curl Multi: append See-also: - parallel - config Example: - $URL --next -d postthis www2.example.com - -I $URL --next https://example.net/ --- # `--next` Use a separate operation for the following URL and associated options. This allows you to send several URL requests, each with their own specific options, for example, such as different usernames or custom requests for each. --next resets all local options and only global ones have their values survive over to the operation following the --next instruction. Global options include --verbose, --trace, --trace-ascii and --fail-early. For example, you can do both a GET and a POST in a single command line: curl www1.example.com --next -d postthis www2.example.com curl-8.14.1/docs/cmdline-opts/no-alpn.md0000644000000000000000000000117715017756261016174 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: no-alpn Tags: HTTP/2 Protocols: HTTPS Added: 7.36.0 Requires: TLS Help: Disable the ALPN TLS extension Category: tls http Multi: boolean See-also: - no-npn - http2 Example: - --no-alpn $URL --- # `--no-alpn` Disable the ALPN TLS extension. ALPN is enabled by default if libcurl was built with an SSL library that supports ALPN. ALPN is used by a libcurl that supports HTTP/2 to negotiate HTTP/2 support with the server during https sessions. Note that this is the negated option name documented. You can use --alpn to enable ALPN. curl-8.14.1/docs/cmdline-opts/no-buffer.md0000644000000000000000000000121115017756261016500 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: no-buffer Short: N Help: Disable buffering of the output stream Category: output Added: 6.5 Multi: boolean See-also: - progress-bar Example: - --no-buffer $URL --- # `--no-buffer` Disable the buffering of the output stream. In normal work situations, curl uses a standard buffered output stream that has the effect that it outputs the data in chunks, not necessarily exactly when the data arrives. Using this option disables that buffering. Note that this is the negated option name documented. You can use --buffer to enable buffering again. curl-8.14.1/docs/cmdline-opts/no-clobber.md0000644000000000000000000000152215017756261016644 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: no-clobber Help: Do not overwrite files that already exist Category: output Added: 7.83.0 Multi: boolean See-also: - output - remote-name Example: - --no-clobber --output local/dir/file $URL --- # `--no-clobber` When used in conjunction with the --output, --remote-header-name, --remote-name, or --remote-name-all options, curl avoids overwriting files that already exist. Instead, a dot and a number gets appended to the name of the file that would be created, up to filename.100 after which it does not create any file. Note that this is the negated option name documented. You can thus use --clobber to enforce the clobbering, even if --remote-header-name is specified. The --continue-at option cannot be used together with --no-clobber. curl-8.14.1/docs/cmdline-opts/no-keepalive.md0000644000000000000000000000101015017756261017171 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: no-keepalive Help: Disable TCP keepalive on the connection Category: connection Added: 7.18.0 Multi: boolean See-also: - keepalive-time - keepalive-cnt Example: - --no-keepalive $URL --- # `--no-keepalive` Disable the use of keepalive messages on the TCP connection. curl otherwise enables them by default. Note that this is the negated option name documented. You can thus use --keepalive to enforce keepalive. curl-8.14.1/docs/cmdline-opts/no-npn.md0000644000000000000000000000116515017756261016032 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: no-npn Tags: Versions HTTP/2 Protocols: HTTPS Added: 7.36.0 Mutexed: Requires: TLS Help: Disable the NPN TLS extension Category: deprecated Multi: boolean See-also: - no-alpn - http2 Example: - --no-npn $URL --- # `--no-npn` curl never uses NPN, this option has no effect (added in 7.86.0). Disable the NPN TLS extension. NPN is enabled by default if libcurl was built with an SSL library that supports NPN. NPN is used by a libcurl that supports HTTP/2 to negotiate HTTP/2 support with the server during https sessions. curl-8.14.1/docs/cmdline-opts/no-progress-meter.md0000644000000000000000000000110015017756261020202 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: no-progress-meter Help: Do not show the progress meter Added: 7.67.0 Category: verbose Multi: boolean See-also: - verbose - silent Example: - --no-progress-meter -o store $URL --- # `--no-progress-meter` Option to switch off the progress meter output without muting or otherwise affecting warning and informational messages like --silent does. Note that this is the negated option name documented. You can thus use --progress-meter to enable the progress meter again. curl-8.14.1/docs/cmdline-opts/no-sessionid.md0000644000000000000000000000130315017756261017231 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: no-sessionid Help: Disable SSL session-ID reusing Protocols: TLS Added: 7.16.0 Category: tls Multi: boolean See-also: - insecure Example: - --no-sessionid $URL --- # `--no-sessionid` Disable curl's use of SSL session-ID caching. By default all transfers are done using the cache. Note that while nothing should ever get hurt by attempting to reuse SSL session-IDs, there seem to be broken SSL implementations in the wild that may require you to disable this in order for you to succeed. Note that this is the negated option name documented. You can thus use --sessionid to enforce session-ID caching. curl-8.14.1/docs/cmdline-opts/noproxy.md0000644000000000000000000000230015017756261016333 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: noproxy Arg: Help: List of hosts which do not use proxy Added: 7.19.4 Category: proxy Multi: single See-also: - proxy Example: - --noproxy "www.example" $URL --- # `--noproxy` Comma-separated list of hosts for which not to use a proxy, if one is specified. The only wildcard is a single `*` character, which matches all hosts, and effectively disables the proxy. Each name in this list is matched as either a domain which contains the hostname, or the hostname itself. For example, `local.com` would match `local.com`, `local.com:80`, and `www.local.com`, but not `www.notlocal.com`. This option overrides the environment variables that disable the proxy (`no_proxy` and `NO_PROXY`) (added in 7.53.0). If there is an environment variable disabling a proxy, you can set the no proxy list to "" to override it. IP addresses specified to this option can be provided using CIDR notation (added in 7.86.0): an appended slash and number specifies the number of network bits out of the address to use in the comparison. For example `192.168.0.0/16` would match all addresses starting with `192.168`. curl-8.14.1/docs/cmdline-opts/ntlm-wb.md0000644000000000000000000000074615017756261016211 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ntlm-wb Help: HTTP NTLM authentication with winbind Protocols: HTTP Category: deprecated Added: 7.22.0 Multi: mutex See-also: - ntlm - proxy-ntlm Example: - --ntlm-wb -u user:password $URL --- # `--ntlm-wb` Deprecated option (added in 8.8.0). Enabled NTLM much in the style --ntlm does, but handed over the authentication to a separate executable that was executed when needed. curl-8.14.1/docs/cmdline-opts/ntlm.md0000644000000000000000000000146415017756261015601 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ntlm Help: HTTP NTLM authentication Mutexed: basic negotiate digest anyauth Protocols: HTTP Requires: TLS Category: auth http Added: 7.10.6 Multi: mutex See-also: - proxy-ntlm Example: - --ntlm -u user:password $URL --- # `--ntlm` Use NTLM authentication. The NTLM authentication method was designed by Microsoft and is used by IIS web servers. It is a proprietary protocol, reverse-engineered by clever people and implemented in curl based on their efforts. This kind of behavior should not be endorsed, you should encourage everyone who uses NTLM to switch to a public and documented authentication method instead, such as Digest. If you want to enable NTLM for your proxy authentication, then use --proxy-ntlm. curl-8.14.1/docs/cmdline-opts/oauth2-bearer.md0000644000000000000000000000115515017756261017264 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: oauth2-bearer Help: OAuth 2 Bearer Token Arg: Protocols: IMAP LDAP POP3 SMTP HTTP Category: auth imap pop3 smtp ldap Added: 7.33.0 Multi: single See-also: - basic - ntlm - digest Example: - --oauth2-bearer "mF_9.B5f-4.1JqM" $URL --- # `--oauth2-bearer` Specify the Bearer Token for OAUTH 2.0 server authentication. The Bearer Token is used in conjunction with the username which can be specified as part of the --url or --user options. The Bearer Token and username are formatted according to RFC 6750. curl-8.14.1/docs/cmdline-opts/output-dir.md0000644000000000000000000000116515017756261016741 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: output-dir Arg: Help: Directory to save files in Added: 7.73.0 Category: output Multi: single See-also: - remote-name - remote-header-name Example: - --output-dir "tmp" -O $URL --- # `--output-dir` Specify the directory in which files should be stored, when --remote-name or --output are used. The given output directory is used for all URLs and output options on the command line, up until the first --next. If the specified target directory does not exist, the operation fails unless --create-dirs is also used. curl-8.14.1/docs/cmdline-opts/output.md0000644000000000000000000000342215017756261016163 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: output Arg: Short: o Help: Write to file instead of stdout Category: important output Added: 4.0 Multi: per-URL See-also: - remote-name - remote-name-all - remote-header-name Example: - -o file $URL - "http://{one,two}.example.com" -o "file_#1.txt" - "http://{site,host}.host[1-5].example" -o "#1_#2" - -o file $URL -o file2 https://example.net --- # `--output` Write output to the given file instead of stdout. If you are using globbing to fetch multiple documents, you should quote the URL and you can use `#` followed by a number in the filename. That variable is then replaced with the current string for the URL being fetched. Like in: curl "http://{one,two}.example.com" -o "file_#1.txt" or use several variables like: curl "http://{site,host}.host[1-5].example" -o "#1_#2" You may use this option as many times as the number of URLs you have. For example, if you specify two URLs on the same command line, you can use it like this: curl -o aa example.com -o bb example.net and the order of the -o options and the URLs does not matter, just that the first -o is for the first URL and so on, so the above command line can also be written as curl example.com example.net -o aa -o bb See also the --create-dirs option to create the local directories dynamically. Specifying the output as '-' (a single dash) passes the output to stdout. To suppress response bodies, you can redirect output to /dev/null: curl example.com -o /dev/null Or for Windows: curl example.com -o nul Specify the filename as single minus to force the output to stdout, to override curl's internal binary output in terminal prevention: curl https://example.com/jpeg -o - curl-8.14.1/docs/cmdline-opts/parallel-immediate.md0000644000000000000000000000145015017756261020352 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: parallel-immediate Help: Do not wait for multiplexing Added: 7.68.0 Category: connection curl global Multi: boolean Scope: global See-also: - parallel - parallel-max Example: - --parallel-immediate -Z $URL -o file1 $URL -o file2 --- # `--parallel-immediate` When doing parallel transfers, this option instructs curl to prefer opening up more connections in parallel at once rather than waiting to see if new transfers can be added as multiplexed streams on another connection. By default, without this option set, curl prefers to wait a little and multiplex new transfers over existing connections. It keeps the number of connections low at the expense of risking a slightly slower transfer startup. curl-8.14.1/docs/cmdline-opts/parallel-max.md0000644000000000000000000000103415017756261017177 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: parallel-max Arg: Help: Maximum concurrency for parallel transfers Added: 7.66.0 Category: connection curl global Multi: single Scope: global See-also: - parallel Example: - --parallel-max 100 -Z $URL ftp://example.com/ --- # `--parallel-max` When asked to do parallel transfers, using --parallel, this option controls the maximum amount of transfers to do simultaneously. The default is 50. 300 is the largest supported value. curl-8.14.1/docs/cmdline-opts/parallel.md0000644000000000000000000000162415017756261016421 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Short: Z Long: parallel Help: Perform transfers in parallel Added: 7.66.0 Category: connection curl global Multi: boolean Scope: global See-also: - next - verbose - parallel-max - parallel-immediate Example: - --parallel $URL -o file1 $URL -o file2 --- # `--parallel` Make curl perform all transfers in parallel as compared to the regular serial manner. Parallel transfer means that curl runs up to N concurrent transfers simultaneously and if there are more than N transfers to handle, it starts new ones when earlier transfers finish. With parallel transfers, the progress meter output is different from when doing serial transfers, as it then displays the transfer status for multiple transfers in a single line. The maximum amount of concurrent transfers is set with --parallel-max and it defaults to 50. curl-8.14.1/docs/cmdline-opts/pass.md0000644000000000000000000000055315017756261015573 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: pass Arg: Help: Passphrase for the private key Protocols: SSH TLS Category: ssh tls auth Added: 7.9.3 Multi: single See-also: - key - user Example: - --pass secret --key file $URL --- # `--pass` Passphrase for the private key used for SSH or TLS. curl-8.14.1/docs/cmdline-opts/path-as-is.md0000644000000000000000000000075215017756261016574 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: path-as-is Help: Do not squash .. sequences in URL path Added: 7.42.0 Category: curl Multi: boolean See-also: - request-target Example: - --path-as-is https://example.com/../../etc/passwd --- # `--path-as-is` Do not handle sequences of /../ or /./ in the given URL path. Normally curl squashes or merges them according to standards but with this option set you tell it not to do that. curl-8.14.1/docs/cmdline-opts/pinnedpubkey.md0000644000000000000000000000263015017756261017320 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: pinnedpubkey Arg: Help: Public key to verify peer against Protocols: TLS Category: tls Added: 7.39.0 Multi: single See-also: - hostpubsha256 Example: - --pinnedpubkey keyfile $URL - --pinnedpubkey 'sha256//ce118b51897f4452dc' $URL --- # `--pinnedpubkey` Use the specified public key file (or hashes) to verify the peer. This can be a path to a file which contains a single public key in PEM or DER format, or any number of base64 encoded sha256 hashes preceded by 'sha256//' and separated by ';'. When negotiating a TLS or SSL connection, the server sends a certificate indicating its identity. A public key is extracted from this certificate and if it does not exactly match the public key provided to this option, curl aborts the connection before sending or receiving any data. This option is independent of option --insecure. If you use both options together then the peer is still verified by public key. PEM/DER support: OpenSSL and GnuTLS (added in 7.39.0), wolfSSL (added in 7.43.0), mbedTLS (added in 7.47.0), Secure Transport macOS 10.7+/iOS 10+ (added in 7.54.1), Schannel (added in 7.58.1) sha256 support: OpenSSL, GnuTLS and wolfSSL (added in 7.44.0), mbedTLS (added in 7.47.0), Secure Transport macOS 10.7+/iOS 10+ (added in 7.54.1), Schannel (added in 7.58.1) Other SSL backends not supported. curl-8.14.1/docs/cmdline-opts/post301.md0000644000000000000000000000126315017756261016035 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: post301 Help: Do not switch to GET after a 301 redirect Protocols: HTTP Added: 7.17.1 Category: http post Multi: boolean See-also: - post302 - post303 - location Example: - --post301 --location -d "data" $URL --- # `--post301` Respect RFC 7231/6.4.2 and do not convert POST requests into GET requests when following a 301 redirect. The non-RFC behavior is ubiquitous in web browsers, so curl does the conversion by default to maintain consistency. However, a server may require a POST to remain a POST after such a redirection. This option is meaningful only when using --location. curl-8.14.1/docs/cmdline-opts/post302.md0000644000000000000000000000126315017756261016036 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: post302 Help: Do not switch to GET after a 302 redirect Protocols: HTTP Added: 7.19.1 Category: http post Multi: boolean See-also: - post301 - post303 - location Example: - --post302 --location -d "data" $URL --- # `--post302` Respect RFC 7231/6.4.3 and do not convert POST requests into GET requests when following a 302 redirect. The non-RFC behavior is ubiquitous in web browsers, so curl does the conversion by default to maintain consistency. However, a server may require a POST to remain a POST after such a redirection. This option is meaningful only when using --location. curl-8.14.1/docs/cmdline-opts/post303.md0000644000000000000000000000106315017756261016035 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: post303 Help: Do not switch to GET after a 303 redirect Protocols: HTTP Added: 7.26.0 Category: http post Multi: boolean See-also: - post302 - post301 - location Example: - --post303 --location -d "data" $URL --- # `--post303` Violate RFC 7231/6.4.4 and do not convert POST requests into GET requests when following 303 redirect. A server may require a POST to remain a POST after a 303 redirection. This option is meaningful only when using --location. curl-8.14.1/docs/cmdline-opts/preproxy.md0000644000000000000000000000206615017756261016516 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: preproxy Arg: <[protocol://]host[:port]> Help: Use this proxy first Added: 7.52.0 Category: proxy Multi: single See-also: - proxy - socks5 Example: - --preproxy socks5://proxy.example -x http://http.example $URL --- # `--preproxy` Use the specified SOCKS proxy before connecting to an HTTP or HTTPS --proxy. In such a case curl first connects to the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy. Hence pre proxy. The pre proxy string should be specified with a protocol:// prefix to specify alternative proxy protocols. Use socks4://, socks4a://, socks5:// or socks5h:// to request the specific SOCKS version to be used. No protocol specified makes curl default to SOCKS4. If the port number is not specified in the proxy string, it is assumed to be 1080. User and password that might be provided in the proxy string are URL decoded by curl. This allows you to pass in special characters such as @ by using %40 or pass in a colon with %3a. curl-8.14.1/docs/cmdline-opts/progress-bar.md0000644000000000000000000000133015017756261017225 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Short: # Long: progress-bar Help: Display transfer progress as a bar Category: verbose global Added: 5.10 Multi: boolean Scope: global See-also: - styled-output Example: - -# -O $URL --- # `--progress-bar` Make curl display transfer progress as a simple progress bar instead of the standard, more informational, meter. This progress bar draws a single line of '#' characters across the screen and shows a percentage if the transfer size is known. For transfers without a known size, there is a space ship (-=o=-) that moves back and forth but only while data is being transferred, with a set of flying hash sign symbols on top. curl-8.14.1/docs/cmdline-opts/proto-default.md0000644000000000000000000000117315017756261017411 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proto-default Help: Use PROTOCOL for any URL missing a scheme Arg: Added: 7.45.0 Category: connection curl Multi: single See-also: - proto - proto-redir Example: - --proto-default https ftp.example.com --- # `--proto-default` Use *protocol* for any provided URL missing a scheme. An unknown or unsupported protocol causes error *CURLE_UNSUPPORTED_PROTOCOL*. This option does not change the default proxy protocol (http). Without this option set, curl guesses protocol based on the hostname, see --url for details. curl-8.14.1/docs/cmdline-opts/proto-redir.md0000644000000000000000000000136515017756261017075 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proto-redir Arg: Help: Enable/disable PROTOCOLS on redirect Added: 7.21.0 Category: connection curl Multi: single See-also: - proto Example: - --proto-redir =http,https $URL --- # `--proto-redir` Limit what protocols to allow on redirects. Protocols denied by --proto are not overridden by this option. See --proto for how protocols are represented. Example, allow only HTTP and HTTPS on redirect: curl --proto-redir -all,http,https http://example.com By default curl only allows HTTP, HTTPS, FTP and FTPS on redirects (added in 7.65.2). Specifying *all* or *+all* enables all protocols on redirects, which is not good for security. curl-8.14.1/docs/cmdline-opts/proto.md0000644000000000000000000000264715017756261015776 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proto Arg: Help: Enable/disable PROTOCOLS Added: 7.21.0 Category: connection curl Multi: single See-also: - proto-redir - proto-default Example: - --proto =http,https,sftp $URL --- # `--proto` Limit what protocols to allow for transfers. Protocols are evaluated left to right, are comma separated, and are each a protocol name or 'all', optionally prefixed by zero or more modifiers. Available modifiers are: ## + Permit this protocol in addition to protocols already permitted (this is the default if no modifier is used). ## - Deny this protocol, removing it from the list of protocols already permitted. ## = Permit only this protocol (ignoring the list already permitted), though subject to later modification by subsequent entries in the comma separated list. ## For example: --proto -ftps uses the default protocols, but disables ftps --proto -all,https,+http only enables http and https --proto =http,https also only enables http and https Unknown and disabled protocols produce a warning. This allows scripts to safely rely on being able to disable potentially dangerous protocols, without relying upon support for that protocol being built into curl to avoid an error. This option can be used multiple times, in which case the effect is the same as concatenating the protocols into one instance of the option. curl-8.14.1/docs/cmdline-opts/proxy-anyauth.md0000644000000000000000000000077015017756261017456 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-anyauth Help: Pick any proxy authentication method Added: 7.13.2 Category: proxy auth Multi: mutex See-also: - proxy - proxy-basic - proxy-digest Example: - --proxy-anyauth --proxy-user user:passwd -x proxy $URL --- # `--proxy-anyauth` Automatically pick a suitable authentication method when communicating with the given HTTP proxy. This might cause an extra request/response round-trip. curl-8.14.1/docs/cmdline-opts/proxy-basic.md0000644000000000000000000000103615017756261017062 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-basic Help: Use Basic authentication on the proxy Category: proxy auth Added: 7.12.0 Multi: mutex See-also: - proxy - proxy-anyauth - proxy-digest Example: - --proxy-basic --proxy-user user:passwd -x proxy $URL --- # `--proxy-basic` Use HTTP Basic authentication when communicating with the given proxy. Use --basic for enabling HTTP Basic with a remote host. Basic is the default authentication method curl uses with proxies. curl-8.14.1/docs/cmdline-opts/proxy-ca-native.md0000644000000000000000000000133515017756261017652 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-ca-native Help: Load CA certs from the OS to verify proxy Protocols: TLS Category: tls Added: 8.2.0 Multi: boolean See-also: - ca-native - cacert - capath - dump-ca-embed - insecure Example: - --proxy-ca-native $URL --- # `--proxy-ca-native` Use the operating system's native CA store for certificate verification of the HTTPS proxy. This option is independent of other HTTPS proxy CA certificate locations set at run time or build time. Those locations are searched in addition to the native CA store. Equivalent to --ca-native but used in HTTPS proxy context. Refer to --ca-native for TLS backend limitations. curl-8.14.1/docs/cmdline-opts/proxy-cacert.md0000644000000000000000000000130015017756261017234 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-cacert Help: CA certificates to verify proxy against Arg: Added: 7.52.0 Category: proxy tls Multi: single See-also: - proxy-capath - cacert - capath - dump-ca-embed - proxy Example: - --proxy-cacert CA-file.txt -x https://proxy $URL --- # `--proxy-cacert` Use the specified certificate file to verify the HTTPS proxy. The file may contain multiple CA certificates. The certificate(s) must be in PEM format. This allows you to use a different trust for the proxy compared to the remote server connected to via the proxy. Equivalent to --cacert but used in HTTPS proxy context. curl-8.14.1/docs/cmdline-opts/proxy-capath.md0000644000000000000000000000173515017756261017247 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-capath Help: CA directory to verify proxy against Arg: Added: 7.52.0 Category: proxy tls Multi: single See-also: - proxy-cacert - proxy - capath - dump-ca-embed Example: - --proxy-capath /local/directory -x https://proxy $URL --- # `--proxy-capath` Same as --capath but used in HTTPS proxy context. Use the specified certificate directory to verify the proxy. Multiple paths can be provided by separating them with colon (`:`) (e.g. `path1:path2:path3`). The certificates must be in PEM format, and if curl is built against OpenSSL, the directory must have been processed using the c_rehash utility supplied with OpenSSL. Using --proxy-capath can allow OpenSSL-powered curl to make SSL-connections much more efficiently than using --proxy-cacert if the --proxy-cacert file contains many CA certificates. If this option is set, the default capath value is ignored. curl-8.14.1/docs/cmdline-opts/proxy-cert-type.md0000644000000000000000000000137115017756261017717 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-cert-type Arg: Added: 7.52.0 Help: Client certificate type for HTTPS proxy Category: proxy tls Multi: single See-also: - proxy-cert - proxy-key Example: - --proxy-cert-type PEM --proxy-cert file -x https://proxy $URL --- # `--proxy-cert-type` Set type of the provided client certificate when using HTTPS proxy. PEM, DER, ENG, PROV and P12 are recognized types. The default type depends on the TLS backend and is usually PEM, however for Secure Transport and Schannel it is P12. If --proxy-cert is a pkcs11: URI then ENG or PROV is the default type (depending on OpenSSL version). Equivalent to --cert-type but used in HTTPS proxy context. curl-8.14.1/docs/cmdline-opts/proxy-cert.md0000644000000000000000000000134015017756261016734 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-cert Arg: Help: Set client certificate for proxy Added: 7.52.0 Category: proxy tls Multi: single See-also: - proxy - proxy-key - proxy-cert-type Example: - --proxy-cert file -x https://proxy $URL --- # `--proxy-cert` Use the specified client certificate file when communicating with an HTTPS proxy. The certificate must be in PKCS#12 format if using Secure Transport, or PEM format if using any other engine. If the optional password is not specified, it is queried for on the terminal. Use --proxy-key to provide the private key. This option is the equivalent to --cert but used in HTTPS proxy context. curl-8.14.1/docs/cmdline-opts/proxy-ciphers.md0000644000000000000000000000133415017756261017437 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-ciphers Arg: Help: TLS 1.2 (1.1, 1.0) ciphers to use for proxy Protocols: TLS Added: 7.52.0 Category: proxy tls Multi: single See-also: - proxy-tls13-ciphers - ciphers - proxy Example: - --proxy-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256 -x https://proxy $URL --- # `--proxy-ciphers` Same as --ciphers but used in HTTPS proxy context. Specify which cipher suites to use in the connection to your HTTPS proxy when it negotiates TLS 1.2 (1.1, 1.0). The list of ciphers suites must specify valid ciphers. Read up on cipher suite details on this URL: https://curl.se/docs/ssl-ciphers.html curl-8.14.1/docs/cmdline-opts/proxy-crlfile.md0000644000000000000000000000106615017756261017424 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-crlfile Arg: Help: Set a CRL list for proxy Added: 7.52.0 Category: proxy tls Multi: single See-also: - crlfile - proxy Example: - --proxy-crlfile rejects.txt -x https://proxy $URL --- # `--proxy-crlfile` Provide filename for a PEM formatted file with a Certificate Revocation List that specifies peer certificates that are considered revoked when communicating with an HTTPS proxy. Equivalent to --crlfile but only used in HTTPS proxy context. curl-8.14.1/docs/cmdline-opts/proxy-digest.md0000644000000000000000000000072415017756261017263 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-digest Help: Digest auth with the proxy Category: proxy tls Added: 7.12.0 Multi: mutex See-also: - proxy - proxy-anyauth - proxy-basic Example: - --proxy-digest --proxy-user user:passwd -x proxy $URL --- # `--proxy-digest` Use HTTP Digest authentication when communicating with the given proxy. Use --digest for enabling HTTP Digest with a remote host. curl-8.14.1/docs/cmdline-opts/proxy-header.md0000644000000000000000000000253215017756261017233 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-header Arg:
Help: Pass custom header(s) to proxy Protocols: HTTP Added: 7.37.0 Category: proxy Multi: append See-also: - proxy Example: - --proxy-header "X-First-Name: Joe" -x http://proxy $URL - --proxy-header "User-Agent: surprise" -x http://proxy $URL - --proxy-header "Host:" -x http://proxy $URL --- # `--proxy-header` Extra header to include in the request when sending HTTP to a proxy. You may specify any number of extra headers. This is the equivalent option to --header but is for proxy communication only like in CONNECT requests when you want a separate header sent to the proxy to what is sent to the actual remote host. curl makes sure that each header you add/replace is sent with the proper end-of-line marker, you should thus **not** add that as a part of the header content: do not add newlines or carriage returns, they only mess things up for you. Headers specified with this option are not included in requests that curl knows are not to be sent to a proxy. This option can take an argument in @filename style, which then adds a header for each line in the input file (added in 7.55.0). Using @- makes curl read the headers from stdin. This option can be used multiple times to add/replace/remove multiple headers. curl-8.14.1/docs/cmdline-opts/proxy-http2.md0000644000000000000000000000100515017756261017036 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-http2 Tags: Versions HTTP/2 Protocols: HTTP Added: 8.1.0 Mutexed: Requires: HTTP/2 Help: Use HTTP/2 with HTTPS proxy Category: http proxy Multi: boolean See-also: - proxy Example: - --proxy-http2 -x proxy $URL --- # `--proxy-http2` Negotiate HTTP/2 with an HTTPS proxy. The proxy might still only offer HTTP/1 and then curl sticks to using that version. This has no effect for any other kinds of proxies. curl-8.14.1/docs/cmdline-opts/proxy-insecure.md0000644000000000000000000000174015017756261017620 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-insecure Help: Skip HTTPS proxy cert verification Added: 7.52.0 Category: proxy tls Multi: boolean See-also: - proxy - insecure Example: - --proxy-insecure -x https://proxy $URL --- # `--proxy-insecure` Same as --insecure but used in HTTPS proxy context. Every secure connection curl makes is verified to be secure before the transfer takes place. This option makes curl skip the verification step with a proxy and proceed without checking. When this option is not used for a proxy using HTTPS, curl verifies the proxy's TLS certificate before it continues: that the certificate contains the right name which matches the hostname and that the certificate has been signed by a CA certificate present in the cert store. See this online resource for further details: **https://curl.se/docs/sslcerts.html** **WARNING**: using this option makes the transfer to the proxy insecure. curl-8.14.1/docs/cmdline-opts/proxy-key-type.md0000644000000000000000000000104615017756261017551 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-key-type Arg: Help: Private key file type for proxy Added: 7.52.0 Category: proxy tls Multi: single See-also: - proxy-key - proxy Example: - --proxy-key-type DER --proxy-key here -x https://proxy $URL --- # `--proxy-key-type` Specify the private key file type your --proxy-key provided private key uses. DER, PEM, and ENG are supported. If not specified, PEM is assumed. Equivalent to --key-type but used in HTTPS proxy context. curl-8.14.1/docs/cmdline-opts/proxy-key.md0000644000000000000000000000074315017756261016575 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-key Help: Private key for HTTPS proxy Arg: Category: proxy tls Added: 7.52.0 Multi: single See-also: - proxy-key-type - proxy Example: - --proxy-key here -x https://proxy $URL --- # `--proxy-key` Specify the filename for your private key when using client certificates with your HTTPS proxy. This option is the equivalent to --key but used in HTTPS proxy context. curl-8.14.1/docs/cmdline-opts/proxy-negotiate.md0000644000000000000000000000102715017756261017760 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-negotiate Help: HTTP Negotiate (SPNEGO) auth with the proxy Added: 7.17.1 Category: proxy auth Multi: mutex See-also: - proxy-anyauth - proxy-basic - proxy-service-name Example: - --proxy-negotiate --proxy-user user:passwd -x proxy $URL --- # `--proxy-negotiate` Use HTTP Negotiate (SPNEGO) authentication when communicating with the given proxy. Use --negotiate for enabling HTTP Negotiate (SPNEGO) with a remote host. curl-8.14.1/docs/cmdline-opts/proxy-ntlm.md0000644000000000000000000000073415017756261016757 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-ntlm Help: NTLM authentication with the proxy Category: proxy auth Added: 7.10.7 Multi: mutex See-also: - proxy-negotiate - proxy-anyauth - proxy-user Example: - --proxy-ntlm --proxy-user user:passwd -x http://proxy $URL --- # `--proxy-ntlm` Use HTTP NTLM authentication when communicating with the given proxy. Use --ntlm for enabling NTLM with a remote host. curl-8.14.1/docs/cmdline-opts/proxy-pass.md0000644000000000000000000000073515017756261016754 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-pass Arg: Help: Passphrase for private key for HTTPS proxy Added: 7.52.0 Category: proxy tls auth Multi: single See-also: - proxy - proxy-key Example: - --proxy-pass secret --proxy-key here -x https://proxy $URL --- # `--proxy-pass` Passphrase for the private key for HTTPS proxy client certificate. Equivalent to --pass but used in HTTPS proxy context. curl-8.14.1/docs/cmdline-opts/proxy-pinnedpubkey.md0000644000000000000000000000175715017756261020510 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-pinnedpubkey Arg: Help: FILE/HASHES public key to verify proxy with Protocols: TLS Category: proxy tls Added: 7.59.0 Multi: single See-also: - pinnedpubkey - proxy Example: - --proxy-pinnedpubkey keyfile $URL - --proxy-pinnedpubkey 'sha256//ce118b51897f4452dc' $URL --- # `--proxy-pinnedpubkey` Use the specified public key file (or hashes) to verify the proxy. This can be a path to a file which contains a single public key in PEM or DER format, or any number of base64 encoded sha256 hashes preceded by 'sha256//' and separated by ';'. When negotiating a TLS or SSL connection, the server sends a certificate indicating its identity. A public key is extracted from this certificate and if it does not exactly match the public key provided to this option, curl aborts the connection before sending or receiving any data. Before curl 8.10.0 this option did not work due to a bug. curl-8.14.1/docs/cmdline-opts/proxy-service-name.md0000644000000000000000000000064715017756261020366 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-service-name Arg: Help: SPNEGO proxy service name Added: 7.43.0 Category: proxy tls Multi: single See-also: - service-name - proxy - proxy-negotiate Example: - --proxy-service-name "shrubbery" -x proxy $URL --- # `--proxy-service-name` Set the service name for SPNEGO when doing proxy authentication. curl-8.14.1/docs/cmdline-opts/proxy-ssl-allow-beast.md0000644000000000000000000000156015017756261021014 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-ssl-allow-beast Help: Allow this security flaw for HTTPS proxy Added: 7.52.0 Category: proxy tls Multi: boolean See-also: - ssl-allow-beast - proxy Example: - --proxy-ssl-allow-beast -x https://proxy $URL --- # `--proxy-ssl-allow-beast` Do not work around a security flaw in the TLS1.0 protocol known as BEAST when communicating to an HTTPS proxy. If this option is not used, the TLS layer may use workarounds known to cause interoperability problems with some older server implementations. This option only changes how curl does TLS 1.0 with an HTTPS proxy and has no effect on later TLS versions. **WARNING**: this option loosens the TLS security, and by using this flag you ask for exactly that. Equivalent to --ssl-allow-beast but used in HTTPS proxy context. curl-8.14.1/docs/cmdline-opts/proxy-ssl-auto-client-cert.md0000644000000000000000000000072015017756261021756 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-ssl-auto-client-cert Help: Auto client certificate for proxy Added: 7.77.0 Category: proxy tls Multi: boolean See-also: - ssl-auto-client-cert - proxy Example: - --proxy-ssl-auto-client-cert -x https://proxy $URL --- # `--proxy-ssl-auto-client-cert` Same as --ssl-auto-client-cert but used in HTTPS proxy context. This is only supported by Schannel. curl-8.14.1/docs/cmdline-opts/proxy-tls13-ciphers.md0000644000000000000000000000163415017756261020406 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-tls13-ciphers Arg: Help: TLS 1.3 proxy cipher suites Protocols: TLS Category: proxy tls Added: 7.61.0 Multi: single See-also: - proxy-ciphers - tls13-ciphers - proxy Example: - --proxy-tls13-ciphers TLS_AES_128_GCM_SHA256 -x proxy $URL --- # `--proxy-tls13-ciphers` Same as --tls13-ciphers but used in HTTPS proxy context. Specify which cipher suites to use in the connection to your HTTPS proxy when it negotiates TLS 1.3. The list of ciphers suites must specify valid ciphers. Read up on TLS 1.3 cipher suite details on this URL: https://curl.se/docs/ssl-ciphers.html This option is used when curl is built to use OpenSSL 1.1.1 or later, Schannel, wolfSSL, or mbedTLS 3.6.0 or later. Before curl 8.10.0 with mbedTLS or wolfSSL, TLS 1.3 cipher suites were set by using the --proxy-ciphers option. curl-8.14.1/docs/cmdline-opts/proxy-tlsauthtype.md0000644000000000000000000000116115017756261020366 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-tlsauthtype Arg: Help: TLS authentication type for HTTPS proxy Added: 7.52.0 Category: proxy tls auth Multi: single See-also: - proxy - proxy-tlsuser - proxy-tlspassword Example: - --proxy-tlsauthtype SRP -x https://proxy $URL --- # `--proxy-tlsauthtype` Set TLS authentication type with HTTPS proxy. The only supported option is `SRP`, for TLS-SRP (RFC 5054). This option works only if the underlying libcurl is built with TLS-SRP support. Equivalent to --tlsauthtype but used in HTTPS proxy context. curl-8.14.1/docs/cmdline-opts/proxy-tlspassword.md0000644000000000000000000000113415017756261020365 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-tlspassword Arg: Help: TLS password for HTTPS proxy Added: 7.52.0 Category: proxy tls auth Multi: single See-also: - proxy - proxy-tlsuser Example: - --proxy-tlspassword passwd -x https://proxy $URL --- # `--proxy-tlspassword` Set password to use with the TLS authentication method specified with --proxy-tlsauthtype when using HTTPS proxy. Requires that --proxy-tlsuser is set. This option does not work with TLS 1.3. Equivalent to --tlspassword but used in HTTPS proxy context. curl-8.14.1/docs/cmdline-opts/proxy-tlsuser.md0000644000000000000000000000102615017756261017501 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-tlsuser Arg: Help: TLS username for HTTPS proxy Added: 7.52.0 Category: proxy tls auth Multi: single See-also: - proxy - proxy-tlspassword Example: - --proxy-tlsuser smith -x https://proxy $URL --- # `--proxy-tlsuser` Set username for use for HTTPS proxy with the TLS authentication method specified with --proxy-tlsauthtype. Requires that --proxy-tlspassword also is set. This option does not work with TLS 1.3. curl-8.14.1/docs/cmdline-opts/proxy-tlsv1.md0000644000000000000000000000067315017756261017060 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-tlsv1 Help: TLSv1 for HTTPS proxy Added: 7.52.0 Category: proxy tls auth Multi: mutex See-also: - proxy Example: - --proxy-tlsv1 -x https://proxy $URL --- # `--proxy-tlsv1` Use at least TLS version 1.x when negotiating with an HTTPS proxy. That means TLS version 1.0 or higher Equivalent to --tlsv1 but for an HTTPS proxy context. curl-8.14.1/docs/cmdline-opts/proxy-user.md0000644000000000000000000000173115017756261016761 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy-user Short: U Arg: Help: Proxy user and password Category: proxy auth Added: 4.0 Multi: single See-also: - proxy-pass Example: - --proxy-user smith:secret -x proxy $URL --- # `--proxy-user` Specify the username and password to use for proxy authentication. If you use a Windows SSPI-enabled curl binary and do either Negotiate or NTLM authentication then you can tell curl to select the username and password from your environment by specifying a single colon with this option: "-U :". On systems where it works, curl hides the given option argument from process listings. This is not enough to protect credentials from possibly getting seen by other users on the same system as they still are visible for a moment before being cleared. Such sensitive data should be retrieved from a file instead or similar and never used in clear text in a command line. curl-8.14.1/docs/cmdline-opts/proxy.md0000644000000000000000000000425215017756261016006 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy Short: x Arg: <[protocol://]host[:port]> Help: Use this proxy Category: proxy Added: 4.0 Multi: single See-also: - socks5 - proxy-basic Example: - --proxy http://proxy.example $URL --- # `--proxy` Use the specified proxy. The proxy string can be specified with a protocol:// prefix. No protocol specified or http:// it is treated as an HTTP proxy. Use socks4://, socks4a://, socks5:// or socks5h:// to request a specific SOCKS version to be used. (Added in 7.21.7) Unix domain sockets are supported for socks proxy. Set localhost for the host part. e.g. socks5h://localhost/path/to/socket.sock HTTPS proxy support works with the https:// protocol prefix for OpenSSL and GnuTLS (added in 7.52.0). It also works for BearSSL, mbedTLS, Rustls, Schannel, Secure Transport and wolfSSL (added in 7.87.0). Unrecognized and unsupported proxy protocols cause an error (added in 7.52.0). Ancient curl versions ignored unknown schemes and used http:// instead. If the port number is not specified in the proxy string, it is assumed to be 1080. This option overrides existing environment variables that set the proxy to use. If there is an environment variable setting a proxy, you can set proxy to "" to override it. All operations that are performed over an HTTP proxy are transparently converted to HTTP. It means that certain protocol specific operations might not be available. This is not the case if you can tunnel through the proxy, as one with the --proxytunnel option. User and password that might be provided in the proxy string are URL decoded by curl. This allows you to pass in special characters such as @ by using %40 or pass in a colon with %3a. The proxy host can be specified the same way as the proxy environment variables, including the protocol prefix (http://) and the embedded user + password. When a proxy is used, the active FTP mode as set with --ftp-port, cannot be used. Doing FTP over an HTTP proxy without --proxytunnel makes curl do HTTP with an FTP URL over the proxy. For such transfers, common FTP specific options do not work, including --ssl-reqd and --ftp-ssl-control. curl-8.14.1/docs/cmdline-opts/proxy1.0.md0000644000000000000000000000112615017756261016222 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxy1.0 Arg: Help: Use HTTP/1.0 proxy on given port Category: proxy Added: 7.19.4 Multi: mutex See-also: - proxy - socks5 - preproxy Example: - --proxy1.0 http://proxy $URL --- # `--proxy1.0` Use the specified HTTP 1.0 proxy. If the port number is not specified, it is assumed at port 1080. The only difference between this and the HTTP proxy option --proxy, is that attempts to use CONNECT through the proxy specifies an HTTP 1.0 protocol instead of the default HTTP 1.1. curl-8.14.1/docs/cmdline-opts/proxytunnel.md0000644000000000000000000000124615017756261017234 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: proxytunnel Short: p Help: HTTP proxy tunnel (using CONNECT) Category: proxy Added: 7.3 Multi: boolean See-also: - proxy Example: - --proxytunnel -x http://proxy $URL --- # `--proxytunnel` When an HTTP proxy is used --proxy, this option makes curl tunnel the traffic through the proxy. The tunnel approach is made with the HTTP proxy CONNECT request and requires that the proxy allows direct connection to the remote port number curl wants to tunnel through to. To suppress proxy CONNECT response headers when curl is set to output headers use --suppress-connect-headers. curl-8.14.1/docs/cmdline-opts/pubkey.md0000644000000000000000000000126515017756261016125 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: pubkey Arg: Protocols: SFTP SCP Help: SSH Public key filename Category: sftp scp ssh auth Added: 7.16.2 Multi: single See-also: - pass Example: - --pubkey file.pub sftp://example.com/ --- # `--pubkey` Public key filename. Allows you to provide your public key in this separate file. curl attempts to automatically extract the public key from the private key file, so passing this option is generally not required. Note that this public key extraction requires libcurl to be linked against a copy of libssh2 1.2.8 or higher that is itself linked against OpenSSL. (Added in 7.39.0.) curl-8.14.1/docs/cmdline-opts/quote.md0000644000000000000000000000623715017756261015767 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: quote Arg: Short: Q Help: Send command(s) to server before transfer Protocols: FTP SFTP Category: ftp sftp Added: 5.3 Multi: append See-also: - request Example: - --quote "DELE file" ftp://example.com/foo --- # `--quote` Send an arbitrary command to the remote FTP or SFTP server. Quote commands are sent BEFORE the transfer takes place (just after the initial **PWD** command in an FTP transfer, to be exact). To make commands take place after a successful transfer, prefix them with a dash '-'. (FTP only) To make commands be sent after curl has changed the working directory, just before the file transfer command(s), prefix the command with a '+'. This is not performed when a directory listing is performed. You may specify any number of commands. By default curl stops at first failure. To make curl continue even if the command fails, prefix the command with an asterisk (*). Otherwise, if the server returns failure for one of the commands, the entire operation is aborted. You must send syntactically correct FTP commands as RFC 959 defines to FTP servers, or one of the commands listed below to SFTP servers. SFTP is a binary protocol. Unlike for FTP, curl interprets SFTP quote commands itself before sending them to the server. Filenames may be quoted shell-style to embed spaces or special characters. Following is the list of all supported SFTP quote commands: ## atime date file The atime command sets the last access time of the file named by the file operand. The date expression can be all sorts of date strings, see the *curl_getdate(3)* man page for date expression details. (Added in 7.73.0) ## chgrp group file The chgrp command sets the group ID of the file named by the file operand to the group ID specified by the group operand. The group operand is a decimal integer group ID. ## chmod mode file The chmod command modifies the file mode bits of the specified file. The mode operand is an octal integer mode number. ## chown user file The chown command sets the owner of the file named by the file operand to the user ID specified by the user operand. The user operand is a decimal integer user ID. ## ln source_file target_file The ln and symlink commands create a symbolic link at the target_file location pointing to the source_file location. ## mkdir directory_name The mkdir command creates the directory named by the directory_name operand. ## mtime date file The mtime command sets the last modification time of the file named by the file operand. The date expression can be all sorts of date strings, see the *curl_getdate(3)* man page for date expression details. (Added in 7.73.0) ## pwd The pwd command returns the absolute path name of the current working directory. ## rename source target The rename command renames the file or directory named by the source operand to the destination path named by the target operand. ## rm file The rm command removes the file specified by the file operand. ## rmdir directory The rmdir command removes the directory entry specified by the directory operand, provided it is empty. ## symlink source_file target_file See ln. curl-8.14.1/docs/cmdline-opts/random-file.md0000644000000000000000000000106515017756261017021 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: random-file Arg: Help: File for reading random data from Category: deprecated Added: 7.7 Multi: single See-also: - egd-file Example: - --random-file rubbish $URL --- # `--random-file` Deprecated option. This option is ignored (added in 7.84.0). Prior to that it only had an effect on curl if built to use old versions of OpenSSL. Specify the path name to file containing random data. The data may be used to seed the random engine for SSL connections. curl-8.14.1/docs/cmdline-opts/range.md0000644000000000000000000000400215017756261015712 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: range Short: r Help: Retrieve only the bytes within RANGE Arg: Protocols: HTTP FTP SFTP FILE Category: http ftp sftp file Added: 4.0 Multi: single See-also: - continue-at - append Example: - --range 22-44 $URL --- # `--range` Retrieve a byte range (i.e. a partial document) from an HTTP/1.1, FTP or SFTP server or a local FILE. Ranges can be specified in a number of ways. ## 0-499 specifies the first 500 bytes ## 500-999 specifies the second 500 bytes ## -500 specifies the last 500 bytes ## 9500- specifies the bytes from offset 9500 and forward ## 0-0,-1 specifies the first and last byte only(*)(HTTP) ## 100-199,500-599 specifies two separate 100-byte ranges(*) (HTTP) ## (*) = NOTE that if specifying multiple ranges and the server supports it then it replies with a multiple part response that curl returns as-is. It contains meta information in addition to the requested bytes. Parsing or otherwise transforming this response is the responsibility of the caller. Only digit characters (0-9) are valid in the 'start' and 'stop' fields of the 'start-stop' range syntax. If a non-digit character is given in the range, the server's response is unspecified, depending on the server's configuration. Many HTTP/1.1 servers do not have this feature enabled, so that when you attempt to get a range, curl instead gets the whole document. FTP and SFTP range downloads only support the simple 'start-stop' syntax (optionally with one of the numbers omitted). FTP use depends on the extended FTP command SIZE. When using this option for HTTP uploads using POST or PUT, functionality is not guaranteed. The HTTP protocol has no standard interoperable resume upload and curl uses a set of headers for this purpose that once proved working for some servers and have been left for those who find that useful. This command line option is mutually exclusive with --continue-at: you can only use one of them for a single transfer. curl-8.14.1/docs/cmdline-opts/rate.md0000644000000000000000000000323315017756261015556 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: rate Arg: Help: Request rate for serial transfers Category: connection global Added: 7.84.0 Multi: single Scope: global See-also: - limit-rate - retry-delay Example: - --rate 2/s $URL ... - --rate 3/h $URL ... - --rate 14/m $URL ... --- # `--rate` Specify the maximum transfer frequency you allow curl to use - in number of transfer starts per time unit (sometimes called request rate). Without this option, curl starts the next transfer as fast as possible. If given several URLs and a transfer completes faster than the allowed rate, curl waits until the next transfer is started to maintain the requested rate. This option has no effect when --parallel is used. The request rate is provided as "N/U" where N is an integer number and U is a time unit. Supported units are 's' (second), 'm' (minute), 'h' (hour) and 'd' /(day, as in a 24 hour unit). The default time unit, if no "/U" is provided, is number of transfers per hour. If curl is told to allow 10 requests per minute, it does not start the next request until 6 seconds have elapsed since the previous transfer was started. This function uses millisecond resolution. If the allowed frequency is set more than 1000 per second, it instead runs unrestricted. When retrying transfers, enabled with --retry, the separate retry delay logic is used and not this setting. Starting in version 8.10.0, you can specify the number of time units in the rate expression. Make curl do no more than 5 transfers per 15 seconds with "5/15s" or limit it to 3 transfers per 4 hours with "3/4h". No spaces allowed. curl-8.14.1/docs/cmdline-opts/raw.md0000644000000000000000000000062115017756261015412 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: raw Help: Do HTTP raw; no transfer decoding Added: 7.16.2 Protocols: HTTP Category: http Multi: boolean See-also: - tr-encoding Example: - --raw $URL --- # `--raw` When used, it disables all internal HTTP decoding of content or transfer encodings and instead makes them passed on unaltered, raw. curl-8.14.1/docs/cmdline-opts/referer.md0000644000000000000000000000132415017756261016254 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: referer Short: e Arg: Protocols: HTTP Help: Referrer URL Category: http Added: 4.0 Multi: single See-also: - user-agent - header Example: - --referer "https://fake.example" $URL - --referer "https://fake.example;auto" -L $URL - --referer ";auto" -L $URL --- # `--referer` Set the referrer URL in the HTTP request. This can also be set with the --header flag of course. When used with --location you can append `;auto`" to the --referer URL to make curl automatically set the previous URL when it follows a Location: header. The `;auto` string can be used alone, even if you do not set an initial --referer. curl-8.14.1/docs/cmdline-opts/remote-header-name.md0000644000000000000000000000262315017756261020264 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: remote-header-name Short: J Protocols: HTTP Help: Use the header-provided filename Category: output Added: 7.20.0 Multi: boolean See-also: - remote-name Example: - -OJ https://example.com/file --- # `--remote-header-name` Tell the --remote-name option to use the server-specified Content-Disposition filename instead of extracting a filename from the URL. If the server-provided filename contains a path, that is stripped off before the filename is used. The file is saved in the current directory, or in the directory specified with --output-dir. If the server specifies a filename and a file with that name already exists in the destination directory, it is not overwritten and an error occurs - unless you allow it by using the --clobber option. If the server does not specify a filename then this option has no effect. There is no attempt to decode %-sequences (yet) in the provided filename, so this option may provide you with rather unexpected filenames. This feature uses the name from the `filename` field, it does not yet support the `filename*` field (filenames with explicit character sets). **WARNING**: Exercise judicious use of this option, especially on Windows. A rogue server could send you the name of a DLL or other file that could be loaded automatically by Windows or some third party software. curl-8.14.1/docs/cmdline-opts/remote-name-all.md0000644000000000000000000000107215017756261017601 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: remote-name-all Help: Use the remote filename for all URLs Added: 7.19.0 Category: output Multi: boolean See-also: - remote-name Example: - --remote-name-all ftp://example.com/file1 ftp://example.com/file2 --- # `--remote-name-all` Change the default action for all given URLs to be dealt with as if --remote-name were used for each one. If you want to disable that for a specific URL after --remote-name-all has been used, you must use "-o -" or --no-remote-name. curl-8.14.1/docs/cmdline-opts/remote-name.md0000644000000000000000000000312615017756261017035 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: remote-name Short: O Help: Write output to file named as remote file Category: important output Added: 4.0 Multi: per-URL See-also: - remote-name-all - output-dir - remote-header-name Example: - -O https://example.com/filename - -O https://example.com/filename -O https://example.com/file2 --- # `--remote-name` Write output to a local file named like the remote file we get. (Only the file part of the remote file is used, the path is cut off.) The file is saved in the current working directory. If you want the file saved in a different directory, make sure you change the current working directory before invoking curl with this option or use --output-dir. The remote filename to use for saving is extracted from the given URL, nothing else, and if it already exists it is overwritten. If you want the server to be able to choose the filename refer to --remote-header-name which can be used in addition to this option. If the server chooses a filename and that name already exists it is not overwritten. There is no URL decoding done on the filename. If it has %20 or other URL encoded parts of the name, they end up as-is as filename. You may use this option as many times as the number of URLs you have. Before curl 8.10.0, curl returned an error if the URL ended with a slash, which means that there is no filename part in the URL. Starting in 8.10.0, curl sets the filename to the last directory part of the URL or if that also is missing to `curl_response` (without extension) for this situation. curl-8.14.1/docs/cmdline-opts/remote-time.md0000644000000000000000000000073215017756261017053 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: remote-time Short: R Help: Set remote file's time on local output Category: output Added: 7.9 Multi: boolean See-also: - remote-name - time-cond Example: - --remote-time -o foo $URL --- # `--remote-time` Make curl attempt to figure out the timestamp of the remote file that is getting downloaded, and if that is available make the local file get that same timestamp. curl-8.14.1/docs/cmdline-opts/remove-on-error.md0000644000000000000000000000116215017756261017660 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: remove-on-error Help: Remove output file on errors Category: output Added: 7.83.0 Multi: boolean See-also: - fail Example: - --remove-on-error -o output $URL --- # `--remove-on-error` Remove the output file if an error occurs. If curl returns an error when told to save output in a local file. This prevents curl from leaving a partial file in the case of an error during transfer. If the output is not a regular file, this option has no effect. The --continue-at option cannot be used together with --remove-on-error. curl-8.14.1/docs/cmdline-opts/request-target.md0000644000000000000000000000131715017756261017600 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: request-target Arg: Help: Specify the target for this request Protocols: HTTP Added: 7.55.0 Category: http Multi: single See-also: - request Example: - --request-target "*" -X OPTIONS $URL --- # `--request-target` Use an alternative target (path) instead of using the path as provided in the URL. Particularly useful when wanting to issue HTTP requests without leading slash or other data that does not follow the regular URL pattern, like "OPTIONS *". curl passes on the verbatim string you give it in the request without any filter or other safe guards. That includes white space and control characters. curl-8.14.1/docs/cmdline-opts/request.md0000644000000000000000000000362415017756261016317 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: request Short: X Arg: Help: Specify request method to use Category: connection pop3 ftp imap smtp Added: 6.0 Multi: single See-also: - request-target Example: - -X "DELETE" $URL - -X NLST ftp://example.com/ --- # `--request` Change the method to use when starting the transfer. curl passes on the verbatim string you give it in the request without any filter or other safe guards. That includes white space and control characters. ## HTTP Specifies a custom request method to use when communicating with the HTTP server. The specified request method is used instead of the method otherwise used (which defaults to *GET*). Read the HTTP 1.1 specification for details and explanations. Common additional HTTP requests include *PUT* and *DELETE*, while related technologies like WebDAV offers *PROPFIND*, *COPY*, *MOVE* and more. Normally you do not need this option. All sorts of *GET*, *HEAD*, *POST* and *PUT* requests are rather invoked by using dedicated command line options. This option only changes the actual word used in the HTTP request, it does not alter the way curl behaves. For example if you want to make a proper HEAD request, using -X HEAD does not suffice. You need to use the --head option. The method string you set with --request is used for all requests, which if you for example use --location may cause unintended side-effects when curl does not change request method according to the HTTP 30x response codes - and similar. ## FTP Specifies a custom FTP command to use instead of *LIST* when doing file lists with FTP. ## POP3 Specifies a custom POP3 command to use instead of *LIST* or *RETR*. (Added in 7.26.0) ## IMAP Specifies a custom IMAP command to use instead of *LIST*. (Added in 7.30.0) ## SMTP Specifies a custom SMTP command to use instead of *HELP* or **VRFY**. (Added in 7.34.0) curl-8.14.1/docs/cmdline-opts/resolve.md0000644000000000000000000000350415017756261016303 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: resolve Arg: <[+]host:port:addr[,addr]...> Help: Resolve host+port to address Added: 7.21.3 Category: connection dns Multi: append See-also: - connect-to - alt-svc Example: - --resolve example.com:443:127.0.0.1 $URL - --resolve example.com:443:[2001:db8::252f:efd6] $URL --- # `--resolve` Provide a custom address for a specific host and port pair. Using this, you can make the curl requests(s) use a specified address and prevent the otherwise normally resolved address to be used. Consider it a sort of /etc/hosts alternative provided on the command line. The port number should be the number used for the specific protocol the host is used for. It means you need several entries if you want to provide addresses for the same host but different ports. By specifying `*` as host you can tell curl to resolve any host and specific port pair to the specified address. Wildcard is resolved last so any --resolve with a specific host and port is used first. The provided address set by this option is used even if --ipv4 or --ipv6 is set to make curl use another IP version. By prefixing the host with a '+' you can make the entry time out after curl's default timeout (1 minute). Note that this only makes sense for long running parallel transfers with a lot of files. In such cases, if this option is used curl tries to resolve the host as it normally would once the timeout has expired. Provide IPv6 addresses within [brackets]. To redirect connects from a specific hostname or any hostname, independently of port number, consider the --connect-to option. Support for resolving with wildcard was added in 7.64.0. Support for the '+' prefix was added in 7.75.0. Support for specifying the host component as an IPv6 address was added in 8.13.0. curl-8.14.1/docs/cmdline-opts/retry-all-errors.md0000644000000000000000000000334615017756261020055 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: retry-all-errors Help: Retry all errors (with --retry) Added: 7.71.0 Category: curl Multi: boolean See-also: - retry Example: - --retry 5 --retry-all-errors $URL --- # `--retry-all-errors` Retry on any error. This option is used together with --retry. This option is the "sledgehammer" of retrying. Do not use this option by default (for example in your **curlrc**), there may be unintended consequences such as sending or receiving duplicate data. Do not use with redirected input or output. You might be better off handling your unique problems in a shell script. Please read the example below. **WARNING**: For server compatibility curl attempts to retry failed flaky transfers as close as possible to how they were started, but this is not possible with redirected input or output. For example, before retrying it removes output data from a failed partial transfer that was written to an output file. However this is not true of data redirected to a | pipe or \> file, which are not reset. We strongly suggest you do not parse or record output via redirect in combination with this option, since you may receive duplicate data. By default curl does not return an error for transfers with an HTTP response code that indicates an HTTP error, if the transfer was successful. For example, if a server replies 404 Not Found and the reply is fully received then that is not an error. When --retry is used then curl retries on some HTTP response codes that indicate transient HTTP errors, but that does not include most 4xx response codes such as 404. If you want to retry on all response codes that indicate HTTP errors (4xx and 5xx) then combine with --fail. curl-8.14.1/docs/cmdline-opts/retry-connrefused.md0000644000000000000000000000072515017756261020304 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: retry-connrefused Help: Retry on connection refused (with --retry) Added: 7.52.0 Category: curl Multi: boolean See-also: - retry - retry-all-errors Example: - --retry-connrefused --retry 7 $URL --- # `--retry-connrefused` In addition to the other conditions, consider ECONNREFUSED as a transient error too for --retry. This option is used together with --retry. curl-8.14.1/docs/cmdline-opts/retry-delay.md0000644000000000000000000000111715017756261017063 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: retry-delay Arg: Help: Wait time between retries Added: 7.12.3 Category: curl timeout Multi: single See-also: - retry Example: - --retry-delay 5 --retry 7 $URL --- # `--retry-delay` Make curl sleep this amount of time before each retry when a transfer has failed with a transient error (it changes the default backoff time algorithm between retries). This option is only interesting if --retry is also used. Setting this delay to zero makes curl use the default backoff time. curl-8.14.1/docs/cmdline-opts/retry-max-time.md0000644000000000000000000000131315017756261017504 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: retry-max-time Arg: Help: Retry only within this period Added: 7.12.3 Category: curl timeout Multi: single See-also: - retry Example: - --retry-max-time 30 --retry 10 $URL --- # `--retry-max-time` The retry timer is reset before the first transfer attempt. Retries are done as usual (see --retry) as long as the timer has not reached this given limit. Notice that if the timer has not reached the limit, the request is made and while performing, it may take longer than this given time period. To limit a single request's maximum time, use --max-time. Set this option to zero to not timeout retries. curl-8.14.1/docs/cmdline-opts/retry.md0000644000000000000000000000212415017756261015766 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: retry Arg: Added: 7.12.3 Help: Retry request if transient problems occur Category: curl Multi: single See-also: - retry-max-time Example: - --retry 7 $URL --- # `--retry` If a transient error is returned when curl tries to perform a transfer, it retries this number of times before giving up. Setting the number to 0 makes curl do no retries (which is the default). Transient error means either: a timeout, an FTP 4xx response code or an HTTP 408, 429, 500, 502, 503 or 504 response code. When curl is about to retry a transfer, it first waits one second and then for all forthcoming retries it doubles the waiting time until it reaches 10 minutes, which then remains the set fixed delay time between the rest of the retries. By using --retry-delay you disable this exponential backoff algorithm. See also --retry-max-time to limit the total time allowed for retries. curl complies with the Retry-After: response header if one was present to know when to issue the next retry (added in 7.66.0). curl-8.14.1/docs/cmdline-opts/sasl-authzid.md0000644000000000000000000000136515017756261017237 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: sasl-authzid Arg: Help: Identity for SASL PLAIN authentication Added: 7.66.0 Category: auth Multi: single See-also: - login-options Example: - --sasl-authzid zid imap://example.com/ --- # `--sasl-authzid` Use this authorization identity (**authzid**), during SASL PLAIN authentication, in addition to the authentication identity (**authcid**) as specified by --user. If the option is not specified, the server derives the **authzid** from the **authcid**, but if specified, and depending on the server implementation, it may be used to access another user's inbox, that the user has been granted access to, or a shared mailbox for example. curl-8.14.1/docs/cmdline-opts/sasl-ir.md0000644000000000000000000000051715017756261016177 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: sasl-ir Help: Initial response in SASL authentication Added: 7.31.0 Category: auth Multi: boolean See-also: - sasl-authzid Example: - --sasl-ir imap://example.com/ --- # `--sasl-ir` Enable initial response in SASL authentication. curl-8.14.1/docs/cmdline-opts/service-name.md0000644000000000000000000000053015017756261017176 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: service-name Help: SPNEGO service name Arg: Added: 7.43.0 Category: auth Multi: single See-also: - negotiate - proxy-service-name Example: - --service-name sockd/server $URL --- # `--service-name` Set the service name for SPNEGO. curl-8.14.1/docs/cmdline-opts/show-error.md0000644000000000000000000000060415017756261016731 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: show-error Short: S Help: Show error even when -s is used Category: curl global Added: 5.9 Multi: boolean Scope: global See-also: - no-progress-meter Example: - --show-error --silent $URL --- # `--show-error` When used with --silent, it makes curl show an error message if it fails. curl-8.14.1/docs/cmdline-opts/show-headers.md0000644000000000000000000000173315017756261017217 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: show-headers Short: i Help: Show response headers in output Protocols: HTTP FTP Category: important verbose output Added: 4.8 Multi: boolean See-also: - verbose - dump-header Example: - -i $URL --- # `--show-headers` Show response headers in the output. HTTP response headers can include things like server name, cookies, date of the document, HTTP version and more. With non-HTTP protocols, the "headers" are other server communication. This option makes the response headers get saved in the same stream/output as the data. --dump-header exists to save headers in a separate stream. To view the request headers, consider the --verbose option. Prior to 7.75.0 curl did not print the headers if --fail was used in combination with this option and there was an error reported by the server. This option was called --include before 8.10.0. The previous name remains functional. curl-8.14.1/docs/cmdline-opts/sigalgs.md0000644000000000000000000000204615017756261016255 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: sigalgs Arg: Help: TLS signature algorithms to use Protocols: TLS Added: 8.14.0 Category: tls Multi: single See-also: - ciphers Example: - --sigalgs ecdsa_secp256r1_sha256 $URL --- # `--sigalgs` Set specific signature algorithms to use during SSL session establishment according to RFC 5246, 7.4.1.4.1. An algorithm can use either a signature algorithm and a hash algorithm pair separated by a `+` (e.g. `ECDSA+SHA224`), or its TLS 1.3 signature scheme name (e.g. `ed25519`). Multiple algorithms can be provided by separating them with `:` (e.g. `DSA+SHA256:rsa_pss_pss_sha256`). The parameter is available as `-sigalgs` in the OpenSSL `s_client` and `s_server` utilities. `--sigalgs` allows a OpenSSL powered curl to make SSL-connections with exactly the signature algorithms requested by the client, avoiding nontransparent client/server negotiations. If this option is set, the default signature algorithm list built into OpenSSL are ignored. curl-8.14.1/docs/cmdline-opts/silent.md0000644000000000000000000000107415017756261016122 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: silent Short: s Help: Silent mode Category: important verbose Added: 4.0 Multi: boolean See-also: - verbose - stderr - no-progress-meter Example: - -s $URL --- # `--silent` Silent or quiet mode. Do not show progress meter or error messages. Makes curl mute. It still outputs the data you ask for, potentially even to the terminal/stdout unless you redirect it. Use --show-error in addition to this option to disable progress meter but still show error messages. curl-8.14.1/docs/cmdline-opts/skip-existing.md0000644000000000000000000000121215017756261017414 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: skip-existing Help: Skip download if local file already exists Category: curl output Added: 8.10.0 Multi: boolean See-also: - output - remote-name - no-clobber Example: - --skip-existing --output local/dir/file $URL --- # `--skip-existing` If there is a local file present when a download is requested, the operation is skipped. Note that curl cannot know if the local file was previously downloaded fine, or if it is incomplete etc, it just knows if there is a filename present in the file system or not and it skips the transfer if it is. curl-8.14.1/docs/cmdline-opts/socks4.md0000644000000000000000000000207115017756261016030 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: socks4 Arg: Help: SOCKS4 proxy on given host + port Added: 7.15.2 Category: proxy Multi: single See-also: - socks4a - socks5 - socks5-hostname Example: - --socks4 hostname:4096 $URL --- # `--socks4` Use the specified SOCKS4 proxy. If the port number is not specified, it is assumed at port 1080. Using this socket type makes curl resolve the hostname and pass the address on to the proxy. To specify proxy on a Unix domain socket, use localhost for host, e.g. `socks4://localhost/path/to/socket.sock` This option overrides any previous use of --proxy, as they are mutually exclusive. This option is superfluous since you can specify a socks4 proxy with --proxy using a socks4:// protocol prefix. (Added in 7.21.7) --preproxy can be used to specify a SOCKS proxy at the same time proxy is used with an HTTP/HTTPS proxy (added in 7.52.0). In such a case, curl first connects to the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy. curl-8.14.1/docs/cmdline-opts/socks4a.md0000644000000000000000000000202215017756261016165 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: socks4a Arg: Help: SOCKS4a proxy on given host + port Added: 7.18.0 Category: proxy Multi: single See-also: - socks4 - socks5 - socks5-hostname Example: - --socks4a hostname:4096 $URL --- # `--socks4a` Use the specified SOCKS4a proxy. If the port number is not specified, it is assumed at port 1080. This asks the proxy to resolve the hostname. To specify proxy on a Unix domain socket, use localhost for host, e.g. `socks4a://localhost/path/to/socket.sock` This option overrides any previous use of --proxy, as they are mutually exclusive. This option is superfluous since you can specify a socks4a proxy with --proxy using a socks4a:// protocol prefix. (Added in 7.21.7) --preproxy can be used to specify a SOCKS proxy at the same time --proxy is used with an HTTP/HTTPS proxy (added in 7.52.0). In such a case, curl first connects to the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy. curl-8.14.1/docs/cmdline-opts/socks5-basic.md0000644000000000000000000000100115017756261017100 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: socks5-basic Help: Username/password auth for SOCKS5 proxies Added: 7.55.0 Category: proxy auth Multi: mutex See-also: - socks5 Example: - --socks5-basic --socks5 hostname:4096 $URL --- # `--socks5-basic` Use username/password authentication when connecting to a SOCKS5 proxy. The username/password authentication is enabled by default. Use --socks5-gssapi to force GSS-API authentication to SOCKS5 proxies. curl-8.14.1/docs/cmdline-opts/socks5-gssapi-nec.md0000644000000000000000000000112115017756261020053 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: socks5-gssapi-nec Help: Compatibility with NEC SOCKS5 server Added: 7.19.4 Category: proxy auth Multi: boolean See-also: - socks5 Example: - --socks5-gssapi-nec --socks5 hostname:4096 $URL --- # `--socks5-gssapi-nec` As part of the GSS-API negotiation a protection mode is negotiated. RFC 1961 says in section 4.3/4.4 it should be protected, but the NEC reference implementation does not. The option --socks5-gssapi-nec allows the unprotected exchange of the protection mode negotiation. curl-8.14.1/docs/cmdline-opts/socks5-gssapi-service.md0000644000000000000000000000065215017756261020756 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: socks5-gssapi-service Arg: Help: SOCKS5 proxy service name for GSS-API Added: 7.19.4 Category: proxy auth Multi: single See-also: - socks5 Example: - --socks5-gssapi-service sockd --socks5 hostname:4096 $URL --- # `--socks5-gssapi-service` Set the service name for a socks server. Default is **rcmd/server-fqdn**. curl-8.14.1/docs/cmdline-opts/socks5-gssapi.md0000644000000000000000000000104315017756261017313 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: socks5-gssapi Help: Enable GSS-API auth for SOCKS5 proxies Added: 7.55.0 Category: proxy auth Multi: boolean See-also: - socks5 Example: - --socks5-gssapi --socks5 hostname:4096 $URL --- # `--socks5-gssapi` Use GSS-API authentication when connecting to a SOCKS5 proxy. The GSS-API authentication is enabled by default (if curl is compiled with GSS-API support). Use --socks5-basic to force username/password authentication to SOCKS5 proxies. curl-8.14.1/docs/cmdline-opts/socks5-hostname.md0000644000000000000000000000204115017756261017642 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: socks5-hostname Arg: Help: SOCKS5 proxy, pass hostname to proxy Added: 7.18.0 Category: proxy Multi: single See-also: - socks5 - socks4a Example: - --socks5-hostname proxy.example:7000 $URL --- # `--socks5-hostname` Use the specified SOCKS5 proxy (and let the proxy resolve the hostname). If the port number is not specified, it is assumed at port 1080. To specify proxy on a Unix domain socket, use localhost for host, e.g. `socks5h://localhost/path/to/socket.sock` This option overrides any previous use of --proxy, as they are mutually exclusive. This option is superfluous since you can specify a socks5 hostname proxy with --proxy using a socks5h:// protocol prefix. (Added in 7.21.7) --preproxy can be used to specify a SOCKS proxy at the same time --proxy is used with an HTTP/HTTPS proxy (added in 7.52.0). In such a case, curl first connects to the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy. curl-8.14.1/docs/cmdline-opts/socks5.md0000644000000000000000000000205115017756261016027 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: socks5 Arg: Help: SOCKS5 proxy on given host + port Added: 7.18.0 Category: proxy Multi: single See-also: - socks5-hostname - socks4a Example: - --socks5 proxy.example:7000 $URL --- # `--socks5` Use the specified SOCKS5 proxy - but resolve the hostname locally. If the port number is not specified, it is assumed at port 1080. To specify proxy on a Unix domain socket, use localhost for host, e.g. `socks5://localhost/path/to/socket.sock` This option overrides any previous use of --proxy, as they are mutually exclusive. This option is superfluous since you can specify a socks5 proxy with --proxy using a socks5:// protocol prefix. (Added in 7.21.7) --preproxy can be used to specify a SOCKS proxy at the same time --proxy is used with an HTTP/HTTPS proxy (added in 7.52.0). In such a case, curl first connects to the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy. This option does not work with FTPS or LDAP. curl-8.14.1/docs/cmdline-opts/speed-limit.md0000644000000000000000000000102315017756261017032 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: speed-limit Short: Y Arg: Help: Stop transfers slower than this Category: connection Added: 4.7 Multi: single See-also: - speed-time - limit-rate - max-time Example: - --speed-limit 300 --speed-time 10 $URL --- # `--speed-limit` If a transfer is slower than this set speed (in bytes per second) for a given number of seconds, it gets aborted. The time period is set with --speed-time and is 30 seconds by default. curl-8.14.1/docs/cmdline-opts/speed-time.md0000644000000000000000000000130215017756261016652 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: speed-time Short: y Arg: Help: Trigger 'speed-limit' abort after this time Category: connection timeout Added: 4.7 Multi: single See-also: - speed-limit - limit-rate Example: - --speed-limit 300 --speed-time 10 $URL --- # `--speed-time` If a transfer runs slower than speed-limit bytes per second during a speed-time period, the transfer is aborted. If speed-time is used, the default speed-limit is 1 unless set with --speed-limit. This option controls transfers (in both directions) but does not affect slow connects etc. If this is a concern for you, try the --connect-timeout option. curl-8.14.1/docs/cmdline-opts/ssl-allow-beast.md0000644000000000000000000000134215017756261017633 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ssl-allow-beast Help: Allow security flaw to improve interop Protocols: TLS Added: 7.25.0 Category: tls Multi: boolean See-also: - proxy-ssl-allow-beast - insecure Example: - --ssl-allow-beast $URL --- # `--ssl-allow-beast` Do not work around a security flaw in the TLS1.0 protocol known as BEAST. If this option is not used, the TLS layer may use workarounds known to cause interoperability problems with some older server implementations. This option only changes how curl does TLS 1.0 and has no effect on later TLS versions. **WARNING**: this option loosens the TLS security, and by using this flag you ask for exactly that. curl-8.14.1/docs/cmdline-opts/ssl-auto-client-cert.md0000644000000000000000000000113615017756261020601 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ssl-auto-client-cert Help: Use auto client certificate (Schannel) Added: 7.77.0 Category: tls Protocols: TLS Multi: boolean See-also: - proxy-ssl-auto-client-cert Example: - --ssl-auto-client-cert $URL --- # `--ssl-auto-client-cert` (Schannel) Automatically locate and use a client certificate for authentication, when requested by the server. Since the server can request any certificate that supports client authentication in the OS certificate store it could be a privacy violation and unexpected. curl-8.14.1/docs/cmdline-opts/ssl-no-revoke.md0000644000000000000000000000067715017756261017340 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ssl-no-revoke Help: Disable cert revocation checks (Schannel) Added: 7.44.0 Protocols: TLS Category: tls Multi: boolean See-also: - crlfile Example: - --ssl-no-revoke $URL --- # `--ssl-no-revoke` (Schannel) Disable certificate revocation checks. WARNING: this option loosens the SSL security, and by using this flag you ask for exactly that. curl-8.14.1/docs/cmdline-opts/ssl-reqd.md0000644000000000000000000000166315017756261016362 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ssl-reqd Help: Require SSL/TLS Protocols: FTP IMAP POP3 SMTP LDAP Added: 7.20.0 Category: tls imap pop3 smtp ldap Multi: boolean See-also: - ssl - insecure Example: - --ssl-reqd ftp://example.com --- # `--ssl-reqd` Require SSL/TLS for the connection - often referred to as STARTTLS or STLS because of the involved commands. Terminates the connection if the transfer cannot be upgraded to use SSL/TLS. This option is handled in LDAP (added in 7.81.0). It is fully supported by the OpenLDAP backend and rejected by the generic ldap backend if explicit TLS is required. This option is unnecessary if you use a URL scheme that in itself implies immediate and implicit use of TLS, like for FTPS, IMAPS, POP3S, SMTPS and LDAPS. Such a transfer always fails if the TLS handshake does not work. This option was formerly known as --ftp-ssl-reqd. curl-8.14.1/docs/cmdline-opts/ssl-revoke-best-effort.md0000644000000000000000000000073315017756261021135 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ssl-revoke-best-effort Help: Ignore missing cert CRL dist points Added: 7.70.0 Protocols: TLS Category: tls Multi: boolean See-also: - crlfile - insecure Example: - --ssl-revoke-best-effort $URL --- # `--ssl-revoke-best-effort` (Schannel) Ignore certificate revocation checks when they failed due to missing/offline distribution points for the revocation check lists. curl-8.14.1/docs/cmdline-opts/ssl-sessions.md0000644000000000000000000000244215017756261017271 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ssl-sessions Arg: Protocols: TLS Help: Load/save SSL session tickets from/to this file Added: 8.12.0 Category: tls Multi: single See-also: - tls-earlydata Example: - --ssl-sessions sessions.txt $URL --- # `--ssl-sessions` Use the given file to load SSL session tickets into curl's cache before starting any transfers. At the end of a successful curl run, the cached SSL sessions tickets are saved to the file, replacing any previous content. The file does not have to exist, but curl reports an error if it is unable to create it. Unused loaded tickets are saved again, unless they get replaced or purged from the cache for space reasons. Using a session file allows `--tls-earlydata` to send the first request in "0-RTT" mode, should an SSL session with the feature be found. Note that a server may not support early data. Also note that early data does not provide forward secrecy, e.g. is not as secure. The SSL session tickets are stored as base64 encoded text, each ticket on its own line. The hostnames are cryptographically salted and hashed. While this prevents someone from easily seeing the hosts you contacted, they could still check if a specific hostname matches one of the values. curl-8.14.1/docs/cmdline-opts/ssl.md0000644000000000000000000000211515017756261015422 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: ssl Help: Try enabling TLS Protocols: FTP IMAP POP3 SMTP LDAP Added: 7.20.0 Category: tls imap pop3 smtp ldap Multi: boolean See-also: - ssl-reqd - insecure - ciphers Example: - --ssl pop3://example.com/ --- # `--ssl` Warning: this is considered an insecure option. Consider using --ssl-reqd instead to be sure curl upgrades to a secure connection. Try to use SSL/TLS for the connection - often referred to as STARTTLS or STLS because of the involved commands. Reverts to a non-secure connection if the server does not support SSL/TLS. See also --ftp-ssl-control and --ssl-reqd for different levels of encryption required. This option is handled in LDAP (added in 7.81.0). It is fully supported by the OpenLDAP backend and ignored by the generic ldap backend. Please note that a server may close the connection if the negotiation does not succeed. This option was formerly known as --ftp-ssl (added in 7.11.0). That option name can still be used but might be removed in a future version. curl-8.14.1/docs/cmdline-opts/sslv2.md0000644000000000000000000000072215017756261015674 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Short: 2 Long: sslv2 Tags: Versions Protocols: SSL Added: 5.9 Mutexed: sslv3 tlsv1 tlsv1.1 tlsv1.2 Requires: TLS Help: SSLv2 Category: deprecated Multi: mutex See-also: - http1.1 - http2 Example: - --sslv2 $URL --- # `--sslv2` This option previously asked curl to use SSLv2, but is now ignored (added in 7.77.0). SSLv2 is widely considered insecure (see RFC 6176). curl-8.14.1/docs/cmdline-opts/sslv3.md0000644000000000000000000000072215017756261015675 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Short: 3 Long: sslv3 Tags: Versions Protocols: SSL Added: 5.9 Mutexed: sslv2 tlsv1 tlsv1.1 tlsv1.2 Requires: TLS Help: SSLv3 Category: deprecated Multi: mutex See-also: - http1.1 - http2 Example: - --sslv3 $URL --- # `--sslv3` This option previously asked curl to use SSLv3, but is now ignored (added in 7.77.0). SSLv3 is widely considered insecure (see RFC 7568). curl-8.14.1/docs/cmdline-opts/stderr.md0000644000000000000000000000065515017756261016133 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: stderr Arg: Help: Where to redirect stderr Category: verbose global Added: 6.2 Multi: single Scope: global See-also: - verbose - silent Example: - --stderr output.txt $URL --- # `--stderr` Redirect all writes to stderr to the specified file instead. If the filename is a plain '-', it is instead written to stdout. curl-8.14.1/docs/cmdline-opts/styled-output.md0000644000000000000000000000111315017756261017460 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: styled-output Help: Enable styled output for HTTP headers Added: 7.61.0 Category: verbose global Multi: boolean Scope: global See-also: - head - verbose Example: - --styled-output -I $URL --- # `--styled-output` Enable automatic use of bold font styles when writing HTTP headers to the terminal. Use --no-styled-output to switch them off. Styled output requires a terminal that supports bold fonts. This feature is not present on curl for Windows due to lack of this capability. curl-8.14.1/docs/cmdline-opts/suppress-connect-headers.md0000644000000000000000000000126315017756261021550 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: suppress-connect-headers Help: Suppress proxy CONNECT response headers Category: proxy Added: 7.54.0 Multi: boolean See-also: - dump-header - show-headers - proxytunnel Example: - --suppress-connect-headers --show-headers -x proxy $URL --- # `--suppress-connect-headers` When --proxytunnel is used and a CONNECT request is made, do not output proxy CONNECT response headers. This option is meant to be used with --dump-header or --show-headers which are used to show protocol headers in the output. It has no effect on debug options such as --verbose or --trace, or any statistics. curl-8.14.1/docs/cmdline-opts/tcp-fastopen.md0000644000000000000000000000075115017756261017230 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: tcp-fastopen Added: 7.49.0 Help: Use TCP Fast Open Category: connection Multi: boolean See-also: - false-start Example: - --tcp-fastopen $URL --- # `--tcp-fastopen` Enable use of TCP Fast Open (RFC 7413). TCP Fast Open is a TCP extension that allows data to be sent earlier over the connection (before the final handshake ACK) if the client and server have been connected previously. curl-8.14.1/docs/cmdline-opts/tcp-nodelay.md0000644000000000000000000000074415017756261017046 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: tcp-nodelay Help: Set TCP_NODELAY Added: 7.11.2 Category: connection Multi: boolean See-also: - no-buffer Example: - --tcp-nodelay $URL --- # `--tcp-nodelay` Turn on the TCP_NODELAY option. See the *curl_easy_setopt(3)* man page for details about this option. curl sets this option by default and you need to explicitly switch it off if you do not want it on (added in 7.50.2). curl-8.14.1/docs/cmdline-opts/telnet-option.md0000644000000000000000000000100115017756261017413 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: telnet-option Short: t Arg: Help: Set telnet option Category: telnet Added: 7.7 Multi: append See-also: - config Example: - -t TTYPE=vt100 telnet://example.com/ --- # `--telnet-option` Pass options to the telnet protocol. Supported options are: ## `TTYPE=` Sets the terminal type. ## `XDISPLOC=` Sets the X display location. ## `NEW_ENV=` Sets an environment variable. curl-8.14.1/docs/cmdline-opts/tftp-blksize.md0000644000000000000000000000077515017756261017251 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: tftp-blksize Arg: Help: Set TFTP BLKSIZE option Protocols: TFTP Added: 7.20.0 Category: tftp Multi: single See-also: - tftp-no-options Example: - --tftp-blksize 1024 tftp://example.com/file --- # `--tftp-blksize` Set the TFTP **BLKSIZE** option (must be 512 or larger). This is the block size that curl tries to use when transferring data to or from a TFTP server. By default 512 bytes are used. curl-8.14.1/docs/cmdline-opts/tftp-no-options.md0000644000000000000000000000077615017756261017714 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: tftp-no-options Help: Do not send any TFTP options Protocols: TFTP Added: 7.48.0 Category: tftp Multi: boolean See-also: - tftp-blksize Example: - --tftp-no-options tftp://192.168.0.1/ --- # `--tftp-no-options` Do not send TFTP options requests. This improves interop with some legacy servers that do not acknowledge or properly implement TFTP options. When this option is used --tftp-blksize is ignored. curl-8.14.1/docs/cmdline-opts/time-cond.md0000644000000000000000000000212215017756261016476 0ustar0000000000000000--- c: Copyright (C) Daniel Stenberg, , et al. SPDX-License-Identifier: curl Long: time-cond Short: z Arg: