cjson
.github
workflows CI.yml ci-fuzz.yml
CONTRIBUTING.md
fuzzing
inputs test1 test10 test11 test2 test3 test3.bu test3.uf test3.uu test4 test5 test6 test7 test8 test9
.gitignore CMakeLists.txt afl-prepare-linux.sh afl.c afl.sh cjson_read_fuzzer.c fuzz_main.c json.dict ossfuzz.sh
library_config cJSONConfig.cmake.in cJSONConfigVersion.cmake.in libcjson.pc.in libcjson_utils.pc.in uninstall.cmake
tests
inputs test1 test1.expected test10 test10.expected test11 test11.expected test2 test2.expected test3 test3.expected test4 test4.expected test5 test5.expected test6 test7 test7.expected test8 test8.expected test9 test9.expected
json-patch-tests .editorconfig .gitignore .npmignore README.md cjson-utils-tests.json package.json spec_tests.json tests.json
unity
auto colour_prompt.rb colour_reporter.rb generate_config.yml generate_module.rb generate_test_runner.rb parse_output.rb stylize_as_junit.rb test_file_filter.rb type_sanitizer.rb unity_test_summary.py unity_test_summary.rb unity_to_junit.py
docs ThrowTheSwitchCodingStandard.md UnityAssertionsCheatSheetSuitableforPrintingandPossiblyFraming.pdf UnityAssertionsReference.md UnityConfigurationGuide.md UnityGettingStartedGuide.md UnityHelperScriptsGuide.md license.txt
examples
example_1
src ProductionCode.c ProductionCode.h ProductionCode2.c ProductionCode2.h
makefile readme.txt
example_2
src ProductionCode.c ProductionCode.h ProductionCode2.c ProductionCode2.h
makefile readme.txt
example_3
helper UnityHelper.c UnityHelper.h
src ProductionCode.c ProductionCode.h ProductionCode2.c ProductionCode2.h
rakefile.rb rakefile_helper.rb readme.txt target_gcc_32.yml
unity_config.h
extras
eclipse error_parsers.txt
fixture
src unity_fixture.c unity_fixture.h unity_fixture_internals.h unity_fixture_malloc_overrides.h
rakefile.rb rakefile_helper.rb readme.txt
release build.info version.info
src unity.c unity.h unity_internals.h
.gitattributes .gitignore .travis.yml README.md
CMakeLists.txt cjson_add.c common.h compare_tests.c json_patch_tests.c minify_tests.c misc_tests.c misc_utils_tests.c old_utils_tests.c parse_array.c parse_examples.c parse_hex4.c parse_number.c parse_object.c parse_string.c parse_value.c parse_with_opts.c print_array.c print_number.c print_object.c print_string.c print_value.c readme_examples.c unity_setup.c
.editorconfig .gitattributes .gitignore .travis.yml CHANGELOG.md CMakeLists.txt CONTRIBUTORS.md LICENSE Makefile README.md SECURITY.md appveyor.yml cJSON.c cJSON.h cJSON_Utils.c cJSON_Utils.h test.c valgrind.supp
curl
.circleci config.yml
.github
ISSUE_TEMPLATE bug_report.yml config.yml docs.yml
scripts cleancmd.pl cmp-config.pl cmp-pkg-config.sh codespell-ignore.words codespell.sh distfiles.sh pyspelling.words pyspelling.yaml randcurl.pl requirements-docs.txt requirements-proselint.txt requirements.txt shellcheck-ci.sh shellcheck.sh spellcheck.curl trimmarkdownheader.pl typos.sh typos.toml verify-examples.pl verify-synopsis.pl yamlcheck.sh yamlcheck.yaml
workflows appveyor-status.yml checkdocs.yml checksrc.yml checkurls.yml codeql.yml configure-vs-cmake.yml curl-for-win.yml distcheck.yml fuzz.yml http3-linux.yml label.yml linux-old.yml linux.yml macos.yml non-native.yml windows.yml
CODEOWNERS CONTRIBUTING.md FUNDING.yml dependabot.yml labeler.yml lock.yml stale.yml
CMake CurlSymbolHiding.cmake CurlTests.c FindBrotli.cmake FindCares.cmake FindGSS.cmake FindGnuTLS.cmake FindLDAP.cmake FindLibbacktrace.cmake FindLibgsasl.cmake FindLibidn2.cmake FindLibpsl.cmake FindLibssh.cmake FindLibssh2.cmake FindLibuv.cmake FindMbedTLS.cmake FindNGHTTP2.cmake FindNGHTTP3.cmake FindNGTCP2.cmake FindNettle.cmake FindQuiche.cmake FindRustls.cmake FindWolfSSL.cmake FindZstd.cmake Macros.cmake OtherTests.cmake PickyWarnings.cmake Utilities.cmake cmake_uninstall.in.cmake curl-config.in.cmake unix-cache.cmake win32-cache.cmake
LICENSES BSD-4-Clause-UC.txt ISC.txt curl.txt
docs
cmdline-opts .gitignore CMakeLists.txt MANPAGE.md Makefile.am Makefile.inc _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 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 follow.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-clientip.md haproxy-protocol.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-only.md http3.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 knownhosts.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 mainpage.idx 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 out-null.md output-dir.md output.md parallel-immediate.md parallel-max-host.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 sigalgs.md silent.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-query.md url.md use-ascii.md user-agent.md user.md variable.md verbose.md version.md vlan-priority.md write-out.md xattr.md
examples .checksrc .gitignore 10-at-a-time.c CMakeLists.txt Makefile.am Makefile.example Makefile.inc README.md adddocsref.pl address-scope.c altsvc.c anyauthput.c block_ip.c cacertinmem.c certinfo.c chkspeed.c connect-to.c cookie_interface.c crawler.c debug.c default-scheme.c ephiperfifo.c evhiperfifo.c externalsocket.c fileupload.c ftp-delete.c ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c ftpsget.c ftpupload.c ftpuploadfrommem.c ftpuploadresume.c getinfo.c getinmemory.c getredirect.c getreferrer.c ghiper.c headerapi.c hiperfifo.c hsts-preload.c htmltidy.c htmltitle.cpp http-options.c http-post.c http2-download.c http2-pushinmemory.c http2-serverpush.c http2-upload.c http3-present.c http3.c httpcustomheader.c httpput-postfields.c httpput.c https.c imap-append.c imap-authzid.c imap-copy.c imap-create.c imap-delete.c imap-examine.c imap-fetch.c imap-list.c imap-lsub.c imap-multi.c imap-noop.c imap-search.c imap-ssl.c imap-store.c imap-tls.c interface.c ipv6.c keepalive.c localport.c log_failed_transfers.c maxconnects.c multi-app.c multi-debugcallback.c multi-double.c multi-event.c multi-formadd.c multi-legacy.c multi-post.c multi-single.c multi-uv.c netrc.c parseurl.c persistent.c pop3-authzid.c pop3-dele.c pop3-list.c pop3-multi.c pop3-noop.c pop3-retr.c pop3-ssl.c pop3-stat.c pop3-tls.c pop3-top.c pop3-uidl.c post-callback.c postinmemory.c postit2-formadd.c postit2.c progressfunc.c protofeats.c range.c resolve.c rtsp-options.c sendrecv.c sepheaders.c sessioninfo.c sftpget.c sftpuploadresume.c shared-connection-cache.c simple.c simplepost.c simplessl.c smooth-gtk-thread.c smtp-authzid.c smtp-expn.c smtp-mail.c smtp-mime.c smtp-multi.c smtp-ssl.c smtp-tls.c smtp-vrfy.c sslbackend.c synctime.c threaded.c unixsocket.c url2file.c urlapi.c usercertinmem.c version-check.pl websocket-cb.c websocket-updown.c websocket.c xmlstream.c
internals BUFQ.md BUFREF.md CHECKSRC.md CLIENT-READERS.md CLIENT-WRITERS.md CODE_STYLE.md CONNECTION-FILTERS.md CREDENTIALS.md CURLX.md DYNBUF.md HASH.md LLIST.md MID.md MQTT.md MULTI-EV.md NEW-PROTOCOL.md PEERS.md PORTING.md RATELIMITS.md README.md SCORECARD.md SPLAY.md STRPARSE.md THRDPOOL-AND-QUEUE.md TIME-KEEPING.md TLS-SESSIONS.md UINT_SETS.md WEBSOCKET.md
libcurl
opts CMakeLists.txt CURLINFO_ACTIVESOCKET.md CURLINFO_APPCONNECT_TIME.md CURLINFO_APPCONNECT_TIME_T.md CURLINFO_CAINFO.md CURLINFO_CAPATH.md CURLINFO_CERTINFO.md CURLINFO_CONDITION_UNMET.md CURLINFO_CONNECT_TIME.md CURLINFO_CONNECT_TIME_T.md CURLINFO_CONN_ID.md CURLINFO_CONTENT_LENGTH_DOWNLOAD.md CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.md CURLINFO_CONTENT_LENGTH_UPLOAD.md CURLINFO_CONTENT_LENGTH_UPLOAD_T.md CURLINFO_CONTENT_TYPE.md CURLINFO_COOKIELIST.md CURLINFO_EARLYDATA_SENT_T.md CURLINFO_EFFECTIVE_METHOD.md CURLINFO_EFFECTIVE_URL.md CURLINFO_FILETIME.md CURLINFO_FILETIME_T.md CURLINFO_FTP_ENTRY_PATH.md CURLINFO_HEADER_SIZE.md CURLINFO_HTTPAUTH_AVAIL.md CURLINFO_HTTPAUTH_USED.md CURLINFO_HTTP_CONNECTCODE.md CURLINFO_HTTP_VERSION.md CURLINFO_LASTSOCKET.md CURLINFO_LOCAL_IP.md CURLINFO_LOCAL_PORT.md CURLINFO_NAMELOOKUP_TIME.md CURLINFO_NAMELOOKUP_TIME_T.md CURLINFO_NUM_CONNECTS.md CURLINFO_OS_ERRNO.md CURLINFO_POSTTRANSFER_TIME_T.md CURLINFO_PRETRANSFER_TIME.md CURLINFO_PRETRANSFER_TIME_T.md CURLINFO_PRIMARY_IP.md CURLINFO_PRIMARY_PORT.md CURLINFO_PRIVATE.md CURLINFO_PROTOCOL.md CURLINFO_PROXYAUTH_AVAIL.md CURLINFO_PROXYAUTH_USED.md CURLINFO_PROXY_ERROR.md CURLINFO_PROXY_SSL_VERIFYRESULT.md CURLINFO_QUEUE_TIME_T.md CURLINFO_REDIRECT_COUNT.md CURLINFO_REDIRECT_TIME.md CURLINFO_REDIRECT_TIME_T.md CURLINFO_REDIRECT_URL.md CURLINFO_REFERER.md CURLINFO_REQUEST_SIZE.md CURLINFO_RESPONSE_CODE.md CURLINFO_RETRY_AFTER.md CURLINFO_RTSP_CLIENT_CSEQ.md CURLINFO_RTSP_CSEQ_RECV.md CURLINFO_RTSP_SERVER_CSEQ.md CURLINFO_RTSP_SESSION_ID.md CURLINFO_SCHEME.md CURLINFO_SIZE_DELIVERED.md CURLINFO_SIZE_DOWNLOAD.md CURLINFO_SIZE_DOWNLOAD_T.md CURLINFO_SIZE_UPLOAD.md CURLINFO_SIZE_UPLOAD_T.md CURLINFO_SPEED_DOWNLOAD.md CURLINFO_SPEED_DOWNLOAD_T.md CURLINFO_SPEED_UPLOAD.md CURLINFO_SPEED_UPLOAD_T.md CURLINFO_SSL_ENGINES.md CURLINFO_SSL_VERIFYRESULT.md CURLINFO_STARTTRANSFER_TIME.md CURLINFO_STARTTRANSFER_TIME_T.md CURLINFO_TLS_SESSION.md CURLINFO_TLS_SSL_PTR.md CURLINFO_TOTAL_TIME.md CURLINFO_TOTAL_TIME_T.md CURLINFO_USED_PROXY.md CURLINFO_XFER_ID.md CURLMINFO_XFERS_ADDED.md CURLMINFO_XFERS_CURRENT.md CURLMINFO_XFERS_DONE.md CURLMINFO_XFERS_PENDING.md CURLMINFO_XFERS_RUNNING.md CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.md CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.md CURLMOPT_MAXCONNECTS.md CURLMOPT_MAX_CONCURRENT_STREAMS.md CURLMOPT_MAX_HOST_CONNECTIONS.md CURLMOPT_MAX_PIPELINE_LENGTH.md CURLMOPT_MAX_TOTAL_CONNECTIONS.md CURLMOPT_NETWORK_CHANGED.md CURLMOPT_NOTIFYDATA.md CURLMOPT_NOTIFYFUNCTION.md CURLMOPT_PIPELINING.md CURLMOPT_PIPELINING_SERVER_BL.md CURLMOPT_PIPELINING_SITE_BL.md CURLMOPT_PUSHDATA.md CURLMOPT_PUSHFUNCTION.md CURLMOPT_QUICK_EXIT.md CURLMOPT_RESOLVE_THREADS_MAX.md CURLMOPT_SOCKETDATA.md CURLMOPT_SOCKETFUNCTION.md CURLMOPT_TIMERDATA.md CURLMOPT_TIMERFUNCTION.md CURLOPT_ABSTRACT_UNIX_SOCKET.md CURLOPT_ACCEPTTIMEOUT_MS.md CURLOPT_ACCEPT_ENCODING.md CURLOPT_ADDRESS_SCOPE.md CURLOPT_ALTSVC.md CURLOPT_ALTSVC_CTRL.md CURLOPT_APPEND.md CURLOPT_AUTOREFERER.md CURLOPT_AWS_SIGV4.md CURLOPT_BUFFERSIZE.md CURLOPT_CAINFO.md CURLOPT_CAINFO_BLOB.md CURLOPT_CAPATH.md CURLOPT_CA_CACHE_TIMEOUT.md CURLOPT_CERTINFO.md CURLOPT_CHUNK_BGN_FUNCTION.md CURLOPT_CHUNK_DATA.md CURLOPT_CHUNK_END_FUNCTION.md CURLOPT_CLOSESOCKETDATA.md CURLOPT_CLOSESOCKETFUNCTION.md CURLOPT_CONNECTTIMEOUT.md CURLOPT_CONNECTTIMEOUT_MS.md CURLOPT_CONNECT_ONLY.md CURLOPT_CONNECT_TO.md CURLOPT_CONV_FROM_NETWORK_FUNCTION.md CURLOPT_CONV_FROM_UTF8_FUNCTION.md CURLOPT_CONV_TO_NETWORK_FUNCTION.md CURLOPT_COOKIE.md CURLOPT_COOKIEFILE.md CURLOPT_COOKIEJAR.md CURLOPT_COOKIELIST.md CURLOPT_COOKIESESSION.md CURLOPT_COPYPOSTFIELDS.md CURLOPT_CRLF.md CURLOPT_CRLFILE.md CURLOPT_CURLU.md CURLOPT_CUSTOMREQUEST.md CURLOPT_DEBUGDATA.md CURLOPT_DEBUGFUNCTION.md CURLOPT_DEFAULT_PROTOCOL.md CURLOPT_DIRLISTONLY.md CURLOPT_DISALLOW_USERNAME_IN_URL.md CURLOPT_DNS_CACHE_TIMEOUT.md CURLOPT_DNS_INTERFACE.md CURLOPT_DNS_LOCAL_IP4.md CURLOPT_DNS_LOCAL_IP6.md CURLOPT_DNS_SERVERS.md CURLOPT_DNS_SHUFFLE_ADDRESSES.md CURLOPT_DNS_USE_GLOBAL_CACHE.md CURLOPT_DOH_SSL_VERIFYHOST.md CURLOPT_DOH_SSL_VERIFYPEER.md CURLOPT_DOH_SSL_VERIFYSTATUS.md CURLOPT_DOH_URL.md CURLOPT_ECH.md CURLOPT_EGDSOCKET.md CURLOPT_ERRORBUFFER.md CURLOPT_EXPECT_100_TIMEOUT_MS.md CURLOPT_FAILONERROR.md CURLOPT_FILETIME.md CURLOPT_FNMATCH_DATA.md CURLOPT_FNMATCH_FUNCTION.md CURLOPT_FOLLOWLOCATION.md CURLOPT_FORBID_REUSE.md CURLOPT_FRESH_CONNECT.md CURLOPT_FTPPORT.md CURLOPT_FTPSSLAUTH.md CURLOPT_FTP_ACCOUNT.md CURLOPT_FTP_ALTERNATIVE_TO_USER.md CURLOPT_FTP_CREATE_MISSING_DIRS.md CURLOPT_FTP_FILEMETHOD.md CURLOPT_FTP_SKIP_PASV_IP.md CURLOPT_FTP_SSL_CCC.md CURLOPT_FTP_USE_EPRT.md CURLOPT_FTP_USE_EPSV.md CURLOPT_FTP_USE_PRET.md CURLOPT_GSSAPI_DELEGATION.md CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.md CURLOPT_HAPROXYPROTOCOL.md CURLOPT_HAPROXY_CLIENT_IP.md CURLOPT_HEADER.md CURLOPT_HEADERDATA.md CURLOPT_HEADERFUNCTION.md CURLOPT_HEADEROPT.md CURLOPT_HSTS.md CURLOPT_HSTSREADDATA.md CURLOPT_HSTSREADFUNCTION.md CURLOPT_HSTSWRITEDATA.md CURLOPT_HSTSWRITEFUNCTION.md CURLOPT_HSTS_CTRL.md CURLOPT_HTTP09_ALLOWED.md CURLOPT_HTTP200ALIASES.md CURLOPT_HTTPAUTH.md CURLOPT_HTTPGET.md CURLOPT_HTTPHEADER.md CURLOPT_HTTPPOST.md CURLOPT_HTTPPROXYTUNNEL.md CURLOPT_HTTP_CONTENT_DECODING.md CURLOPT_HTTP_TRANSFER_DECODING.md CURLOPT_HTTP_VERSION.md CURLOPT_IGNORE_CONTENT_LENGTH.md CURLOPT_INFILESIZE.md CURLOPT_INFILESIZE_LARGE.md CURLOPT_INTERFACE.md CURLOPT_INTERLEAVEDATA.md CURLOPT_INTERLEAVEFUNCTION.md CURLOPT_IOCTLDATA.md CURLOPT_IOCTLFUNCTION.md CURLOPT_IPRESOLVE.md CURLOPT_ISSUERCERT.md CURLOPT_ISSUERCERT_BLOB.md CURLOPT_KEEP_SENDING_ON_ERROR.md CURLOPT_KEYPASSWD.md CURLOPT_KRBLEVEL.md CURLOPT_LOCALPORT.md CURLOPT_LOCALPORTRANGE.md CURLOPT_LOGIN_OPTIONS.md CURLOPT_LOW_SPEED_LIMIT.md CURLOPT_LOW_SPEED_TIME.md CURLOPT_MAIL_AUTH.md CURLOPT_MAIL_FROM.md CURLOPT_MAIL_RCPT.md CURLOPT_MAIL_RCPT_ALLOWFAILS.md CURLOPT_MAXAGE_CONN.md CURLOPT_MAXCONNECTS.md CURLOPT_MAXFILESIZE.md CURLOPT_MAXFILESIZE_LARGE.md CURLOPT_MAXLIFETIME_CONN.md CURLOPT_MAXREDIRS.md CURLOPT_MAX_RECV_SPEED_LARGE.md CURLOPT_MAX_SEND_SPEED_LARGE.md CURLOPT_MIMEPOST.md CURLOPT_MIME_OPTIONS.md CURLOPT_NETRC.md CURLOPT_NETRC_FILE.md CURLOPT_NEW_DIRECTORY_PERMS.md CURLOPT_NEW_FILE_PERMS.md CURLOPT_NOBODY.md CURLOPT_NOPROGRESS.md CURLOPT_NOPROXY.md CURLOPT_NOSIGNAL.md CURLOPT_OPENSOCKETDATA.md CURLOPT_OPENSOCKETFUNCTION.md CURLOPT_PASSWORD.md CURLOPT_PATH_AS_IS.md CURLOPT_PINNEDPUBLICKEY.md CURLOPT_PIPEWAIT.md CURLOPT_PORT.md CURLOPT_POST.md CURLOPT_POSTFIELDS.md CURLOPT_POSTFIELDSIZE.md CURLOPT_POSTFIELDSIZE_LARGE.md CURLOPT_POSTQUOTE.md CURLOPT_POSTREDIR.md CURLOPT_PREQUOTE.md CURLOPT_PREREQDATA.md CURLOPT_PREREQFUNCTION.md CURLOPT_PRE_PROXY.md CURLOPT_PRIVATE.md CURLOPT_PROGRESSDATA.md CURLOPT_PROGRESSFUNCTION.md CURLOPT_PROTOCOLS.md CURLOPT_PROTOCOLS_STR.md CURLOPT_PROXY.md CURLOPT_PROXYAUTH.md CURLOPT_PROXYHEADER.md CURLOPT_PROXYPASSWORD.md CURLOPT_PROXYPORT.md CURLOPT_PROXYTYPE.md CURLOPT_PROXYUSERNAME.md CURLOPT_PROXYUSERPWD.md CURLOPT_PROXY_CAINFO.md CURLOPT_PROXY_CAINFO_BLOB.md CURLOPT_PROXY_CAPATH.md CURLOPT_PROXY_CRLFILE.md CURLOPT_PROXY_ISSUERCERT.md CURLOPT_PROXY_ISSUERCERT_BLOB.md CURLOPT_PROXY_KEYPASSWD.md CURLOPT_PROXY_PINNEDPUBLICKEY.md CURLOPT_PROXY_SERVICE_NAME.md CURLOPT_PROXY_SSLCERT.md CURLOPT_PROXY_SSLCERTTYPE.md CURLOPT_PROXY_SSLCERT_BLOB.md CURLOPT_PROXY_SSLKEY.md CURLOPT_PROXY_SSLKEYTYPE.md CURLOPT_PROXY_SSLKEY_BLOB.md CURLOPT_PROXY_SSLVERSION.md CURLOPT_PROXY_SSL_CIPHER_LIST.md CURLOPT_PROXY_SSL_OPTIONS.md CURLOPT_PROXY_SSL_VERIFYHOST.md CURLOPT_PROXY_SSL_VERIFYPEER.md CURLOPT_PROXY_TLS13_CIPHERS.md CURLOPT_PROXY_TLSAUTH_PASSWORD.md CURLOPT_PROXY_TLSAUTH_TYPE.md CURLOPT_PROXY_TLSAUTH_USERNAME.md CURLOPT_PROXY_TRANSFER_MODE.md CURLOPT_PUT.md CURLOPT_QUICK_EXIT.md CURLOPT_QUOTE.md CURLOPT_RANDOM_FILE.md CURLOPT_RANGE.md CURLOPT_READDATA.md CURLOPT_READFUNCTION.md CURLOPT_REDIR_PROTOCOLS.md CURLOPT_REDIR_PROTOCOLS_STR.md CURLOPT_REFERER.md CURLOPT_REQUEST_TARGET.md CURLOPT_RESOLVE.md CURLOPT_RESOLVER_START_DATA.md CURLOPT_RESOLVER_START_FUNCTION.md CURLOPT_RESUME_FROM.md CURLOPT_RESUME_FROM_LARGE.md CURLOPT_RTSP_CLIENT_CSEQ.md CURLOPT_RTSP_REQUEST.md CURLOPT_RTSP_SERVER_CSEQ.md CURLOPT_RTSP_SESSION_ID.md CURLOPT_RTSP_STREAM_URI.md CURLOPT_RTSP_TRANSPORT.md CURLOPT_SASL_AUTHZID.md CURLOPT_SASL_IR.md CURLOPT_SEEKDATA.md CURLOPT_SEEKFUNCTION.md CURLOPT_SERVER_RESPONSE_TIMEOUT.md CURLOPT_SERVER_RESPONSE_TIMEOUT_MS.md CURLOPT_SERVICE_NAME.md CURLOPT_SHARE.md CURLOPT_SOCKOPTDATA.md CURLOPT_SOCKOPTFUNCTION.md CURLOPT_SOCKS5_AUTH.md CURLOPT_SOCKS5_GSSAPI_NEC.md CURLOPT_SOCKS5_GSSAPI_SERVICE.md CURLOPT_SSH_AUTH_TYPES.md CURLOPT_SSH_COMPRESSION.md CURLOPT_SSH_HOSTKEYDATA.md CURLOPT_SSH_HOSTKEYFUNCTION.md CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.md CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.md CURLOPT_SSH_KEYDATA.md CURLOPT_SSH_KEYFUNCTION.md CURLOPT_SSH_KNOWNHOSTS.md CURLOPT_SSH_PRIVATE_KEYFILE.md CURLOPT_SSH_PUBLIC_KEYFILE.md CURLOPT_SSLCERT.md CURLOPT_SSLCERTTYPE.md CURLOPT_SSLCERT_BLOB.md CURLOPT_SSLENGINE.md CURLOPT_SSLENGINE_DEFAULT.md CURLOPT_SSLKEY.md CURLOPT_SSLKEYTYPE.md CURLOPT_SSLKEY_BLOB.md CURLOPT_SSLVERSION.md CURLOPT_SSL_CIPHER_LIST.md CURLOPT_SSL_CTX_DATA.md CURLOPT_SSL_CTX_FUNCTION.md CURLOPT_SSL_EC_CURVES.md CURLOPT_SSL_ENABLE_ALPN.md CURLOPT_SSL_ENABLE_NPN.md CURLOPT_SSL_FALSESTART.md CURLOPT_SSL_OPTIONS.md CURLOPT_SSL_SESSIONID_CACHE.md CURLOPT_SSL_SIGNATURE_ALGORITHMS.md CURLOPT_SSL_VERIFYHOST.md CURLOPT_SSL_VERIFYPEER.md CURLOPT_SSL_VERIFYSTATUS.md CURLOPT_STDERR.md CURLOPT_STREAM_DEPENDS.md CURLOPT_STREAM_DEPENDS_E.md CURLOPT_STREAM_WEIGHT.md CURLOPT_SUPPRESS_CONNECT_HEADERS.md CURLOPT_TCP_FASTOPEN.md CURLOPT_TCP_KEEPALIVE.md CURLOPT_TCP_KEEPCNT.md CURLOPT_TCP_KEEPIDLE.md CURLOPT_TCP_KEEPINTVL.md CURLOPT_TCP_NODELAY.md CURLOPT_TELNETOPTIONS.md CURLOPT_TFTP_BLKSIZE.md CURLOPT_TFTP_NO_OPTIONS.md CURLOPT_TIMECONDITION.md CURLOPT_TIMEOUT.md CURLOPT_TIMEOUT_MS.md CURLOPT_TIMEVALUE.md CURLOPT_TIMEVALUE_LARGE.md CURLOPT_TLS13_CIPHERS.md CURLOPT_TLSAUTH_PASSWORD.md CURLOPT_TLSAUTH_TYPE.md CURLOPT_TLSAUTH_USERNAME.md CURLOPT_TRAILERDATA.md CURLOPT_TRAILERFUNCTION.md CURLOPT_TRANSFERTEXT.md CURLOPT_TRANSFER_ENCODING.md CURLOPT_UNIX_SOCKET_PATH.md CURLOPT_UNRESTRICTED_AUTH.md CURLOPT_UPKEEP_INTERVAL_MS.md CURLOPT_UPLOAD.md CURLOPT_UPLOAD_BUFFERSIZE.md CURLOPT_UPLOAD_FLAGS.md CURLOPT_URL.md CURLOPT_USERAGENT.md CURLOPT_USERNAME.md CURLOPT_USERPWD.md CURLOPT_USE_SSL.md CURLOPT_VERBOSE.md CURLOPT_WILDCARDMATCH.md CURLOPT_WRITEDATA.md CURLOPT_WRITEFUNCTION.md CURLOPT_WS_OPTIONS.md CURLOPT_XFERINFODATA.md CURLOPT_XFERINFOFUNCTION.md CURLOPT_XOAUTH2_BEARER.md CURLSHOPT_LOCKFUNC.md CURLSHOPT_SHARE.md CURLSHOPT_UNLOCKFUNC.md CURLSHOPT_UNSHARE.md CURLSHOPT_USERDATA.md Makefile.am Makefile.inc
.gitignore ABI.md CMakeLists.txt Makefile.am Makefile.inc curl_easy_cleanup.md curl_easy_duphandle.md curl_easy_escape.md curl_easy_getinfo.md curl_easy_header.md curl_easy_init.md curl_easy_nextheader.md curl_easy_option_by_id.md curl_easy_option_by_name.md curl_easy_option_next.md curl_easy_pause.md curl_easy_perform.md curl_easy_recv.md curl_easy_reset.md curl_easy_send.md curl_easy_setopt.md curl_easy_ssls_export.md curl_easy_ssls_import.md curl_easy_strerror.md curl_easy_unescape.md curl_easy_upkeep.md curl_escape.md curl_formadd.md curl_formfree.md curl_formget.md curl_free.md curl_getdate.md curl_getenv.md curl_global_cleanup.md curl_global_init.md curl_global_init_mem.md curl_global_sslset.md curl_global_trace.md curl_mime_addpart.md curl_mime_data.md curl_mime_data_cb.md curl_mime_encoder.md curl_mime_filedata.md curl_mime_filename.md curl_mime_free.md curl_mime_headers.md curl_mime_init.md curl_mime_name.md curl_mime_subparts.md curl_mime_type.md curl_mprintf.md curl_multi_add_handle.md curl_multi_assign.md curl_multi_cleanup.md curl_multi_fdset.md curl_multi_get_handles.md curl_multi_get_offt.md curl_multi_info_read.md curl_multi_init.md curl_multi_notify_disable.md curl_multi_notify_enable.md curl_multi_perform.md curl_multi_poll.md curl_multi_remove_handle.md curl_multi_setopt.md curl_multi_socket.md curl_multi_socket_action.md curl_multi_socket_all.md curl_multi_strerror.md curl_multi_timeout.md curl_multi_wait.md curl_multi_waitfds.md curl_multi_wakeup.md curl_pushheader_byname.md curl_pushheader_bynum.md curl_share_cleanup.md curl_share_init.md curl_share_setopt.md curl_share_strerror.md curl_slist_append.md curl_slist_free_all.md curl_strequal.md curl_strnequal.md curl_unescape.md curl_url.md curl_url_cleanup.md curl_url_dup.md curl_url_get.md curl_url_set.md curl_url_strerror.md curl_version.md curl_version_info.md curl_ws_meta.md curl_ws_recv.md curl_ws_send.md curl_ws_start_frame.md libcurl-easy.md libcurl-env-dbg.md libcurl-env.md libcurl-errors.md libcurl-multi.md libcurl-security.md libcurl-share.md libcurl-thread.md libcurl-tutorial.md libcurl-url.md libcurl-ws.md libcurl.m4 libcurl.md mksymbolsmanpage.pl symbols-in-versions symbols.pl
tests CI.md FILEFORMAT.md HTTP.md TEST-SUITE.md
.gitignore ALTSVC.md BINDINGS.md BUG-BOUNTY.md BUGS.md CIPHERS-TLS12.md CIPHERS.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.md FEATURES.md GOVERNANCE.md HELP-US.md HISTORY.md HSTS.md HTTP-COOKIES.md HTTP3.md HTTPSRR.md INFRASTRUCTURE.md INSTALL-CMAKE.md INSTALL.md INTERNALS.md IPFS.md KNOWN_BUGS.md KNOWN_RISKS.md MAIL-ETIQUETTE.md MANUAL.md Makefile.am README.md RELEASE-PROCEDURE.md ROADMAP.md RUSTLS.md SECURITY-ADVISORY.md SPONSORS.md SSL-PROBLEMS.md SSLCERTS.md THANKS THANKS-filter TODO.md TheArtOfHttpScripting.md URL-SYNTAX.md VERIFY.md VERSIONS.md VULN-DISCLOSURE-POLICY.md curl-config.md mk-ca-bundle.md options-in-versions runtests.md testcurl.md wcurl.md
include
curl Makefile.am curl.h curlver.h easy.h header.h mprintf.h multi.h options.h stdcheaders.h system.h typecheck-gcc.h urlapi.h websockets.h
Makefile.am README.md
lib
curlx base64.c base64.h basename.c basename.h dynbuf.c dynbuf.h fopen.c fopen.h inet_ntop.c inet_ntop.h inet_pton.c inet_pton.h multibyte.c multibyte.h nonblock.c nonblock.h snprintf.c snprintf.h strcopy.c strcopy.h strdup.c strdup.h strerr.c strerr.h strparse.c strparse.h timediff.c timediff.h timeval.c timeval.h version_win32.c version_win32.h wait.c wait.h warnless.c warnless.h winapi.c winapi.h
vauth cleartext.c cram.c digest.c digest.h digest_sspi.c gsasl.c krb5_gssapi.c krb5_sspi.c ntlm.c ntlm_sspi.c oauth2.c spnego_gssapi.c spnego_sspi.c vauth.c vauth.h
vquic curl_ngtcp2.c curl_ngtcp2.h curl_quiche.c curl_quiche.h vquic-tls.c vquic-tls.h vquic.c vquic.h vquic_int.h
vssh libssh.c libssh2.c ssh.h vssh.c vssh.h
vtls apple.c apple.h cipher_suite.c cipher_suite.h gtls.c gtls.h hostcheck.c hostcheck.h keylog.c keylog.h mbedtls.c mbedtls.h openssl.c openssl.h rustls.c rustls.h schannel.c schannel.h schannel_int.h schannel_verify.c vtls.c vtls.h vtls_int.h vtls_scache.c vtls_scache.h vtls_spack.c vtls_spack.h wolfssl.c wolfssl.h x509asn1.c x509asn1.h
.gitignore CMakeLists.txt Makefile.am Makefile.inc Makefile.soname altsvc.c altsvc.h amigaos.c amigaos.h arpa_telnet.h asyn-ares.c asyn-base.c asyn-thrdd.c asyn.h bufq.c bufq.h bufref.c bufref.h cf-dns.c cf-dns.h cf-h1-proxy.c cf-h1-proxy.h cf-h2-proxy.c cf-h2-proxy.h cf-haproxy.c cf-haproxy.h cf-https-connect.c cf-https-connect.h cf-ip-happy.c cf-ip-happy.h cf-socket.c cf-socket.h cfilters.c cfilters.h config-mac.h config-os400.h config-riscos.h config-win32.h conncache.c conncache.h connect.c connect.h content_encoding.c content_encoding.h cookie.c cookie.h creds.c creds.h cshutdn.c cshutdn.h curl_addrinfo.c curl_addrinfo.h curl_config-cmake.h.in curl_ctype.h curl_endian.c curl_endian.h curl_fnmatch.c curl_fnmatch.h curl_fopen.c curl_fopen.h curl_get_line.c curl_get_line.h curl_gethostname.c curl_gethostname.h curl_gssapi.c curl_gssapi.h curl_hmac.h curl_ldap.h curl_md4.h curl_md5.h curl_memrchr.c curl_memrchr.h curl_ntlm_core.c curl_ntlm_core.h curl_printf.h curl_range.c curl_range.h curl_sasl.c curl_sasl.h curl_setup.h curl_sha256.h curl_sha512_256.c curl_sha512_256.h curl_share.c curl_share.h curl_sspi.c curl_sspi.h curl_threads.c curl_threads.h curl_trc.c curl_trc.h cw-out.c cw-out.h cw-pause.c cw-pause.h dict.c dict.h dllmain.c dnscache.c dnscache.h doh.c doh.h dynhds.c dynhds.h easy.c easy_lock.h easygetopt.c easyif.h easyoptions.c easyoptions.h escape.c escape.h fake_addrinfo.c fake_addrinfo.h file.c file.h fileinfo.c fileinfo.h formdata.c formdata.h ftp-int.h ftp.c ftp.h ftplistparser.c ftplistparser.h functypes.h getenv.c getinfo.c getinfo.h gopher.c gopher.h hash.c hash.h headers.c headers.h hmac.c hostip.c hostip.h hostip4.c hostip6.c hsts.c hsts.h http.c http.h http1.c http1.h http2.c http2.h http_aws_sigv4.c http_aws_sigv4.h http_chunks.c http_chunks.h http_digest.c http_digest.h http_negotiate.c http_negotiate.h http_ntlm.c http_ntlm.h http_proxy.c http_proxy.h httpsrr.c httpsrr.h idn.c idn.h if2ip.c if2ip.h imap.c imap.h ldap.c libcurl.def libcurl.rc libcurl.vers.in llist.c llist.h macos.c macos.h md4.c md5.c memdebug.c mime.c mime.h mprintf.c mqtt.c mqtt.h multi.c multi_ev.c multi_ev.h multi_ntfy.c multi_ntfy.h multihandle.h multiif.h netrc.c netrc.h noproxy.c noproxy.h openldap.c optiontable.pl parsedate.c parsedate.h peer.c peer.h pingpong.c pingpong.h pop3.c pop3.h progress.c progress.h protocol.c protocol.h psl.c psl.h rand.c rand.h ratelimit.c ratelimit.h request.c request.h rtsp.c rtsp.h select.c select.h sendf.c sendf.h setopt.c setopt.h setup-os400.h setup-vms.h setup-win32.h sha256.c sigpipe.h slist.c slist.h smb.c smb.h smtp.c smtp.h sockaddr.h socketpair.c socketpair.h socks.c socks.h socks_gssapi.c socks_sspi.c splay.c splay.h strcase.c strcase.h strequal.c strerror.c strerror.h system_win32.c system_win32.h telnet.c telnet.h tftp.c tftp.h thrdpool.c thrdpool.h thrdqueue.c thrdqueue.h transfer.c transfer.h uint-bset.c uint-bset.h uint-hash.c uint-hash.h uint-spbset.c uint-spbset.h uint-table.c uint-table.h url.c url.h urlapi-int.h urlapi.c urldata.h version.c ws.c ws.h
m4 .gitignore curl-amissl.m4 curl-apple-sectrust.m4 curl-compilers.m4 curl-confopts.m4 curl-functions.m4 curl-gnutls.m4 curl-mbedtls.m4 curl-openssl.m4 curl-override.m4 curl-reentrant.m4 curl-rustls.m4 curl-schannel.m4 curl-sysconfig.m4 curl-wolfssl.m4 xc-am-iface.m4 xc-cc-check.m4 xc-lt-iface.m4 xc-val-flgs.m4 zz40-xc-ovr.m4 zz50-xc-ovr.m4
projects
OS400
rpg-examples HEADERAPI HTTPPOST INMEMORY SIMPLE1 SIMPLE2 SMTPSRCMBR
.checksrc README.OS400 ccsidcurl.c ccsidcurl.h config400.default curl.cmd curl.inc.in curlcl.c curlmain.c initscript.sh make-docs.sh make-include.sh make-lib.sh make-src.sh make-tests.sh makefile.sh os400sys.c os400sys.h
Windows
tmpl .gitattributes README.txt curl-all.sln curl.sln curl.vcxproj curl.vcxproj.filters libcurl.sln libcurl.vcxproj libcurl.vcxproj.filters
.gitignore README.md generate.bat
vms Makefile.am backup_gnv_curl_src.com build_curl-config_script.com build_gnv_curl.com build_gnv_curl_pcsi_desc.com build_gnv_curl_pcsi_text.com build_gnv_curl_release_notes.com build_libcurl_pc.com build_vms.com clean_gnv_curl.com compare_curl_source.com config_h.com curl_crtl_init.c curl_gnv_build_steps.txt curl_release_note_start.txt curl_startup.com curlmsg.h curlmsg.msg curlmsg.sdl curlmsg_vms.h generate_config_vms_h_curl.com generate_vax_transfer.com gnv_conftest.c_first gnv_curl_configure.sh gnv_libcurl_symbols.opt gnv_link_curl.com macro32_exactcase.patch make_gnv_curl_install.sh make_pcsi_curl_kit_name.com pcsi_gnv_curl_file_list.txt pcsi_product_gnv_curl.com readme report_openssl_version.c setup_gnv_curl_build.com stage_curl_install.com vms_eco_level.h
Makefile.am README.md
scripts .checksrc CMakeLists.txt Makefile.am badwords badwords-all badwords.txt cd2cd cd2nroff cdall checksrc-all.pl checksrc.pl cmakelint.sh completion.pl contributors.sh contrithanks.sh coverage.sh delta dmaketgz extract-unit-protos firefox-db2pem.sh installcheck.sh maketgz managen mdlinkcheck mk-ca-bundle.pl mk-unity.pl nroff2cd perlcheck.sh pythonlint.sh randdisable release-notes.pl release-tools.sh schemetable.c singleuse.pl spacecheck.pl top-complexity top-length verify-release wcurl
src
toolx tool_time.c tool_time.h
.checksrc .gitignore CMakeLists.txt Makefile.am Makefile.inc config2setopts.c config2setopts.h curl.rc curlinfo.c mk-file-embed.pl mkhelp.pl slist_wc.c slist_wc.h terminal.c terminal.h tool_cb_dbg.c tool_cb_dbg.h tool_cb_hdr.c tool_cb_hdr.h tool_cb_prg.c tool_cb_prg.h tool_cb_rea.c tool_cb_rea.h tool_cb_see.c tool_cb_see.h tool_cb_soc.c tool_cb_soc.h tool_cb_wrt.c tool_cb_wrt.h tool_cfgable.c tool_cfgable.h tool_dirhie.c tool_dirhie.h tool_doswin.c tool_doswin.h tool_easysrc.c tool_easysrc.h tool_filetime.c tool_filetime.h tool_findfile.c tool_findfile.h tool_formparse.c tool_formparse.h tool_getparam.c tool_getparam.h tool_getpass.c tool_getpass.h tool_help.c tool_help.h tool_helpers.c tool_helpers.h tool_hugehelp.h tool_ipfs.c tool_ipfs.h tool_libinfo.c tool_libinfo.h tool_listhelp.c tool_main.c tool_main.h tool_msgs.c tool_msgs.h tool_operate.c tool_operate.h tool_operhlp.c tool_operhlp.h tool_paramhlp.c tool_paramhlp.h tool_parsecfg.c tool_parsecfg.h tool_progress.c tool_progress.h tool_sdecls.h tool_setopt.c tool_setopt.h tool_setup.h tool_ssls.c tool_ssls.h tool_stderr.c tool_stderr.h tool_urlglob.c tool_urlglob.h tool_util.c tool_util.h tool_version.h tool_vms.c tool_vms.h tool_writeout.c tool_writeout.h tool_writeout_json.c tool_writeout_json.h tool_xattr.c tool_xattr.h var.c var.h
tests
certs .gitignore CMakeLists.txt Makefile.am Makefile.inc genserv.pl srp-verifier-conf srp-verifier-db test-ca.cnf test-ca.prm test-client-cert.prm test-client-eku-only.prm test-localhost-san-first.prm test-localhost-san-last.prm test-localhost.nn.prm test-localhost.prm test-localhost0h.prm
cmake CMakeLists.txt test.c test.cpp test.sh
data .gitignore DISABLED Makefile.am data-xml1 data1400.c data1401.c data1402.c data1403.c data1404.c data1405.c data1406.c data1407.c data1420.c data1461.txt data1463.txt data1465.c data1481.c data1705-1.md data1705-2.md data1705-3.md data1705-4.md data1705-stdout.1 data1706-1.md data1706-2.md data1706-3.md data1706-4.md data1706-stdout.txt data320.html test1 test10 test100 test1000 test1001 test1002 test1003 test1004 test1005 test1006 test1007 test1008 test1009 test101 test1010 test1011 test1012 test1013 test1014 test1015 test1016 test1017 test1018 test1019 test102 test1020 test1021 test1022 test1023 test1024 test1025 test1026 test1027 test1028 test1029 test103 test1030 test1031 test1032 test1033 test1034 test1035 test1036 test1037 test1038 test1039 test104 test1040 test1041 test1042 test1043 test1044 test1045 test1046 test1047 test1048 test1049 test105 test1050 test1051 test1052 test1053 test1054 test1055 test1056 test1057 test1058 test1059 test106 test1060 test1061 test1062 test1063 test1064 test1065 test1066 test1067 test1068 test1069 test107 test1070 test1071 test1072 test1073 test1074 test1075 test1076 test1077 test1078 test1079 test108 test1080 test1081 test1082 test1083 test1084 test1085 test1086 test1087 test1088 test1089 test109 test1090 test1091 test1092 test1093 test1094 test1095 test1096 test1097 test1098 test1099 test11 test110 test1100 test1101 test1102 test1103 test1104 test1105 test1106 test1107 test1108 test1109 test111 test1110 test1111 test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 test112 test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 test1128 test1129 test113 test1130 test1131 test1132 test1133 test1134 test1135 test1136 test1137 test1138 test1139 test114 test1140 test1141 test1142 test1143 test1144 test1145 test1146 test1147 test1148 test1149 test115 test1150 test1151 test1152 test1153 test1154 test1155 test1156 test1157 test1158 test1159 test116 test1160 test1161 test1162 test1163 test1164 test1165 test1166 test1167 test1168 test1169 test117 test1170 test1171 test1172 test1173 test1174 test1175 test1176 test1177 test1178 test1179 test118 test1180 test1181 test1182 test1183 test1184 test1185 test1186 test1187 test1188 test1189 test119 test1190 test1191 test1192 test1193 test1194 test1195 test1196 test1197 test1198 test1199 test12 test120 test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 test1208 test1209 test121 test1210 test1211 test1212 test1213 test1214 test1215 test1216 test1217 test1218 test1219 test122 test1220 test1221 test1222 test1223 test1224 test1225 test1226 test1227 test1228 test1229 test123 test1230 test1231 test1232 test1233 test1234 test1235 test1236 test1237 test1238 test1239 test124 test1240 test1241 test1242 test1243 test1244 test1245 test1246 test1247 test1248 test1249 test125 test1250 test1251 test1252 test1253 test1254 test1255 test1256 test1257 test1258 test1259 test126 test1260 test1261 test1262 test1263 test1264 test1265 test1266 test1267 test1268 test1269 test127 test1270 test1271 test1272 test1273 test1274 test1275 test1276 test1277 test1278 test1279 test128 test1280 test1281 test1282 test1283 test1284 test1285 test1286 test1287 test1288 test1289 test129 test1290 test1291 test1292 test1293 test1294 test1295 test1296 test1297 test1298 test1299 test13 test130 test1300 test1301 test1302 test1303 test1304 test1305 test1306 test1307 test1308 test1309 test131 test1310 test1311 test1312 test1313 test1314 test1315 test1316 test1317 test1318 test1319 test132 test1320 test1321 test1322 test1323 test1324 test1325 test1326 test1327 test1328 test1329 test133 test1330 test1331 test1332 test1333 test1334 test1335 test1336 test1337 test1338 test1339 test134 test1340 test1341 test1342 test1343 test1344 test1345 test1346 test1347 test1348 test1349 test135 test1350 test1351 test1352 test1353 test1354 test1355 test1356 test1357 test1358 test1359 test136 test1360 test1361 test1362 test1363 test1364 test1365 test1366 test1367 test1368 test1369 test137 test1370 test1371 test1372 test1373 test1374 test1375 test1376 test1377 test1378 test1379 test138 test1380 test1381 test1382 test1383 test1384 test1385 test1386 test1387 test1388 test1389 test139 test1390 test1391 test1392 test1393 test1394 test1395 test1396 test1397 test1398 test1399 test14 test140 test1400 test1401 test1402 test1403 test1404 test1405 test1406 test1407 test1408 test1409 test141 test1410 test1411 test1412 test1413 test1414 test1415 test1416 test1417 test1418 test1419 test142 test1420 test1421 test1422 test1423 test1424 test1425 test1426 test1427 test1428 test1429 test143 test1430 test1431 test1432 test1433 test1434 test1435 test1436 test1437 test1438 test1439 test144 test1440 test1441 test1442 test1443 test1444 test1445 test1446 test1447 test1448 test1449 test145 test1450 test1451 test1452 test1453 test1454 test1455 test1456 test1457 test1458 test1459 test146 test1460 test1461 test1462 test1463 test1464 test1465 test1466 test1467 test1468 test1469 test147 test1470 test1471 test1472 test1473 test1474 test1475 test1476 test1477 test1478 test1479 test148 test1480 test1481 test1482 test1483 test1484 test1485 test1486 test1487 test1488 test1489 test149 test1490 test1491 test1492 test1493 test1494 test1495 test1496 test1497 test1498 test1499 test15 test150 test1500 test1501 test1502 test1503 test1504 test1505 test1506 test1507 test1508 test1509 test151 test1510 test1511 test1512 test1513 test1514 test1515 test1516 test1517 test1518 test1519 test152 test1520 test1521 test1522 test1523 test1524 test1525 test1526 test1527 test1528 test1529 test153 test1530 test1531 test1532 test1533 test1534 test1535 test1536 test1537 test1538 test1539 test154 test1540 test1541 test1542 test1543 test1544 test1545 test1546 test1547 test1548 test1549 test155 test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 test1558 test1559 test156 test1560 test1561 test1562 test1563 test1564 test1565 test1566 test1567 test1568 test1569 test157 test1570 test1571 test1572 test1573 test1574 test1575 test1576 test1577 test1578 test1579 test158 test1580 test1581 test1582 test1583 test1584 test1585 test1586 test1587 test1588 test1589 test159 test1590 test1591 test1592 test1593 test1594 test1595 test1596 test1597 test1598 test1599 test16 test160 test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 test1608 test1609 test161 test1610 test1611 test1612 test1613 test1614 test1615 test1616 test1617 test1618 test1619 test162 test1620 test1621 test1622 test1623 test1624 test1625 test1626 test1627 test1628 test1629 test163 test1630 test1631 test1632 test1633 test1634 test1635 test1636 test1637 test1638 test1639 test164 test1640 test1641 test1642 test1643 test1644 test1645 test165 test1650 test1651 test1652 test1653 test1654 test1655 test1656 test1657 test1658 test1659 test166 test1660 test1661 test1662 test1663 test1664 test1665 test1666 test1667 test1668 test1669 test167 test1670 test1671 test1672 test1673 test1674 test1675 test1676 test168 test1680 test1681 test1682 test1683 test1684 test1685 test169 test17 test170 test1700 test1701 test1702 test1703 test1704 test1705 test1706 test1707 test1708 test1709 test171 test1710 test1711 test1712 test1713 test1714 test1715 test172 test1720 test1721 test173 test174 test175 test176 test177 test178 test179 test18 test180 test1800 test1801 test1802 test181 test182 test183 test184 test1847 test1848 test1849 test185 test1850 test1851 test186 test187 test188 test189 test19 test190 test1900 test1901 test1902 test1903 test1904 test1905 test1906 test1907 test1908 test1909 test191 test1910 test1911 test1912 test1913 test1914 test1915 test1916 test1917 test1918 test1919 test192 test1920 test1921 test193 test1933 test1934 test1935 test1936 test1937 test1938 test1939 test194 test1940 test1941 test1942 test1943 test1944 test1945 test1946 test1947 test1948 test195 test1955 test1956 test1957 test1958 test1959 test196 test1960 test1964 test1965 test1966 test197 test1970 test1971 test1972 test1973 test1974 test1975 test1976 test1977 test1978 test1979 test198 test1980 test1981 test1982 test1983 test1984 test199 test2 test20 test200 test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 test2008 test2009 test201 test2010 test2011 test2012 test2013 test2014 test202 test2023 test2024 test2025 test2026 test2027 test2028 test2029 test203 test2030 test2031 test2032 test2033 test2034 test2035 test2037 test2038 test2039 test204 test2040 test2041 test2042 test2043 test2044 test2045 test2046 test2047 test2048 test2049 test205 test2050 test2051 test2052 test2053 test2054 test2055 test2056 test2057 test2058 test2059 test206 test2060 test2061 test2062 test2063 test2064 test2065 test2066 test2067 test2068 test2069 test207 test2070 test2071 test2072 test2073 test2074 test2075 test2076 test2077 test2078 test2079 test208 test2080 test2081 test2082 test2083 test2084 test2085 test2086 test2087 test2088 test2089 test209 test2090 test2091 test2092 test21 test210 test2100 test2101 test2102 test2103 test2104 test211 test212 test213 test214 test215 test216 test217 test218 test219 test22 test220 test2200 test2201 test2202 test2203 test2204 test2205 test2206 test2207 test221 test222 test223 test224 test225 test226 test227 test228 test229 test23 test230 test2300 test2301 test2302 test2303 test2304 test2306 test2307 test2308 test2309 test231 test232 test233 test234 test235 test236 test237 test238 test239 test24 test240 test2400 test2401 test2402 test2403 test2404 test2405 test2406 test2407 test2408 test2409 test241 test2410 test2411 test242 test243 test244 test245 test246 test247 test248 test249 test25 test250 test2500 test2501 test2502 test2503 test2504 test2505 test2506 test251 test252 test253 test254 test255 test256 test257 test258 test259 test26 test260 test2600 test2601 test2602 test2603 test2604 test2605 test261 test262 test263 test264 test265 test266 test267 test268 test269 test27 test270 test2700 test2701 test2702 test2703 test2704 test2705 test2706 test2707 test2708 test2709 test271 test2710 test2711 test2712 test2713 test2714 test2715 test2716 test2717 test2718 test2719 test272 test2720 test2721 test2722 test2723 test273 test274 test275 test276 test277 test278 test279 test28 test280 test281 test282 test283 test284 test285 test286 test287 test288 test289 test29 test290 test291 test292 test293 test294 test295 test296 test297 test298 test299 test3 test30 test300 test3000 test3001 test3002 test3003 test3004 test3005 test3006 test3007 test3008 test3009 test301 test3010 test3011 test3012 test3013 test3014 test3015 test3016 test3017 test3018 test3019 test302 test3020 test3021 test3022 test3023 test3024 test3025 test3026 test3027 test3028 test3029 test303 test3030 test3031 test3032 test3033 test3034 test3035 test3036 test304 test305 test306 test307 test308 test309 test31 test310 test3100 test3101 test3102 test3103 test3104 test3105 test3106 test311 test312 test313 test314 test315 test316 test317 test318 test319 test32 test320 test3200 test3201 test3202 test3203 test3204 test3205 test3206 test3207 test3208 test3209 test321 test3210 test3211 test3212 test3213 test3214 test3215 test3216 test3217 test3218 test3219 test322 test3220 test323 test324 test325 test326 test327 test328 test329 test33 test330 test3300 test3301 test3302 test331 test332 test333 test334 test335 test336 test337 test338 test339 test34 test340 test341 test342 test343 test344 test345 test346 test347 test348 test349 test35 test350 test351 test352 test353 test354 test355 test356 test357 test358 test359 test36 test360 test361 test362 test363 test364 test365 test366 test367 test368 test369 test37 test370 test371 test372 test373 test374 test375 test376 test378 test379 test38 test380 test381 test383 test384 test385 test386 test387 test388 test389 test39 test390 test391 test392 test393 test394 test395 test396 test397 test398 test399 test4 test40 test400 test4000 test4001 test401 test402 test403 test404 test405 test406 test407 test408 test409 test41 test410 test411 test412 test413 test414 test415 test416 test417 test418 test419 test42 test420 test421 test422 test423 test424 test425 test426 test427 test428 test429 test43 test430 test431 test432 test433 test434 test435 test436 test437 test438 test439 test44 test440 test441 test442 test443 test444 test445 test446 test447 test448 test449 test45 test450 test451 test452 test453 test454 test455 test456 test457 test458 test459 test46 test460 test461 test462 test463 test467 test468 test469 test47 test470 test471 test472 test473 test474 test475 test476 test477 test478 test479 test48 test480 test481 test482 test483 test484 test485 test486 test487 test488 test489 test49 test490 test491 test492 test493 test494 test495 test496 test497 test498 test499 test5 test50 test500 test501 test502 test503 test504 test505 test506 test507 test508 test509 test51 test510 test511 test512 test513 test514 test515 test516 test517 test518 test519 test52 test520 test521 test522 test523 test524 test525 test526 test527 test528 test529 test53 test530 test531 test532 test533 test534 test535 test536 test537 test538 test539 test54 test540 test541 test542 test543 test544 test545 test546 test547 test548 test549 test55 test550 test551 test552 test553 test554 test555 test556 test557 test558 test559 test56 test560 test561 test562 test563 test564 test565 test566 test567 test568 test569 test57 test570 test571 test572 test573 test574 test575 test576 test577 test578 test579 test58 test580 test581 test582 test583 test584 test585 test586 test587 test588 test589 test59 test590 test591 test592 test593 test594 test595 test596 test597 test598 test599 test6 test60 test600 test601 test602 test603 test604 test605 test606 test607 test608 test609 test61 test610 test611 test612 test613 test614 test615 test616 test617 test618 test619 test62 test620 test621 test622 test623 test624 test625 test626 test627 test628 test629 test63 test630 test631 test632 test633 test634 test635 test636 test637 test638 test639 test64 test640 test641 test642 test643 test644 test645 test646 test647 test648 test649 test65 test650 test651 test652 test653 test654 test655 test656 test658 test659 test66 test660 test661 test662 test663 test664 test665 test666 test667 test668 test669 test67 test670 test671 test672 test673 test674 test675 test676 test677 test678 test679 test68 test680 test681 test682 test683 test684 test685 test686 test687 test688 test689 test69 test690 test691 test692 test693 test694 test695 test696 test697 test698 test699 test7 test70 test700 test701 test702 test703 test704 test705 test706 test707 test708 test709 test71 test710 test711 test712 test713 test714 test715 test716 test717 test718 test719 test72 test720 test721 test722 test723 test724 test725 test726 test727 test728 test729 test73 test730 test731 test732 test733 test734 test735 test736 test737 test738 test739 test74 test740 test741 test742 test743 test744 test745 test746 test747 test748 test749 test75 test750 test751 test752 test753 test754 test755 test756 test757 test758 test759 test76 test760 test761 test762 test763 test764 test765 test766 test767 test768 test769 test77 test770 test771 test772 test773 test774 test775 test776 test777 test778 test779 test78 test780 test781 test782 test783 test784 test785 test786 test787 test788 test789 test79 test790 test791 test792 test793 test794 test795 test796 test797 test798 test799 test8 test80 test800 test801 test802 test803 test804 test805 test806 test807 test808 test809 test81 test810 test811 test812 test813 test814 test815 test816 test817 test818 test819 test82 test820 test821 test822 test823 test824 test825 test826 test827 test828 test829 test83 test830 test831 test832 test833 test834 test835 test836 test837 test838 test839 test84 test840 test841 test842 test843 test844 test845 test846 test847 test848 test849 test85 test850 test851 test852 test853 test854 test855 test856 test857 test858 test859 test86 test860 test861 test862 test863 test864 test865 test866 test867 test868 test869 test87 test870 test871 test872 test873 test874 test875 test876 test877 test878 test879 test88 test880 test881 test882 test883 test884 test885 test886 test887 test888 test889 test89 test890 test891 test892 test893 test894 test895 test896 test897 test898 test899 test9 test90 test900 test901 test902 test903 test904 test905 test906 test907 test908 test909 test91 test910 test911 test912 test913 test914 test915 test916 test917 test918 test919 test92 test920 test921 test922 test923 test924 test925 test926 test927 test928 test929 test93 test930 test931 test932 test933 test934 test935 test936 test937 test938 test939 test94 test940 test941 test942 test943 test944 test945 test946 test947 test948 test949 test95 test950 test951 test952 test953 test954 test955 test956 test957 test958 test959 test96 test960 test961 test962 test963 test964 test965 test966 test967 test968 test969 test97 test970 test971 test972 test973 test974 test975 test976 test977 test978 test979 test98 test980 test981 test982 test983 test984 test985 test986 test987 test988 test989 test99 test990 test991 test992 test993 test994 test995 test996 test997 test998 test999
http
testenv
mod_curltest .gitignore mod_curltest.c
__init__.py caddy.py certs.py client.py curl.py dante.py dnsd.py env.py httpd.py nghttpx.py ports.py sshd.py vsftpd.py ws_echo_server.py
.gitignore CMakeLists.txt Makefile.am config.ini.in conftest.py requirements.txt scorecard.py test_01_basic.py test_02_download.py test_03_goaway.py test_04_stuttered.py test_05_errors.py test_06_eyeballs.py test_07_upload.py test_08_caddy.py test_09_push.py test_10_proxy.py test_11_unix.py test_12_reuse.py test_13_proxy_auth.py test_14_auth.py test_15_tracing.py test_16_info.py test_17_ssl_use.py test_18_methods.py test_19_shutdown.py test_20_websockets.py test_21_resolve.py test_22_httpsrr.py test_30_vsftpd.py test_31_vsftpds.py test_32_ftps_vsftpd.py test_40_socks.py test_50_scp.py test_51_sftp.py
libtest .gitignore CMakeLists.txt Makefile.am Makefile.inc cli_ftp_upload.c cli_h2_pausing.c cli_h2_serverpush.c cli_h2_upgrade_extreme.c cli_hx_download.c cli_hx_upload.c cli_tls_session_reuse.c cli_upload_pausing.c cli_ws_data.c cli_ws_pingpong.c first.c first.h lib1156.c lib1301.c lib1308.c lib1485.c lib1500.c lib1501.c lib1502.c lib1506.c lib1507.c lib1508.c lib1509.c lib1510.c lib1511.c lib1512.c lib1513.c lib1514.c lib1515.c lib1517.c lib1518.c lib1520.c lib1522.c lib1523.c lib1525.c lib1526.c lib1527.c lib1528.c lib1529.c lib1530.c lib1531.c lib1532.c lib1533.c lib1534.c lib1535.c lib1536.c lib1537.c lib1538.c lib1540.c lib1541.c lib1542.c lib1545.c lib1549.c lib1550.c lib1551.c lib1552.c lib1553.c lib1554.c lib1555.c lib1556.c lib1557.c lib1558.c lib1559.c lib1560.c lib1564.c lib1565.c lib1567.c lib1568.c lib1569.c lib1571.c lib1576.c lib1582.c lib1587.c lib1588.c lib1589.c lib1591.c lib1592.c lib1593.c lib1594.c lib1597.c lib1598.c lib1599.c lib1662.c lib1900.c lib1901.c lib1902.c lib1903.c lib1905.c lib1906.c lib1907.c lib1908.c lib1910.c lib1911.c lib1912.c lib1913.c lib1915.c lib1916.c lib1918.c lib1919.c lib1920.c lib1921.c lib1933.c lib1934.c lib1935.c lib1936.c lib1937.c lib1938.c lib1939.c lib1940.c lib1945.c lib1947.c lib1948.c lib1955.c lib1956.c lib1957.c lib1958.c lib1959.c lib1960.c lib1964.c lib1965.c lib1970.c lib1971.c lib1972.c lib1973.c lib1974.c lib1975.c lib1977.c lib1978.c lib2023.c lib2032.c lib2082.c lib2301.c lib2302.c lib2304.c lib2306.c lib2308.c lib2309.c lib2402.c lib2404.c lib2405.c lib2502.c lib2504.c lib2505.c lib2506.c lib2700.c lib3010.c lib3025.c lib3026.c lib3027.c lib3033.c lib3034.c lib3100.c lib3101.c lib3102.c lib3103.c lib3104.c lib3105.c lib3207.c lib3208.c lib500.c lib501.c lib502.c lib503.c lib504.c lib505.c lib506.c lib507.c lib508.c lib509.c lib510.c lib511.c lib512.c lib513.c lib514.c lib515.c lib516.c lib517.c lib518.c lib519.c lib520.c lib521.c lib523.c lib524.c lib525.c lib526.c lib530.c lib533.c lib536.c lib537.c lib539.c lib540.c lib541.c lib542.c lib543.c lib544.c lib547.c lib549.c lib552.c lib553.c lib554.c lib555.c lib556.c lib557.c lib558.c lib559.c lib560.c lib562.c lib564.c lib566.c lib567.c lib568.c lib569.c lib570.c lib571.c lib572.c lib573.c lib574.c lib575.c lib576.c lib578.c lib579.c lib582.c lib583.c lib586.c lib589.c lib590.c lib591.c lib597.c lib598.c lib599.c lib643.c lib650.c lib651.c lib652.c lib653.c lib654.c lib655.c lib658.c lib659.c lib661.c lib666.c lib667.c lib668.c lib670.c lib674.c lib676.c lib677.c lib678.c lib694.c lib695.c lib751.c lib753.c lib757.c lib758.c lib766.c memptr.c mk-lib1521.pl test1013.pl test1022.pl test307.pl test610.pl test613.pl testtrace.c testtrace.h testutil.c testutil.h unitcheck.h
server .checksrc .gitignore CMakeLists.txt Makefile.am Makefile.inc dnsd.c first.c first.h getpart.c mqttd.c resolve.c rtspd.c sockfilt.c socksd.c sws.c tftpd.c util.c
tunit .gitignore CMakeLists.txt Makefile.am Makefile.inc README.md tool1394.c tool1604.c tool1621.c tool1622.c tool1623.c tool1720.c
unit .gitignore CMakeLists.txt Makefile.am Makefile.inc README.md unit1300.c unit1302.c unit1303.c unit1304.c unit1305.c unit1307.c unit1309.c unit1323.c unit1330.c unit1395.c unit1396.c unit1397.c unit1398.c unit1399.c unit1600.c unit1601.c unit1602.c unit1603.c unit1605.c unit1606.c unit1607.c unit1608.c unit1609.c unit1610.c unit1611.c unit1612.c unit1614.c unit1615.c unit1616.c unit1620.c unit1625.c unit1626.c unit1627.c unit1636.c unit1650.c unit1651.c unit1652.c unit1653.c unit1654.c unit1655.c unit1656.c unit1657.c unit1658.c unit1660.c unit1661.c unit1663.c unit1664.c unit1666.c unit1667.c unit1668.c unit1669.c unit1674.c unit1675.c unit1676.c unit1979.c unit1980.c unit2600.c unit2601.c unit2602.c unit2603.c unit2604.c unit2605.c unit3200.c unit3205.c unit3211.c unit3212.c unit3213.c unit3214.c unit3216.c unit3219.c unit3300.c unit3301.c unit3302.c
.gitignore CMakeLists.txt Makefile.am allversions.pm appveyor.pm azure.pm config.in configurehelp.pm.in devtest.pl dictserver.py directories.pm ech_combos.py ech_tests.sh ftpserver.pl getpart.pm globalconfig.pm http-server.pl http2-server.pl http3-server.pl memanalyze.pl memanalyzer.pm negtelnetserver.py nghttpx.conf pathhelp.pm processhelp.pm requirements.txt rtspserver.pl runner.pm runtests.pl secureserver.pl serverhelp.pm servers.pm smbserver.py sshhelp.pm sshserver.pl test1119.pl test1135.pl test1139.pl test1140.pl test1165.pl test1167.pl test1173.pl test1175.pl test1177.pl test1222.pl test1275.pl test1276.pl test1477.pl test1486.pl test1488.pl test1544.pl test1707.pl test745.pl test971.pl testcurl.pl testutil.pm tftpserver.pl util.py valgrind.pm valgrind.supp
.clang-tidy.yml .dir-locals.el .editorconfig .git-blame-ignore-revs .gitattributes .gitignore .mailmap CHANGES.md CMakeLists.txt COPYING Dockerfile GIT-INFO.md Makefile.am README README.md RELEASE-NOTES REUSE.toml SECURITY.md acinclude.m4 appveyor.sh appveyor.yml configure.ac curl-config.in libcurl.pc.in renovate.json
examples .env config.ini crypto_test.lua env_test.lua fs_example.lua http_server.lua https_test.lua ini_example.lua json.lua log.lua path_fs_example.lua process_example.lua request_download.lua request_test.lua run_all.lua sqlite_example.lua sqlite_http_template.lua stash_test.lua template_test.lua timer.lua websocket.lua
iniparser
.github
ISSUE_TEMPLATE config.yml
workflows disable-pull-requests.yml trigger-gitlab-ci.yml
cmake JoinPaths.cmake config.cmake.in pc.in
example iniexample.c iniwrite.c parse.c twisted-errors.ini twisted-genhuge.py twisted-ofkey.ini twisted-ofval.ini twisted.ini
src dictionary.c dictionary.h iniparser.c iniparser.h
test
ressources
bad_ini ends_well.ini twisted-errors.ini twisted-ofkey.ini twisted-ofval.ini
good_ini empty.ini spaced.ini spaced2.ini twisted.ini
gruezi.ini old.ini quotes.ini utf8.ini
CMakeLists.txt test_dictionary.c test_iniparser.c unity-config.yml unity_config.h
.cmake-format.py .gitignore .gitlab-ci.yml .gitmessage .travis.yml AUTHORS CMakeLists.txt FAQ-en.md FAQ-zhcn.md INSTALL LICENSE README.md compile_commands.json
jinjac
example CMakeLists.txt example.c
jinjac_test_app CMakeLists.txt jinjac_test_app.c
libjinjac
include jinjac.h
src CMakeLists.txt ast.c ast.h block_statement.c block_statement.h buffer.c buffer.h buildin.c buildin.h common.h convert.c convert.h flex_decl.h jfunction.c jfunction.h jinja_expression.l jinja_expression.y jinjac_parse.c jinjac_parse.h jinjac_stream.c jinjac_stream.h jlist.c jlist.h jobject.c jobject.h parameter.c parameter.h str_obj.c str_obj.h trace.c trace.h
CMakeLists.txt
test .gitignore CMakeLists.txt autotest.rb test_01.expected test_01.jinja test_01b.expected test_01b.jinja test_01c.expected test_01c.jinja test_01d.expected test_01d.jinja test_02.expected test_02.jinja test_03.expected test_03.jinja test_04.expected test_04.jinja test_05.expected test_05.jinja test_06.expected test_06.jinja test_07.expected test_07.jinja test_08.expected test_08.jinja test_08b.expected test_08b.jinja test_09.expected test_09.jinja test_10.expected test_10.jinja test_11.expected test_11.jinja test_12.expected test_12.jinja test_13.expected test_13.jinja test_14.expected test_14.jinja test_15.expected test_15.jinja test_16.expected test_16.jinja test_17.expected test_17.jinja test_18.expected test_18.jinja test_18b.expected test_18b.jinja test_18c.expected test_18c.jinja test_19.expected test_19.jinja test_19b.expected test_19b.jinja test_19c.expected test_19c.jinja test_19d.expected test_19d.jinja test_19e.expected test_19e.jinja test_19f.expected test_19f.jinja test_20.expected test_20.jinja test_21.expected test_21.jinja test_22.expected test_22.jinja test_22a.expected test_22a.jinja test_22b.expected test_22b.jinja test_23.expected test_23.jinja test_24.expected test_24.jinja
.gitignore CMakeLists.txt LICENSE.txt README.md build_coverage.sh build_debug.sh build_release.sh cppcheck_analysis.sh
libev Changes LICENSE Makefile Makefile.am Makefile.in README Symbols.ev Symbols.event aclocal.m4 autogen.sh compile config.guess config.h config.h.in config.status config.sub configure configure.ac depcomp ev++.h ev.3 ev.c ev.h ev.pod ev_epoll.c ev_kqueue.c ev_poll.c ev_port.c ev_select.c ev_vars.h ev_win32.c ev_wrap.h event.c event.h install-sh libev.m4 libtool ltmain.sh missing mkinstalldirs stamp-h1
luajit
doc
img contact.png
bluequad-print.css bluequad.css contact.html ext_buffer.html ext_c_api.html ext_ffi.html ext_ffi_api.html ext_ffi_semantics.html ext_ffi_tutorial.html ext_jit.html ext_profiler.html extensions.html install.html luajit.html running.html
dynasm dasm_arm.h dasm_arm.lua dasm_arm64.h dasm_arm64.lua dasm_mips.h dasm_mips.lua dasm_mips64.lua dasm_ppc.h dasm_ppc.lua dasm_proto.h dasm_x64.lua dasm_x86.h dasm_x86.lua dynasm.lua
etc luajit.1 luajit.pc
src
host .gitignore README buildvm.c buildvm.h buildvm_asm.c buildvm_fold.c buildvm_lib.c buildvm_libbc.h buildvm_peobj.c genlibbc.lua genminilua.lua genversion.lua minilua.c
jit .gitignore bc.lua bcsave.lua dis_arm.lua dis_arm64.lua dis_arm64be.lua dis_mips.lua dis_mips64.lua dis_mips64el.lua dis_mips64r6.lua dis_mips64r6el.lua dis_mipsel.lua dis_ppc.lua dis_x64.lua dis_x86.lua dump.lua p.lua v.lua zone.lua
.gitignore Makefile Makefile.dep lauxlib.h lib_aux.c lib_base.c lib_bit.c lib_buffer.c lib_debug.c lib_ffi.c lib_init.c lib_io.c lib_jit.c lib_math.c lib_os.c lib_package.c lib_string.c lib_table.c lj_alloc.c lj_alloc.h lj_api.c lj_arch.h lj_asm.c lj_asm.h lj_asm_arm.h lj_asm_arm64.h lj_asm_mips.h lj_asm_ppc.h lj_asm_x86.h lj_assert.c lj_bc.c lj_bc.h lj_bcdump.h lj_bcread.c lj_bcwrite.c lj_buf.c lj_buf.h lj_carith.c lj_carith.h lj_ccall.c lj_ccall.h lj_ccallback.c lj_ccallback.h lj_cconv.c lj_cconv.h lj_cdata.c lj_cdata.h lj_char.c lj_char.h lj_clib.c lj_clib.h lj_cparse.c lj_cparse.h lj_crecord.c lj_crecord.h lj_ctype.c lj_ctype.h lj_debug.c lj_debug.h lj_def.h lj_dispatch.c lj_dispatch.h lj_emit_arm.h lj_emit_arm64.h lj_emit_mips.h lj_emit_ppc.h lj_emit_x86.h lj_err.c lj_err.h lj_errmsg.h lj_ff.h lj_ffrecord.c lj_ffrecord.h lj_frame.h lj_func.c lj_func.h lj_gc.c lj_gc.h lj_gdbjit.c lj_gdbjit.h lj_ir.c lj_ir.h lj_ircall.h lj_iropt.h lj_jit.h lj_lex.c lj_lex.h lj_lib.c lj_lib.h lj_load.c lj_mcode.c lj_mcode.h lj_meta.c lj_meta.h lj_obj.c lj_obj.h lj_opt_dce.c lj_opt_fold.c lj_opt_loop.c lj_opt_mem.c lj_opt_narrow.c lj_opt_sink.c lj_opt_split.c lj_parse.c lj_parse.h lj_prng.c lj_prng.h lj_profile.c lj_profile.h lj_record.c lj_record.h lj_serialize.c lj_serialize.h lj_snap.c lj_snap.h lj_state.c lj_state.h lj_str.c lj_str.h lj_strfmt.c lj_strfmt.h lj_strfmt_num.c lj_strscan.c lj_strscan.h lj_tab.c lj_tab.h lj_target.h lj_target_arm.h lj_target_arm64.h lj_target_mips.h lj_target_ppc.h lj_target_x86.h lj_trace.c lj_trace.h lj_traceerr.h lj_udata.c lj_udata.h lj_vm.h lj_vmevent.c lj_vmevent.h lj_vmmath.c ljamalg.c lua.h lua.hpp luaconf.h luajit.c luajit_rolling.h lualib.h msvcbuild.bat nxbuild.bat ps4build.bat ps5build.bat psvitabuild.bat vm_arm.dasc vm_arm64.dasc vm_mips.dasc vm_mips64.dasc vm_ppc.dasc vm_x64.dasc vm_x86.dasc xb1build.bat xedkbuild.bat
.gitattributes .gitignore .relver COPYRIGHT Makefile README
sqlite shell.c sqlite3.c sqlite3.h sqlite3ext.h
wolfssl
.github
ISSUE_TEMPLATE bug_report.yaml other.yaml
actions
install-apt-deps action.yml
scripts
zephyr-4.x external_libc.conf zephyr-test.sh
openssl-ech.sh tls-anvil-test.sh
workflows
disabled haproxy.yml hitch.yml hostap.yml
hostap-files
configs
07c9f183ea744ac04585fb6dd10220c75a5e2e74 hostapd.config tests wpa_supplicant.config
b607d2723e927a3446d89aed813f1aa6068186bb hostapd.config tests wpa_supplicant.config
hostap_2_10 extra.patch hostapd.config tests wpa_supplicant.config
Makefile README dbus-wpa_supplicant.conf
ada.yml arduino.yml async-examples.yml async.yml atecc608-sim.yml bind.yml cmake-autoconf.yml cmake.yml codespell.yml coverity-scan-fixes.yml cryptocb-only.yml curl.yml cyrus-sasl.yml disable-pk-algs.yml docker-Espressif.yml docker-OpenWrt.yml emnet-nonblock.yml fil-c.yml freertos-mem-track.yml gencertbuf.yml grpc.yml haproxy.yml hostap-vm.yml intelasm-c-fallback.yml ipmitool.yml jwt-cpp.yml krb5.yml libspdm.yml libssh2.yml libvncserver.yml linuxkm.yml macos-apple-native-cert-validation.yml mbedtls.sh mbedtls.yml membrowse-comment.yml membrowse-onboard.yml membrowse-report.yml memcached.sh memcached.yml mono.yml mosquitto.yml msmtp.yml msys2.yml multi-arch.yml multi-compiler.yml net-snmp.yml nginx.yml no-malloc.yml no-tls.yml nss.sh nss.yml ntp.yml ocsp.yml openldap.yml openssh.yml openssl-ech.yml opensslcoexist.yml openvpn.yml os-check.yml packaging.yml pam-ipmi.yml pq-all.yml pr-commit-check.yml psk.yml puf.yml python.yml rng-tools.yml rust-wrapper.yml se050-sim.yml smallStackSize.yml socat.yml softhsm.yml sssd.yml stm32-sim.yml stsafe-a120-sim.yml stunnel.yml symbol-prefixes.yml threadx.yml tls-anvil.yml trackmemory.yml watcomc.yml win-csharp-test.yml wolfCrypt-Wconversion.yml wolfboot-integration.yml wolfsm.yml xcode.yml zephyr-4.x.yml zephyr.yml
PULL_REQUEST_TEMPLATE.md SECURITY.md membrowse-targets.json
Docker
OpenWrt Dockerfile README.md runTests.sh
packaging
debian Dockerfile
fedora Dockerfile
wolfCLU Dockerfile README.md
yocto Dockerfile buildAndPush.sh
Dockerfile Dockerfile.cross-compiler README.md buildAndPush.sh include.am run.sh
IDE
ARDUINO
sketches
wolfssl_client README.md
wolfssl_server README.md
wolfssl_version README.md
README.md
Arduino_README_prepend.md README.md include.am keywords.txt library.properties.template wolfssl-arduino.cpp wolfssl-arduino.sh wolfssl.h
AURIX Cpu0_Main.c README.md include.am user_settings.h wolf_main.c
Android Android.bp README.md include.am user_settings.h
CRYPTOCELL README.md include.am main.c user_settings.h
CSBENCH include.am user_settings.h
ECLIPSE
DEOS
deos_wolfssl .options
README.md deos_malloc.c include.am tls_wolfssl.c tls_wolfssl.h user_settings.h
MICRIUM README.md client_wolfssl.c client_wolfssl.h include.am server_wolfssl.c server_wolfssl.h user_settings.h wolfsslRunTests.c
RTTHREAD README.md include.am user_settings.h wolfssl_test.c
SIFIVE README.md include.am
Espressif
ESP-IDF
examples
template
VisualGDB wolfssl_template_IDF_v5.1_ESP32.vgdbproj
components
wolfssl
include user_settings.h
CMakeLists.txt Kconfig README.md component.mk
main
include main.h
CMakeLists.txt Kconfig.projbuild component.mk main.c
CMakeLists.txt Makefile README.md partitions_singleapp_large.csv sdkconfig.defaults sdkconfig.defaults.esp8266
wolfssl_benchmark
VisualGDB wolfssl_benchmark_IDF_v4.4_ESP32.sln wolfssl_benchmark_IDF_v4.4_ESP32.vgdbproj wolfssl_benchmark_IDF_v5_ESP32.sln wolfssl_benchmark_IDF_v5_ESP32.vgdbproj wolfssl_benchmark_IDF_v5_ESP32C3.sln wolfssl_benchmark_IDF_v5_ESP32C3.vgdbproj wolfssl_benchmark_IDF_v5_ESP32S3.sln wolfssl_benchmark_IDF_v5_ESP32S3.vgdbproj
components
wolfssl
include user_settings.h
CMakeLists.txt Kconfig README.md component.mk
main
include main.h
CMakeLists.txt Kconfig.projbuild component.mk main.c
CMakeLists.txt Makefile README.md partitions_singleapp_large.csv sdkconfig.defaults sdkconfig.defaults.esp8266
wolfssl_client
VisualGDB README.md wolfssl_client_IDF_v5_ESP32.sln wolfssl_client_IDF_v5_ESP32.vgdbproj
components
wolfssl
include user_settings.h
CMakeLists.txt Kconfig README.md component.mk
main
include client-tls.h main.h time_helper.h wifi_connect.h
CMakeLists.txt Kconfig.projbuild client-tls.c component.mk main.c time_helper.c wifi_connect.c
CMakeLists.txt Makefile README.md README_server_sm.md partitions_singleapp_large.csv sdkconfig.defaults sdkconfig.defaults.esp32c2 sdkconfig.defaults.esp8266 wolfssl_client_ESP8266.vgdbproj
wolfssl_server
VisualGDB README.md wolfssl_server_IDF_v5_ESP32.sln wolfssl_server_IDF_v5_ESP32.vgdbproj
components
wolfssl
include user_settings.h
CMakeLists.txt Kconfig README.md component.mk
main
include main.h server-tls.h time_helper.h wifi_connect.h
CMakeLists.txt Kconfig.projbuild component.mk main.c server-tls.c time_helper.c wifi_connect.c
CMakeLists.txt Makefile README.md README_server_sm.md partitions_singleapp_large.csv sdkconfig.defaults sdkconfig.defaults.esp32c2 sdkconfig.defaults.esp8266 wolfssl_server_ESP8266.vgdbproj
wolfssl_test
VisualGDB wolfssl_test-IDF_v5_ESP32.sln wolfssl_test-IDF_v5_ESP32.vgdbproj wolfssl_test-IDF_v5_ESP32C3.sln wolfssl_test-IDF_v5_ESP32C3.vgdbproj wolfssl_test-IDF_v5_ESP32C6.sln wolfssl_test-IDF_v5_ESP32C6.vgdbproj wolfssl_test_IDF_v5_ESP32S3.sln wolfssl_test_IDF_v5_ESP32S3.vgdbproj
components
wolfssl
include user_settings.h
CMakeLists.txt Kconfig README.md component.mk
main
include main.h
CMakeLists.txt Kconfig.projbuild component.mk main.c
CMakeLists.txt Makefile README.md partitions_singleapp_large.csv sdkconfig.defaults sdkconfig.defaults.esp32 sdkconfig.defaults.esp32c3 sdkconfig.defaults.esp32c6 sdkconfig.defaults.esp32h2 sdkconfig.defaults.esp32s2 sdkconfig.defaults.esp32s3 sdkconfig.defaults.esp8266 testAll.sh testMonitor.sh wolfssl_test_ESP8266.sln wolfssl_test_ESP8266.vgdbproj
wolfssl_test_idf
VisualGDB VisualGDB_wolfssl_test_idf.sln VisualGDB_wolfssl_test_idf.vgdbproj
main CMakeLists.txt Kconfig.projbuild component.mk main.c main_wip.c.ex time_helper.c time_helper.h
CMakeLists.txt Kconfig.projbuild README.md component.mk sdkconfig.defaults
README.md
libs CMakeLists.txt README.md component.mk tigard.cfg
test CMakeLists.txt README.md component.mk test_wolfssl.c
README.md README_32se.md UPDATE.md compileAllExamples.sh dummy_config_h dummy_test_paths.h setup.sh setup_win.bat user_settings.h
README.md include.am
GCC-ARM
Header user_settings.h
Source armtarget.c benchmark_main.c test_main.c tls_client.c tls_server.c wolf_main.c
Makefile Makefile.bench Makefile.client Makefile.common Makefile.server Makefile.static Makefile.test README.md include.am linker.ld linker_fips.ld
Gaisler-BCC README.md include.am
HEXAGON
DSP Makefile wolfssl_dsp.idl
Makefile README.md build.sh ecc-verify-benchmark.c ecc-verify.c include.am user_settings.h
HEXIWEAR
wolfSSL_HW .cwGeneratedFileSetLog user_settings.h
IAR-EWARM
Projects
benchmark benchmark-main.c current_time.c wolfCrypt-benchmark.ewd wolfCrypt-benchmark.ewp
common minimum-startup.c wolfssl.icf
lib wolfSSL-Lib.ewd wolfSSL-Lib.ewp
test test-main.c wolfCrypt-test.ewd wolfCrypt-test.ewp
user_settings.h wolfssl.eww
embOS
SAMV71_XULT
embOS_SAMV71_XULT_Linker_Script samv71q21_wolfssl.icf
embOS_SAMV71_XULT_user_settings user_settings.h user_settings_simple_example.h user_settings_verbose_example.h
embOS_wolfcrypt_benchmark_SAMV71_XULT
Application runBenchmarks.c
README_wolfcrypt_benchmark wolfcrypt_benchmark.ewd wolfcrypt_benchmark.ewp
embOS_wolfcrypt_lib_SAMV71_XULT README_wolfcrypt_lib wolfcrypt_lib.ewd wolfcrypt_lib.ewp
embOS_wolfcrypt_test_SAMV71_XULT
Application runWolfcryptTests.c
README_wolfcrypt_test wolfcrypt_test.ewd wolfcrypt_test.ewp
README_SAMV71
custom_port
custom_port_Linker_Script samv71q21_wolfssl.icf
custom_port_user_settings user_settings.h
wolfcrypt_benchmark_custom_port
Application runBenchmarks.c
wolfcrypt_test_custom_port
Application runWolfcryptTests.c
README_custom_port
extract_trial_here README_extract_trial_here
README
.gitignore README
IAR-MSP430 Makefile README.md include.am main.c user_settings.h
INTIME-RTOS Makefile README.md include.am libwolfssl.c libwolfssl.vcxproj user_settings.h wolfExamples.c wolfExamples.h wolfExamples.sln wolfExamples.vcxproj wolfssl-lib.sln wolfssl-lib.vcxproj
Infineon README.md include.am user_settings.h
KDS
config user_settings.h
include.am
LINUX-SGX README.md build.sh clean.sh include.am sgx_t_static.mk
LPCXPRESSO
lib_wolfssl lpc_18xx_port.c user_settings.h
wolf_example
src lpc_18xx_startup.c wolfssl_example.c
readme.txt
README.md
M68K
benchmark Makefile main.cpp
testwolfcrypt Makefile main.cpp
Makefile README.md include.am user_settings.h
MCUEXPRESSO
RT1170 fsl_caam_c.patch fsl_caam_h.patch user_settings.h
benchmark
source run_benchmark.c
wolfssl liblinks.xml
README.md include.am user_settings.h wolfcrypt_test.c
MDK-ARM
LPC43xx time-LCP43xx.c
MDK-ARM
wolfSSL Retarget.c cert_data.c cert_data.h config-BARE-METAL.h config-FS.h config-RTX-TCP-FS.h config-WOLFLIB.h main.c shell.c time-CortexM3-4.c time-dummy.c wolfssl_MDK_ARM.c wolfssl_MDK_ARM.h
STM32F2xx_StdPeriph_Lib time-STM32F2xx.c
MDK5-ARM
Conf user_settings.h
Inc wolfssl_MDK_ARM.h
Projects
CryptBenchmark Abstract.txt CryptBenchmark.sct CryptBenchmark.uvoptx CryptBenchmark.uvprojx main.c
CryptTest Abstract.txt CryptTest.sct CryptTest.uvoptx CryptTest.uvprojx main.c
EchoClient Abstract.txt EchoClient.uvoptx EchoClient.uvprojx main.c wolfssl-link.sct
EchoServer Abstract.txt EchoServer.uvoptx EchoServer.uvprojx main.c wolfssl-link.sct
SimpleClient Abstract.txt SimpleClient.uvoptx SimpleClient.uvprojx main.c wolfssl-link.sct
SimpleServer Abstract.txt SimpleServer.uvoptx SimpleServer.uvprojx main.c wolfssl-link.sct
wolfSSL-Full Abstract.txt main.c shell.c time-CortexM3-4.c wolfsslFull.uvoptx wolfsslFull.uvprojx
wolfSSL-Lib Abstract.txt wolfSSL-Lib.uvoptx wolfSSL-Lib.uvprojx
Src ssl-dummy.c
README.md include.am
MPLABX16
wolfcrypt_test.X
nbproject
private configurations.xml private.xml
configurations.xml include.am project.xml
Makefile
wolfssl.X
nbproject configurations.xml include.am project.xml
Makefile
README.md include.am main.c user_settings.h
MQX Makefile README-jp.md README.md client-tls.c include.am server-tls.c user_config.h user_settings.h
MSVS-2019-AZSPHERE
client client.c client.h
server server.c server.h
shared util.h
wolfssl_new_azsphere
HardwareDefinitions
avnet_mt3620_sk
inc
hw template_appliance.h
template_appliance.json
mt3620_rdb
inc
hw template_appliance.h
template_appliance.json
seeed_mt3620_mdb
inc
hw template_appliance.h
template_appliance.json
.gitignore CMakeLists.txt CMakeSettings.json app_manifest.json applibs_versions.h launch.vs.json main.c
README.md include.am user_settings.h
MYSQL CMakeLists_wolfCrypt.txt CMakeLists_wolfSSL.txt do.sh
NDS README.md
NETOS Makefile.wolfcrypt.inc README.md include.am user_settings.h user_settings.h-cert2425 user_settings.h-cert3389 wolfssl_netos_custom.c
OPENSTM32 README.md
PlatformIO
examples
wolfssl_benchmark
include README main.h
lib README
src CMakeLists.txt main.c
test README
CMakeLists.txt README.md platformio.ini sdkconfig.defaults wolfssl_benchmark.code-workspace
wolfssl_test
include README main.h
lib README
src CMakeLists.txt main.c
test README
CMakeLists.txt README.md platformio.ini sdkconfig.defaults wolfssl_test.code-workspace
README.md wolfssl_platformio.code-workspace
README.md include.am
QNX
CAAM-DRIVER Makefile
example-client Makefile client-tls.c
example-cmac Makefile cmac-test.c
example-server Makefile server-tls.c
testwolfcrypt Makefile
wolfssl Makefile user_settings.h
README.md include.am
RISCV
SIFIVE-HIFIVE1 Makefile README.md include.am main.c user_settings.h
SIFIVE-UNLEASHED README.md include.am
include.am
ROWLEY-CROSSWORKS-ARM Kinetis_FlashPlacement.xml README.md arm_startup.c benchmark_main.c hw.h include.am kinetis_hw.c retarget.c test_main.c user_settings.h wolfssl.hzp wolfssl_ltc.hzp
Renesas
cs+
Projects
common strings.h unistd.h user_settings.h wolfssl_dummy.c
t4_demo README_en.txt README_jp.txt t4_demo.mtpj wolf_client.c wolf_demo.h wolf_main.c wolf_server.c
test test.mtpj test_main.c
wolfssl_lib wolfssl_lib.mtpj
README include.am
e2studio
DK-S7G2
benchmark-template
src app_entry.c
example_server-template
src app_entry.c
wolfcrypttest-template
src app_entry.c
wolfssl-template-project configuration.xml
README.md include.am user_settings.h
Projects
common strings.h unistd.h user_settings.h wolfssl_dummy.c
test
src key_data.c key_data.h test_main.c wolf_client.c wolf_server.c wolfssl_demo.h
tools generate_rsa_keypair.sh genhexbuf.pl rsa_pss_sign.sh
wolfssl
src .gitkeep
wolfcrypt
src .gitkeep
README include.am
RA6M3
benchmark-wolfcrypt
common .gitkeep
script .gitkeep
src wolfssl_thread_entry.c
client-wolfssl
common
src .gitkeep
script .gitkeep
src wolfssl_thread_entry.c
wolfssl_thread_entry.h
common
ra6m3g README.md
src freertos_tcp_port.c
user_settings.h util.h
server-wolfssl
common
src .gitkeep
script .gitkeep
src wolfssl_thread_entry.c
wolfssl_thread_entry.h
test-wolfcrypt
common .gitkeep
script .gitkeep
src wolfssl_thread_entry.c
wolfssl
src .gitkeep
wolfcrypt .gitkeep
README.md README_APRA6M_en.md README_APRA6M_jp.md include.am
RA6M3G README.md
RA6M4
common user_settings.h wolfssl_demo.h
test
key_data key_data.h key_data_sce.c
src
SEGGER_RTT myprint.c
common .gitignore
test_main.c wolf_client.c wolfssl_sce_unit_test.c
test_RA6M4Debug.launch
tools
example_keys generate_SignedCA.sh rsa_private.pem rsa_public.pem
README.md
README.md include.am
RX65N
GR-ROSE
common strings.h unistd.h user_settings.h wolfssl_dummy.c
smc smc.scfg
test
src key_data.c key_data.h test_main.c wolf_client.c wolf_server.c wolfssl_demo.h
test.rcpc test_HardwareDebug.launch
tools
example_keys generate_SignedCA.sh rsa_private.pem rsa_public.pem
README.md
wolfssl wolfssl.rcpc
README_EN.md README_JP.md include.am
RSK
resource section.esi
wolfssl wolfssl.rcpc
wolfssl_demo key_data.c key_data.h user_settings.h wolfssl_demo.c wolfssl_demo.h
InstructionManualForExample_RSK+RX65N-2MB_EN.pdf InstructionManualForExample_RSK+RX65N-2MB_JP.pdf README_EN.md README_JP.md include.am
RX72N
EnvisionKit
Simple
common sectioninfo.esi wolfssl_dummy.c
test
src
client simple_tcp_client.c simple_tls_tsip_client.c
server simple_tcp_server.c simple_tls_server.c
test_main.c wolfssl_simple_demo.h
test.rcpc test.scfg test_HardwareDebug.launch
wolfssl wolfssl.rcpc
README_EN.md README_JP.md
resource section.esi
tools
example_keys generate_SignedCA.sh rsa_private.pem rsa_public.pem
README.md
wolfssl wolfssl.rcpc
wolfssl_demo key_data.c key_data.h user_settings.h wolfssl_demo.c wolfssl_demo.h wolfssl_tsip_unit_test.c
InstructionManualForExample_RX72N_EnvisonKit_EN.pdf InstructionManualForExample_RX72N_EnvisonKit_JP.pdf README_EN.md README_JP.md include.am
RZN2L
common user_settings.h wolfssl_demo.h
test
src
serial_io app_print.c
test wolf_client.c wolf_server.c wolfssl_rsip_unit_test.c
wolfCrypt .gitignore
wolfSSL .gitignore
local_system_init.c rzn2l_tst_thread_entry.c wolfssl_dummy.c
README.md include.am
SK-S7G2
common user_settings.h
wolfssl_lib configuration.xml
.gitignore README.md include.am
STARCORE README.txt include.am starcore_test.c user_settings.h
STM32Cube README.md STM32_Benchmarks.md default_conf.ftl include.am main.c wolfssl_example.c wolfssl_example.h
SimplicityStudio README.md include.am test_wolf.c user_settings.h
TRUESTUDIO
wolfssl user_settings.h
README include.am
VS-ARM README.md include.am user_settings.h wolfssl.sln wolfssl.vcxproj
VS-AZURE-SPHERE
client app_manifest.json client.c client.h client.vcxproj
server app_manifest.json server.c server.h server.vcxproj
shared util.h
wolfcrypt_test app_manifest.json wolfcrypt_test.vcxproj
README.md include.am user_settings.h wolfssl.sln wolfssl.vcxproj
VisualDSP include.am user_settings.h wolf_tasks.c
WICED-STUDIO README include.am user_settings.h
WIN README.txt include.am test.vcxproj user_settings.h user_settings_dtls.h wolfssl-fips.sln wolfssl-fips.vcxproj
WIN-SGX ReadMe.txt include.am wolfSSL_SGX.edl wolfSSL_SGX.sln wolfSSL_SGX.vcxproj
WIN-SRTP-KDF-140-3 README.txt include.am resource.h test.vcxproj user_settings.h wolfssl-fips.rc wolfssl-fips.sln wolfssl-fips.vcxproj
WIN10 README.txt include.am resource.h test.vcxproj user_settings.h wolfssl-fips.rc wolfssl-fips.sln wolfssl-fips.vcxproj
WINCE README.md include.am user_settings.h user_settings.h.140-2-deprecated
WORKBENCH README.md include.am
XCODE
Benchmark
wolfBench
Assets.xcassets
AppIcon.appiconset Contents.json
Base.lproj LaunchScreen.storyboard Main.storyboard
AppDelegate.h AppDelegate.m Info.plist ViewController.h ViewController.m main.m
wolfBench.xcodeproj project.pbxproj
include.am
wolfssl-FIPS.xcodeproj project.pbxproj
wolfssl.xcodeproj project.pbxproj
wolfssl_testsuite.xcodeproj project.pbxproj
README.md build-for-i386.sh include.am user_settings.h
XCODE-FIPSv2
macOS-C++
Intel user_settings.h
M1 user_settings.h
include.am user_settings.h
XCODE-FIPSv5 README include.am user_settings.h
XCODE-FIPSv6 README include.am user_settings.h
XilinxSDK
2018_2 lscript.ld
2019_2
wolfCrypt_example
src lscript.ld
wolfCrypt_example_system wolfCrypt_example_system.sprj
2022_1
wolfCrypt_FreeRTOS_example wolfCrypt_FreeRTOS_example.prj
wolfCrypt_FreeRTOS_example_system wolfCrypt_FreeRTOS_example_system.sprj
wolfCrypt_example wolfCrypt_example.prj
wolfCrypt_example_system wolfCrypt_example_system.sprj
.gitignore
README.md bench.sh combine.sh eclipse_formatter_profile.xml graph.sh include.am user_settings.h wolfssl_example.c
apple-universal
wolfssl-multiplatform
wolfssl-multiplatform
Assets.xcassets
AccentColor.colorset Contents.json
AppIcon.appiconset Contents.json
Contents.json
ContentView.swift simple_client_example.c simple_client_example.h wolfssl-multiplatform-Bridging-Header.h wolfssl_multiplatform.entitlements wolfssl_multiplatformApp.swift wolfssl_test_driver.c wolfssl_test_driver.h
wolfssl-multiplatform.xcodeproj project.pbxproj
.gitignore README.md build-wolfssl-framework.sh include.am
iotsafe Makefile README.md ca-cert.c devices.c devices.h include.am main.c memory-tls.c startup.c target.ld user_settings.h
iotsafe-raspberrypi Makefile README.md client-tls13.c include.am main.c
mynewt README.md apps.wolfcrypttest.pkg.yml crypto.wolfssl.pkg.yml crypto.wolfssl.syscfg.yml include.am setup.sh
zephyr README.md include.am
include.am
RTOS
nuttx
wolfssl .gitignore Kconfig Make.defs Makefile README.md setup-wolfssl.sh user_settings.h
include.am
bsdkm Makefile README.md bsdkm_wc_port.h include.am wolfkmod.c wolfkmod_aes.c x86_vecreg.c
certs
1024 ca-cert.der ca-cert.pem ca-key.der ca-key.pem client-cert.der client-cert.pem client-key.der client-key.pem client-keyPub.der dh1024.der dh1024.pem dsa-pub-1024.pem dsa1024.der dsa1024.pem include.am rsa1024.der server-cert.der server-cert.pem server-key.der server-key.pem
3072 client-cert.der client-cert.pem client-key.der client-key.pem client-keyPub.der include.am
4096 client-cert.der client-cert.pem client-key.der client-key.pem client-keyPub.der include.am
acert
rsa_pss acert.pem acert_ietf.pem acert_ietf_pubkey.pem acert_pubkey.pem
acert.pem acert_ietf.pem acert_ietf_pubkey.pem acert_pubkey.pem include.am
aia ca-issuers-cert.pem multi-aia-cert.pem overflow-aia-cert.pem
crl
extra-crls ca-int-cert-revoked.pem claim-root.pem crl_critical_entry.pem crlnum_57oct.pem crlnum_64oct.pem general-server-crl.pem large_crlnum.pem large_crlnum2.pem
hash_der 0fdb2da4.r0
hash_pem 0fdb2da4.r0
bad_time_fmt.pem ca-int-ecc.pem ca-int.pem ca-int2-ecc.pem ca-int2.pem caEcc384Crl.pem caEccCrl.der caEccCrl.pem cliCrl.pem client-int-ecc.pem client-int.pem crl.der crl.pem crl.revoked crl2.der crl2.pem crl_reason.pem crl_rsapss.pem eccCliCRL.pem eccSrvCRL.pem gencrls.sh include.am server-goodaltCrl.pem server-goodaltwildCrl.pem server-goodcnCrl.pem server-goodcnwildCrl.pem server-int-ecc.pem server-int.pem wolfssl.cnf
dilithium bench_dilithium_level2_key.der bench_dilithium_level3_key.der bench_dilithium_level5_key.der include.am
ecc bp256r1-key.der bp256r1-key.pem ca-secp256k1-cert.pem ca-secp256k1-key.pem client-bp256r1-cert.der client-bp256r1-cert.pem client-secp256k1-cert.der client-secp256k1-cert.pem genecc.sh include.am secp256k1-key.der secp256k1-key.pem secp256k1-param.pem secp256k1-privkey.der secp256k1-privkey.pem server-bp256r1-cert.der server-bp256r1-cert.pem server-secp256k1-cert.der server-secp256k1-cert.pem server2-secp256k1-cert.der server2-secp256k1-cert.pem wolfssl.cnf wolfssl_384.cnf
ed25519 ca-ed25519-key.der ca-ed25519-key.pem ca-ed25519-priv.der ca-ed25519-priv.pem ca-ed25519.der ca-ed25519.pem client-ed25519-key.der client-ed25519-key.pem client-ed25519-priv.der client-ed25519-priv.pem client-ed25519.der client-ed25519.pem eddsa-ed25519.der eddsa-ed25519.pem gen-ed25519-certs.sh gen-ed25519-keys.sh gen-ed25519.sh include.am root-ed25519-key.der root-ed25519-key.pem root-ed25519-priv.der root-ed25519-priv.pem root-ed25519.der root-ed25519.pem server-ed25519-cert.pem server-ed25519-key.der server-ed25519-key.pem server-ed25519-priv.der server-ed25519-priv.pem server-ed25519.der server-ed25519.pem
ed448 ca-ed448-key.der ca-ed448-key.pem ca-ed448-priv.der ca-ed448-priv.pem ca-ed448.der ca-ed448.pem client-ed448-key.der client-ed448-key.pem client-ed448-priv.der client-ed448-priv.pem client-ed448.der client-ed448.pem gen-ed448-certs.sh gen-ed448-keys.sh include.am root-ed448-key.der root-ed448-key.pem root-ed448-priv.der root-ed448-priv.pem root-ed448.der root-ed448.pem server-ed448-cert.pem server-ed448-key.der server-ed448-key.pem server-ed448-priv.der server-ed448-priv.pem server-ed448.der server-ed448.pem
external DigiCertGlobalRootCA.pem README.txt ca-digicert-ev.pem ca-globalsign-root.pem ca-google-root.pem ca_collection.pem include.am
falcon bench_falcon_level1_key.der bench_falcon_level5_key.der include.am
intermediate
ca_false_intermediate gentestcert.sh int_ca.key server.key test_ca.key test_ca.pem test_int_not_cacert.pem test_sign_bynoca_srv.pem wolfssl_base.conf wolfssl_srv.conf
ca-ecc-bad-aki.der ca-ecc-bad-aki.pem ca-int-cert.der ca-int-cert.pem ca-int-ecc-cert.der ca-int-ecc-cert.pem ca-int-ecc-key.der ca-int-ecc-key.pem ca-int-key.der ca-int-key.pem ca-int2-cert.der ca-int2-cert.pem ca-int2-ecc-cert.der ca-int2-ecc-cert.pem ca-int2-ecc-key.der ca-int2-ecc-key.pem ca-int2-key.der ca-int2-key.pem client-chain-alt-ecc.pem client-chain-alt.pem client-chain-ecc.der client-chain-ecc.pem client-chain.der client-chain.pem client-int-cert.der client-int-cert.pem client-int-ecc-cert.der client-int-ecc-cert.pem genintcerts.sh include.am server-chain-alt-ecc.pem server-chain-alt.pem server-chain-ecc.der server-chain-ecc.pem server-chain-short.pem server-chain.der server-chain.pem server-int-cert.der server-int-cert.pem server-int-ecc-cert.der server-int-ecc-cert.pem
lms bc_hss_L2_H5_W8_root.der bc_hss_L3_H5_W4_root.der bc_lms_chain_ca.der bc_lms_chain_leaf.der bc_lms_native_bc_root.der bc_lms_sha256_h10_w8_root.der bc_lms_sha256_h5_w4_root.der include.am
mldsa README.txt include.am mldsa44-cert.der mldsa44-cert.pem mldsa44-key.pem mldsa44_bare-priv.der mldsa44_bare-seed.der mldsa44_oqskeypair.der mldsa44_priv-only.der mldsa44_pub-spki.der mldsa44_seed-only.der mldsa44_seed-priv.der mldsa65-cert.der mldsa65-cert.pem mldsa65-key.pem mldsa65_bare-priv.der mldsa65_bare-seed.der mldsa65_oqskeypair.der mldsa65_priv-only.der mldsa65_pub-spki.der mldsa65_seed-only.der mldsa65_seed-priv.der mldsa87-cert.der mldsa87-cert.pem mldsa87-key.pem mldsa87_bare-priv.der mldsa87_bare-seed.der mldsa87_oqskeypair.der mldsa87_priv-only.der mldsa87_pub-spki.der mldsa87_seed-only.der mldsa87_seed-priv.der
ocsp imposter-root-ca-cert.der imposter-root-ca-cert.pem imposter-root-ca-key.der imposter-root-ca-key.pem include.am index-ca-and-intermediate-cas.txt index-ca-and-intermediate-cas.txt.attr index-intermediate1-ca-issued-certs.txt index-intermediate1-ca-issued-certs.txt.attr index-intermediate2-ca-issued-certs.txt index-intermediate2-ca-issued-certs.txt.attr index-intermediate3-ca-issued-certs.txt index-intermediate3-ca-issued-certs.txt.attr intermediate1-ca-cert.der intermediate1-ca-cert.pem intermediate1-ca-key.der intermediate1-ca-key.pem intermediate2-ca-cert.der intermediate2-ca-cert.pem intermediate2-ca-key.der intermediate2-ca-key.pem intermediate3-ca-cert.der intermediate3-ca-cert.pem intermediate3-ca-key.der intermediate3-ca-key.pem ocsp-responder-cert.der ocsp-responder-cert.pem ocsp-responder-key.der ocsp-responder-key.pem openssl.cnf renewcerts-for-test.sh renewcerts.sh root-ca-cert.der root-ca-cert.pem root-ca-crl.pem root-ca-key.der root-ca-key.pem server1-cert.der server1-cert.pem server1-chain-noroot.pem server1-key.der server1-key.pem server2-cert.der server2-cert.pem server2-key.der server2-key.pem server3-cert.der server3-cert.pem server3-key.der server3-key.pem server4-cert.der server4-cert.pem server4-key.der server4-key.pem server5-cert.der server5-cert.pem server5-key.der server5-key.pem test-leaf-response.der test-multi-response.der test-response-nointern.der test-response-rsapss.der test-response.der
p521 ca-p521-key.der ca-p521-key.pem ca-p521-priv.der ca-p521-priv.pem ca-p521.der ca-p521.pem client-p521-key.der client-p521-key.pem client-p521-priv.der client-p521-priv.pem client-p521.der client-p521.pem gen-p521-certs.sh gen-p521-keys.sh include.am root-p521-key.der root-p521-key.pem root-p521-priv.der root-p521-priv.pem root-p521.der root-p521.pem server-p521-cert.pem server-p521-key.der server-p521-key.pem server-p521-priv.der server-p521-priv.pem server-p521.der server-p521.pem
renewcerts wolfssl.cnf
rpk client-cert-rpk.der client-ecc-cert-rpk.der include.am server-cert-rpk.der server-ecc-cert-rpk.der
rsapss ca-3072-rsapss-key.der ca-3072-rsapss-key.pem ca-3072-rsapss-priv.der ca-3072-rsapss-priv.pem ca-3072-rsapss.der ca-3072-rsapss.pem ca-rsapss-key.der ca-rsapss-key.pem ca-rsapss-priv.der ca-rsapss-priv.pem ca-rsapss.der ca-rsapss.pem client-3072-rsapss-key.der client-3072-rsapss-key.pem client-3072-rsapss-priv.der client-3072-rsapss-priv.pem client-3072-rsapss.der client-3072-rsapss.pem client-rsapss-key.der client-rsapss-key.pem client-rsapss-priv.der client-rsapss-priv.pem client-rsapss.der client-rsapss.pem gen-rsapss-keys.sh include.am renew-rsapss-certs.sh root-3072-rsapss-key.der root-3072-rsapss-key.pem root-3072-rsapss-priv.der root-3072-rsapss-priv.pem root-3072-rsapss.der root-3072-rsapss.pem root-rsapss-key.der root-rsapss-key.pem root-rsapss-priv.der root-rsapss-priv.pem root-rsapss.der root-rsapss.pem server-3072-rsapss-cert.pem server-3072-rsapss-key.der server-3072-rsapss-key.pem server-3072-rsapss-priv.der server-3072-rsapss-priv.pem server-3072-rsapss.der server-3072-rsapss.pem server-mix-rsapss-cert.pem server-rsapss-cert.pem server-rsapss-key.der server-rsapss-key.pem server-rsapss-priv.der server-rsapss-priv.pem server-rsapss.der server-rsapss.pem
sia timestamping-sia-cert.pem
slhdsa bench_slhdsa_sha2_128f_key.der bench_slhdsa_sha2_128s_key.der bench_slhdsa_sha2_192f_key.der bench_slhdsa_sha2_192s_key.der bench_slhdsa_sha2_256f_key.der bench_slhdsa_sha2_256s_key.der bench_slhdsa_shake128f_key.der bench_slhdsa_shake128s_key.der bench_slhdsa_shake192f_key.der bench_slhdsa_shake192s_key.der bench_slhdsa_shake256f_key.der bench_slhdsa_shake256s_key.der client-mldsa44-priv.pem client-mldsa44-sha2.der client-mldsa44-sha2.pem client-mldsa44-shake.der client-mldsa44-shake.pem gen-slhdsa-mldsa-certs.sh include.am root-slhdsa-sha2-128s-priv.der root-slhdsa-sha2-128s-priv.pem root-slhdsa-sha2-128s.der root-slhdsa-sha2-128s.pem root-slhdsa-shake-128s-priv.der root-slhdsa-shake-128s-priv.pem root-slhdsa-shake-128s.der root-slhdsa-shake-128s.pem server-mldsa44-priv.pem server-mldsa44-sha2.der server-mldsa44-sha2.pem server-mldsa44-shake.der server-mldsa44-shake.pem
sm2 ca-sm2-key.der ca-sm2-key.pem ca-sm2-priv.der ca-sm2-priv.pem ca-sm2.der ca-sm2.pem client-sm2-key.der client-sm2-key.pem client-sm2-priv.der client-sm2-priv.pem client-sm2.der client-sm2.pem fix_sm2_spki.py gen-sm2-certs.sh gen-sm2-keys.sh include.am root-sm2-key.der root-sm2-key.pem root-sm2-priv.der root-sm2-priv.pem root-sm2.der root-sm2.pem self-sm2-cert.pem self-sm2-key.pem self-sm2-priv.pem server-sm2-cert.der server-sm2-cert.pem server-sm2-key.der server-sm2-key.pem server-sm2-priv.der server-sm2-priv.pem server-sm2.der server-sm2.pem
statickeys dh-ffdhe2048-params.pem dh-ffdhe2048-pub.der dh-ffdhe2048-pub.pem dh-ffdhe2048.der dh-ffdhe2048.pem ecc-secp256r1.der ecc-secp256r1.pem gen-static.sh include.am x25519-pub.der x25519-pub.pem x25519.der x25519.pem
test
expired expired-ca.der expired-ca.pem expired-cert.der expired-cert.pem
catalog.txt cert-bad-neg-int.der cert-bad-oid.der cert-bad-utf8.der cert-ext-ia.cfg cert-ext-ia.der cert-ext-ia.pem cert-ext-joi.cfg cert-ext-joi.der cert-ext-joi.pem cert-ext-mnc.der cert-ext-multiple.cfg cert-ext-multiple.der cert-ext-multiple.pem cert-ext-nc-combined.der cert-ext-nc-combined.pem cert-ext-nc.cfg cert-ext-nc.der cert-ext-nc.pem cert-ext-ncdns.der cert-ext-ncdns.pem cert-ext-ncip.der cert-ext-ncip.pem cert-ext-ncmixed.der cert-ext-ncmulti.der cert-ext-ncmulti.pem cert-ext-ncrid.der cert-ext-ncrid.pem cert-ext-nct.cfg cert-ext-nct.der cert-ext-nct.pem cert-ext-ndir-exc.cfg cert-ext-ndir-exc.der cert-ext-ndir-exc.pem cert-ext-ndir.cfg cert-ext-ndir.der cert-ext-ndir.pem cert-ext-ns.der cert-over-max-altnames.cfg cert-over-max-altnames.der cert-over-max-altnames.pem cert-over-max-nc.cfg cert-over-max-nc.der cert-over-max-nc.pem client-ecc-cert-ski.hex cn-ip-literal.der cn-ip-wildcard.der crit-cert.pem crit-key.pem dh1024.der dh1024.pem dh512.der dh512.pem digsigku.pem encrypteddata.msg gen-badsig.sh gen-ext-certs.sh gen-testcerts.sh include.am kari-keyid-cms.msg ktri-keyid-cms.msg ossl-trusted-cert.pem server-badaltname.der server-badaltname.pem server-badaltnull.der server-badaltnull.pem server-badcn.der server-badcn.pem server-badcnnull.der server-badcnnull.pem server-cert-ecc-badsig.der server-cert-ecc-badsig.pem server-cert-rsa-badsig.der server-cert-rsa-badsig.pem server-duplicate-policy.pem server-garbage.der server-garbage.pem server-goodalt.der server-goodalt.pem server-goodaltwild.der server-goodaltwild.pem server-goodcn.der server-goodcn.pem server-goodcnwild.der server-goodcnwild.pem server-localhost.der server-localhost.pem smime-test-canon.p7s smime-test-multipart-badsig.p7s smime-test-multipart.p7s smime-test.p7s
test-pathlen assemble-chains.sh chainA-ICA1-key.pem chainA-ICA1-pathlen0.pem chainA-assembled.pem chainA-entity-key.pem chainA-entity.pem chainB-ICA1-key.pem chainB-ICA1-pathlen0.pem chainB-ICA2-key.pem chainB-ICA2-pathlen1.pem chainB-assembled.pem chainB-entity-key.pem chainB-entity.pem chainC-ICA1-key.pem chainC-ICA1-pathlen1.pem chainC-assembled.pem chainC-entity-key.pem chainC-entity.pem chainD-ICA1-key.pem chainD-ICA1-pathlen127.pem chainD-assembled.pem chainD-entity-key.pem chainD-entity.pem chainE-ICA1-key.pem chainE-ICA1-pathlen128.pem chainE-assembled.pem chainE-entity-key.pem chainE-entity.pem chainF-ICA1-key.pem chainF-ICA1-pathlen1.pem chainF-ICA2-key.pem chainF-ICA2-pathlen0.pem chainF-assembled.pem chainF-entity-key.pem chainF-entity.pem chainG-ICA1-key.pem chainG-ICA1-pathlen0.pem chainG-ICA2-key.pem chainG-ICA2-pathlen1.pem chainG-ICA3-key.pem chainG-ICA3-pathlen99.pem chainG-ICA4-key.pem chainG-ICA4-pathlen5.pem chainG-ICA5-key.pem chainG-ICA5-pathlen20.pem chainG-ICA6-key.pem chainG-ICA6-pathlen10.pem chainG-ICA7-key.pem chainG-ICA7-pathlen100.pem chainG-assembled.pem chainG-entity-key.pem chainG-entity.pem chainH-ICA1-key.pem chainH-ICA1-pathlen0.pem chainH-ICA2-key.pem chainH-ICA2-pathlen2.pem chainH-ICA3-key.pem chainH-ICA3-pathlen2.pem chainH-ICA4-key.pem chainH-ICA4-pathlen2.pem chainH-assembled.pem chainH-entity-key.pem chainH-entity.pem chainI-ICA1-key.pem chainI-ICA1-no_pathlen.pem chainI-ICA2-key.pem chainI-ICA2-no_pathlen.pem chainI-ICA3-key.pem chainI-ICA3-pathlen2.pem chainI-assembled.pem chainI-entity-key.pem chainI-entity.pem chainJ-ICA1-key.pem chainJ-ICA1-no_pathlen.pem chainJ-ICA2-key.pem chainJ-ICA2-no_pathlen.pem chainJ-ICA3-key.pem chainJ-ICA3-no_pathlen.pem chainJ-ICA4-key.pem chainJ-ICA4-pathlen2.pem chainJ-assembled.pem chainJ-entity-key.pem chainJ-entity.pem include.am refreshkeys.sh
test-serial0 ee_normal.pem ee_serial0.pem generate_certs.sh include.am intermediate_serial0.pem root_serial0.pem root_serial0_key.pem selfsigned_nonca_serial0.pem
xmss bc_xmss_chain_ca.der bc_xmss_chain_leaf.der bc_xmss_sha2_10_256_root.der bc_xmss_sha2_16_256_root.der bc_xmssmt_sha2_20_2_256_root.der bc_xmssmt_sha2_20_4_256_root.der bc_xmssmt_sha2_40_8_256_root.der include.am
ca-cert-chain.der ca-cert.der ca-cert.pem ca-ecc-cert.der ca-ecc-cert.pem ca-ecc-key.der ca-ecc-key.pem ca-ecc384-cert.der ca-ecc384-cert.pem ca-ecc384-key.der ca-ecc384-key.pem ca-key-pkcs8-attribute.der ca-key.der ca-key.pem check_dates.sh client-absolute-urn.pem client-ca-cert.der client-ca-cert.pem client-ca.pem client-cert-ext.der client-cert-ext.pem client-cert.der client-cert.pem client-crl-dist.der client-crl-dist.pem client-ecc-ca-cert.der client-ecc-ca-cert.pem client-ecc-cert.der client-ecc-cert.pem client-ecc384-cert.der client-ecc384-cert.pem client-ecc384-key.der client-ecc384-key.pem client-key.der client-key.pem client-keyEnc.pem client-keyPub.der client-keyPub.pem client-relative-uri.pem client-uri-cert.pem csr.attr.der csr.dsa.der csr.dsa.pem csr.ext.der csr.signed.der dh-priv-2048.der dh-priv-2048.pem dh-pub-2048.der dh-pub-2048.pem dh-pubkey-2048.der dh2048.der dh2048.pem dh3072.der dh3072.pem dh4096.der dh4096.pem dsa-pubkey-2048.der dsa2048.der dsa2048.pem dsa3072.der dsaparams.der dsaparams.pem ecc-client-key.der ecc-client-key.pem ecc-client-keyPub.der ecc-client-keyPub.pem ecc-key-comp.pem ecc-keyPkcs8.der ecc-keyPkcs8.pem ecc-keyPkcs8Enc.der ecc-keyPkcs8Enc.pem ecc-keyPub.der ecc-keyPub.pem ecc-params.der ecc-params.pem ecc-privOnlyCert.pem ecc-privOnlyKey.pem ecc-privkey.der ecc-privkey.pem ecc-privkeyPkcs8.der ecc-privkeyPkcs8.pem ecc-rsa-server.p12 empty-issuer-cert.pem entity-no-ca-bool-cert.pem entity-no-ca-bool-key.pem fpki-cert.der fpki-certpol-cert.der gen_revoked.sh include.am renewcerts.sh rid-cert.der rsa-pub-2048.pem rsa2048.der rsa3072.der server-cert-chain.der server-cert.der server-cert.pem server-ecc-comp.der server-ecc-comp.pem server-ecc-rsa.der server-ecc-rsa.pem server-ecc-self.der server-ecc-self.pem server-ecc.der server-ecc.pem server-ecc384-cert.der server-ecc384-cert.pem server-ecc384-key.der server-ecc384-key.pem server-key.der server-key.pem server-keyEnc.pem server-keyPkcs8.der server-keyPkcs8.pem server-keyPkcs8Enc.der server-keyPkcs8Enc.pem server-keyPkcs8Enc12.pem server-keyPkcs8Enc2.pem server-keyPub.der server-keyPub.pem server-revoked-cert.pem server-revoked-key.pem taoCert.txt test-ber-exp02-05-2022.p7b test-degenerate.p7b test-multiple-recipients.p7b test-servercert-rc2.p12 test-servercert.p12 test-stream-dec.p7b test-stream-sign.p7b wolfssl-website-ca.pem x942dh2048.der x942dh2048.pem
cmake
consumer CMakeLists.txt README.md main.c
modules FindARIA.cmake FindOQS.cmake
Config.cmake.in README.md config.in functions.cmake include.am options.h.in wolfssl-config-version.cmake.in wolfssl-targets.cmake.in
debian
source format
changelog.in control.in copyright include.am libwolfssl-dev.install libwolfssl.install rules.in
doc
dox_comments
header_files aes.h arc4.h ascon.h asn.h asn_public.h blake2.h bn.h camellia.h chacha.h chacha20_poly1305.h cmac.h coding.h compress.h cryptocb.h curve25519.h curve448.h des3.h dh.h doxygen_groups.h doxygen_pages.h dsa.h ecc.h eccsi.h ed25519.h ed448.h error-crypt.h evp.h hash.h hmac.h iotsafe.h kdf.h logging.h md2.h md4.h md5.h memory.h ocsp.h pem.h pkcs11.h pkcs7.h poly1305.h psa.h puf.h pwdbased.h quic.h random.h ripemd.h rsa.h sakke.h sha.h sha256.h sha3.h sha512.h signature.h siphash.h srp.h ssl.h tfm.h types.h wc_encrypt.h wc_port.h wc_she.h wc_slhdsa.h wolfio.h
header_files-ja aes.h arc4.h ascon.h asn.h asn_public.h blake2.h bn.h camellia.h chacha.h chacha20_poly1305.h cmac.h coding.h compress.h cryptocb.h curve25519.h curve448.h des3.h dh.h doxygen_groups.h doxygen_pages.h dsa.h ecc.h eccsi.h ed25519.h ed448.h error-crypt.h evp.h hash.h hmac.h iotsafe.h kdf.h logging.h md2.h md4.h md5.h memory.h ocsp.h pem.h pkcs11.h pkcs7.h poly1305.h psa.h pwdbased.h quic.h random.h ripemd.h rsa.h sakke.h sha.h sha256.h sha3.h sha512.h signature.h siphash.h srp.h ssl.h tfm.h types.h wc_encrypt.h wc_port.h wolfio.h
formats
html
html_changes
search search.css search.js
customdoxygen.css doxygen.css menu.js menudata.js tabs.css
Doxyfile footer.html header.html mainpage.dox
pdf Doxyfile header.tex
images wolfssl_logo.png
QUIC.md README.txt README_DOXYGEN check_api.sh generate_documentation.sh include.am
examples
asn1 asn1.c dumpasn1.cfg gen_oid_names.rb include.am oid_names.h
async Makefile README.md async_client.c async_server.c async_tls.c async_tls.h include.am user_settings.h
benchmark include.am tls_bench.c tls_bench.h
client client.c client.h client.sln client.vcproj client.vcxproj include.am
configs README.md include.am user_settings_EBSnet.h user_settings_all.h user_settings_arduino.h user_settings_baremetal.h user_settings_ca.h user_settings_curve25519nonblock.h user_settings_dtls13.h user_settings_eccnonblock.h user_settings_espressif.h user_settings_fipsv2.h user_settings_fipsv5.h user_settings_min_ecc.h user_settings_openssl_compat.h user_settings_pkcs7.h user_settings_platformio.h user_settings_pq.h user_settings_rsa_only.h user_settings_stm32.h user_settings_template.h user_settings_tls12.h user_settings_tls13.h user_settings_wolfboot_keytools.h user_settings_wolfssh.h user_settings_wolftpm.h
crypto_policies
default wolfssl.txt
future wolfssl.txt
legacy wolfssl.txt
echoclient echoclient.c echoclient.h echoclient.sln echoclient.vcproj echoclient.vcxproj include.am quit
echoserver echoserver.c echoserver.h echoserver.sln echoserver.vcproj echoserver.vcxproj include.am
ocsp_responder include.am ocsp_responder.c ocsp_responder.h
pem include.am pem.c
sctp include.am sctp-client-dtls.c sctp-client.c sctp-server-dtls.c sctp-server.c
server include.am server.c server.h server.sln server.vcproj server.vcxproj
README.md include.am
linuxkm
patches
5.10.17 WOLFSSL_LINUXKM_HAVE_GET_RANDOM_CALLBACKS-5v10v17.patch
5.10.236 WOLFSSL_LINUXKM_HAVE_GET_RANDOM_CALLBACKS-5v10v236.patch
5.14.0-570.58.1.el9_6 WOLFSSL_LINUXKM_HAVE_GET_RANDOM_CALLBACKS-5v14-570v58v1-el9_6.patch
5.15 WOLFSSL_LINUXKM_HAVE_GET_RANDOM_CALLBACKS-5v15.patch
5.17 WOLFSSL_LINUXKM_HAVE_GET_RANDOM_CALLBACKS-5v17.patch
5.17-ubuntu-jammy-tegra WOLFSSL_LINUXKM_HAVE_GET_RANDOM_CALLBACKS-5v17-ubuntu-jammy-tegra.patch
6.1.73 WOLFSSL_LINUXKM_HAVE_GET_RANDOM_CALLBACKS-6v1v73.patch
6.12 WOLFSSL_LINUXKM_HAVE_GET_RANDOM_CALLBACKS-6v12.patch
6.15 WOLFSSL_LINUXKM_HAVE_GET_RANDOM_CALLBACKS-6v15.patch
7.0 WOLFSSL_LINUXKM_HAVE_GET_RANDOM_CALLBACKS-7v0.patch
regen-patches.sh
Kbuild Makefile README.md get_thread_size.c include.am linuxkm-fips-hash-wrapper.sh linuxkm-fips-hash.c linuxkm_memory.c linuxkm_memory.h linuxkm_wc_port.h lkcapi_aes_glue.c lkcapi_dh_glue.c lkcapi_ecdh_glue.c lkcapi_ecdsa_glue.c lkcapi_glue.c lkcapi_rsa_glue.c lkcapi_sha_glue.c module_exports.c.template module_hooks.c pie_redirect_table.c wolfcrypt.lds x86_vector_register_glue.c
m4 ax_add_am_macro.m4 ax_am_jobserver.m4 ax_am_macros.m4 ax_append_compile_flags.m4 ax_append_flag.m4 ax_append_link_flags.m4 ax_append_to_file.m4 ax_atomic.m4 ax_bsdkm.m4 ax_check_compile_flag.m4 ax_check_link_flag.m4 ax_compiler_version.m4 ax_count_cpus.m4 ax_create_generic_config.m4 ax_debug.m4 ax_file_escapes.m4 ax_harden_compiler_flags.m4 ax_linuxkm.m4 ax_print_to_file.m4 ax_pthread.m4 ax_require_defined.m4 ax_tls.m4 ax_vcs_checkout.m4 hexversion.m4 lib_socket_nsl.m4 visibility.m4
mcapi
wolfcrypt_mcapi.X
nbproject configurations.xml include.am project.xml
Makefile
wolfcrypt_test.X
nbproject configurations.xml include.am project.xml
Makefile
wolfssl.X
nbproject configurations.xml include.am project.xml
Makefile
zlib.X
nbproject configurations.xml include.am project.xml
Makefile
PIC32MZ-serial.h README crypto.c crypto.h include.am mcapi_test.c user_settings.h
mplabx
wolfcrypt_benchmark.X
nbproject configurations.xml include.am project.xml
Makefile
wolfcrypt_test.X
nbproject configurations.xml include.am project.xml
Makefile
wolfssl.X
nbproject configurations.xml include.am project.xml
Makefile
PIC32MZ-serial.h README benchmark_main.c include.am test_main.c user_settings.h
mqx
util_lib
Sources include.am util.c util.h
wolfcrypt_benchmark
Debugger K70FN1M0.mem init_kinetis.tcl mass_erase_kinetis.tcl
Sources include.am main.c main.h
ReferencedRSESystems.xml wolfcrypt_benchmark_twrk70f120m_Int_Flash_DDRData_Debug_PnE_U-MultiLink.launch wolfcrypt_benchmark_twrk70f120m_Int_Flash_DDRData_Release_PnE_U-MultiLink.launch wolfcrypt_benchmark_twrk70f120m_Int_Flash_SramData_Debug_JTrace.jlink wolfcrypt_benchmark_twrk70f120m_Int_Flash_SramData_Debug_JTrace.launch wolfcrypt_benchmark_twrk70f120m_Int_Flash_SramData_Debug_PnE_U-MultiLink.launch wolfcrypt_benchmark_twrk70f120m_Int_Flash_SramData_Release_PnE_U-MultiLink.launch
wolfcrypt_test
Debugger K70FN1M0.mem init_kinetis.tcl mass_erase_kinetis.tcl
Sources include.am main.c main.h
ReferencedRSESystems.xml wolfcrypt_test_twrk70f120m_Int_Flash_DDRData_Debug_PnE_U-MultiLink.launch wolfcrypt_test_twrk70f120m_Int_Flash_DDRData_Release_PnE_U-MultiLink.launch wolfcrypt_test_twrk70f120m_Int_Flash_SramData_Debug_JTrace.jlink wolfcrypt_test_twrk70f120m_Int_Flash_SramData_Debug_JTrace.launch wolfcrypt_test_twrk70f120m_Int_Flash_SramData_Debug_PnE_U-MultiLink.launch wolfcrypt_test_twrk70f120m_Int_Flash_SramData_Release_PnE_U-MultiLink.launch
wolfssl include.am
wolfssl_client
Debugger K70FN1M0.mem init_kinetis.tcl mass_erase_kinetis.tcl
Sources include.am main.c main.h
ReferencedRSESystems.xml wolfssl_client_twrk70f120m_Int_Flash_DDRData_Debug_PnE_U-MultiLink.launch wolfssl_client_twrk70f120m_Int_Flash_DDRData_Release_PnE_U-MultiLink.launch wolfssl_client_twrk70f120m_Int_Flash_SramData_Debug_JTrace.jlink wolfssl_client_twrk70f120m_Int_Flash_SramData_Debug_JTrace.launch wolfssl_client_twrk70f120m_Int_Flash_SramData_Debug_PnE_U-MultiLink.launch wolfssl_client_twrk70f120m_Int_Flash_SramData_Release_PnE_U-MultiLink.launch
README
rpm include.am spec.in
scripts
bench bench_functions.sh
aria-cmake-build-test.sh asn1_oid_sum.pl benchmark.test benchmark_compare.sh cleanup_testfiles.sh crl-gen-openssl.test crl-revoked.test dertoc.pl dtls.test dtlscid.test external.test google.test include.am makedistsmall.sh memtest.sh ocsp-responder-openssl-interop.test ocsp-stapling-with-ca-as-responder.test ocsp-stapling-with-wolfssl-responder.test ocsp-stapling.test ocsp-stapling2.test ocsp-stapling_tls13multi.test ocsp.test openssl.test openssl_srtp.test pem.test ping.test pkcallbacks.test psk.test resume.test rsapss.test sniffer-gen.sh sniffer-ipv6.pcap sniffer-static-rsa.pcap sniffer-testsuite.test sniffer-tls12-keylog.out sniffer-tls12-keylog.pcap sniffer-tls12-keylog.sslkeylog sniffer-tls13-dh-resume.pcap sniffer-tls13-dh.pcap sniffer-tls13-ecc-resume.pcap sniffer-tls13-ecc.pcap sniffer-tls13-hrr.pcap sniffer-tls13-keylog.out sniffer-tls13-keylog.pcap sniffer-tls13-keylog.sslkeylog sniffer-tls13-x25519-resume.pcap sniffer-tls13-x25519.pcap stm32l4-v4_0_1_build.sh tls13.test trusted_peer.test unit.test.in user_settings_asm.sh
src bio.c conf.c crl.c dtls.c dtls13.c include.am internal.c keys.c ocsp.c pk.c pk_ec.c pk_rsa.c quic.c sniffer.c ssl.c ssl_api_cert.c ssl_api_crl_ocsp.c ssl_api_pk.c ssl_asn1.c ssl_bn.c ssl_certman.c ssl_crypto.c ssl_ech.c ssl_load.c ssl_misc.c ssl_p7p12.c ssl_sess.c ssl_sk.c tls.c tls13.c wolfio.c x509.c x509_str.c
sslSniffer
sslSnifferTest README_WIN.md include.am snifftest.c sslSniffTest.vcproj sslSniffTest.vcxproj
README.md sslSniffer.vcproj sslSniffer.vcxproj
support gen-debug-trace-error-codes.sh include.am wolfssl.pc.in
tests
api api.h api_decl.h create_ocsp_test_blobs.py include.am test_aes.c test_aes.h test_arc4.c test_arc4.h test_ascon.c test_ascon.h test_ascon_kats.h test_asn.c test_asn.h test_blake2.c test_blake2.h test_camellia.c test_camellia.h test_certman.c test_certman.h test_chacha.c test_chacha.h test_chacha20_poly1305.c test_chacha20_poly1305.h test_cmac.c test_cmac.h test_curve25519.c test_curve25519.h test_curve448.c test_curve448.h test_des3.c test_des3.h test_dh.c test_dh.h test_digest.h test_dsa.c test_dsa.h test_dtls.c test_dtls.h test_ecc.c test_ecc.h test_ed25519.c test_ed25519.h test_ed448.c test_ed448.h test_evp.c test_evp.h test_evp_cipher.c test_evp_cipher.h test_evp_digest.c test_evp_digest.h test_evp_pkey.c test_evp_pkey.h test_hash.c test_hash.h test_hmac.c test_hmac.h test_md2.c test_md2.h test_md4.c test_md4.h test_md5.c test_md5.h test_mldsa.c test_mldsa.h test_mlkem.c test_mlkem.h test_ocsp.c test_ocsp.h test_ocsp_test_blobs.h test_ossl_asn1.c test_ossl_asn1.h test_ossl_bio.c test_ossl_bio.h test_ossl_bn.c test_ossl_bn.h test_ossl_cipher.c test_ossl_cipher.h test_ossl_dgst.c test_ossl_dgst.h test_ossl_dh.c test_ossl_dh.h test_ossl_dsa.c test_ossl_dsa.h test_ossl_ec.c test_ossl_ec.h test_ossl_ecx.c test_ossl_ecx.h test_ossl_mac.c test_ossl_mac.h test_ossl_obj.c test_ossl_obj.h test_ossl_p7p12.c test_ossl_p7p12.h test_ossl_pem.c test_ossl_pem.h test_ossl_rand.c test_ossl_rand.h test_ossl_rsa.c test_ossl_rsa.h test_ossl_sk.c test_ossl_sk.h test_ossl_x509.c test_ossl_x509.h test_ossl_x509_acert.c test_ossl_x509_acert.h test_ossl_x509_crypto.c test_ossl_x509_crypto.h test_ossl_x509_ext.c test_ossl_x509_ext.h test_ossl_x509_info.c test_ossl_x509_info.h test_ossl_x509_io.c test_ossl_x509_io.h test_ossl_x509_lu.c test_ossl_x509_lu.h test_ossl_x509_name.c test_ossl_x509_name.h test_ossl_x509_pk.c test_ossl_x509_pk.h test_ossl_x509_str.c test_ossl_x509_str.h test_ossl_x509_vp.c test_ossl_x509_vp.h test_pkcs12.c test_pkcs12.h test_pkcs7.c test_pkcs7.h test_poly1305.c test_poly1305.h test_random.c test_random.h test_rc2.c test_rc2.h test_ripemd.c test_ripemd.h test_rsa.c test_rsa.h test_sha.c test_sha.h test_sha256.c test_sha256.h test_sha3.c test_sha3.h test_sha512.c test_sha512.h test_she.c test_she.h test_signature.c test_signature.h test_slhdsa.c test_slhdsa.h test_sm2.c test_sm2.h test_sm3.c test_sm3.h test_sm4.c test_sm4.h test_tls.c test_tls.h test_tls13.c test_tls13.h test_tls_ext.c test_tls_ext.h test_wc_encrypt.c test_wc_encrypt.h test_wolfmath.c test_wolfmath.h test_x509.c test_x509.h
emnet
IP IP.h
Makefile emnet_nonblock_test.c emnet_shim.c
freertos-mem-track-repro FreeRTOS.h repro.c run.sh semphr.h task.h user_settings.h
swdev .gitignore Makefile README.md swdev.c swdev.h swdev_loader.c swdev_loader.h user_settings.h
CONF_FILES_README.md NCONF_test.cnf README TXT_DB.txt api.c include.am quic.c srp.c suites.c test-altchains.conf test-chains.conf test-dhprime.conf test-dtls-downgrade.conf test-dtls-fails-cipher.conf test-dtls-fails.conf test-dtls-group.conf test-dtls-mtu.conf test-dtls-reneg-client.conf test-dtls-reneg-server.conf test-dtls-resume.conf test-dtls-sha2.conf test-dtls-srtp-fails.conf test-dtls-srtp.conf test-dtls.conf test-dtls13-cid.conf test-dtls13-downgrade-fails.conf test-dtls13-downgrade.conf test-dtls13-pq-hybrid-extra-frag.conf test-dtls13-pq-hybrid-extra.conf test-dtls13-pq-hybrid-frag.conf test-dtls13-pq-standalone-frag.conf test-dtls13-pq-standalone.conf test-dtls13-psk.conf test-dtls13.conf test-ecc-cust-curves.conf test-ed25519.conf test-ed448.conf test-enckeys.conf test-fails.conf test-maxfrag-dtls.conf test-maxfrag.conf test-p521.conf test-psk-no-id-sha2.conf test-psk-no-id.conf test-psk.conf test-rsapss.conf test-sctp-sha2.conf test-sctp.conf test-sha2.conf test-sig.conf test-sm2.conf test-tls-downgrade.conf test-tls13-down.conf test-tls13-ecc.conf test-tls13-pq-hybrid-extra.conf test-tls13-pq-hybrid.conf test-tls13-pq-standalone.conf test-tls13-psk-certs.conf test-tls13-psk.conf test-tls13-slhdsa-fail.conf test-tls13-slhdsa-sha2.conf test-tls13-slhdsa-shake.conf test-tls13.conf test-trustpeer.conf test.conf unit.c unit.h utils.c utils.h w64wrapper.c
testsuite include.am testsuite.c testsuite.sln testsuite.vcproj testsuite.vcxproj utils.c utils.h
tirtos
packages
ti
net
wolfssl
tests
EK_TM4C1294XL
wolfcrypt
benchmark TM4C1294NC.icf benchmark.cfg main.c package.bld.hide package.xdc
test TM4C1294NC.icf main.c package.bld.hide package.xdc test.cfg
package.bld package.xdc package.xs
.gitignore README include.am products.mak wolfssl.bld wolfssl.mak
wolfcrypt
benchmark README.md benchmark-VS2022.sln benchmark-VS2022.vcxproj benchmark-VS2022.vcxproj.user benchmark.c benchmark.h benchmark.sln benchmark.vcproj benchmark.vcxproj include.am
src
port
Espressif
esp_crt_bundle README.md cacrt_all.pem cacrt_deprecated.pem cacrt_local.pem esp_crt_bundle.c gen_crt_bundle.py pio_install_cryptography.py
README.md esp32_aes.c esp32_mp.c esp32_sha.c esp32_util.c esp_sdk_mem_lib.c esp_sdk_time_lib.c esp_sdk_wifi_lib.c
Renesas README.md renesas_common.c renesas_fspsm_aes.c renesas_fspsm_rsa.c renesas_fspsm_sha.c renesas_fspsm_util.c renesas_rx64_hw_sha.c renesas_rx64_hw_util.c renesas_tsip_aes.c renesas_tsip_rsa.c renesas_tsip_sha.c renesas_tsip_util.c
af_alg afalg_aes.c afalg_hash.c wc_afalg.c
aria aria-crypt.c aria-cryptocb.c
arm armv8-32-aes-asm.S armv8-32-aes-asm_c.c armv8-32-chacha-asm.S armv8-32-chacha-asm_c.c armv8-32-curve25519.S armv8-32-curve25519_c.c armv8-32-mlkem-asm.S armv8-32-mlkem-asm_c.c armv8-32-poly1305-asm.S armv8-32-poly1305-asm_c.c armv8-32-sha256-asm.S armv8-32-sha256-asm_c.c armv8-32-sha3-asm.S armv8-32-sha3-asm_c.c armv8-32-sha512-asm.S armv8-32-sha512-asm_c.c armv8-aes-asm.S armv8-aes-asm_c.c armv8-aes.c armv8-chacha-asm.S armv8-chacha-asm_c.c armv8-curve25519.S armv8-curve25519_c.c armv8-mlkem-asm.S armv8-mlkem-asm_c.c armv8-poly1305-asm.S armv8-poly1305-asm_c.c armv8-sha256-asm.S armv8-sha256-asm_c.c armv8-sha256.c armv8-sha3-asm.S armv8-sha3-asm_c.c armv8-sha512-asm.S armv8-sha512-asm_c.c armv8-sha512.c cryptoCell.c cryptoCellHash.c thumb2-aes-asm.S thumb2-aes-asm_c.c thumb2-chacha-asm.S thumb2-chacha-asm_c.c thumb2-curve25519.S thumb2-curve25519_c.c thumb2-mlkem-asm.S thumb2-mlkem-asm_c.c thumb2-poly1305-asm.S thumb2-poly1305-asm_c.c thumb2-sha256-asm.S thumb2-sha256-asm_c.c thumb2-sha3-asm.S thumb2-sha3-asm_c.c thumb2-sha512-asm.S thumb2-sha512-asm_c.c
atmel README.md atmel.c
autosar README.md cryif.c crypto.c csm.c include.am test.c
caam README.md caam_aes.c caam_doc.pdf caam_driver.c caam_error.c caam_integrity.c caam_qnx.c caam_sha.c wolfcaam_aes.c wolfcaam_cmac.c wolfcaam_ecdsa.c wolfcaam_fsl_nxp.c wolfcaam_hash.c wolfcaam_hmac.c wolfcaam_init.c wolfcaam_qnx.c wolfcaam_rsa.c wolfcaam_seco.c wolfcaam_x25519.c
cavium README.md README_Octeon.md cavium_nitrox.c cavium_octeon_sync.c
cuda README.md aes-cuda.cu
cypress README.md psoc6_crypto.c
devcrypto README.md devcrypto_aes.c devcrypto_ecdsa.c devcrypto_hash.c devcrypto_hmac.c devcrypto_rsa.c devcrypto_x25519.c wc_devcrypto.c
intel README.md quickassist.c quickassist_mem.c quickassist_sync.c
iotsafe iotsafe.c
kcapi README.md kcapi_aes.c kcapi_dh.c kcapi_ecc.c kcapi_hash.c kcapi_hmac.c kcapi_rsa.c
liboqs liboqs.c
maxim README.md max3266x.c maxq10xx.c
mynewt mynewt_port.c
nxp README.md README_SE050.md casper_port.c dcp_port.c hashcrypt_port.c ksdk_port.c se050_port.c
pic32 pic32mz-crypt.c
ppc32 ppc32-sha256-asm.S ppc32-sha256-asm_c.c ppc32-sha256-asm_cr.c
psa README.md psa.c psa_aes.c psa_hash.c psa_pkcbs.c
riscv riscv-64-aes.c riscv-64-chacha.c riscv-64-poly1305.c riscv-64-sha256.c riscv-64-sha3.c riscv-64-sha512.c
rpi_pico README.md pico.c
silabs README.md silabs_aes.c silabs_ecc.c silabs_hash.c silabs_random.c
st README.md STM32MP13.md STM32MP25.md stm32.c stsafe.c
ti ti-aes.c ti-ccm.c ti-des3.c ti-hash.c
tropicsquare README.md tropic01.c
xilinx xil-aesgcm.c xil-sha3.c xil-versal-glue.c xil-versal-trng.c
nrf51.c
ASN_TEMPLATE.md aes.c aes_asm.S aes_asm.asm aes_gcm_asm.S aes_gcm_asm.asm aes_gcm_x86_asm.S aes_xts_asm.S aes_xts_asm.asm arc4.c ascon.c asm.c asn.c asn_orig.c async.c blake2b.c blake2s.c camellia.c chacha.c chacha20_poly1305.c chacha_asm.S chacha_asm.asm cmac.c coding.c compress.c cpuid.c cryptocb.c curve25519.c curve448.c des3.c dh.c dilithium.c dsa.c ecc.c ecc_fp.c eccsi.c ed25519.c ed448.c error.c evp.c evp_pk.c falcon.c fe_448.c fe_low_mem.c fe_operations.c fe_x25519_128.h fe_x25519_asm.S fp_mont_small.i fp_mul_comba_12.i fp_mul_comba_17.i fp_mul_comba_20.i fp_mul_comba_24.i fp_mul_comba_28.i fp_mul_comba_3.i fp_mul_comba_32.i fp_mul_comba_4.i fp_mul_comba_48.i fp_mul_comba_6.i fp_mul_comba_64.i fp_mul_comba_7.i fp_mul_comba_8.i fp_mul_comba_9.i fp_mul_comba_small_set.i fp_sqr_comba_12.i fp_sqr_comba_17.i fp_sqr_comba_20.i fp_sqr_comba_24.i fp_sqr_comba_28.i fp_sqr_comba_3.i fp_sqr_comba_32.i fp_sqr_comba_4.i fp_sqr_comba_48.i fp_sqr_comba_6.i fp_sqr_comba_64.i fp_sqr_comba_7.i fp_sqr_comba_8.i fp_sqr_comba_9.i fp_sqr_comba_small_set.i ge_448.c ge_low_mem.c ge_operations.c hash.c hmac.c hpke.c include.am integer.c kdf.c logging.c md2.c md4.c md5.c memory.c misc.c pkcs12.c pkcs7.c poly1305.c poly1305_asm.S poly1305_asm.asm puf.c pwdbased.c random.c rc2.c ripemd.c rng_bank.c rsa.c sakke.c sha.c sha256.c sha256_asm.S sha3.c sha3_asm.S sha512.c sha512_asm.S signature.c siphash.c sm2.c sm3.c sm3_asm.S sm4.c sp_arm32.c sp_arm64.c sp_armthumb.c sp_c32.c sp_c64.c sp_cortexm.c sp_dsp32.c sp_int.c sp_sm2_arm32.c sp_sm2_arm64.c sp_sm2_armthumb.c sp_sm2_c32.c sp_sm2_c64.c sp_sm2_cortexm.c sp_sm2_x86_64.c sp_sm2_x86_64_asm.S sp_x86_64.c sp_x86_64_asm.S sp_x86_64_asm.asm srp.c tfm.c wc_dsp.c wc_encrypt.c wc_lms.c wc_lms_impl.c wc_mldsa_asm.S wc_mlkem.c wc_mlkem_asm.S wc_mlkem_poly.c wc_pkcs11.c wc_port.c wc_she.c wc_slhdsa.c wc_xmss.c wc_xmss_impl.c wolfentropy.c wolfevent.c wolfmath.c
test README.md include.am test-VS2022.sln test-VS2022.vcxproj test-VS2022.vcxproj.user test.c test.h test.sln test.vcproj test_paths.h.in
wolfssl
openssl aes.h asn1.h asn1t.h bio.h bn.h buffer.h camellia.h cmac.h cms.h compat_types.h conf.h crypto.h des.h dh.h dsa.h ec.h ec25519.h ec448.h ecdh.h ecdsa.h ed25519.h ed448.h engine.h err.h evp.h fips_rand.h hmac.h include.am kdf.h lhash.h md4.h md5.h modes.h obj_mac.h objects.h ocsp.h opensslconf.h opensslv.h ossl_typ.h pem.h pkcs12.h pkcs7.h rand.h rc4.h ripemd.h rsa.h safestack.h sha.h sha3.h srp.h ssl.h ssl23.h stack.h tls1.h txt_db.h ui.h x509.h x509_vfy.h x509v3.h
wolfcrypt
port
Espressif esp-sdk-lib.h esp32-crypt.h esp_crt_bundle.h
Renesas renesas-fspsm-crypt.h renesas-fspsm-types.h renesas-rx64-hw-crypt.h renesas-tsip-crypt.h renesas_cmn.h renesas_fspsm_internal.h renesas_sync.h renesas_tsip_internal.h renesas_tsip_types.h
af_alg afalg_hash.h wc_afalg.h
aria aria-crypt.h aria-cryptocb.h
arm cryptoCell.h
atmel atmel.h
autosar CryIf.h Crypto.h Csm.h StandardTypes.h
caam caam_driver.h caam_error.h caam_qnx.h wolfcaam.h wolfcaam_aes.h wolfcaam_cmac.h wolfcaam_ecdsa.h wolfcaam_fsl_nxp.h wolfcaam_hash.h wolfcaam_qnx.h wolfcaam_rsa.h wolfcaam_seco.h wolfcaam_sha.h wolfcaam_x25519.h
cavium cavium_nitrox.h cavium_octeon_sync.h
cypress psoc6_crypto.h
devcrypto wc_devcrypto.h
intel quickassist.h quickassist_mem.h quickassist_sync.h
iotsafe iotsafe.h
kcapi kcapi_dh.h kcapi_ecc.h kcapi_hash.h kcapi_hmac.h kcapi_rsa.h wc_kcapi.h
liboqs liboqs.h
maxim max3266x-cryptocb.h max3266x.h maxq10xx.h
nxp casper_port.h dcp_port.h hashcrypt_port.h ksdk_port.h se050_port.h
pic32 pic32mz-crypt.h
psa psa.h
riscv riscv-64-asm.h
rpi_pico pico.h
silabs silabs_aes.h silabs_ecc.h silabs_hash.h silabs_random.h
st stm32.h stsafe.h
ti ti-ccm.h ti-hash.h
tropicsquare tropic01.h
xilinx xil-sha3.h xil-versal-glue.h xil-versal-trng.h
nrf51.h
aes.h arc4.h ascon.h asn.h asn_public.h async.h blake2-impl.h blake2-int.h blake2.h camellia.h chacha.h chacha20_poly1305.h cmac.h coding.h compress.h cpuid.h cryptocb.h curve25519.h curve448.h des3.h dh.h dilithium.h dsa.h ecc.h eccsi.h ed25519.h ed448.h error-crypt.h falcon.h fe_448.h fe_operations.h fips_test.h ge_448.h ge_operations.h hash.h hmac.h hpke.h include.am integer.h kdf.h libwolfssl_sources.h libwolfssl_sources_asm.h logging.h md2.h md4.h md5.h mem_track.h memory.h misc.h mpi_class.h mpi_superclass.h oid_sum.h pkcs11.h pkcs12.h pkcs7.h poly1305.h puf.h pwdbased.h random.h rc2.h ripemd.h rng_bank.h rsa.h sakke.h selftest.h settings.h sha.h sha256.h sha3.h sha512.h signature.h siphash.h sm2.h sm3.h sm4.h sp.h sp_int.h srp.h tfm.h types.h visibility.h wc_encrypt.h wc_lms.h wc_mlkem.h wc_pkcs11.h wc_port.h wc_she.h wc_slhdsa.h wc_xmss.h wolfentropy.h wolfevent.h wolfmath.h
callbacks.h certs_test.h certs_test_sm.h crl.h error-ssl.h include.am internal.h ocsp.h options.h.in quic.h sniffer.h sniffer_error.h sniffer_error.rc ssl.h test.h version.h version.h.in wolfio.h
wrapper
Ada
examples
src aes_verify_main.adb rsa_verify_main.adb sha256_main.adb spark_sockets.adb spark_sockets.ads spark_terminal.adb spark_terminal.ads tls_client.adb tls_client.ads tls_client_main.adb tls_server.adb tls_server.ads tls_server_main.adb
.gitignore alire.toml examples.gpr
tests
src
support test_support.adb test_support.ads tests_root_suite.adb tests_root_suite.ads
aes_bindings_tests.adb aes_bindings_tests.ads rsa_verify_bindings_tests.adb rsa_verify_bindings_tests.ads sha256_bindings_tests.adb sha256_bindings_tests.ads tests.adb
.gitignore README.md alire.toml tests.gpr valgrind.supp
.gitignore README.md ada_binding.c alire.toml default.gpr include.am restricted.adc user_settings.h wolfssl-full_runtime.adb wolfssl-full_runtime.ads wolfssl.adb wolfssl.ads wolfssl.gpr
CSharp
wolfCrypt-Test
Properties AssemblyInfo.cs
App.config wolfCrypt-Test.cs wolfCrypt-Test.csproj
wolfSSL-DTLS-PSK-Server
Properties AssemblyInfo.cs
App.config wolfSSL-DTLS-PSK-Server.cs wolfSSL-DTLS-PSK-Server.csproj
wolfSSL-DTLS-Server
Properties AssemblyInfo.cs
App.config wolfSSL-DTLS-Server.cs wolfSSL-DTLS-Server.csproj
wolfSSL-Example-IOCallbacks
Properties AssemblyInfo.cs
App.config wolfSSL-Example-IOCallbacks.cs wolfSSL-Example-IOCallbacks.csproj
wolfSSL-TLS-Client
Properties AssemblyInfo.cs
App.config wolfSSL-TLS-Client.cs wolfSSL-TLS-Client.csproj
wolfSSL-TLS-PSK-Client
Properties AssemblyInfo.cs
App.config wolfSSL-TLS-PSK-Client.cs wolfSSL-TLS-PSK-Client.csproj
wolfSSL-TLS-PSK-Server
Properties AssemblyInfo.cs
App.config wolfSSL-TLS-PSK-Server.cs wolfSSL-TLS-PSK-Server.csproj
wolfSSL-TLS-Server
Properties AssemblyInfo.cs
App.config wolfSSL-TLS-Server.cs wolfSSL-TLS-Server.csproj
wolfSSL-TLS-ServerThreaded
Properties AssemblyInfo.cs
App.config wolfSSL-TLS-ServerThreaded.cs wolfSSL-TLS-ServerThreaded.csproj
wolfSSL_CSharp
Properties AssemblyInfo.cs Resources.Designer.cs Resources.resx
X509.cs wolfCrypt.cs wolfSSL.cs wolfSSL_CSharp.csproj
README.md include.am user_settings.h wolfSSL_CSharp.sln wolfssl.vcxproj
python README.md
rust
wolfssl-wolfcrypt
src aes.rs blake2.rs chacha20_poly1305.rs cmac.rs cmac_mac.rs curve25519.rs dh.rs dilithium.rs ecc.rs ecdsa.rs ed25519.rs ed448.rs fips.rs hkdf.rs hmac.rs hmac_mac.rs kdf.rs lib.rs lms.rs mlkem.rs mlkem_kem.rs pbkdf2_password_hash.rs prf.rs random.rs rsa.rs rsa_pkcs1v15.rs sha.rs sha_digest.rs sys.rs
tests
common mod.rs
test_aes.rs test_blake2.rs test_chacha20_poly1305.rs test_cmac.rs test_cmac_mac.rs test_curve25519.rs test_dh.rs test_dilithium.rs test_ecc.rs test_ecdsa.rs test_ed25519.rs test_ed448.rs test_hkdf.rs test_hmac.rs test_hmac_mac.rs test_kdf.rs test_lms.rs test_mlkem.rs test_mlkem_kem.rs test_pbkdf2_password_hash.rs test_prf.rs test_random.rs test_rsa.rs test_rsa_pkcs1v15.rs test_sha.rs test_sha_digest.rs test_wolfcrypt.rs
CHANGELOG.md Cargo.lock Cargo.toml Makefile README.md build.rs headers.h
Makefile README.md include.am
include.am
zephyr
samples
wolfssl_benchmark
boards native_sim.conf nrf5340dk_nrf5340_cpuapp.conf nrf5340dk_nrf5340_cpuapp_ns.conf
CMakeLists.txt README install_test.sh prj.conf sample.yaml zephyr_legacy.conf zephyr_v4.1.conf
wolfssl_test
boards native_sim.conf nrf5340dk_nrf5340_cpuapp.conf nrf5340dk_nrf5340_cpuapp_ns.conf
CMakeLists.txt README install_test.sh prj-no-malloc.conf prj.conf sample.yaml zephyr_legacy.conf zephyr_v4.1.conf
wolfssl_tls_sock
boards native_sim.conf
src tls_sock.c
CMakeLists.txt README install_sample.sh prj-no-malloc.conf prj.conf sample.yaml zephyr_legacy.conf zephyr_v4.1.conf
wolfssl_tls_thread
boards native_sim.conf nrf5340dk_nrf5340_cpuapp.conf nrf5340dk_nrf5340_cpuapp_ns.conf
src tls_threaded.c
CMakeLists.txt README install_sample.sh prj.conf sample.yaml zephyr_legacy.conf zephyr_v4.1.conf
wolfssl options.h
CMakeLists.txt Kconfig Kconfig.tls-generic README.md include.am module.yml user_settings-no-malloc.h user_settings.h zephyr_init.c
.codespellexcludelines .cyignore .editorconfig .gitignore .wolfssl_known_macro_extras AUTHORS CMakeLists.txt CMakePresets.json CMakeSettings.json COPYING ChangeLog.md INSTALL LICENSING LPCExpresso.cproject LPCExpresso.project Makefile.am README README-async.md README.md SCRIPTS-LIST SECURITY-POLICY.md SECURITY-REPORT-TEMPLATE.md Vagrantfile autogen.sh commit-tests.sh configure.ac fips-check.sh fips-hash.sh gencertbuf.pl input pull_to_vagrant.sh quit resource.h stamp-h.in valgrind-bash.supp valgrind-error.sh wnr-example.conf wolfssl-VS2022.vcxproj wolfssl.rc wolfssl.vcproj wolfssl.vcxproj wolfssl64.sln
.clangd .gitignore DOCS.md Makefile README.md assert.c core.c crypto.c env.c fs.c http.c ini.c json.c log.c luna.h main.c makext.mk path.c process.c request.c sqlite.c stash.c template.c util.c
curl/configure.ac raw
   1#***************************************************************************
   2#                                  _   _ ____  _
   3#  Project                     ___| | | |  _ \| |
   4#                             / __| | | | |_) | |
   5#                            | (__| |_| |  _ <| |___
   6#                             \___|\___/|_| \_\_____|
   7#
   8# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
   9#
  10# This software is licensed as described in the file COPYING, which
  11# you should have received as part of this distribution. The terms
  12# are also available at https://curl.se/docs/copyright.html.
  13#
  14# You may opt to use, copy, modify, merge, publish, distribute and/or sell
  15# copies of the Software, and permit persons to whom the Software is
  16# furnished to do so, under the terms of the COPYING file.
  17#
  18# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  19# KIND, either express or implied.
  20#
  21# SPDX-License-Identifier: curl
  22#
  23#***************************************************************************
  24dnl Process this file with autoconf to produce a configure script.
  25
  26AC_PREREQ(2.59)
  27
  28dnl We do not know the version number "statically" so we use a dash here
  29AC_INIT([curl], [-], [a suitable curl mailing list: https://curl.se/mail/])
  30
  31XC_OVR_ZZ50
  32CURL_OVERRIDE_AUTOCONF
  33
  34dnl configure script copyright
  35AC_COPYRIGHT([Copyright (C) Daniel Stenberg, <daniel@haxx.se>
  36This configure script may be copied, distributed and modified under the
  37terms of the curl license; see COPYING for more details])
  38
  39AC_CONFIG_SRCDIR([lib/urldata.h])
  40AC_CONFIG_HEADERS(lib/curl_config.h)
  41AH_TOP([/* !checksrc! disable COPYRIGHT all */])
  42AC_CONFIG_MACRO_DIR([m4])
  43AM_MAINTAINER_MODE
  44m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
  45
  46CURL_CHECK_OPTION_DEBUG
  47AM_CONDITIONAL(DEBUGBUILD, test "$want_debug" = "yes")
  48CURL_CHECK_OPTION_OPTIMIZE
  49CURL_CHECK_OPTION_WARNINGS
  50CURL_CHECK_OPTION_WERROR
  51CURL_CHECK_OPTION_SYMBOL_HIDING
  52CURL_CHECK_OPTION_ARES
  53CURL_CHECK_OPTION_RT
  54CURL_CHECK_OPTION_HTTPSRR
  55CURL_CHECK_OPTION_ECH
  56CURL_CHECK_OPTION_SSLS_EXPORT
  57
  58XC_CHECK_PATH_SEPARATOR
  59
  60dnl
  61dnl save the configure arguments
  62dnl
  63CONFIGURE_OPTIONS="\"$ac_configure_args\""
  64AC_SUBST(CONFIGURE_OPTIONS)
  65
  66dnl SED is mandatory for configure process and libtool.
  67dnl Set it now, allowing it to be changed later.
  68if test -z "$SED"; then
  69  dnl allow it to be overridden
  70  AC_PATH_PROG([SED], [sed], [not_found],
  71    [$PATH:/usr/bin:/usr/local/bin])
  72  if test -z "$SED" || test "$SED" = "not_found"; then
  73    AC_MSG_ERROR([sed not found in PATH. Cannot continue without sed.])
  74  fi
  75fi
  76AC_SUBST([SED])
  77
  78dnl GREP is mandatory for configure process and libtool.
  79dnl Set it now, allowing it to be changed later.
  80if test -z "$GREP"; then
  81  dnl allow it to be overridden
  82  AC_PATH_PROG([GREP], [grep], [not_found],
  83    [$PATH:/usr/bin:/usr/local/bin])
  84  if test -z "$GREP" || test "$GREP" = "not_found"; then
  85    AC_MSG_ERROR([grep not found in PATH. Cannot continue without grep.])
  86  fi
  87fi
  88AC_SUBST([GREP])
  89
  90dnl 'grep -E' is mandatory for configure process and libtool.
  91dnl Set it now, allowing it to be changed later.
  92if test -z "$EGREP"; then
  93  dnl allow it to be overridden
  94  AC_MSG_CHECKING([that grep -E works])
  95  if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then
  96    EGREP="$GREP -E"
  97    AC_MSG_RESULT([yes])
  98  else
  99    AC_MSG_RESULT([no])
 100    AC_PATH_PROG([EGREP], [egrep], [not_found],
 101      [$PATH:/usr/bin:/usr/local/bin])
 102  fi
 103fi
 104if test -z "$EGREP" || test "$EGREP" = "not_found"; then
 105  AC_MSG_ERROR([grep -E is not working and egrep is not found in PATH. Cannot continue.])
 106fi
 107AC_SUBST([EGREP])
 108
 109dnl AR is mandatory for configure process and libtool.
 110dnl This is target dependent, so check it as a tool.
 111if test -z "$AR"; then
 112  dnl allow it to be overridden
 113  AC_PATH_TOOL([AR], [ar], [not_found],
 114    [$PATH:/usr/bin:/usr/local/bin])
 115  if test -z "$AR" || test "$AR" = "not_found"; then
 116    AC_MSG_ERROR([ar not found in PATH. Cannot continue without ar.])
 117  fi
 118fi
 119AC_SUBST([AR])
 120
 121AC_SUBST(libext)
 122
 123if test -z "$CLANG_TIDY"; then
 124  CLANG_TIDY=clang-tidy
 125fi
 126AC_SUBST(CLANG_TIDY)
 127
 128dnl figure out the libcurl version
 129CURLVERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)".*/\1/p' ${srcdir}/include/curl/curlver.h`
 130XC_CHECK_PROG_CC
 131CURL_ATOMIC
 132
 133XC_AUTOMAKE
 134AC_MSG_CHECKING([curl version])
 135AC_MSG_RESULT($CURLVERSION)
 136
 137AC_SUBST(CURLVERSION)
 138
 139dnl
 140dnl we extract the numerical version for curl-config only
 141VERSIONNUM=`$SED -ne 's/^#define LIBCURL_VERSION_NUM 0x\([0-9A-Fa-f]*\).*/\1/p' ${srcdir}/include/curl/curlver.h`
 142AC_SUBST(VERSIONNUM)
 143
 144dnl
 145dnl initialize all the info variables
 146         curl_ssl_msg="no       (--with-{openssl,gnutls,mbedtls,wolfssl,schannel,amissl,rustls} )"
 147         curl_ssh_msg="no       (--with-{libssh,libssh2})"
 148        curl_zlib_msg="no       (--with-zlib)"
 149      curl_brotli_msg="no       (--with-brotli)"
 150        curl_zstd_msg="no       (--with-zstd)"
 151         curl_gss_msg="no       (--with-gssapi)"
 152       curl_gsasl_msg="no       (--with-gsasl)"
 153     curl_tls_srp_msg="no       (--enable-tls-srp)"
 154         curl_res_msg="blocking (--enable-ares / --enable-threaded-resolver)"
 155        curl_ipv6_msg="no       (--enable-ipv6)"
 156curl_unix_sockets_msg="no       (--enable-unix-sockets)"
 157         curl_idn_msg="no       (--with-{libidn2,winidn})"
 158        curl_docs_msg="enabled  (--disable-docs)"
 159      curl_manual_msg="no       (--enable-manual)"
 160     curl_libcurl_msg="enabled  (--disable-libcurl-option)"
 161   curl_typecheck_msg="enabled  (--disable-typecheck)"
 162     curl_verbose_msg="enabled  (--disable-verbose)"
 163        curl_sspi_msg="no       (--enable-sspi)"
 164        curl_ldap_msg="no       (--enable-ldap / --with-ldap-lib / --with-lber-lib)"
 165       curl_ldaps_msg="no       (--enable-ldaps)"
 166        curl_ipfs_msg="no       (--enable-ipfs)"
 167        curl_rtsp_msg="no       (--enable-rtsp)"
 168         curl_psl_msg="no       (--with-libpsl)"
 169      curl_altsvc_msg="enabled  (--disable-alt-svc)"
 170     curl_headers_msg="enabled  (--disable-headers-api)"
 171        curl_hsts_msg="enabled  (--disable-hsts)"
 172         ssl_backends=
 173          curl_h1_msg="enabled  (internal)"
 174          curl_h2_msg="no       (--with-nghttp2)"
 175          curl_h3_msg="no       (--with-ngtcp2 --with-nghttp3, --with-quiche)"
 176
 177enable_altsvc="yes"
 178hsts="yes"
 179
 180dnl
 181dnl Save some initial values the user might have provided
 182dnl
 183INITIAL_LDFLAGS=$LDFLAGS
 184INITIAL_LIBS=$LIBS
 185
 186dnl
 187dnl Generates a shell script to run the compiler with LD_LIBRARY_PATH set to
 188dnl the value used right now. This lets CURL_RUN_IFELSE set LD_LIBRARY_PATH to
 189dnl something different but only have that affect the execution of the results
 190dnl of the compile, not change the libraries for the compiler itself.
 191dnl
 192compilersh="run-compiler"
 193CURL_SAVED_CC="$CC"
 194export CURL_SAVED_CC
 195CURL_SAVED_LD_LIBRARY_PATH="$LD_LIBRARY_PATH"
 196export CURL_SAVED_LD_LIBRARY_PATH
 197cat <<\EOF > "$compilersh"
 198CC="$CURL_SAVED_CC"
 199export CC
 200LD_LIBRARY_PATH="$CURL_SAVED_LD_LIBRARY_PATH"
 201export LD_LIBRARY_PATH
 202exec $CC "$@"
 203EOF
 204
 205dnl **********************************************************************
 206dnl See which TLS backend(s) that are requested. Just do all the
 207dnl TLS AC_ARG_WITH() invokes here and do the checks later
 208dnl **********************************************************************
 209OPT_SCHANNEL=no
 210AC_ARG_WITH(schannel,
 211AS_HELP_STRING([--with-schannel],[enable Windows native SSL/TLS]),
 212  OPT_SCHANNEL=$withval
 213  TLSCHOICE="Schannel")
 214
 215OPT_AMISSL=no
 216AC_ARG_WITH(amissl,
 217AS_HELP_STRING([--with-amissl],[enable Amiga native SSL/TLS (AmiSSL)]),[
 218  OPT_AMISSL=$withval
 219  TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }AmiSSL"
 220])
 221
 222OPT_OPENSSL=no
 223dnl Default to no CA bundle
 224ca="no"
 225AC_ARG_WITH(ssl,
 226AS_HELP_STRING([--with-ssl=PATH],[old version of --with-openssl])
 227AS_HELP_STRING([--without-ssl], [build without any TLS library]),[
 228  OPT_SSL=$withval
 229  OPT_OPENSSL=$withval
 230  if test "x$withval" != "xno"; then
 231    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL"
 232  else
 233    SSL_DISABLED="D"
 234  fi
 235])
 236
 237AC_ARG_WITH(openssl,
 238AS_HELP_STRING([--with-openssl=PATH],[Where to look for OpenSSL, PATH points
 239  to the SSL installation (default: /usr/local/ssl); when possible, set
 240  the PKG_CONFIG_PATH environment variable instead of using this option]),
 241[
 242  OPT_OPENSSL=$withval
 243  if test "x$withval" != "xno"; then
 244    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL"
 245  fi
 246])
 247
 248OPT_GNUTLS=no
 249AC_ARG_WITH(gnutls,
 250AS_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root]),[
 251  OPT_GNUTLS=$withval
 252  if test "x$withval" != "xno"; then
 253    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }GnuTLS"
 254  fi
 255])
 256
 257OPT_MBEDTLS=no
 258AC_ARG_WITH(mbedtls,
 259AS_HELP_STRING([--with-mbedtls=PATH],[where to look for mbedTLS, PATH points to the installation root]),[
 260  OPT_MBEDTLS=$withval
 261  if test "x$withval" != "xno"; then
 262    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }mbedTLS"
 263  fi
 264])
 265
 266OPT_WOLFSSL=no
 267AC_ARG_WITH(wolfssl,
 268AS_HELP_STRING([--with-wolfssl=PATH],[where to look for wolfSSL, PATH points to the installation root (default: system lib default)]),[
 269  OPT_WOLFSSL=$withval
 270  if test "x$withval" != "xno"; then
 271    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }wolfSSL"
 272  fi
 273])
 274
 275OPT_RUSTLS=no
 276AC_ARG_WITH(rustls,
 277AS_HELP_STRING([--with-rustls=PATH],[where to look for Rustls, PATH points to the installation root]),[
 278  OPT_RUSTLS=$withval
 279  if test "x$withval" != "xno"; then
 280    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }Rustls"
 281    experimental="$experimental Rustls"
 282  fi
 283])
 284
 285OPT_APPLE_SECTRUST=$curl_cv_apple
 286AC_ARG_WITH(apple-sectrust,
 287AS_HELP_STRING([--with-apple-sectrust],[enable Apple OS native certificate verification]),[
 288  OPT_APPLE_SECTRUST=$withval
 289])
 290
 291AC_PATH_PROG(PERL, perl,, $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin)
 292AC_SUBST(PERL)
 293AM_CONDITIONAL(PERL, test -n "$PERL")
 294
 295TEST_NGHTTPX=nghttpx
 296AC_ARG_WITH(test-nghttpx,
 297AS_HELP_STRING([--with-test-nghttpx=PATH],[where to find nghttpx for testing]),
 298  TEST_NGHTTPX=$withval
 299  if test "x$TEST_NGHTTPX" = "xno"; then
 300    TEST_NGHTTPX=""
 301  fi
 302)
 303AC_SUBST(TEST_NGHTTPX)
 304
 305if test -x /usr/bin/caddy; then
 306  CADDY=/usr/bin/caddy
 307elif test -x /usr/local/bin/caddy; then
 308  CADDY=/usr/local/bin/caddy
 309elif test -x "`brew --prefix 2>/dev/null`/bin/caddy"; then
 310  CADDY=`brew --prefix`/bin/caddy
 311fi
 312AC_ARG_WITH(test-caddy,
 313AS_HELP_STRING([--with-test-caddy=PATH],[where to find caddy for testing]),
 314  CADDY=$withval
 315  if test "x$CADDY" = "xno"; then
 316    CADDY=""
 317  fi
 318)
 319AC_SUBST(CADDY)
 320
 321if test -x /usr/sbin/vsftpd; then
 322  VSFTPD=/usr/sbin/vsftpd
 323elif test -x /usr/local/sbin/vsftpd; then
 324  VSFTPD=/usr/local/sbin/vsftpd
 325elif test -x "`brew --prefix 2>/dev/null`/sbin/vsftpd"; then
 326  VSFTPD=`brew --prefix`/sbin/vsftpd
 327fi
 328AC_ARG_WITH(test-vsftpd,
 329AS_HELP_STRING([--with-test-vsftpd=PATH],[where to find vsftpd for testing]),
 330  VSFTPD=$withval
 331  if test "x$VSFTPD" = "xno"; then
 332    VSFTPD=""
 333  fi
 334)
 335AC_SUBST(VSFTPD)
 336
 337dnl we would like an httpd as test server
 338dnl
 339HTTPD_ENABLED="maybe"
 340AC_ARG_WITH(test-httpd, [AS_HELP_STRING([--with-test-httpd=PATH],
 341                        [where to find httpd/apache2 for testing])],
 342  [request_httpd=$withval], [request_httpd=check])
 343if test "x$request_httpd" = "xcheck" || test "x$request_httpd" = "xyes"; then
 344  if test -x "/usr/sbin/apache2"; then
 345    dnl common location on distros (debian/ubuntu)
 346    HTTPD="/usr/sbin/apache2"
 347    AC_PATH_PROG([APXS], [apxs])
 348    if test -z "$APXS"; then
 349      AC_MSG_NOTICE([apache2-dev not installed, httpd tests disabled])
 350      HTTPD_ENABLED="no"
 351    fi
 352  else
 353    AC_PATH_PROG([HTTPD], [httpd])
 354    if test -z "$HTTPD"; then
 355      AC_PATH_PROG([HTTPD], [apache2])
 356    fi
 357    AC_PATH_PROG([APXS], [apxs])
 358    if test -z "$HTTPD"; then
 359      AC_MSG_NOTICE([httpd/apache2 not in PATH, http tests disabled])
 360      HTTPD_ENABLED="no"
 361    fi
 362    if test -z "$APXS"; then
 363      AC_MSG_NOTICE([apxs not in PATH, http tests disabled])
 364      HTTPD_ENABLED="no"
 365    fi
 366  fi
 367elif test "x$request_httpd" != "xno"; then
 368  HTTPD="${request_httpd}/bin/httpd"
 369  APXS="${request_httpd}/bin/apxs"
 370  if test ! -x "${HTTPD}"; then
 371    AC_MSG_NOTICE([httpd not found as ${HTTPD}, http tests disabled])
 372    HTTPD_ENABLED="no"
 373  elif test ! -x "${APXS}"; then
 374    AC_MSG_NOTICE([apxs not found as ${APXS}, http tests disabled])
 375    HTTPD_ENABLED="no"
 376  else
 377    AC_MSG_NOTICE([using HTTPD=$HTTPD for tests])
 378  fi
 379fi
 380if test "$HTTPD_ENABLED" = "no"; then
 381  HTTPD=""
 382  APXS=""
 383fi
 384AC_SUBST(HTTPD)
 385AC_SUBST(APXS)
 386
 387dnl we would like a dante as test socks server
 388dnl
 389DANTED_ENABLED="maybe"
 390AC_ARG_WITH(test-danted, [AS_HELP_STRING([--with-test-danted=PATH],
 391                         [where to find danted socks daemon for testing])],
 392  [request_danted=$withval], [request_danted=check])
 393if test "x$request_danted" = "xcheck" || test "x$request_danted" = "xyes"; then
 394  if test -x "/usr/sbin/danted"; then
 395    dnl common location on distros (debian/ubuntu)
 396    DANTED="/usr/sbin/danted"
 397  else
 398    AC_PATH_PROG([DANTED], [danted])
 399    if test -z "$DANTED"; then
 400      AC_PATH_PROG([DANTED], [danted])
 401    fi
 402  fi
 403elif test "x$request_danted" != "xno"; then
 404  DANTED="${request_danted}"
 405  if test ! -x "${DANTED}"; then
 406    AC_MSG_NOTICE([danted not found as ${DANTED}, danted tests disabled])
 407    DANTED_ENABLED="no"
 408  else
 409    AC_MSG_NOTICE([using DANTED=$DANTED for tests])
 410  fi
 411fi
 412if test "$DANTED_ENABLED" = "no"; then
 413  DANTED=""
 414fi
 415AC_SUBST(DANTED)
 416
 417dnl we would like a sshd as test server
 418dnl
 419SSHD_ENABLED="maybe"
 420AC_ARG_WITH(test-sshd, [AS_HELP_STRING([--with-test-sshd=PATH],
 421                       [where to find sshd for testing])],
 422  [request_sshd=$withval], [request_sshd=check])
 423if test "x$request_sshd" = "xcheck" || test "x$request_sshd" = "xyes"; then
 424  if test -x "/usr/sbin/sshd"; then
 425    dnl common location on distros (debian/ubuntu)
 426    SSHD="/usr/sbin/sshd"
 427  else
 428    AC_PATH_PROG([SSHD], [sshd])
 429    if test -z "$SSHD"; then
 430      AC_PATH_PROG([SSHD], [sshd])
 431    fi
 432  fi
 433elif test "x$request_sshd" != "xno"; then
 434  SSHD="${request_sshd}"
 435  if test ! -x "${SSHD}"; then
 436    AC_MSG_NOTICE([sshd not found as ${SSHD}, sshd tests disabled])
 437    SSHD_ENABLED="no"
 438  else
 439    AC_MSG_NOTICE([using SSHD=$SSHD for tests])
 440  fi
 441fi
 442if test "$SSHD_ENABLED" = "no"; then
 443  SSHD=""
 444  SFTPD=""
 445else
 446  if test -x "/usr/libexec/sftp-server"; then
 447    dnl common location on macOS)
 448    SFTPD="/usr/libexec/sftp-server"
 449  elif test -x "/usr/lib/openssh/sftp-server"; then
 450    dnl common location on debian
 451    SFTPD="/usr/lib/openssh/sftp-server"
 452  else
 453    AC_PATH_PROG([SFTPD], [sftp-server])
 454    if test -z "$SFTPD"; then
 455      AC_PATH_PROG([SFTPD], [sftp-server])
 456    fi
 457  fi
 458fi
 459AC_SUBST(SSHD)
 460AC_SUBST(SFTPD)
 461
 462dnl the nghttpx we might use in httpd testing
 463if test -n "$TEST_NGHTTPX" && test "x$TEST_NGHTTPX" != "xnghttpx"; then
 464  HTTPD_NGHTTPX="$TEST_NGHTTPX"
 465else
 466  AC_PATH_PROG([HTTPD_NGHTTPX], [nghttpx], [],
 467    [$PATH:/usr/bin:/usr/local/bin])
 468fi
 469AC_SUBST(HTTPD_NGHTTPX)
 470
 471dnl the Caddy server we might use in testing
 472if test -n "$TEST_CADDY"; then
 473  CADDY="$TEST_CADDY"
 474else
 475  AC_PATH_PROG([CADDY], [caddy])
 476fi
 477AC_SUBST(CADDY)
 478
 479dnl If no TLS choice has been made, check if it was explicitly disabled or
 480dnl error out to force the user to decide.
 481if test -z "$TLSCHOICE"; then
 482  if test "x$OPT_SSL" != "xno"; then
 483    AC_MSG_ERROR([select TLS backend(s) or disable TLS with --without-ssl.
 484
 485Select from these:
 486
 487  --with-amissl
 488  --with-gnutls
 489  --with-mbedtls
 490  --with-openssl (also works for AWS-LC, BoringSSL and LibreSSL)
 491  --with-rustls
 492  --with-schannel
 493  --with-wolfssl
 494])
 495  fi
 496fi
 497
 498AC_ARG_WITH(darwinssl,,
 499  AC_MSG_ERROR([--with-darwin-ssl and --without-darwin-ssl no longer work!]))
 500
 501dnl
 502dnl Detect the canonical host and target build environment
 503dnl
 504
 505AC_CANONICAL_HOST
 506dnl Get system canonical name
 507AC_DEFINE_UNQUOTED(CURL_OS, "${host}", [cpu-machine-OS])
 508
 509dnl Silence warning: ar: 'u' modifier ignored since 'D' is the default
 510AC_SUBST(AR_FLAGS, [cr])
 511
 512dnl This defines _ALL_SOURCE for AIX
 513CURL_CHECK_AIX_ALL_SOURCE
 514
 515dnl Our configure and build reentrant settings
 516CURL_CONFIGURE_THREAD_SAFE
 517CURL_CONFIGURE_REENTRANT
 518
 519dnl check for how to do large files
 520AC_SYS_LARGEFILE
 521
 522XC_LIBTOOL
 523
 524LT_LANG([Windows Resource])
 525
 526AM_CONDITIONAL(NOT_CURL_CI, test -z "$CURL_CI")
 527
 528dnl
 529dnl Automake conditionals based on libtool related checks
 530dnl
 531
 532AM_CONDITIONAL([CURL_LT_SHLIB_USE_VERSION_INFO],
 533  [test "$xc_lt_shlib_use_version_info" = "yes"])
 534AM_CONDITIONAL([CURL_LT_SHLIB_USE_NO_UNDEFINED],
 535  [test "$xc_lt_shlib_use_no_undefined" = "yes"])
 536AM_CONDITIONAL([CURL_LT_SHLIB_USE_MIMPURE_TEXT],
 537  [test "$xc_lt_shlib_use_mimpure_text" = "yes"])
 538
 539dnl
 540dnl Due to libtool and automake machinery limitations of not allowing
 541dnl specifying separate CPPFLAGS or CFLAGS when compiling objects for
 542dnl inclusion of these in shared or static libraries, we are forced to
 543dnl build using separate configure runs for shared and static libraries
 544dnl on systems where different CPPFLAGS or CFLAGS are mandatory in order
 545dnl to compile objects for each kind of library. Notice that relying on
 546dnl the '-DPIC' CFLAG that libtool provides is not valid given that the
 547dnl user might for example choose to build static libraries with PIC.
 548dnl
 549
 550dnl
 551dnl Make our Makefile.am files use the staticlib CPPFLAG only when strictly
 552dnl targeting a static library and not building its shared counterpart.
 553dnl
 554
 555AM_CONDITIONAL([USE_CPPFLAG_CURL_STATICLIB],
 556  [test "$xc_lt_build_static_only" = "yes"])
 557
 558dnl
 559dnl Make staticlib CPPFLAG variable and its definition visible in output
 560dnl files unconditionally, providing an empty definition unless strictly
 561dnl targeting a static library and not building its shared counterpart.
 562dnl
 563
 564LIBCURL_PC_CFLAGS_PRIVATE='-DCURL_STATICLIB'
 565AC_SUBST(LIBCURL_PC_CFLAGS_PRIVATE)
 566
 567LIBCURL_PC_CFLAGS=
 568if test "$xc_lt_build_static_only" = "yes"; then
 569  LIBCURL_PC_CFLAGS="${LIBCURL_PC_CFLAGS_PRIVATE}"
 570fi
 571AC_SUBST([LIBCURL_PC_CFLAGS])
 572
 573dnl **********************************************************************
 574dnl platform/compiler/architecture specific checks/flags
 575dnl **********************************************************************
 576
 577CURL_CHECK_COMPILER
 578dnl for --enable-code-coverage
 579CURL_COVERAGE
 580CURL_CHECK_NATIVE_WINDOWS
 581
 582curl_cv_winuwp='no'
 583if test "$curl_cv_native_windows" = "yes"; then
 584  case "$CPPFLAGS" in
 585    *-DWINSTORECOMPAT*) curl_cv_winuwp='yes';;
 586  esac
 587
 588  AC_MSG_CHECKING([if building for Windows Vista or newer])
 589  AC_COMPILE_IFELSE([
 590    AC_LANG_PROGRAM([[
 591      #include <windows.h>
 592    ]],[[
 593      #if (_WIN32_WINNT < 0x600)
 594      #error
 595      #endif
 596    ]])
 597  ],[
 598    AC_MSG_RESULT([yes])
 599  ],[
 600    AC_MSG_RESULT([no])
 601    AC_MSG_ERROR([Building for Windows Vista or newer is required.])
 602  ])
 603fi
 604
 605CURL_SET_COMPILER_BASIC_OPTS
 606CURL_SET_COMPILER_DEBUG_OPTS
 607CURL_SET_COMPILER_OPTIMIZE_OPTS
 608CURL_SET_COMPILER_WARNING_OPTS
 609
 610if test "$compiler_id" = "INTEL_UNIX_C"; then
 611  if test "$compiler_num" -ge "1000"; then
 612    dnl icc 10.X or later
 613    CFLAGS="$CFLAGS -shared-intel"
 614  elif test "$compiler_num" -ge "900"; then
 615    dnl icc 9.X specific
 616    CFLAGS="$CFLAGS -i-dynamic"
 617  fi
 618fi
 619
 620case $host in
 621  *msdosdjgpp)
 622    if test "$compiler_num" -ge "1000"; then
 623      dnl Avoid warnings in DJGPP's built-in FD_SET() macro
 624      CFLAGS="$CFLAGS -Wno-arith-conversion"
 625    fi
 626    ;;
 627esac
 628
 629CURL_CFLAG_EXTRAS=""
 630if test "$want_werror" = "yes"; then
 631  CURL_CFLAG_EXTRAS="-Werror"
 632  if test "$compiler_id" = "GNU_C"; then
 633    dnl enable -pedantic-errors for GCC 5 and later,
 634    dnl as before that it was the same as -Werror=pedantic
 635    if test "$compiler_num" -ge "500"; then
 636      CURL_CFLAG_EXTRAS="$CURL_CFLAG_EXTRAS -pedantic-errors"
 637    fi
 638  elif test "$compiler_id" = "CLANG" || test "$compiler_id" = "APPLECLANG"; then
 639    CURL_CFLAG_EXTRAS="$CURL_CFLAG_EXTRAS -pedantic-errors"
 640  fi
 641fi
 642AC_SUBST(CURL_CFLAG_EXTRAS)
 643AM_CONDITIONAL(CURL_WERROR, test "$want_werror" = "yes")
 644
 645CURL_CHECK_COMPILER_HALT_ON_ERROR
 646CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
 647CURL_CHECK_COMPILER_PROTOTYPE_MISMATCH
 648CURL_CHECK_COMPILER_SYMBOL_HIDING
 649
 650supports_unittests=yes
 651dnl cross-compilation of unit tests static library/programs fails when
 652dnl libcurl shared library is built. This might be due to a libtool or
 653dnl automake issue. In this case we disable unit tests.
 654if test "$cross_compiling" != "no" &&
 655   test "$enable_shared" != "no"; then
 656  supports_unittests=no
 657fi
 658
 659dnl IRIX 6.5.24 gcc 3.3 autobuilds fail unittests library compilation due to
 660dnl a problem related with OpenSSL headers and library versions not matching.
 661dnl Disable unit tests while time to further investigate this is found.
 662case $host in
 663  mips-sgi-irix6.5)
 664    if test "$compiler_id" = "GNU_C"; then
 665      supports_unittests=no
 666    fi
 667    ;;
 668esac
 669
 670dnl All AIX autobuilds fails unit tests linking against unittests library
 671dnl due to unittests library being built with no symbols or members. Libtool ?
 672dnl Disable unit tests while time to further investigate this is found.
 673case $host_os in
 674  aix*)
 675    supports_unittests=no
 676    ;;
 677esac
 678
 679AM_CONDITIONAL(BUILD_UNITTESTS, test "$supports_unittests" = "yes")
 680
 681dnl In order to detect support of sendmmsg() and accept4(), we need to escape
 682dnl the POSIX jail by defining _GNU_SOURCE or <sys/socket.h> does not expose it.
 683case $host_os in
 684  *linux*|cygwin*|msys*|gnu*)
 685    CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
 686    ;;
 687esac
 688
 689AM_CONDITIONAL(CLANG, test "$compiler_id" = "APPLECLANG" || test "$compiler_id" = "CLANG")
 690
 691dnl **********************************************************************
 692dnl Compilation based checks should not be done before this point.
 693dnl **********************************************************************
 694
 695CURL_CHECK_WIN32_CRYPTO
 696
 697curl_cv_apple='no'
 698case $host in
 699  *-apple-*) curl_cv_apple='yes';;
 700esac
 701
 702if test "$curl_cv_apple" = "yes"; then
 703  CURL_DARWIN_CFLAGS
 704  CURL_SUPPORTS_BUILTIN_AVAILABLE
 705fi
 706
 707AM_CONDITIONAL([HAVE_WINDRES],
 708  [test "$curl_cv_native_windows" = "yes" && test -n "${RC}"])
 709
 710if test "$curl_cv_native_windows" = "yes"; then
 711  AM_COND_IF([HAVE_WINDRES],,
 712    [AC_MSG_ERROR([windres not found in PATH. Windows builds require windres. Cannot continue.])])
 713fi
 714
 715dnl ----------------------------------------
 716dnl whether use "unity" mode for lib and src
 717dnl ----------------------------------------
 718
 719want_unity='no'
 720AC_MSG_CHECKING([whether to build libcurl and curl in "unity" mode])
 721AC_ARG_ENABLE(unity,
 722AS_HELP_STRING([--enable-unity],[Enable unity mode])
 723AS_HELP_STRING([--disable-unity],[Disable unity (default)]),
 724[ case "$enableval" in
 725  yes)
 726    want_unity='yes'
 727    AC_MSG_RESULT([yes])
 728    ;;
 729  *)
 730    AC_MSG_RESULT([no])
 731    ;;
 732  esac ],
 733    AC_MSG_RESULT([no])
 734)
 735if test -z "$PERL" && test "$want_unity" = "yes"; then
 736  AC_MSG_WARN([perl was not found. Cannot enable unity.])
 737  want_unity='no'
 738fi
 739AM_CONDITIONAL([USE_UNITY], [test "$want_unity" = "yes"])
 740
 741dnl ************************************************************
 742dnl switch off particular protocols
 743dnl
 744AC_MSG_CHECKING([whether to support http])
 745AC_ARG_ENABLE(http,
 746AS_HELP_STRING([--enable-http],[Enable HTTP support])
 747AS_HELP_STRING([--disable-http],[Disable HTTP support]),
 748[ case "$enableval" in
 749  no)
 750    AC_MSG_RESULT(no)
 751    AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP])
 752    disable_http="yes"
 753    AC_MSG_WARN([disable HTTP disables FTP over proxy, IPFS and RTSP])
 754    CURL_DISABLE_HTTP=1
 755    AC_DEFINE(CURL_DISABLE_IPFS, 1, [to disable IPFS])
 756    CURL_DISABLE_IPFS=1
 757    AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
 758    CURL_DISABLE_RTSP=1
 759    dnl toggle off alt-svc too when HTTP is disabled
 760    AC_DEFINE(CURL_DISABLE_ALTSVC, 1, [disable alt-svc])
 761    AC_DEFINE(CURL_DISABLE_HSTS, 1, [disable HSTS])
 762    curl_h1_msg="no      (--enable-http)"
 763    curl_altsvc_msg="no";
 764    curl_hsts_msg="no      (--enable-hsts)";
 765    enable_altsvc="no"
 766    hsts="no"
 767    ;;
 768  *)
 769    AC_MSG_RESULT(yes)
 770    ;;
 771  esac ],
 772    AC_MSG_RESULT(yes)
 773)
 774AC_MSG_CHECKING([whether to support ftp])
 775AC_ARG_ENABLE(ftp,
 776AS_HELP_STRING([--enable-ftp],[Enable FTP support])
 777AS_HELP_STRING([--disable-ftp],[Disable FTP support]),
 778[ case "$enableval" in
 779  no)
 780    AC_MSG_RESULT(no)
 781    AC_DEFINE(CURL_DISABLE_FTP, 1, [to disable FTP])
 782    CURL_DISABLE_FTP=1
 783    ;;
 784  *)
 785    AC_MSG_RESULT(yes)
 786    ;;
 787  esac ],
 788    AC_MSG_RESULT(yes)
 789)
 790AC_MSG_CHECKING([whether to support file])
 791AC_ARG_ENABLE(file,
 792AS_HELP_STRING([--enable-file],[Enable FILE support])
 793AS_HELP_STRING([--disable-file],[Disable FILE support]),
 794[ case "$enableval" in
 795  no)
 796    AC_MSG_RESULT(no)
 797    AC_DEFINE(CURL_DISABLE_FILE, 1, [to disable FILE])
 798    CURL_DISABLE_FILE=1
 799    ;;
 800  *)
 801    AC_MSG_RESULT(yes)
 802    ;;
 803  esac ],
 804    AC_MSG_RESULT(yes)
 805)
 806AC_MSG_CHECKING([whether to support IPFS])
 807AC_ARG_ENABLE(ipfs,
 808AS_HELP_STRING([--enable-ipfs],[Enable IPFS support])
 809AS_HELP_STRING([--disable-ipfs],[Disable IPFS support]),
 810[ case "$enableval" in
 811  no)
 812    AC_MSG_RESULT(no)
 813    AC_DEFINE(CURL_DISABLE_IPFS, 1, [to disable IPFS])
 814    CURL_DISABLE_IPFS=1
 815    ;;
 816  *)
 817    if test "$CURL_DISABLE_HTTP" = "1"; then
 818      AC_MSG_ERROR(HTTP support needs to be enabled in order to enable IPFS support!)
 819    else
 820      AC_MSG_RESULT(yes)
 821      curl_ipfs_msg="enabled"
 822    fi
 823    ;;
 824  esac ],
 825    if test "$CURL_DISABLE_HTTP" != "1"; then
 826      AC_MSG_RESULT(yes)
 827      curl_ipfs_msg="enabled"
 828    else
 829      AC_MSG_RESULT(no)
 830    fi
 831)
 832AC_MSG_CHECKING([whether to support ldap])
 833AC_ARG_ENABLE(ldap,
 834AS_HELP_STRING([--enable-ldap],[Enable LDAP support])
 835AS_HELP_STRING([--disable-ldap],[Disable LDAP support]),
 836[ case "$enableval" in
 837  no)
 838    AC_MSG_RESULT(no)
 839    AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
 840    CURL_DISABLE_LDAP=1
 841    ;;
 842  yes)
 843    ldap_askedfor="yes"
 844    AC_MSG_RESULT(yes)
 845    ;;
 846  *)
 847    AC_MSG_RESULT(yes)
 848    ;;
 849  esac ],[
 850    AC_MSG_RESULT(yes) ]
 851)
 852AC_MSG_CHECKING([whether to support ldaps])
 853AC_ARG_ENABLE(ldaps,
 854AS_HELP_STRING([--enable-ldaps],[Enable LDAPS support])
 855AS_HELP_STRING([--disable-ldaps],[Disable LDAPS support]),
 856[ case "$enableval" in
 857  no)
 858    AC_MSG_RESULT(no)
 859    AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
 860    CURL_DISABLE_LDAPS=1
 861    ;;
 862  *)
 863    if test "$CURL_DISABLE_LDAP" = "1"; then
 864      AC_MSG_RESULT(LDAP needs to be enabled to support LDAPS)
 865      AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
 866      CURL_DISABLE_LDAPS=1
 867    else
 868      AC_MSG_RESULT(yes)
 869      AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
 870      HAVE_LDAP_SSL=1
 871    fi
 872    ;;
 873  esac ],[
 874    if test "$CURL_DISABLE_LDAP" = "1"; then
 875      AC_MSG_RESULT(no)
 876      AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
 877      CURL_DISABLE_LDAPS=1
 878    else
 879      AC_MSG_RESULT(yes)
 880      AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
 881      HAVE_LDAP_SSL=1
 882    fi ]
 883)
 884
 885AC_MSG_CHECKING([whether to support rtsp])
 886AC_ARG_ENABLE(rtsp,
 887AS_HELP_STRING([--enable-rtsp],[Enable RTSP support])
 888AS_HELP_STRING([--disable-rtsp],[Disable RTSP support]),
 889[ case "$enableval" in
 890    no)
 891    AC_MSG_RESULT(no)
 892    AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
 893    CURL_DISABLE_RTSP=1
 894    ;;
 895  *)
 896    if test "$CURL_DISABLE_HTTP" = "1"; then
 897      AC_MSG_ERROR(HTTP support needs to be enabled in order to enable RTSP support!)
 898    else
 899      AC_MSG_RESULT(yes)
 900      curl_rtsp_msg="enabled"
 901    fi
 902    ;;
 903  esac ],
 904    if test "$CURL_DISABLE_HTTP" != "1"; then
 905      AC_MSG_RESULT(yes)
 906      curl_rtsp_msg="enabled"
 907    else
 908      AC_MSG_RESULT(no)
 909    fi
 910)
 911
 912AC_MSG_CHECKING([whether to support proxies])
 913AC_ARG_ENABLE(proxy,
 914AS_HELP_STRING([--enable-proxy],[Enable proxy support])
 915AS_HELP_STRING([--disable-proxy],[Disable proxy support]),
 916[ case "$enableval" in
 917  no)
 918    AC_MSG_RESULT(no)
 919    AC_DEFINE(CURL_DISABLE_PROXY, 1, [to disable proxies])
 920    CURL_DISABLE_PROXY=1
 921    https_proxy="no"
 922    ;;
 923  *)
 924    AC_MSG_RESULT(yes)
 925    ;;
 926  esac ],
 927    AC_MSG_RESULT(yes)
 928)
 929
 930AC_MSG_CHECKING([whether to support dict])
 931AC_ARG_ENABLE(dict,
 932AS_HELP_STRING([--enable-dict],[Enable DICT support])
 933AS_HELP_STRING([--disable-dict],[Disable DICT support]),
 934[ case "$enableval" in
 935  no)
 936    AC_MSG_RESULT(no)
 937    AC_DEFINE(CURL_DISABLE_DICT, 1, [to disable DICT])
 938    CURL_DISABLE_DICT=1
 939    ;;
 940  *)
 941    AC_MSG_RESULT(yes)
 942    ;;
 943  esac ],
 944    AC_MSG_RESULT(yes)
 945)
 946
 947AC_MSG_CHECKING([whether to support telnet])
 948AC_ARG_ENABLE(telnet,
 949AS_HELP_STRING([--enable-telnet],[Enable TELNET support])
 950AS_HELP_STRING([--disable-telnet],[Disable TELNET support]),
 951[ case "$enableval" in
 952  no)
 953    AC_MSG_RESULT(no)
 954    AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET])
 955    CURL_DISABLE_TELNET=1
 956    ;;
 957  *)
 958    AC_MSG_RESULT(yes)
 959    ;;
 960  esac ],
 961    AC_MSG_RESULT(yes)
 962)
 963
 964if test "$curl_cv_winuwp" = "yes"; then
 965  AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET])
 966  CURL_DISABLE_TELNET=1
 967fi
 968
 969AC_MSG_CHECKING([whether to support tftp])
 970AC_ARG_ENABLE(tftp,
 971AS_HELP_STRING([--enable-tftp],[Enable TFTP support])
 972AS_HELP_STRING([--disable-tftp],[Disable TFTP support]),
 973[ case "$enableval" in
 974  no)
 975    AC_MSG_RESULT(no)
 976    AC_DEFINE(CURL_DISABLE_TFTP, 1, [to disable TFTP])
 977    CURL_DISABLE_TFTP=1
 978    ;;
 979  *)
 980    AC_MSG_RESULT(yes)
 981    ;;
 982  esac ],
 983    AC_MSG_RESULT(yes)
 984)
 985
 986AC_MSG_CHECKING([whether to support pop3])
 987AC_ARG_ENABLE(pop3,
 988AS_HELP_STRING([--enable-pop3],[Enable POP3 support])
 989AS_HELP_STRING([--disable-pop3],[Disable POP3 support]),
 990[ case "$enableval" in
 991  no)
 992    AC_MSG_RESULT(no)
 993    AC_DEFINE(CURL_DISABLE_POP3, 1, [to disable POP3])
 994    CURL_DISABLE_POP3=1
 995    ;;
 996  *)
 997    AC_MSG_RESULT(yes)
 998    ;;
 999  esac ],
1000    AC_MSG_RESULT(yes)
1001)
1002
1003AC_MSG_CHECKING([whether to support imap])
1004AC_ARG_ENABLE(imap,
1005AS_HELP_STRING([--enable-imap],[Enable IMAP support])
1006AS_HELP_STRING([--disable-imap],[Disable IMAP support]),
1007[ case "$enableval" in
1008  no)
1009    AC_MSG_RESULT(no)
1010    AC_DEFINE(CURL_DISABLE_IMAP, 1, [to disable IMAP])
1011    CURL_DISABLE_IMAP=1
1012    ;;
1013  *)
1014    AC_MSG_RESULT(yes)
1015    ;;
1016  esac ],
1017    AC_MSG_RESULT(yes)
1018)
1019
1020AC_MSG_CHECKING([whether to support smb])
1021AC_ARG_ENABLE(smb,
1022AS_HELP_STRING([--enable-smb],[Enable SMB support])
1023AS_HELP_STRING([--disable-smb],[Disable SMB support]),
1024[ case "$enableval" in
1025  yes)
1026    AC_MSG_RESULT(yes)
1027    AC_DEFINE(CURL_ENABLE_SMB, 1, [to enable SMB])
1028    CURL_ENABLE_SMB=1
1029    ;;
1030  *)
1031    AC_MSG_RESULT(no)
1032    ;;
1033  esac ],
1034    AC_MSG_RESULT(no)
1035)
1036
1037AC_MSG_CHECKING([whether to support smtp])
1038AC_ARG_ENABLE(smtp,
1039AS_HELP_STRING([--enable-smtp],[Enable SMTP support])
1040AS_HELP_STRING([--disable-smtp],[Disable SMTP support]),
1041[ case "$enableval" in
1042  no)
1043    AC_MSG_RESULT(no)
1044    AC_DEFINE(CURL_DISABLE_SMTP, 1, [to disable SMTP])
1045    CURL_DISABLE_SMTP=1
1046    ;;
1047  *)
1048    AC_MSG_RESULT(yes)
1049    ;;
1050  esac ],
1051    AC_MSG_RESULT(yes)
1052)
1053
1054AC_MSG_CHECKING([whether to support gopher])
1055AC_ARG_ENABLE(gopher,
1056AS_HELP_STRING([--enable-gopher],[Enable Gopher support])
1057AS_HELP_STRING([--disable-gopher],[Disable Gopher support]),
1058[ case "$enableval" in
1059  no)
1060    AC_MSG_RESULT(no)
1061    AC_DEFINE(CURL_DISABLE_GOPHER, 1, [to disable Gopher])
1062    CURL_DISABLE_GOPHER=1
1063    ;;
1064  *)
1065    AC_MSG_RESULT(yes)
1066    ;;
1067  esac ],
1068    AC_MSG_RESULT(yes)
1069)
1070
1071AC_MSG_CHECKING([whether to support mqtt])
1072AC_ARG_ENABLE(mqtt,
1073AS_HELP_STRING([--enable-mqtt],[Enable MQTT support])
1074AS_HELP_STRING([--disable-mqtt],[Disable MQTT support]),
1075[ case "$enableval" in
1076  no)
1077    AC_MSG_RESULT(no)
1078    AC_DEFINE(CURL_DISABLE_MQTT, 1, [to disable MQTT])
1079    CURL_DISABLE_MQTT=1
1080    ;;
1081  *)
1082    AC_MSG_RESULT(yes)
1083    ;;
1084  esac ],
1085    AC_MSG_RESULT(no)
1086)
1087
1088AC_MSG_CHECKING([enable curl_global_init_mem debug build])
1089AC_ARG_ENABLE(init-mem-debug,
1090AS_HELP_STRING([--enable-init-mem-debug],[curl_global_init_mem debug])
1091AS_HELP_STRING([--disable-init-mem-debug],[]),
1092[ case "$enableval" in
1093  yes)
1094    AC_MSG_RESULT(yes)
1095    AC_DEFINE(CURL_DEBUG_GLOBAL_MEM, 1, [curl_debug_global_mem debug build])
1096    SUPPORT_FEATURES="$SUPPORT_FEATURES global-mem-debug"
1097    ;;
1098  *)
1099    AC_MSG_RESULT(no)
1100    ;;
1101  esac ],
1102    AC_MSG_RESULT(no)
1103)
1104
1105dnl **********************************************************************
1106dnl Check for built-in manual
1107dnl **********************************************************************
1108
1109AC_MSG_CHECKING([whether to provide built-in manual])
1110AC_ARG_ENABLE(manual,
1111AS_HELP_STRING([--enable-manual],[Enable built-in manual])
1112AS_HELP_STRING([--disable-manual],[Disable built-in manual]),
1113[ case "$enableval" in
1114  no)
1115    AC_MSG_RESULT(no)
1116    ;;
1117  *)
1118    AC_MSG_RESULT(yes)
1119    USE_MANUAL="1"
1120    ;;
1121  esac ],
1122    AC_MSG_RESULT(yes)
1123    USE_MANUAL="1"
1124)
1125dnl The actual use of the USE_MANUAL variable is done much later in this
1126dnl script to allow other actions to disable it as well.
1127
1128dnl **********************************************************************
1129dnl Check whether to build documentation
1130dnl **********************************************************************
1131
1132AC_MSG_CHECKING([whether to build documentation])
1133AC_ARG_ENABLE(docs,
1134AS_HELP_STRING([--enable-docs],[Enable documentation])
1135AS_HELP_STRING([--disable-docs],[Disable documentation]),
1136[ case "$enableval" in
1137  no)
1138    AC_MSG_RESULT(no)
1139    BUILD_DOCS=0
1140    dnl disable manual too because it needs built documentation
1141    USE_MANUAL=0
1142    curl_docs_msg="no"
1143    ;;
1144  *)
1145    AC_MSG_RESULT(yes)
1146    BUILD_DOCS=1
1147    ;;
1148  esac ],
1149    AC_MSG_RESULT(yes)
1150    BUILD_DOCS=1
1151)
1152if test -z "$PERL" && test "$BUILD_DOCS" != "0"; then
1153  AC_MSG_WARN([perl was not found. Cannot build documentation.])
1154  BUILD_DOCS=0
1155fi
1156
1157dnl ************************************************************
1158dnl disable C code generation support
1159dnl
1160AC_MSG_CHECKING([whether to enable generation of C code])
1161AC_ARG_ENABLE(libcurl_option,
1162AS_HELP_STRING([--enable-libcurl-option],[Enable --libcurl C code generation support])
1163AS_HELP_STRING([--disable-libcurl-option],[Disable --libcurl C code generation support]),
1164[ case "$enableval" in
1165  no)
1166    AC_MSG_RESULT(no)
1167    AC_DEFINE(CURL_DISABLE_LIBCURL_OPTION, 1, [to disable --libcurl C code generation option])
1168    curl_libcurl_msg="no"
1169    ;;
1170  *)
1171    AC_MSG_RESULT(yes)
1172    ;;
1173  esac ],
1174    AC_MSG_RESULT(yes)
1175)
1176
1177dnl **********************************************************************
1178dnl Checks for libraries.
1179dnl **********************************************************************
1180
1181AC_MSG_CHECKING([whether to use libgcc])
1182AC_ARG_ENABLE(libgcc,
1183AS_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
1184[ case "$enableval" in
1185  yes)
1186    LIBS="-lgcc $LIBS"
1187    AC_MSG_RESULT(yes)
1188    ;;
1189  *)
1190    AC_MSG_RESULT(no)
1191    ;;
1192  esac ],
1193    AC_MSG_RESULT(no)
1194)
1195
1196AC_MSG_CHECKING([whether to use libbacktrace])
1197AC_ARG_WITH(backtrace,
1198AS_HELP_STRING([--enable-backtrace],[use libbacktrace when linking]),
1199[ case "$enableval" in
1200  yes)
1201    LIBS="-lbacktrace $LIBS"
1202    AC_DEFINE(USE_BACKTRACE, 1, [if libbacktrace is in use])
1203    AC_MSG_RESULT(yes)
1204    ;;
1205  *)
1206    AC_MSG_RESULT(no)
1207    ;;
1208  esac ],
1209    AC_MSG_RESULT(no)
1210)
1211
1212CURL_CHECK_LIB_XNET
1213
1214dnl gethostbyname without lib or in the nsl lib?
1215AC_CHECK_FUNC(gethostbyname,
1216  [
1217    HAVE_GETHOSTBYNAME="1"
1218  ],
1219  [
1220    AC_CHECK_LIB(nsl, gethostbyname,
1221      [
1222        HAVE_GETHOSTBYNAME="1"
1223        LIBS="-lnsl $LIBS"
1224      ]
1225    )
1226  ]
1227)
1228
1229if test "$HAVE_GETHOSTBYNAME" != "1"; then
1230  dnl gethostbyname in the socket lib?
1231  AC_CHECK_LIB(socket, gethostbyname,
1232    [
1233      HAVE_GETHOSTBYNAME="1"
1234      LIBS="-lsocket $LIBS"
1235    ]
1236  )
1237fi
1238
1239if test "$HAVE_GETHOSTBYNAME" != "1"; then
1240  dnl gethostbyname in the watt lib?
1241  clean_CPPFLAGS=$CPPFLAGS
1242  clean_LDFLAGS=$LDFLAGS
1243  CPPFLAGS="-I${WATT_ROOT}/inc"
1244  LDFLAGS="-L${WATT_ROOT}/lib"
1245  AC_CHECK_LIB(watt, gethostbyname,
1246    [
1247      HAVE_GETHOSTBYNAME="1"
1248      LIBS="-lwatt $LIBS"
1249      AC_DEFINE(USE_WATT32, 1, [if Watt-32 is in use])
1250    ],
1251    [
1252      CPPFLAGS=$clean_CPPFLAGS
1253      LDFLAGS=$clean_LDFLAGS
1254    ]
1255  )
1256fi
1257
1258dnl At least one system has been identified to require BOTH nsl and socket
1259dnl libs at the same time to link properly.
1260if test "$HAVE_GETHOSTBYNAME" != "1"; then
1261  AC_MSG_CHECKING([for gethostbyname with both nsl and socket libs])
1262  my_ac_save_LIBS=$LIBS
1263  LIBS="-lnsl -lsocket $LIBS"
1264  AC_LINK_IFELSE([
1265    AC_LANG_PROGRAM([[
1266    ]],[[
1267      gethostbyname();
1268    ]])
1269  ],[
1270    AC_MSG_RESULT([yes])
1271    HAVE_GETHOSTBYNAME="1"
1272  ],[
1273    AC_MSG_RESULT([no])
1274    LIBS=$my_ac_save_LIBS
1275  ])
1276fi
1277
1278dnl In UWP mode gethostbyname gets detected via the core libs, but some
1279dnl code (in6addr_any) still need ws2_32, so let us detect and add it.
1280if test "$HAVE_GETHOSTBYNAME" != "1" || test "$curl_cv_winuwp" = "yes"; then
1281  if test "$curl_cv_native_windows" = "yes"; then
1282    dnl This is for Winsock systems
1283    winsock_LIB="-lws2_32"
1284    if test "$curl_cv_winuwp" != "yes"; then
1285      winsock_LIB="$winsock_LIB -liphlpapi"
1286    fi
1287    my_ac_save_LIBS=$LIBS
1288    LIBS="$winsock_LIB $LIBS"
1289    AC_MSG_CHECKING([for gethostbyname in $winsock_LIB])
1290    AC_LINK_IFELSE([
1291      AC_LANG_PROGRAM([[
1292        #ifdef _WIN32
1293        #ifndef WIN32_LEAN_AND_MEAN
1294        #define WIN32_LEAN_AND_MEAN
1295        #endif
1296        #include <winsock2.h>
1297        #endif
1298      ]],[[
1299        gethostbyname("localhost");
1300      ]])
1301    ],[
1302      AC_MSG_RESULT([yes])
1303      HAVE_GETHOSTBYNAME="1"
1304    ],[
1305      AC_MSG_RESULT([no])
1306      winsock_LIB=""
1307      LIBS=$my_ac_save_LIBS
1308    ])
1309  fi
1310fi
1311
1312if test "$HAVE_GETHOSTBYNAME" != "1"; then
1313  dnl This is for Minix 3.1
1314  AC_MSG_CHECKING([for gethostbyname for Minix 3])
1315  AC_LINK_IFELSE([
1316    AC_LANG_PROGRAM([[
1317      /* Older Minix versions may need <net/gen/netdb.h> here instead */
1318      #include <netdb.h>
1319    ]],[[
1320      gethostbyname("localhost");
1321    ]])
1322  ],[
1323    AC_MSG_RESULT([yes])
1324    HAVE_GETHOSTBYNAME="1"
1325  ],[
1326    AC_MSG_RESULT([no])
1327  ])
1328fi
1329
1330if test "$HAVE_GETHOSTBYNAME" != "1"; then
1331  dnl This is for eCos with a stubbed DNS implementation
1332  AC_MSG_CHECKING([for gethostbyname for eCos])
1333  AC_LINK_IFELSE([
1334    AC_LANG_PROGRAM([[
1335      #include <stdio.h>
1336      #include <netdb.h>
1337    ]],[[
1338      gethostbyname("localhost");
1339    ]])
1340  ],[
1341    AC_MSG_RESULT([yes])
1342    HAVE_GETHOSTBYNAME="1"
1343  ],[
1344    AC_MSG_RESULT([no])
1345  ])
1346fi
1347
1348if test "$HAVE_GETHOSTBYNAME" != "1" || test "${with_amissl+set}" = "set"; then
1349  dnl This is for AmigaOS with bsdsocket.library - needs testing before -lnet
1350  AC_MSG_CHECKING([for gethostbyname for AmigaOS bsdsocket.library])
1351  AC_LINK_IFELSE([
1352    AC_LANG_PROGRAM([[
1353      #define __USE_INLINE__
1354      #include <proto/bsdsocket.h>
1355      #ifdef __amigaos4__
1356      struct SocketIFace *ISocket = NULL;
1357      #else
1358      struct Library *SocketBase = NULL;
1359      #endif
1360    ]],[[
1361      unsigned char host[] = "localhost";
1362      gethostbyname(host);
1363    ]])
1364  ],[
1365    AC_MSG_RESULT([yes])
1366    HAVE_GETHOSTBYNAME="1"
1367    HAVE_PROTO_BSDSOCKET_H="1"
1368    AC_DEFINE(HAVE_PROTO_BSDSOCKET_H, 1, [if Amiga bsdsocket.library is in use])
1369  ],[
1370    AC_MSG_RESULT([no])
1371  ])
1372fi
1373
1374if test "$HAVE_GETHOSTBYNAME" != "1"; then
1375  dnl gethostbyname in the network lib - for Haiku OS
1376  AC_CHECK_LIB(network, gethostbyname,
1377    [
1378      HAVE_GETHOSTBYNAME="1"
1379      LIBS="-lnetwork $LIBS"
1380    ]
1381  )
1382fi
1383
1384CURL_CHECK_LIBS_CONNECT
1385
1386dnl **********************************************************************
1387dnl In case that function clock_gettime with monotonic timer is available,
1388dnl check for additional required libraries.
1389dnl **********************************************************************
1390CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
1391
1392dnl Check for even better option
1393CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC_RAW
1394
1395dnl **********************************************************************
1396dnl The preceding library checks are all potentially useful for test
1397dnl servers and libtest cases which require networking and clock_gettime
1398dnl support.  Save the list of required libraries at this point for use
1399dnl while linking those test servers and programs.
1400dnl **********************************************************************
1401CURL_NETWORK_AND_TIME_LIBS=$LIBS
1402
1403dnl **********************************************************************
1404dnl Check for the presence of ZLIB libraries and headers
1405dnl **********************************************************************
1406
1407dnl Check for & handle argument to --with-zlib.
1408
1409clean_CPPFLAGS=$CPPFLAGS
1410clean_LDFLAGS=$LDFLAGS
1411clean_LIBS=$LIBS
1412ZLIB_LIBS=""
1413AC_ARG_WITH(zlib,
1414AS_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH])
1415AS_HELP_STRING([--without-zlib],[disable use of zlib]),
1416  [OPT_ZLIB="$withval"])
1417
1418if test "x$OPT_ZLIB" = "xno"; then
1419  AC_MSG_WARN([zlib disabled])
1420else
1421  if test "x$OPT_ZLIB" = "xyes"; then
1422    OPT_ZLIB=""
1423  fi
1424
1425  if test -z "$OPT_ZLIB"; then
1426    CURL_CHECK_PKGCONFIG(zlib)
1427
1428    if test "$PKGCONFIG" != "no"; then
1429      ZLIB_LIBS="`$PKGCONFIG --libs-only-l zlib`"
1430      if test -n "$ZLIB_LIBS"; then
1431        LDFLAGS="$LDFLAGS `$PKGCONFIG --libs-only-L zlib`"
1432      else
1433        ZLIB_LIBS="`$PKGCONFIG --libs zlib`"
1434      fi
1435      LIBS="$ZLIB_LIBS $LIBS"
1436      CPPFLAGS="$CPPFLAGS `$PKGCONFIG --cflags zlib`"
1437      OPT_ZLIB=""
1438      HAVE_LIBZ="1"
1439    fi
1440
1441    if test -z "$HAVE_LIBZ"; then
1442
1443      dnl Check for the lib without setting any new path, since many
1444      dnl people have it in the default path
1445
1446      AC_CHECK_LIB(z, inflateEnd,
1447        dnl libz found, set the variable
1448        [
1449          HAVE_LIBZ="1"
1450          ZLIB_LIBS="-lz"
1451          LIBS="$ZLIB_LIBS $LIBS"
1452        ],
1453        dnl if no lib found, try /usr/local
1454        [
1455          OPT_ZLIB="/usr/local"
1456        ]
1457      )
1458    fi
1459  fi
1460
1461  dnl Add a nonempty path to the compiler flags
1462  if test -n "$OPT_ZLIB"; then
1463    CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include"
1464    LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib$libsuff"
1465  fi
1466
1467  AC_CHECK_HEADER(zlib.h,
1468    [
1469      dnl zlib.h was found
1470      HAVE_ZLIB_H="1"
1471      dnl if the lib was not found already, try again with the new paths
1472      if test "$HAVE_LIBZ" != "1"; then
1473        AC_CHECK_LIB(z, gzread,
1474          [
1475            dnl the lib was found!
1476            HAVE_LIBZ="1"
1477            ZLIB_LIBS="-lz"
1478            LIBS="$ZLIB_LIBS $LIBS"
1479          ],
1480          [
1481            CPPFLAGS=$clean_CPPFLAGS
1482            LDFLAGS=$clean_LDFLAGS
1483          ]
1484        )
1485      fi
1486    ],
1487    [
1488      dnl zlib.h was not found, restore the flags
1489      CPPFLAGS=$clean_CPPFLAGS
1490      LDFLAGS=$clean_LDFLAGS]
1491    )
1492
1493  if test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" != "1"; then
1494    AC_MSG_WARN([configure found only the libz lib, not the header file!])
1495    HAVE_LIBZ=""
1496    CPPFLAGS=$clean_CPPFLAGS
1497    LDFLAGS=$clean_LDFLAGS
1498    LIBS=$clean_LIBS
1499    ZLIB_LIBS=""
1500  elif test "$HAVE_LIBZ" != "1" && test "$HAVE_ZLIB_H" = "1"; then
1501    AC_MSG_WARN([configure found only the libz header file, not the lib!])
1502    CPPFLAGS=$clean_CPPFLAGS
1503    LDFLAGS=$clean_LDFLAGS
1504    LIBS=$clean_LIBS
1505    ZLIB_LIBS=""
1506  elif test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" = "1"; then
1507    dnl both header and lib were found!
1508    AC_SUBST(HAVE_LIBZ)
1509    AC_DEFINE(HAVE_LIBZ, 1, [if zlib is available])
1510    LIBS="$ZLIB_LIBS $clean_LIBS"
1511
1512    dnl replace 'HAVE_LIBZ' in the automake makefile.ams
1513    AMFIXLIB="1"
1514    AC_MSG_NOTICE([found both libz and libz.h header])
1515    LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE zlib"
1516    curl_zlib_msg="enabled"
1517  fi
1518fi
1519
1520dnl set variable for use in automakefile(s)
1521AM_CONDITIONAL(HAVE_LIBZ, test "$AMFIXLIB" = "1")
1522AC_SUBST(ZLIB_LIBS)
1523
1524dnl **********************************************************************
1525dnl Check for the presence of BROTLI decoder libraries and headers
1526dnl **********************************************************************
1527
1528dnl Brotli project home page: https://github.com/google/brotli
1529
1530dnl Default to compiler & linker defaults for BROTLI files & libraries.
1531OPT_BROTLI=off
1532AC_ARG_WITH(brotli,
1533AS_HELP_STRING([--with-brotli=PATH],[Where to look for brotli, PATH points to the BROTLI installation;
1534  when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
1535AS_HELP_STRING([--without-brotli], [disable BROTLI]),
1536  OPT_BROTLI=$withval)
1537
1538if test "x$OPT_BROTLI" != "xno"; then
1539  dnl backup the pre-brotli variables
1540  CLEANLDFLAGS="$LDFLAGS"
1541  CLEANLDFLAGSPC="$LDFLAGSPC"
1542  CLEANCPPFLAGS="$CPPFLAGS"
1543  CLEANLIBS="$LIBS"
1544
1545  case "$OPT_BROTLI" in
1546    yes)
1547      dnl --with-brotli (without path) used
1548      CURL_CHECK_PKGCONFIG(libbrotlidec)
1549
1550      if test "$PKGCONFIG" != "no"; then
1551        LIB_BROTLI=`$PKGCONFIG --libs-only-l libbrotlidec`
1552        LD_BROTLI=`$PKGCONFIG --libs-only-L libbrotlidec`
1553        CPP_BROTLI=`$PKGCONFIG --cflags-only-I libbrotlidec`
1554        version=`$PKGCONFIG --modversion libbrotlidec`
1555      fi
1556
1557      CURL_CHECK_PKGCONFIG(libbrotlicommon)
1558
1559      if test "$PKGCONFIG" != "no"; then
1560        LIB_BROTLI="$LIB_BROTLI `$PKGCONFIG --libs-only-l libbrotlicommon`"
1561        LD_BROTLI="$LD_BROTLI `$PKGCONFIG --libs-only-L libbrotlicommon`"
1562        CPP_BROTLI="$CPP_BROTLI `$PKGCONFIG --cflags-only-I libbrotlicommon`"
1563      fi
1564
1565      DIR_BROTLI=`echo $LD_BROTLI | $SED -e 's/^-L//'`
1566      ;;
1567    off)
1568      dnl no --with-brotli option given, just check default places
1569      ;;
1570    *)
1571      dnl use the given --with-brotli spot
1572      PREFIX_BROTLI=$OPT_BROTLI
1573      ;;
1574  esac
1575
1576  dnl if given with a prefix, we set -L and -I based on that
1577  if test -n "$PREFIX_BROTLI"; then
1578    LIB_BROTLI="-lbrotlidec -lbrotlicommon"
1579    LD_BROTLI=-L${PREFIX_BROTLI}/lib$libsuff
1580    CPP_BROTLI=-I${PREFIX_BROTLI}/include
1581    DIR_BROTLI=${PREFIX_BROTLI}/lib$libsuff
1582  fi
1583
1584  LDFLAGS="$LDFLAGS $LD_BROTLI"
1585  LDFLAGSPC="$LDFLAGSPC $LD_BROTLI"
1586  CPPFLAGS="$CPPFLAGS $CPP_BROTLI"
1587  LIBS="$LIB_BROTLI $LIBS"
1588
1589  AC_CHECK_LIB(brotlidec, BrotliDecoderDecompress)
1590
1591  AC_CHECK_HEADERS(brotli/decode.h,
1592    curl_brotli_msg="enabled (libbrotlidec)"
1593    HAVE_BROTLI=1
1594    AC_DEFINE(HAVE_BROTLI, 1, [if BROTLI is in use])
1595  )
1596
1597  if test "x$OPT_BROTLI" != "xoff" &&
1598     test "$HAVE_BROTLI" != "1"; then
1599    AC_MSG_ERROR([BROTLI libs and/or directories were not found where specified!])
1600  fi
1601
1602  if test "$HAVE_BROTLI" = "1"; then
1603    if test -n "$DIR_BROTLI"; then
1604      dnl when the brotli shared libs were found in a path that the runtime
1605      dnl linker does not search through, we need to add it to CURL_LIBRARY_PATH
1606      dnl to prevent further configure tests to fail due to this
1607
1608      if test "$cross_compiling" != "yes"; then
1609        CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_BROTLI"
1610        export CURL_LIBRARY_PATH
1611        AC_MSG_NOTICE([Added $DIR_BROTLI to CURL_LIBRARY_PATH])
1612      fi
1613    fi
1614    LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libbrotlidec libbrotlicommon"
1615  else
1616    dnl no brotli, revert back to clean variables
1617    LDFLAGS=$CLEANLDFLAGS
1618    LDFLAGSPC=$CLEANLDFLAGSPC
1619    CPPFLAGS=$CLEANCPPFLAGS
1620    LIBS=$CLEANLIBS
1621  fi
1622fi
1623
1624dnl **********************************************************************
1625dnl Check for libzstd
1626dnl **********************************************************************
1627
1628dnl Default to compiler & linker defaults for libzstd
1629OPT_ZSTD=off
1630AC_ARG_WITH(zstd,
1631AS_HELP_STRING([--with-zstd=PATH],[Where to look for libzstd, PATH points to the libzstd installation;
1632  when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
1633AS_HELP_STRING([--without-zstd], [disable libzstd]),
1634  OPT_ZSTD=$withval)
1635
1636if test "x$OPT_ZSTD" != "xno"; then
1637  dnl backup the pre-zstd variables
1638  CLEANLDFLAGS="$LDFLAGS"
1639  CLEANLDFLAGSPC="$LDFLAGSPC"
1640  CLEANCPPFLAGS="$CPPFLAGS"
1641  CLEANLIBS="$LIBS"
1642
1643  case "$OPT_ZSTD" in
1644    yes)
1645      dnl --with-zstd (without path) used
1646      CURL_CHECK_PKGCONFIG(libzstd)
1647
1648      if test "$PKGCONFIG" != "no"; then
1649        LIB_ZSTD=`$PKGCONFIG --libs-only-l libzstd`
1650        LD_ZSTD=`$PKGCONFIG --libs-only-L libzstd`
1651        CPP_ZSTD=`$PKGCONFIG --cflags-only-I libzstd`
1652        version=`$PKGCONFIG --modversion libzstd`
1653        DIR_ZSTD=`echo $LD_ZSTD | $SED -e 's/-L//'`
1654      fi
1655
1656      ;;
1657    off)
1658      dnl no --with-zstd option given, just check default places
1659      ;;
1660    *)
1661      dnl use the given --with-zstd spot
1662      PREFIX_ZSTD=$OPT_ZSTD
1663      ;;
1664  esac
1665
1666  dnl if given with a prefix, we set -L and -I based on that
1667  if test -n "$PREFIX_ZSTD"; then
1668    LIB_ZSTD="-lzstd"
1669    LD_ZSTD=-L${PREFIX_ZSTD}/lib$libsuff
1670    CPP_ZSTD=-I${PREFIX_ZSTD}/include
1671    DIR_ZSTD=${PREFIX_ZSTD}/lib$libsuff
1672  fi
1673
1674  LDFLAGS="$LDFLAGS $LD_ZSTD"
1675  LDFLAGSPC="$LDFLAGSPC $LD_ZSTD"
1676  CPPFLAGS="$CPPFLAGS $CPP_ZSTD"
1677  LIBS="$LIB_ZSTD $LIBS"
1678
1679  AC_CHECK_LIB(zstd, ZSTD_createDStream)
1680
1681  AC_CHECK_HEADERS(zstd.h,
1682    curl_zstd_msg="enabled (libzstd)"
1683    HAVE_ZSTD=1
1684    AC_DEFINE(HAVE_ZSTD, 1, [if libzstd is in use])
1685  )
1686
1687  if test "x$OPT_ZSTD" != "xoff" &&
1688     test "$HAVE_ZSTD" != "1"; then
1689    AC_MSG_ERROR([libzstd was not found where specified!])
1690  fi
1691
1692  if test "$HAVE_ZSTD" = "1"; then
1693    if test -n "$DIR_ZSTD"; then
1694      dnl when the zstd shared lib were found in a path that the runtime
1695      dnl linker does not search through, we need to add it to
1696      dnl CURL_LIBRARY_PATH to prevent further configure tests to fail due to
1697      dnl this
1698
1699      if test "$cross_compiling" != "yes"; then
1700        CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_ZSTD"
1701        export CURL_LIBRARY_PATH
1702        AC_MSG_NOTICE([Added $DIR_ZSTD to CURL_LIBRARY_PATH])
1703      fi
1704    fi
1705    LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libzstd"
1706  else
1707    dnl no zstd, revert back to clean variables
1708    LDFLAGS=$CLEANLDFLAGS
1709    LDFLAGSPC=$CLEANLDFLAGSPC
1710    CPPFLAGS=$CLEANCPPFLAGS
1711    LIBS=$CLEANLIBS
1712  fi
1713fi
1714
1715dnl **********************************************************************
1716dnl Checks for IPv6
1717dnl **********************************************************************
1718
1719AC_MSG_CHECKING([whether to enable IPv6])
1720AC_ARG_ENABLE(ipv6,
1721AS_HELP_STRING([--enable-ipv6],[Enable IPv6 (with IPv4) support])
1722AS_HELP_STRING([--disable-ipv6],[Disable IPv6 support]),
1723[ case "$enableval" in
1724  no)
1725    AC_MSG_RESULT(no)
1726    ipv6=no
1727    ;;
1728  *)
1729    AC_MSG_RESULT(yes)
1730    ipv6=yes
1731    ;;
1732  esac ],
1733
1734  AC_COMPILE_IFELSE([
1735    AC_LANG_SOURCE([[
1736      /* are AF_INET6 and sockaddr_in6 available? */
1737      #include <sys/types.h>
1738      #ifdef _WIN32
1739      #include <winsock2.h>
1740      #include <ws2tcpip.h>
1741      #else
1742      #include <sys/socket.h>
1743      #include <netinet/in.h>
1744      #ifdef __TANDEM
1745      #include <netinet/in6.h>
1746      #endif
1747      #endif
1748      int main(void)
1749      {
1750        int s = (int)sizeof(struct sockaddr_in6);
1751        (void)s;
1752        return socket(AF_INET6, SOCK_STREAM, 0) > 0;
1753      }
1754    ]])
1755  ],
1756    AC_MSG_RESULT(yes)
1757    ipv6=yes,
1758    AC_MSG_RESULT(no)
1759    ipv6=no
1760  )
1761)
1762
1763if test "$ipv6" = "yes"; then
1764  curl_ipv6_msg="enabled"
1765  AC_DEFINE(USE_IPV6, 1, [Define if you want to enable IPv6 support])
1766  IPV6_ENABLED=1
1767
1768  AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member])
1769  AC_COMPILE_IFELSE([
1770    AC_LANG_PROGRAM([[
1771      #include <sys/types.h>
1772      #ifdef _WIN32
1773      #include <winsock2.h>
1774      #include <ws2tcpip.h>
1775      #else
1776      #include <netinet/in.h>
1777      #ifdef __TANDEM
1778      #include <netinet/in6.h>
1779      #endif
1780      #endif
1781    ]], [[
1782      struct sockaddr_in6 s;
1783      s.sin6_scope_id = 0;
1784      (void)s;
1785    ]])
1786  ],[
1787    AC_MSG_RESULT([yes])
1788    AC_DEFINE(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID, 1, [Define to 1 if struct sockaddr_in6 has the sin6_scope_id member])
1789  ],[
1790    AC_MSG_RESULT([no])
1791  ])
1792fi
1793
1794dnl **********************************************************************
1795dnl Check if the operating system allows programs to write to their own argv[]
1796dnl **********************************************************************
1797
1798AC_MSG_CHECKING([if argv can be written to])
1799CURL_RUN_IFELSE([[
1800int main(int argc, char **argv)
1801{
1802#ifdef _WIN32
1803  /* on Windows, writing to the argv does not hide the argument in
1804     process lists so it can just be skipped */
1805  (void)argc;
1806  (void)argv;
1807  return 1;
1808#else
1809  (void)argc;
1810  argv[0][0] = ' ';
1811  return (argv[0][0] == ' ') ? 0 : 1;
1812#endif
1813}
1814]],[
1815  curl_cv_writable_argv=yes
1816],[
1817  curl_cv_writable_argv=no
1818],[
1819  curl_cv_writable_argv=cross
1820])
1821if test "$curl_cv_writable_argv" = "cross" && test "$curl_cv_apple" = "yes"; then
1822  curl_cv_writable_argv=yes
1823fi
1824case $curl_cv_writable_argv in
1825  yes)
1826    AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv])
1827    AC_MSG_RESULT(yes)
1828    ;;
1829  no)
1830    AC_MSG_RESULT(no)
1831    ;;
1832  *)
1833    AC_MSG_RESULT(no)
1834    AC_MSG_WARN([the previous check could not be made default was used])
1835    ;;
1836esac
1837
1838dnl **********************************************************************
1839dnl Check for GSS-API libraries
1840dnl **********************************************************************
1841
1842dnl check for GSS-API stuff in the /usr as default
1843
1844GSSAPI_ROOT="/usr"
1845AC_ARG_WITH(gssapi-includes,
1846  AS_HELP_STRING([--with-gssapi-includes=DIR], [Specify location of GSS-API headers]), [
1847    GSSAPI_INCS="-I$withval"
1848    want_gss="yes"
1849  ]
1850)
1851
1852AC_ARG_WITH(gssapi-libs,
1853  AS_HELP_STRING([--with-gssapi-libs=DIR], [Specify location of GSS-API libs]), [
1854    GSSAPI_LIB_DIR="-L$withval"
1855    want_gss="yes"
1856  ]
1857)
1858
1859AC_ARG_WITH(gssapi,
1860  AS_HELP_STRING([--with-gssapi=DIR], [Where to look for GSS-API]), [
1861    GSSAPI_ROOT="$withval"
1862    if test "$GSSAPI_ROOT" != "no"; then
1863      want_gss="yes"
1864      if test "$GSSAPI_ROOT" = "yes"; then
1865        dnl if yes, then use default root
1866        GSSAPI_ROOT="/usr"
1867      fi
1868    fi
1869  ]
1870)
1871
1872: ${KRB5CONFIG:="$GSSAPI_ROOT/bin/krb5-config"}
1873
1874save_CPPFLAGS="$CPPFLAGS"
1875AC_MSG_CHECKING([if GSS-API support is requested])
1876if test "$want_gss" = "yes"; then
1877  AC_MSG_RESULT(yes)
1878
1879  if test "$GSSAPI_ROOT" != "/usr"; then
1880    CURL_CHECK_PKGCONFIG(mit-krb5-gssapi, $GSSAPI_ROOT/lib/pkgconfig)
1881  else
1882    CURL_CHECK_PKGCONFIG(mit-krb5-gssapi)
1883  fi
1884  if test -z "$GSSAPI_INCS"; then
1885    if test -n "$host_alias" && test -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
1886      GSSAPI_INCS=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --cflags gssapi`
1887    elif test "$PKGCONFIG" != "no"; then
1888      GSSAPI_INCS=`$PKGCONFIG --cflags mit-krb5-gssapi`
1889    elif test -f "$KRB5CONFIG"; then
1890      GSSAPI_INCS=`$KRB5CONFIG --cflags gssapi`
1891    elif test "$GSSAPI_ROOT" != "yes"; then
1892      GSSAPI_INCS="-I$GSSAPI_ROOT/include"
1893    fi
1894  fi
1895
1896  CPPFLAGS="$CPPFLAGS $GSSAPI_INCS"
1897
1898  AC_CHECK_HEADER(gss.h,
1899    [
1900      dnl found in the given dirs
1901      AC_DEFINE(HAVE_GSSGNU, 1, [if you have GNU GSS])
1902      gnu_gss=yes
1903    ],
1904    [
1905      dnl not found, check for MIT
1906      AC_CHECK_HEADERS(
1907        [gssapi/gssapi.h gssapi/gssapi_generic.h gssapi/gssapi_krb5.h],
1908        [],
1909        [not_mit=1])
1910      if test "$not_mit" = "1"; then
1911        dnl MIT not found
1912        AC_MSG_ERROR([MIT or GNU GSS library required, but not found])
1913      fi
1914    ]
1915  )
1916else
1917  AC_MSG_RESULT(no)
1918fi
1919if test "$want_gss" = "yes"; then
1920  AC_DEFINE(HAVE_GSSAPI, 1, [if you have GSS-API libraries])
1921  HAVE_GSSAPI=1
1922  curl_gss_msg="enabled (MIT Kerberos)"
1923  link_pkgconfig=''
1924
1925  if test -n "$gnu_gss"; then
1926    curl_gss_msg="enabled (GNU GSS)"
1927    LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1928    LDFLAGSPC="$LDFLAGSPC $GSSAPI_LIB_DIR"
1929    LIBS="-lgss $LIBS"
1930    link_pkgconfig=1
1931  elif test -z "$GSSAPI_LIB_DIR"; then
1932    if test "$curl_cv_apple" = "yes"; then
1933      LIBS="-lgssapi_krb5 -lresolv $LIBS"
1934    else
1935      if test "$GSSAPI_ROOT" != "/usr"; then
1936        CURL_CHECK_PKGCONFIG(mit-krb5-gssapi, $GSSAPI_ROOT/lib/pkgconfig)
1937      else
1938        CURL_CHECK_PKGCONFIG(mit-krb5-gssapi)
1939      fi
1940      if test -n "$host_alias" && test -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
1941        dnl krb5-config does not have --libs-only-L or similar, put everything
1942        dnl into LIBS
1943        gss_libs=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --libs gssapi`
1944        LIBS="$gss_libs $LIBS"
1945      elif test "$PKGCONFIG" != "no"; then
1946        gss_libs=`$PKGCONFIG --libs mit-krb5-gssapi`
1947        LIBS="$gss_libs $LIBS"
1948        link_pkgconfig=1
1949      elif test -f "$KRB5CONFIG"; then
1950        dnl krb5-config does not have --libs-only-L or similar, put everything
1951        dnl into LIBS
1952        gss_libs=`$KRB5CONFIG --libs gssapi`
1953        LIBS="$gss_libs $LIBS"
1954        link_pkgconfig=1
1955      else
1956        case $host in
1957          *-hp-hpux*)
1958            gss_libname="gss"
1959            ;;
1960          *)
1961            gss_libname="gssapi"
1962            ;;
1963        esac
1964
1965        if test "$GSSAPI_ROOT" != "yes"; then
1966          LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff"
1967          LDFLAGSPC="$LDFLAGSPC -L$GSSAPI_ROOT/lib$libsuff"
1968          LIBS="-l$gss_libname $LIBS"
1969        else
1970          LIBS="-l$gss_libname $LIBS"
1971        fi
1972      fi
1973    fi
1974    gss_version=""
1975    if test -n "$host_alias" && test -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
1976      gss_version=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --version | $SED 's/Kerberos 5 release //'`
1977    elif test "$PKGCONFIG" != "no"; then
1978      gss_version=`$PKGCONFIG --modversion mit-krb5-gssapi`
1979    elif test -f "$KRB5CONFIG"; then
1980      gss_version=`$KRB5CONFIG --version | $SED 's/Kerberos 5 release //'`
1981    fi
1982    if test -n "$gss_version"; then
1983      AC_MSG_NOTICE([GSS-API MIT Kerberos version detected: $gss_version])
1984      AC_DEFINE_UNQUOTED([CURL_KRB5_VERSION], ["$gss_version"], [MIT Kerberos version])
1985    fi
1986  else
1987    LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1988    LDFLAGSPC="$LDFLAGSPC $GSSAPI_LIB_DIR"
1989    case $host in
1990      *-hp-hpux*)
1991        LIBS="-lgss $LIBS"
1992        ;;
1993      *)
1994        LIBS="-lgssapi $LIBS"
1995        ;;
1996    esac
1997  fi
1998  if test -n "$link_pkgconfig"; then
1999    if test -n "$gnu_gss"; then
2000      LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE gss"
2001    else
2002      LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE mit-krb5-gssapi"
2003    fi
2004  fi
2005else
2006  CPPFLAGS="$save_CPPFLAGS"
2007fi
2008
2009if test "$want_gss" = "yes"; then
2010  AC_MSG_CHECKING([if we can link against GSS-API library])
2011  AC_LINK_IFELSE([
2012    AC_LANG_FUNC_LINK_TRY([gss_init_sec_context])
2013  ],[
2014    AC_MSG_RESULT([yes])
2015  ],[
2016    AC_MSG_RESULT([no])
2017    AC_MSG_ERROR([--with-gssapi was specified, but a GSS-API library was not found.])
2018  ])
2019fi
2020
2021build_libstubgss=no
2022if test "$want_gss" = "yes"; then
2023  build_libstubgss=yes
2024fi
2025
2026AM_CONDITIONAL(BUILD_STUB_GSS, test "$build_libstubgss" = "yes")
2027
2028dnl -------------------------------------------------------------
2029dnl parse --with-default-ssl-backend so it can be validated below
2030dnl -------------------------------------------------------------
2031
2032DEFAULT_SSL_BACKEND=no
2033VALID_DEFAULT_SSL_BACKEND=
2034AC_ARG_WITH(default-ssl-backend,
2035AS_HELP_STRING([--with-default-ssl-backend=NAME],[Use NAME as default SSL backend])
2036AS_HELP_STRING([--without-default-ssl-backend],[Use implicit default SSL backend]),
2037  [DEFAULT_SSL_BACKEND=$withval])
2038case "$DEFAULT_SSL_BACKEND" in
2039  no)
2040    dnl --without-default-ssl-backend option used
2041    ;;
2042  default|yes)
2043    dnl --with-default-ssl-backend option used without name
2044    AC_MSG_ERROR([The name of the default SSL backend is required.])
2045    ;;
2046  *)
2047    dnl --with-default-ssl-backend option used with name
2048    dnl needs to be validated below
2049    VALID_DEFAULT_SSL_BACKEND=no
2050    ;;
2051esac
2052
2053CURL_WITH_SCHANNEL
2054CURL_WITH_AMISSL
2055CURL_WITH_OPENSSL
2056CURL_WITH_GNUTLS
2057CURL_WITH_MBEDTLS
2058CURL_WITH_WOLFSSL
2059CURL_WITH_RUSTLS
2060CURL_WITH_APPLE_SECTRUST
2061
2062dnl link required libraries for USE_WIN32_CRYPTO or SCHANNEL_ENABLED
2063if test "$USE_WIN32_CRYPTO" = "1" || test "$SCHANNEL_ENABLED" = "1"; then
2064  LIBS="-ladvapi32 -lcrypt32 $LIBS"
2065fi
2066
2067if test "$curl_cv_native_windows" = "yes"; then
2068  dnl for BCryptGenRandom()
2069  LIBS="-lbcrypt $LIBS"
2070fi
2071
2072case "x$SSL_DISABLED$OPENSSL_ENABLED$GNUTLS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$SCHANNEL_ENABLED$RUSTLS_ENABLED" in
2073  x)
2074    AC_MSG_ERROR([TLS not detected, you will not be able to use HTTPS, FTPS, NTLM and more.
2075Use --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-schannel, --with-amissl or --with-rustls to address this.])
2076    ;;
2077  x1)
2078    dnl one SSL backend is enabled
2079    SSL_ENABLED="1"
2080    AC_MSG_NOTICE([built with one SSL backend])
2081    ;;
2082  xD)
2083    dnl explicitly built without TLS
2084    ;;
2085  xD*)
2086    AC_MSG_ERROR([--without-ssl has been set together with an explicit option to use an ssl library
2087(e.g. --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-schannel, --with-amissl, --with-rustls).
2088Since these are conflicting parameters, verify which is the desired one and drop the other.])
2089    ;;
2090  *)
2091    dnl more than one SSL backend is enabled
2092    SSL_ENABLED="1"
2093    CURL_WITH_MULTI_SSL="1"
2094    AC_DEFINE(CURL_WITH_MULTI_SSL, 1, [built with multiple SSL backends])
2095    AC_MSG_NOTICE([built with multiple SSL backends])
2096    ;;
2097esac
2098
2099if test -n "$ssl_backends"; then
2100  curl_ssl_msg="enabled ($ssl_backends)"
2101fi
2102
2103if test "$VALID_DEFAULT_SSL_BACKEND" = "no"; then
2104  if test -n "$SSL_ENABLED"; then
2105    AC_MSG_ERROR([Default SSL backend $DEFAULT_SSL_BACKEND not enabled!])
2106  else
2107    AC_MSG_ERROR([Default SSL backend requires SSL!])
2108  fi
2109elif test "$VALID_DEFAULT_SSL_BACKEND" = "yes"; then
2110  AC_DEFINE_UNQUOTED([CURL_DEFAULT_SSL_BACKEND], ["$DEFAULT_SSL_BACKEND"], [Default SSL backend])
2111fi
2112
2113dnl ---------------------
2114dnl check native CA store
2115dnl ---------------------
2116
2117ca_native_opt=0
2118AC_MSG_CHECKING([whether to use native CA store])
2119AC_ARG_ENABLE(ca-native,
2120AS_HELP_STRING([--enable-ca-native],[Enable native CA store])
2121AS_HELP_STRING([--disable-ca-native],[Disable native CA store (default)]),
2122[ case "$enableval" in
2123  yes)
2124    AC_MSG_RESULT([yes])
2125    AC_DEFINE(CURL_CA_NATIVE, 1, [If native CA store is enabled])
2126    ca_native_opt=1
2127    ;;
2128  *)
2129    AC_MSG_RESULT([no])
2130    ;;
2131  esac ],
2132    AC_MSG_RESULT([no])
2133)
2134
2135dnl **********************************************************************
2136dnl Check for the CA bundle
2137dnl **********************************************************************
2138
2139if test -n "$check_for_ca_bundle"; then
2140  CURL_CHECK_CA_BUNDLE
2141  CURL_CHECK_CA_EMBED
2142fi
2143
2144AM_CONDITIONAL(CURL_CA_EMBED_SET, test -n "$CURL_CA_EMBED")
2145
2146dnl ----------------------
2147dnl check unsafe CA search
2148dnl ----------------------
2149
2150if test "$curl_cv_native_windows" = "yes"; then
2151  ca_search=1
2152  AC_MSG_CHECKING([whether to enable unsafe CA bundle search in PATH on Windows])
2153  AC_ARG_ENABLE(ca-search,
2154AS_HELP_STRING([--enable-ca-search],[Enable unsafe CA bundle search in PATH on Windows])
2155AS_HELP_STRING([--disable-ca-search],[Disable unsafe CA bundle search in PATH on Windows]),
2156  [ case "$enableval" in
2157    no)
2158      AC_MSG_RESULT([no])
2159      ca_search=0
2160      ;;
2161    yes)
2162      AC_MSG_RESULT([yes])
2163      ;;
2164    *)
2165      if test "$ca_native_opt" = "1"; then
2166        AC_MSG_RESULT([no])
2167        ca_search=0
2168      else
2169        AC_MSG_RESULT([yes])
2170      fi
2171      ;;
2172    esac ],
2173      if test "$ca_native_opt" = "1"; then
2174        AC_MSG_RESULT([no])
2175        ca_search=0
2176      else
2177        AC_MSG_RESULT([yes])
2178      fi
2179  )
2180  if test "$ca_search" = "0"; then
2181    AC_DEFINE(CURL_DISABLE_CA_SEARCH, 1, [If unsafe CA bundle search in PATH on Windows is disabled])
2182  fi
2183fi
2184
2185dnl --------------------
2186dnl check safe CA search
2187dnl --------------------
2188
2189if test "$curl_cv_native_windows" = "yes"; then
2190  AC_MSG_CHECKING([whether to enable safe CA bundle search (within the curl tool directory) on Windows])
2191  AC_ARG_ENABLE(ca-search-safe,
2192AS_HELP_STRING([--enable-ca-search-safe],[Enable safe CA bundle search])
2193AS_HELP_STRING([--disable-ca-search-safe],[Disable safe CA bundle search (default)]),
2194  [ case "$enableval" in
2195    yes)
2196      AC_MSG_RESULT([yes])
2197      AC_DEFINE(CURL_CA_SEARCH_SAFE, 1, [If safe CA bundle search is enabled])
2198      ;;
2199    *)
2200      AC_MSG_RESULT([no])
2201      ;;
2202    esac ],
2203      AC_MSG_RESULT([no])
2204  )
2205fi
2206
2207dnl **********************************************************************
2208dnl Check for libpsl
2209dnl **********************************************************************
2210
2211dnl Default to compiler & linker defaults for LIBPSL files & libraries.
2212OPT_LIBPSL=off
2213AC_ARG_WITH(libpsl,
2214AS_HELP_STRING([--with-libpsl=PATH],[Where to look for libpsl, PATH points to the LIBPSL installation;
2215  when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
2216AS_HELP_STRING([--without-libpsl], [disable LIBPSL]),
2217  OPT_LIBPSL=$withval)
2218
2219if test "x$OPT_LIBPSL" != "xno"; then
2220  dnl backup the pre-libpsl variables
2221  CLEANLDFLAGS="$LDFLAGS"
2222  CLEANLDFLAGSPC="$LDFLAGSPC"
2223  CLEANCPPFLAGS="$CPPFLAGS"
2224  CLEANLIBS="$LIBS"
2225
2226  case "$OPT_LIBPSL" in
2227    yes|off)
2228      dnl --with-libpsl (without path) used
2229      CURL_CHECK_PKGCONFIG(libpsl)
2230
2231      if test "$PKGCONFIG" != "no"; then
2232        LIB_PSL=`$PKGCONFIG --libs-only-l libpsl`
2233        LD_PSL=`$PKGCONFIG --libs-only-L libpsl`
2234        CPP_PSL=`$PKGCONFIG --cflags-only-I libpsl`
2235      else
2236        dnl no libpsl pkg-config found
2237        LIB_PSL="-lpsl"
2238      fi
2239
2240      ;;
2241    *)
2242      dnl use the given --with-libpsl spot
2243      LIB_PSL="-lpsl"
2244      PREFIX_PSL=$OPT_LIBPSL
2245      ;;
2246  esac
2247
2248  dnl if given with a prefix, we set -L and -I based on that
2249  if test -n "$PREFIX_PSL"; then
2250    LD_PSL=-L${PREFIX_PSL}/lib$libsuff
2251    CPP_PSL=-I${PREFIX_PSL}/include
2252  fi
2253
2254  LDFLAGS="$LDFLAGS $LD_PSL"
2255  LDFLAGSPC="$LDFLAGSPC $LD_PSL"
2256  CPPFLAGS="$CPPFLAGS $CPP_PSL"
2257  LIBS="$LIB_PSL $LIBS"
2258
2259  AC_CHECK_LIB(psl, psl_builtin,
2260    [
2261      AC_CHECK_HEADERS(libpsl.h,
2262        curl_psl_msg="enabled"
2263        AC_DEFINE(USE_LIBPSL, 1, [if libpsl is in use])
2264        USE_LIBPSL=1
2265        LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libpsl"
2266      )
2267    ],
2268      dnl not found, revert back to clean variables
2269      LDFLAGS=$CLEANLDFLAGS
2270      LDFLAGSPC=$CLEANLDFLAGSPC
2271      CPPFLAGS=$CLEANCPPFLAGS
2272      LIBS=$CLEANLIBS
2273  )
2274
2275  if test "$USE_LIBPSL" != "1"; then
2276    AC_MSG_ERROR([libpsl libs and/or directories were not found where specified!])
2277  fi
2278fi
2279AM_CONDITIONAL([USE_LIBPSL], [test "$curl_psl_msg" = "enabled"])
2280
2281dnl **********************************************************************
2282dnl Check for libgsasl
2283dnl **********************************************************************
2284
2285OPT_LIBGSASL=no
2286AC_ARG_WITH(libgsasl,
2287AS_HELP_STRING([--with-libgsasl=PATH],[Where to look for libgsasl, PATH points to the libgsasl installation;
2288  when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
2289AS_HELP_STRING([--without-libgsasl], [disable libgsasl support for SCRAM]),
2290  OPT_LIBGSASL=$withval)
2291
2292if test "x$OPT_LIBGSASL" != "xno"; then
2293  dnl backup the pre-libgsasl variables
2294  CLEANLDFLAGS="$LDFLAGS"
2295  CLEANLDFLAGSPC="$LDFLAGSPC"
2296  CLEANCPPFLAGS="$CPPFLAGS"
2297  CLEANLIBS="$LIBS"
2298
2299  case "$OPT_LIBGSASL" in
2300    yes)
2301      dnl --with-libgsasl (without path) used
2302      CURL_CHECK_PKGCONFIG(libgsasl)
2303
2304      if test "$PKGCONFIG" != "no"; then
2305        LIB_GSASL=`$PKGCONFIG --libs-only-l libgsasl`
2306        LD_GSASL=`$PKGCONFIG --libs-only-L libgsasl`
2307        CPP_GSASL=`$PKGCONFIG --cflags-only-I libgsasl`
2308      else
2309        dnl no libgsasl pkg-config found
2310        LIB_GSASL="-lgsasl"
2311      fi
2312      ;;
2313    *)
2314      dnl use the given --with-libgsasl spot
2315      PREFIX_GSASL=$OPT_LIBGSASL
2316      ;;
2317  esac
2318
2319  dnl if given with a prefix, we set -L and -I based on that
2320  if test -n "$PREFIX_GSASL"; then
2321    LIB_GSASL="-lgsasl"
2322    LD_GSASL=-L${PREFIX_GSASL}/lib$libsuff
2323    CPP_GSASL=-I${PREFIX_GSASL}/include
2324  fi
2325
2326  LDFLAGS="$LDFLAGS $LD_GSASL"
2327  LDFLAGSPC="$LDFLAGSPC $LD_GSASL"
2328  CPPFLAGS="$CPPFLAGS $CPP_GSASL"
2329  LIBS="$LIB_GSASL $LIBS"
2330
2331  AC_CHECK_LIB(gsasl, gsasl_init,
2332    [
2333      AC_CHECK_HEADERS(gsasl.h,
2334        curl_gsasl_msg="enabled"
2335        AC_DEFINE(USE_GSASL, 1, [GSASL support enabled])
2336        USE_LIBGSASL=1
2337        LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libgsasl"
2338      )
2339    ],
2340      dnl not found, revert back to clean variables
2341      LDFLAGS=$CLEANLDFLAGS
2342      LDFLAGSPC=$CLEANLDFLAGSPC
2343      CPPFLAGS=$CLEANCPPFLAGS
2344      LIBS=$CLEANLIBS
2345      curl_gsasl_msg="no      (libgsasl not found)"
2346      AC_MSG_WARN([libgsasl was not found])
2347  )
2348fi
2349AM_CONDITIONAL([USE_GSASL], [test "$curl_gsasl_msg" = "enabled"])
2350
2351AC_ARG_WITH(libmetalink,,
2352  AC_MSG_ERROR([--with-libmetalink and --without-libmetalink no longer work!]))
2353
2354dnl **********************************************************************
2355dnl Check for the presence of libssh2 libraries and headers
2356dnl **********************************************************************
2357
2358dnl Default to compiler & linker defaults for libssh2 files & libraries.
2359OPT_LIBSSH2=off
2360AC_ARG_WITH(libssh2,
2361AS_HELP_STRING([--with-libssh2=PATH],[Where to look for libssh2, PATH points to the libssh2 installation;
2362  when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
2363AS_HELP_STRING([--with-libssh2], [enable libssh2]),
2364  OPT_LIBSSH2=$withval, OPT_LIBSSH2=no)
2365
2366OPT_LIBSSH=off
2367AC_ARG_WITH(libssh,
2368AS_HELP_STRING([--with-libssh=PATH],[Where to look for libssh, PATH points to the libssh installation;
2369  when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
2370AS_HELP_STRING([--with-libssh], [enable libssh]),
2371  OPT_LIBSSH=$withval, OPT_LIBSSH=no)
2372
2373if test "x$OPT_LIBSSH2" != "xno"; then
2374  dnl backup the pre-libssh2 variables
2375  CLEANLDFLAGS="$LDFLAGS"
2376  CLEANLDFLAGSPC="$LDFLAGSPC"
2377  CLEANCPPFLAGS="$CPPFLAGS"
2378  CLEANLIBS="$LIBS"
2379
2380  case "$OPT_LIBSSH2" in
2381    yes)
2382      dnl --with-libssh2 (without path) used
2383      CURL_CHECK_PKGCONFIG(libssh2)
2384
2385      if test "$PKGCONFIG" != "no"; then
2386        LIB_SSH2=`$PKGCONFIG --libs-only-l libssh2`
2387        LD_SSH2=`$PKGCONFIG --libs-only-L libssh2`
2388        CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2`
2389        version=`$PKGCONFIG --modversion libssh2`
2390        DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/^-L//'`
2391      fi
2392
2393      ;;
2394    off)
2395      dnl no --with-libssh2 option given, just check default places
2396      ;;
2397    *)
2398      dnl use the given --with-libssh2 spot
2399      PREFIX_SSH2=$OPT_LIBSSH2
2400      ;;
2401  esac
2402
2403  dnl if given with a prefix, we set -L and -I based on that
2404  if test -n "$PREFIX_SSH2"; then
2405    LIB_SSH2="-lssh2"
2406    LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff
2407    CPP_SSH2=-I${PREFIX_SSH2}/include
2408    DIR_SSH2=${PREFIX_SSH2}/lib$libsuff
2409  fi
2410
2411  LDFLAGS="$LDFLAGS $LD_SSH2"
2412  LDFLAGSPC="$LDFLAGSPC $LD_SSH2"
2413  CPPFLAGS="$CPPFLAGS $CPP_SSH2"
2414  LIBS="$LIB_SSH2 $LIBS"
2415
2416  dnl check for function added in libssh2 version 1.9.0
2417  AC_CHECK_LIB(ssh2, libssh2_agent_get_identity_path)
2418
2419  AC_CHECK_HEADER(libssh2.h,
2420    curl_ssh_msg="enabled (libssh2)"
2421    AC_DEFINE(USE_LIBSSH2, 1, [if libssh2 is in use])
2422    USE_LIBSSH2=1
2423  )
2424
2425  if test "x$OPT_LIBSSH2" != "xoff" &&
2426     test "$USE_LIBSSH2" != "1"; then
2427    AC_MSG_ERROR([libssh2 libs and/or directories were not found where specified!])
2428  fi
2429
2430  if test "$USE_LIBSSH2" = "1"; then
2431    if test -n "$DIR_SSH2"; then
2432      dnl when the libssh2 shared libs were found in a path that the runtime
2433      dnl linker does not search through, we need to add it to CURL_LIBRARY_PATH
2434      dnl to prevent further configure tests to fail due to this
2435
2436      if test "$cross_compiling" != "yes"; then
2437        CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_SSH2"
2438        export CURL_LIBRARY_PATH
2439        AC_MSG_NOTICE([Added $DIR_SSH2 to CURL_LIBRARY_PATH])
2440      fi
2441    fi
2442    LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libssh2"
2443  else
2444    dnl no libssh2, revert back to clean variables
2445    LDFLAGS=$CLEANLDFLAGS
2446    LDFLAGSPC=$CLEANLDFLAGSPC
2447    CPPFLAGS=$CLEANCPPFLAGS
2448    LIBS=$CLEANLIBS
2449  fi
2450elif test "x$OPT_LIBSSH" != "xno"; then
2451  dnl backup the pre-libssh variables
2452  CLEANLDFLAGS="$LDFLAGS"
2453  CLEANLDFLAGSPC="$LDFLAGSPC"
2454  CLEANCPPFLAGS="$CPPFLAGS"
2455  CLEANLIBS="$LIBS"
2456
2457  case "$OPT_LIBSSH" in
2458    yes)
2459      dnl --with-libssh (without path) used
2460      CURL_CHECK_PKGCONFIG(libssh)
2461
2462      if test "$PKGCONFIG" != "no"; then
2463        LIB_SSH=`$PKGCONFIG --libs-only-l libssh`
2464        LD_SSH=`$PKGCONFIG --libs-only-L libssh`
2465        CPP_SSH=`$PKGCONFIG --cflags-only-I libssh`
2466        version=`$PKGCONFIG --modversion libssh`
2467        DIR_SSH=`echo $LD_SSH | $SED -e 's/^-L//'`
2468      fi
2469
2470      ;;
2471    off)
2472      dnl no --with-libssh option given, just check default places
2473      ;;
2474    *)
2475      dnl use the given --with-libssh spot
2476      PREFIX_SSH=$OPT_LIBSSH
2477      ;;
2478  esac
2479
2480  dnl if given with a prefix, we set -L and -I based on that
2481  if test -n "$PREFIX_SSH"; then
2482    LIB_SSH="-lssh"
2483    LD_SSH=-L${PREFIX_SSH}/lib$libsuff
2484    CPP_SSH=-I${PREFIX_SSH}/include
2485    DIR_SSH=${PREFIX_SSH}/lib$libsuff
2486  fi
2487
2488  LDFLAGS="$LDFLAGS $LD_SSH"
2489  LDFLAGSPC="$LDFLAGSPC $LD_SSH"
2490  CPPFLAGS="$CPPFLAGS $CPP_SSH"
2491  LIBS="$LIB_SSH $LIBS"
2492
2493  AC_CHECK_LIB(ssh, ssh_new)
2494
2495  AC_CHECK_HEADER(libssh/libssh.h,
2496    curl_ssh_msg="enabled (libssh)"
2497    AC_DEFINE(USE_LIBSSH, 1, [if libssh is in use])
2498    USE_LIBSSH=1
2499  )
2500
2501  if test "x$OPT_LIBSSH" != "xoff" &&
2502     test "$USE_LIBSSH" != "1"; then
2503    AC_MSG_ERROR([libssh libs and/or directories were not found where specified!])
2504  fi
2505
2506  if test "$USE_LIBSSH" = "1"; then
2507    if test "$curl_cv_native_windows" = "yes"; then
2508      dnl for if_nametoindex
2509      LIBS="-liphlpapi $LIBS"
2510    fi
2511    if test -n "$DIR_SSH"; then
2512      dnl when the libssh shared libs were found in a path that the runtime
2513      dnl linker does not search through, we need to add it to CURL_LIBRARY_PATH
2514      dnl to prevent further configure tests to fail due to this
2515
2516      if test "$cross_compiling" != "yes"; then
2517        CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_SSH"
2518        export CURL_LIBRARY_PATH
2519        AC_MSG_NOTICE([Added $DIR_SSH to CURL_LIBRARY_PATH])
2520      fi
2521    fi
2522    LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libssh"
2523  else
2524    dnl no libssh, revert back to clean variables
2525    LDFLAGS=$CLEANLDFLAGS
2526    LDFLAGSPC=$CLEANLDFLAGSPC
2527    CPPFLAGS=$CLEANCPPFLAGS
2528    LIBS=$CLEANLIBS
2529  fi
2530fi
2531
2532dnl **********************************************************************
2533dnl Check for LDAP (after the SSL libraries)
2534dnl **********************************************************************
2535
2536LDAPLIBNAME=""
2537AC_ARG_WITH(ldap-lib,
2538AS_HELP_STRING([--with-ldap-lib=libname],[Specify name of ldap lib file]),
2539  [LDAPLIBNAME="$withval"])
2540
2541LBERLIBNAME=""
2542AC_ARG_WITH(lber-lib,
2543AS_HELP_STRING([--with-lber-lib=libname],[Specify name of lber lib file]),
2544  [LBERLIBNAME="$withval"])
2545
2546dnl Handle argument to --with-ldap.
2547clean_LDAP_CPPFLAGS=$CPPFLAGS
2548clean_LDAP_LDFLAGS=$LDFLAGS
2549clean_LDAP_LIBS=$LIBS
2550OPT_LDAP=off
2551AC_ARG_WITH(ldap,
2552AS_HELP_STRING([--with-ldap=PATH],[Where to look for LDAP, PATH points to the LDAP installation;
2553  when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
2554AS_HELP_STRING([--without-ldap], [disable LDAP]),
2555  OPT_LDAP=$withval)
2556
2557case "$OPT_LDAP" in
2558  no)
2559    dnl --without-ldap option used
2560    want_ldap="no"
2561    ;;
2562  yes)
2563    dnl --with-ldap option used without path
2564    want_ldap="yes"
2565    ;;
2566  off)
2567    dnl no --with-ldap option given, do not change anything
2568    want_ldap="default"
2569    ;;
2570  *)
2571    dnl --with-ldap option used with path
2572    want_ldap="yes"
2573    if test -d "$OPT_LDAP/lib$libsuff"; then
2574      LDFLAGS="$LDFLAGS -L$OPT_LDAP/lib$libsuff"
2575      DIR_LDAP="$OPT_LDAP/lib$libsuff"
2576    elif test -d "$OPT_LDAP/lib"; then
2577      LDFLAGS="$LDFLAGS -L$OPT_LDAP/lib"
2578      DIR_LDAP="$OPT_LDAP/lib"
2579    fi
2580    if test -d "$OPT_LDAP/include"; then
2581      CPPFLAGS="$CPPFLAGS -I$OPT_LDAP/include"
2582    fi
2583    ldap_askedfor="yes"
2584    ;;
2585esac
2586
2587if test "$CURL_DISABLE_LDAP" != "1" && test "$want_ldap" != "no"; then
2588
2589  CURL_CHECK_HEADER_LBER
2590  CURL_CHECK_HEADER_LDAP
2591  CURL_CHECK_HEADER_LDAP_SSL
2592
2593  if test -z "$LDAPLIBNAME"; then
2594    if test "$curl_cv_native_windows" = "yes" && test "$curl_cv_winuwp" != "yes"; then
2595      dnl Windows uses a single and unique LDAP library name
2596      LDAPLIBNAME="wldap32"
2597      LBERLIBNAME="no"
2598    fi
2599  fi
2600
2601  if test "$LDAPLIBNAME"; then
2602    dnl If we have both LDAP and LBER library names, check if we need both
2603    if test "$LBERLIBNAME" && test "$LBERLIBNAME" != "no"; then
2604      dnl Try LDAP first, then with LBER if needed
2605      AC_CHECK_LIB("$LDAPLIBNAME", ldap_init, [ldap_lib_ok=yes], [ldap_lib_ok=no])
2606      if test "$ldap_lib_ok" = "no"; then
2607        dnl LDAP alone failed, try with LBER using a different function
2608        AC_CHECK_LIB("$LDAPLIBNAME", ldap_unbind, [ldap_lib_ok=yes], [ldap_lib_ok=no], [-l$LBERLIBNAME])
2609        if test "$ldap_lib_ok" = "yes"; then
2610          dnl We need both libraries
2611          LIBS="-l$LDAPLIBNAME -l$LBERLIBNAME $LIBS"
2612        fi
2613      else
2614        dnl LDAP alone is sufficient
2615        LIBS="-l$LDAPLIBNAME $LIBS"
2616      fi
2617    else
2618      dnl Only check LDAP library
2619      AC_CHECK_LIB("$LDAPLIBNAME", ldap_init, [ldap_lib_ok=yes; LIBS="-l$LDAPLIBNAME $LIBS"], [ldap_lib_ok=no])
2620    fi
2621
2622    if test "$ldap_lib_ok" = "no"; then
2623      if test -n "$ldap_askedfor"; then
2624        AC_MSG_ERROR([could not detect the LDAP libraries])
2625      fi
2626      AC_MSG_WARN(["$LDAPLIBNAME" is not an LDAP library: LDAP disabled])
2627      AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
2628      CURL_DISABLE_LDAP=1
2629      AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
2630      CURL_DISABLE_LDAPS=1
2631      dnl restore original flags
2632      CPPFLAGS=$clean_LDAP_CPPFLAGS
2633      LDFLAGS=$clean_LDAP_LDFLAGS
2634      LIBS=$clean_LDAP_LIBS
2635    fi
2636  else
2637    dnl Try to find the right ldap libraries for this system
2638    CURL_CHECK_LIBS_LDAP
2639    case X-"$curl_cv_ldap_LIBS" in
2640      X-unknown)
2641        if test -n "$ldap_askedfor"; then
2642          AC_MSG_ERROR([could not detect the LDAP libraries])
2643        fi
2644        AC_MSG_WARN([Cannot find libraries for LDAP support: LDAP disabled])
2645        AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
2646        CURL_DISABLE_LDAP=1
2647        AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
2648        CURL_DISABLE_LDAPS=1
2649        dnl restore original flags
2650        CPPFLAGS=$clean_LDAP_CPPFLAGS
2651        LDFLAGS=$clean_LDAP_LDFLAGS
2652        LIBS=$clean_LDAP_LIBS
2653        ;;
2654    esac
2655  fi
2656fi
2657
2658if test "$CURL_DISABLE_LDAP" != "1"; then
2659  dnl Add to library path if needed
2660  if test -n "$DIR_LDAP"; then
2661    dnl when the ldap shared lib were found in a path that the runtime
2662    dnl linker does not search through, we need to add it to
2663    dnl CURL_LIBRARY_PATH to prevent further configure tests to fail due to
2664    dnl this
2665
2666    if test "$cross_compiling" != "yes"; then
2667      CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_LDAP"
2668      export CURL_LIBRARY_PATH
2669      AC_MSG_NOTICE([Added $DIR_LDAP to CURL_LIBRARY_PATH])
2670    fi
2671  fi
2672
2673  if test "$LBERLIBNAME"; then
2674    dnl If name is "no" then do not define this library at all
2675    dnl (it is only needed if libldap.so's dependencies are broken).
2676    dnl Skip this check if we already determined we need both libraries above
2677    if test "$LBERLIBNAME" != "no" && test "$ldap_lib_ok" != "yes"; then
2678      AC_CHECK_LIB("$LBERLIBNAME", ber_free,, [
2679        AC_MSG_WARN(["$LBERLIBNAME" is not an LBER library: LDAP disabled])
2680        AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
2681        CURL_DISABLE_LDAP=1
2682        AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
2683        CURL_DISABLE_LDAPS=1
2684        dnl restore original flags
2685        CPPFLAGS=$clean_LDAP_CPPFLAGS
2686        LDFLAGS=$clean_LDAP_LDFLAGS
2687        LIBS=$clean_LDAP_LIBS
2688        ]
2689      )
2690    fi
2691  fi
2692fi
2693
2694if test "$CURL_DISABLE_LDAP" != "1"; then
2695  AC_CHECK_FUNCS([ldap_url_parse \
2696                  ldap_init_fd])
2697
2698  if test "$LDAPLIBNAME" = "wldap32"; then
2699    curl_ldap_msg="enabled (winldap)"
2700    AC_DEFINE(USE_WIN32_LDAP, 1, [Use Windows LDAP implementation])
2701  else
2702    if test "$ac_cv_func_ldap_init_fd" = "yes"; then
2703      curl_ldap_msg="enabled (OpenLDAP)"
2704      AC_DEFINE(USE_OPENLDAP, 1, [Use OpenLDAP-specific code])
2705      USE_OPENLDAP=1
2706    else
2707      curl_ldap_msg="enabled (ancient OpenLDAP)"
2708    fi
2709  fi
2710fi
2711
2712if test "$CURL_DISABLE_LDAPS" != "1"; then
2713  curl_ldaps_msg="enabled"
2714fi
2715
2716dnl **********************************************************************
2717dnl Check for linker switch for versioned symbols
2718dnl **********************************************************************
2719
2720versioned_symbols_flavour=
2721AC_MSG_CHECKING([whether versioned symbols are wanted])
2722AC_ARG_ENABLE(versioned-symbols,
2723AS_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library])
2724AS_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]),
2725[ case "$enableval" in
2726  no)
2727    AC_MSG_RESULT(no)
2728    ;;
2729  *)
2730    AC_MSG_RESULT(yes)
2731    AC_MSG_CHECKING([if libraries can be versioned])
2732    GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script`
2733    if test -z "$GLD"; then
2734      AC_MSG_RESULT(no)
2735      AC_MSG_WARN([You need an ld version supporting the --version-script option])
2736    else
2737      AC_MSG_RESULT(yes)
2738      if test "x$enableval" != "xyes"; then
2739        versioned_symbols_flavour="$enableval"
2740      elif test "$CURL_WITH_MULTI_SSL" = "1"; then
2741        versioned_symbols_flavour="MULTISSL_"
2742      elif test "$OPENSSL_ENABLED" = "1"; then
2743        versioned_symbols_flavour="OPENSSL_"
2744      elif test "$MBEDTLS_ENABLED" = "1"; then
2745        versioned_symbols_flavour="MBEDTLS_"
2746      elif test "$WOLFSSL_ENABLED" = "1"; then
2747        versioned_symbols_flavour="WOLFSSL_"
2748      elif test "$GNUTLS_ENABLED" = "1"; then
2749        versioned_symbols_flavour="GNUTLS_"
2750      elif test "$RUSTLS_ENABLED" = "1"; then
2751        versioned_symbols_flavour="RUSTLS_"
2752      else
2753        versioned_symbols_flavour=""
2754      fi
2755      versioned_symbols="yes"
2756    fi
2757    ;;
2758
2759  esac
2760], [
2761  AC_MSG_RESULT(no)
2762]
2763)
2764
2765AC_SUBST([CURL_LIBCURL_VERSIONED_SYMBOLS_PREFIX], ["$versioned_symbols_flavour"])
2766AC_SUBST([CURL_LIBCURL_VERSIONED_SYMBOLS_SONAME], ["4"])  dnl Keep in sync with VERSIONCHANGE - VERSIONDEL in lib/Makefile.soname
2767AM_CONDITIONAL([CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS],
2768  [test "$versioned_symbols" = "yes"])
2769
2770dnl ----------------------------
2771dnl check Windows Unicode option
2772dnl ----------------------------
2773
2774want_winuni="no"
2775if test "$curl_cv_native_windows" = "yes"; then
2776  if test "$curl_cv_winuwp" = "yes"; then
2777    want_winuni="yes"
2778  else
2779    AC_MSG_CHECKING([whether to enable Windows Unicode (Windows native builds only)])
2780    AC_ARG_ENABLE(windows-unicode,
2781AS_HELP_STRING([--enable-windows-unicode],[Enable Windows Unicode])
2782AS_HELP_STRING([--disable-windows-unicode],[Disable Windows Unicode (default)]),
2783    [ case "$enableval" in
2784      yes)
2785        want_winuni="yes"
2786        AC_MSG_RESULT([yes])
2787        ;;
2788      *)
2789        AC_MSG_RESULT([no])
2790        ;;
2791      esac ],
2792        AC_MSG_RESULT([no])
2793    )
2794  fi
2795
2796  if test "$want_winuni" = "yes"; then
2797    CPPFLAGS="${CPPFLAGS} -DUNICODE -D_UNICODE"
2798  fi
2799fi
2800
2801AM_CONDITIONAL([USE_UNICODE], [test "$want_winuni" = "yes"])
2802
2803dnl -------------------------------------------------
2804dnl check WinIDN option before other IDN libraries
2805dnl -------------------------------------------------
2806
2807tst_links_winidn='no'
2808if test "$curl_cv_native_windows" = "yes"; then
2809  AC_MSG_CHECKING([whether to enable Windows native IDN (Windows native builds only)])
2810  OPT_WINIDN="default"
2811  AC_ARG_WITH(winidn,
2812AS_HELP_STRING([--with-winidn],[enable Windows native IDN])
2813AS_HELP_STRING([--without-winidn], [disable Windows native IDN]),
2814    OPT_WINIDN=$withval)
2815  case "$OPT_WINIDN" in
2816    no|default)
2817      dnl --without-winidn option used or configure option not specified
2818      want_winidn="no"
2819      AC_MSG_RESULT([no])
2820      ;;
2821    *)
2822      dnl --with-winidn option
2823      want_winidn="yes"
2824      AC_MSG_RESULT([yes])
2825      ;;
2826  esac
2827
2828  if test "$want_winidn" = "yes"; then
2829    LIBS="-lnormaliz $LIBS"
2830    AC_DEFINE(USE_WIN32_IDN, 1, [Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz).])
2831    IDN_ENABLED=1
2832    curl_idn_msg="enabled (Windows-native)"
2833  fi
2834fi
2835
2836dnl **********************************************************************
2837dnl Check for the presence of AppleIDN
2838dnl **********************************************************************
2839
2840tst_links_appleidn='no'
2841if test "$curl_cv_apple" = "yes"; then
2842  AC_MSG_CHECKING([whether to build with Apple IDN])
2843  OPT_IDN="default"
2844  AC_ARG_WITH(apple-idn,
2845AS_HELP_STRING([--with-apple-idn],[Enable AppleIDN])
2846AS_HELP_STRING([--without-apple-idn],[Disable AppleIDN]),
2847    [OPT_IDN=$withval])
2848  case "$OPT_IDN" in
2849    yes)
2850      dnl --with-apple-idn option used
2851      AC_MSG_RESULT([yes, check])
2852      AC_CHECK_LIB(icucore, uidna_openUTS46,
2853      [
2854        AC_CHECK_HEADERS(unicode/uidna.h,
2855          curl_idn_msg="enabled (AppleIDN)"
2856          AC_DEFINE(USE_APPLE_IDN, 1, [if AppleIDN])
2857          USE_APPLE_IDN=1
2858          IDN_ENABLED=1
2859          LIBS="-licucore -liconv $LIBS"
2860          tst_links_appleidn='yes'
2861        )
2862      ])
2863      ;;
2864    *)
2865      AC_MSG_RESULT([no])
2866      ;;
2867  esac
2868fi
2869
2870dnl **********************************************************************
2871dnl Check for the presence of libidn2
2872dnl **********************************************************************
2873
2874AC_MSG_CHECKING([whether to build with libidn2])
2875OPT_IDN="default"
2876AC_ARG_WITH(libidn2,
2877AS_HELP_STRING([--with-libidn2=PATH],[Enable libidn2 usage])
2878AS_HELP_STRING([--without-libidn2],[Disable libidn2 usage]),
2879  [OPT_IDN=$withval])
2880if test "$tst_links_winidn" = "yes"; then
2881  want_idn="no"
2882  AC_MSG_RESULT([no (using WinIDN instead)])
2883elif test "$tst_links_appleidn" = "yes"; then
2884  want_idn="no"
2885  AC_MSG_RESULT([no (using AppleIDN instead)])
2886else
2887  case "$OPT_IDN" in
2888    no)
2889      dnl --without-libidn2 option used
2890      want_idn="no"
2891      AC_MSG_RESULT([no])
2892      ;;
2893    default)
2894      dnl configure option not specified
2895      want_idn="yes"
2896      want_idn_path="default"
2897      AC_MSG_RESULT([(assumed) yes])
2898      ;;
2899    yes)
2900      dnl --with-libidn2 option used without path
2901      want_idn="yes"
2902      want_idn_path="default"
2903      AC_MSG_RESULT([yes])
2904      ;;
2905    *)
2906      dnl --with-libidn2 option used with path
2907      want_idn="yes"
2908      want_idn_path="$withval"
2909      AC_MSG_RESULT([yes ($withval)])
2910      ;;
2911  esac
2912fi
2913
2914if test "$want_idn" = "yes"; then
2915  dnl idn library support has been requested
2916  clean_CPPFLAGS="$CPPFLAGS"
2917  clean_LDFLAGS="$LDFLAGS"
2918  clean_LDFLAGSPC="$LDFLAGSPC"
2919  clean_LIBS="$LIBS"
2920  PKGCONFIG="no"
2921
2922  if test "$want_idn_path" != "default"; then
2923    dnl path has been specified
2924    IDN_PCDIR="$want_idn_path/lib$libsuff/pkgconfig"
2925    CURL_CHECK_PKGCONFIG(libidn2, [$IDN_PCDIR])
2926    if test "$PKGCONFIG" != "no"; then
2927      IDN_LIBS=`CURL_EXPORT_PCDIR([$IDN_PCDIR])
2928        $PKGCONFIG --libs-only-l libidn2 2>/dev/null`
2929      IDN_LDFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR])
2930        $PKGCONFIG --libs-only-L libidn2 2>/dev/null`
2931      IDN_CPPFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR])
2932        $PKGCONFIG --cflags-only-I libidn2 2>/dev/null`
2933      IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/^-L//'`
2934    else
2935      dnl pkg-config not available or provides no info
2936      IDN_LIBS="-lidn2"
2937      IDN_LDFLAGS="-L$want_idn_path/lib$libsuff"
2938      IDN_CPPFLAGS="-I$want_idn_path/include"
2939      IDN_DIR="$want_idn_path/lib$libsuff"
2940    fi
2941  else
2942    dnl path not specified
2943    CURL_CHECK_PKGCONFIG(libidn2)
2944    if test "$PKGCONFIG" != "no"; then
2945      IDN_LIBS=`$PKGCONFIG --libs-only-l libidn2 2>/dev/null`
2946      IDN_LDFLAGS=`$PKGCONFIG --libs-only-L libidn2 2>/dev/null`
2947      IDN_CPPFLAGS=`$PKGCONFIG --cflags-only-I libidn2 2>/dev/null`
2948      IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/^-L//'`
2949    else
2950      dnl pkg-config not available or provides no info
2951      IDN_LIBS="-lidn2"
2952    fi
2953  fi
2954
2955  if test "$PKGCONFIG" != "no"; then
2956    AC_MSG_NOTICE([pkg-config: IDN_LIBS: "$IDN_LIBS"])
2957    AC_MSG_NOTICE([pkg-config: IDN_LDFLAGS: "$IDN_LDFLAGS"])
2958    AC_MSG_NOTICE([pkg-config: IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2959    AC_MSG_NOTICE([pkg-config: IDN_DIR: "$IDN_DIR"])
2960  else
2961    AC_MSG_NOTICE([IDN_LIBS: "$IDN_LIBS"])
2962    AC_MSG_NOTICE([IDN_LDFLAGS: "$IDN_LDFLAGS"])
2963    AC_MSG_NOTICE([IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2964    AC_MSG_NOTICE([IDN_DIR: "$IDN_DIR"])
2965  fi
2966
2967  CPPFLAGS="$CPPFLAGS $IDN_CPPFLAGS"
2968  LDFLAGS="$LDFLAGS $IDN_LDFLAGS"
2969  LDFLAGSPC="$LDFLAGSPC $IDN_LDFLAGS"
2970  LIBS="$IDN_LIBS $LIBS"
2971
2972  AC_MSG_CHECKING([if idn2_lookup_ul can be linked])
2973  AC_LINK_IFELSE([
2974    AC_LANG_FUNC_LINK_TRY([idn2_lookup_ul])
2975  ],[
2976    AC_MSG_RESULT([yes])
2977    tst_links_libidn="yes"
2978  ],[
2979    AC_MSG_RESULT([no])
2980    tst_links_libidn="no"
2981  ])
2982
2983  AC_CHECK_HEADERS(idn2.h)
2984
2985  if test "$tst_links_libidn" = "yes"; then
2986    AC_DEFINE(HAVE_LIBIDN2, 1, [Define to 1 if you have the `idn2' library (-lidn2).])
2987    dnl different versions of libidn have different setups of these:
2988
2989    IDN_ENABLED=1
2990    curl_idn_msg="enabled (libidn2)"
2991    if test -n "$IDN_DIR" && test "$cross_compiling" != "yes"; then
2992      CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$IDN_DIR"
2993      export CURL_LIBRARY_PATH
2994      AC_MSG_NOTICE([Added $IDN_DIR to CURL_LIBRARY_PATH])
2995    fi
2996    LIBCURL_PC_REQUIRES_PRIVATE="libidn2 $LIBCURL_PC_REQUIRES_PRIVATE"
2997  else
2998    AC_MSG_WARN([Cannot find libidn2])
2999    CPPFLAGS="$clean_CPPFLAGS"
3000    LDFLAGS="$clean_LDFLAGS"
3001    LDFLAGSPC="$clean_LDFLAGSPC"
3002    LIBS="$clean_LIBS"
3003    want_idn="no"
3004  fi
3005fi
3006
3007dnl **********************************************************************
3008dnl Check for nghttp2
3009dnl **********************************************************************
3010
3011OPT_H2="yes"
3012
3013if test "$disable_http" = "yes"; then
3014  dnl without HTTP nghttp2 is no use
3015  OPT_H2="no"
3016fi
3017
3018AC_ARG_WITH(nghttp2,
3019AS_HELP_STRING([--with-nghttp2=PATH],[Enable nghttp2 usage])
3020AS_HELP_STRING([--without-nghttp2],[Disable nghttp2 usage]),
3021  [OPT_H2=$withval])
3022case "$OPT_H2" in
3023  no)
3024    dnl --without-nghttp2 option used
3025    want_nghttp2="no"
3026    ;;
3027  yes)
3028    dnl --with-nghttp2 option used without path
3029    want_nghttp2="default"
3030    want_nghttp2_path=""
3031    want_nghttp2_pkg_config_path=""
3032    ;;
3033  *)
3034    dnl --with-nghttp2 option used with path
3035    want_nghttp2="yes"
3036    want_nghttp2_path="$withval"
3037    want_nghttp2_pkg_config_path="$OPT_H2/lib/pkgconfig"
3038    ;;
3039esac
3040
3041if test "$want_nghttp2" != "no"; then
3042  dnl backup the pre-nghttp2 variables
3043  CLEANLDFLAGS="$LDFLAGS"
3044  CLEANLDFLAGSPC="$LDFLAGSPC"
3045  CLEANCPPFLAGS="$CPPFLAGS"
3046  CLEANLIBS="$LIBS"
3047
3048  CURL_CHECK_PKGCONFIG(libnghttp2, $want_nghttp2_pkg_config_path)
3049
3050  if test "$PKGCONFIG" != "no"; then
3051    LIB_H2=`CURL_EXPORT_PCDIR([$want_nghttp2_pkg_config_path])
3052      $PKGCONFIG --libs-only-l libnghttp2`
3053    AC_MSG_NOTICE([-l is $LIB_H2])
3054
3055    CPP_H2=`CURL_EXPORT_PCDIR([$want_nghttp2_pkg_config_path])
3056      $PKGCONFIG --cflags-only-I libnghttp2`
3057    AC_MSG_NOTICE([-I is $CPP_H2])
3058
3059    LD_H2=`CURL_EXPORT_PCDIR([$want_nghttp2_pkg_config_path])
3060      $PKGCONFIG --libs-only-L libnghttp2`
3061    AC_MSG_NOTICE([-L is $LD_H2])
3062
3063    DIR_H2=`echo $LD_H2 | $SED -e 's/^-L//'`
3064  elif test -n "$want_nghttp2_path"; then
3065    LIB_H2="-lnghttp2"
3066    LD_H2=-L${want_nghttp2_path}/lib$libsuff
3067    CPP_H2=-I${want_nghttp2_path}/include
3068    DIR_H2=${want_nghttp2_path}/lib$libsuff
3069  elif test "$want_nghttp2" != "default"; then
3070    dnl no nghttp2 pkg-config found and no custom directory specified,
3071    dnl deal with it
3072    AC_MSG_ERROR([--with-nghttp2 was specified but could not find libnghttp2 pkg-config file.])
3073  else
3074    LIB_H2="-lnghttp2"
3075  fi
3076
3077  LDFLAGS="$LDFLAGS $LD_H2"
3078  LDFLAGSPC="$LDFLAGSPC $LD_H2"
3079  CPPFLAGS="$CPPFLAGS $CPP_H2"
3080  LIBS="$LIB_H2 $LIBS"
3081
3082  dnl use nghttp2_session_get_stream_local_window_size to require nghttp2
3083  dnl >= 1.15.0
3084  AC_CHECK_LIB(nghttp2, nghttp2_session_get_stream_local_window_size,
3085    [
3086      AC_CHECK_HEADERS(nghttp2/nghttp2.h,
3087        curl_h2_msg="enabled (nghttp2)"
3088        AC_DEFINE(USE_NGHTTP2, 1, [if nghttp2 is in use])
3089        USE_NGHTTP2=1
3090        LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libnghttp2"
3091      )
3092
3093      CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_H2"
3094      export CURL_LIBRARY_PATH
3095      AC_MSG_NOTICE([Added $DIR_H2 to CURL_LIBRARY_PATH])
3096    ],
3097      dnl not found, revert back to clean variables
3098      LDFLAGS=$CLEANLDFLAGS
3099      LDFLAGSPC=$CLEANLDFLAGSPC
3100      CPPFLAGS=$CLEANCPPFLAGS
3101      LIBS=$CLEANLIBS
3102  )
3103fi
3104
3105dnl **********************************************************************
3106dnl Check for ngtcp2 (QUIC)
3107dnl **********************************************************************
3108
3109OPT_TCP2="no"
3110
3111if test "$disable_http" = "yes"; then
3112  dnl without HTTP, ngtcp2 is no use
3113  OPT_TCP2="no"
3114fi
3115
3116AC_ARG_WITH(ngtcp2,
3117AS_HELP_STRING([--with-ngtcp2=PATH],[Enable ngtcp2 usage])
3118AS_HELP_STRING([--without-ngtcp2],[Disable ngtcp2 usage]),
3119  [OPT_TCP2=$withval])
3120case "$OPT_TCP2" in
3121  no)
3122    dnl --without-ngtcp2 option used
3123    want_tcp2="no"
3124    ;;
3125  yes)
3126    dnl --with-ngtcp2 option used without path
3127    want_tcp2="default"
3128    want_tcp2_path=""
3129    ;;
3130  *)
3131    dnl --with-ngtcp2 option used with path
3132    want_tcp2="yes"
3133    want_tcp2_path="$OPT_TCP2/lib/pkgconfig"
3134    ;;
3135esac
3136
3137curl_tcp2_msg="no      (--with-ngtcp2)"
3138if test "$want_tcp2" != "no"; then
3139
3140  if test "$QUIC_ENABLED" != "yes"; then
3141    AC_MSG_ERROR([the detected TLS library does not support QUIC, making --with-ngtcp2 a no-no])
3142  fi
3143
3144  dnl backup the pre-ngtcp2 variables
3145  CLEANLDFLAGS="$LDFLAGS"
3146  CLEANLDFLAGSPC="$LDFLAGSPC"
3147  CLEANCPPFLAGS="$CPPFLAGS"
3148  CLEANLIBS="$LIBS"
3149
3150  CURL_CHECK_PKGCONFIG(libngtcp2, $want_tcp2_path)
3151
3152  if test "$PKGCONFIG" != "no"; then
3153    LIB_TCP2=`CURL_EXPORT_PCDIR([$want_tcp2_path])
3154      $PKGCONFIG --libs-only-l libngtcp2`
3155    AC_MSG_NOTICE([-l is $LIB_TCP2])
3156
3157    CPP_TCP2=`CURL_EXPORT_PCDIR([$want_tcp2_path])
3158      $PKGCONFIG --cflags-only-I libngtcp2`
3159    AC_MSG_NOTICE([-I is $CPP_TCP2])
3160
3161    LD_TCP2=`CURL_EXPORT_PCDIR([$want_tcp2_path])
3162      $PKGCONFIG --libs-only-L libngtcp2`
3163    AC_MSG_NOTICE([-L is $LD_TCP2])
3164
3165    LDFLAGS="$LDFLAGS $LD_TCP2"
3166    LDFLAGSPC="$LDFLAGSPC $LD_TCP2"
3167    CPPFLAGS="$CPPFLAGS $CPP_TCP2"
3168    LIBS="$LIB_TCP2 $LIBS"
3169
3170    if test "$cross_compiling" != "yes"; then
3171      DIR_TCP2=`echo $LD_TCP2 | $SED -e 's/^-L//'`
3172    fi
3173    AC_CHECK_LIB(ngtcp2, ngtcp2_conn_client_new_versioned,
3174      [
3175        AC_CHECK_HEADERS(ngtcp2/ngtcp2.h,
3176          AC_DEFINE(USE_NGTCP2, 1, [if ngtcp2 is in use])
3177          USE_NGTCP2=1
3178          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_TCP2"
3179          export CURL_LIBRARY_PATH
3180          AC_MSG_NOTICE([Added $DIR_TCP2 to CURL_LIBRARY_PATH])
3181          LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libngtcp2"
3182        )
3183      ],
3184        dnl not found, revert back to clean variables
3185        LDFLAGS=$CLEANLDFLAGS
3186        LDFLAGSPC=$CLEANLDFLAGSPC
3187        CPPFLAGS=$CLEANCPPFLAGS
3188        LIBS=$CLEANLIBS
3189    )
3190
3191  else
3192    dnl no ngtcp2 pkg-config found, deal with it
3193    if test "$want_tcp2" != "default"; then
3194      dnl To avoid link errors, we do not allow --with-ngtcp2 without
3195      dnl a pkgconfig file
3196      AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2 pkg-config file.])
3197    fi
3198  fi
3199fi
3200
3201if test "$USE_NGTCP2" = "1" && test "$OPENSSL_ENABLED" = "1" && test "$HAVE_LIBRESSL" = "1"; then
3202
3203  dnl backup the pre-ngtcp2_crypto_libressl variables
3204  CLEANLDFLAGS="$LDFLAGS"
3205  CLEANLDFLAGSPC="$LDFLAGSPC"
3206  CLEANCPPFLAGS="$CPPFLAGS"
3207  CLEANLIBS="$LIBS"
3208
3209  CURL_CHECK_PKGCONFIG(libngtcp2_crypto_libressl, $want_tcp2_path, 1)
3210
3211  if test "$PKGCONFIG" != "no"; then
3212    LIB_NGTCP2_CRYPTO_LIBRESSL=`CURL_EXPORT_PCDIR([$want_tcp2_path], 1)
3213      $PKGCONFIG --libs-only-l libngtcp2_crypto_libressl`
3214    AC_MSG_NOTICE([-l is $LIB_NGTCP2_CRYPTO_LIBRESSL])
3215
3216    CPP_NGTCP2_CRYPTO_LIBRESSL=`CURL_EXPORT_PCDIR([$want_tcp2_path], 1)
3217      $PKGCONFIG --cflags-only-I libngtcp2_crypto_libressl`
3218    AC_MSG_NOTICE([-I is $CPP_NGTCP2_CRYPTO_LIBRESSL])
3219
3220    LD_NGTCP2_CRYPTO_LIBRESSL=`CURL_EXPORT_PCDIR([$want_tcp2_path], 1)
3221      $PKGCONFIG --libs-only-L libngtcp2_crypto_libressl`
3222    AC_MSG_NOTICE([-L is $LD_NGTCP2_CRYPTO_LIBRESSL])
3223
3224    LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_LIBRESSL"
3225    LDFLAGSPC="$LDFLAGSPC $LD_NGTCP2_CRYPTO_LIBRESSL"
3226    CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_LIBRESSL"
3227    LIBS="$LIB_NGTCP2_CRYPTO_LIBRESSL $LIBS"
3228
3229    if test "$cross_compiling" != "yes"; then
3230      DIR_NGTCP2_CRYPTO_LIBRESSL=`echo $LD_NGTCP2_CRYPTO_LIBRESSL | $SED -e 's/^-L//'`
3231    fi
3232    AC_CHECK_LIB(ngtcp2_crypto_libressl, ngtcp2_crypto_recv_client_initial_cb,
3233      [
3234        AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h,
3235          USE_NGTCP2=1
3236          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_LIBRESSL"
3237          export CURL_LIBRARY_PATH
3238          AC_MSG_NOTICE([Added $DIR_NGTCP2_CRYPTO_LIBRESSL to CURL_LIBRARY_PATH])
3239          LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libngtcp2_crypto_libressl"
3240        )
3241      ],
3242        dnl not found, revert back to clean variables
3243        LDFLAGS=$CLEANLDFLAGS
3244        LDFLAGSPC=$CLEANLDFLAGSPC
3245        CPPFLAGS=$CLEANCPPFLAGS
3246        LIBS=$CLEANLIBS
3247    )
3248
3249  else
3250    dnl no ngtcp2_crypto_libressl pkg-config found, deal with it
3251    if test "$want_tcp2" != "default"; then
3252      dnl To avoid link errors, we do not allow --with-ngtcp2 without
3253      dnl a pkgconfig file
3254      AC_MSG_WARN([--with-ngtcp2 was specified but could not find ngtcp2_crypto_libressl pkg-config file.])
3255      dnl Pretend to be quictls to fall back to using ngtcp2_crypto_quictls
3256    fi
3257    HAVE_LIBRESSL=0
3258  fi
3259fi
3260
3261if test "$USE_NGTCP2" = "1" && test "$OPENSSL_ENABLED" = "1" && test "$HAVE_LIBRESSL" != "1" &&
3262   test "$OPENSSL_IS_AWSLC" != "1" && test "$OPENSSL_IS_BORINGSSL" != "1" && test "$OPENSSL_QUIC_API2" != "1"; then
3263
3264  dnl backup the pre-ngtcp2_crypto_quictls variables
3265  CLEANLDFLAGS="$LDFLAGS"
3266  CLEANLDFLAGSPC="$LDFLAGSPC"
3267  CLEANCPPFLAGS="$CPPFLAGS"
3268  CLEANLIBS="$LIBS"
3269
3270  CURL_CHECK_PKGCONFIG(libngtcp2_crypto_quictls, $want_tcp2_path, 1)
3271
3272  if test "$PKGCONFIG" != "no"; then
3273    LIB_NGTCP2_CRYPTO_QUICTLS=`CURL_EXPORT_PCDIR([$want_tcp2_path], 1)
3274      $PKGCONFIG --libs-only-l libngtcp2_crypto_quictls`
3275    AC_MSG_NOTICE([-l is $LIB_NGTCP2_CRYPTO_QUICTLS])
3276
3277    CPP_NGTCP2_CRYPTO_QUICTLS=`CURL_EXPORT_PCDIR([$want_tcp2_path], 1)
3278      $PKGCONFIG --cflags-only-I libngtcp2_crypto_quictls`
3279    AC_MSG_NOTICE([-I is $CPP_NGTCP2_CRYPTO_QUICTLS])
3280
3281    LD_NGTCP2_CRYPTO_QUICTLS=`CURL_EXPORT_PCDIR([$want_tcp2_path], 1)
3282      $PKGCONFIG --libs-only-L libngtcp2_crypto_quictls`
3283    AC_MSG_NOTICE([-L is $LD_NGTCP2_CRYPTO_QUICTLS])
3284
3285    LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_QUICTLS"
3286    LDFLAGSPC="$LDFLAGSPC $LD_NGTCP2_CRYPTO_QUICTLS"
3287    CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_QUICTLS"
3288    LIBS="$LIB_NGTCP2_CRYPTO_QUICTLS $LIBS"
3289
3290    if test "$cross_compiling" != "yes"; then
3291      DIR_NGTCP2_CRYPTO_QUICTLS=`echo $LD_NGTCP2_CRYPTO_QUICTLS | $SED -e 's/^-L//'`
3292    fi
3293    AC_CHECK_LIB(ngtcp2_crypto_quictls, ngtcp2_crypto_recv_client_initial_cb,
3294      [
3295        AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h,
3296          USE_NGTCP2=1
3297          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_QUICTLS"
3298          export CURL_LIBRARY_PATH
3299          AC_MSG_NOTICE([Added $DIR_NGTCP2_CRYPTO_QUICTLS to CURL_LIBRARY_PATH])
3300          LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libngtcp2_crypto_quictls"
3301        )
3302      ],
3303        dnl not found, revert back to clean variables
3304        LDFLAGS=$CLEANLDFLAGS
3305        LDFLAGSPC=$CLEANLDFLAGSPC
3306        CPPFLAGS=$CLEANCPPFLAGS
3307        LIBS=$CLEANLIBS
3308    )
3309
3310  else
3311    dnl no ngtcp2_crypto_quictls pkg-config found, deal with it
3312    if test "$want_tcp2" != "default"; then
3313      dnl To avoid link errors, we do not allow --with-ngtcp2 without
3314      dnl a pkgconfig file
3315      AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2_crypto_quictls pkg-config file.])
3316    fi
3317  fi
3318fi
3319
3320if test "$USE_NGTCP2" = "1" && test "$OPENSSL_ENABLED" = "1" &&
3321   test "$OPENSSL_IS_AWSLC" != "1" && test "$OPENSSL_IS_BORINGSSL" != "1" && test "$OPENSSL_QUIC_API2" = "1"; then
3322
3323  dnl backup the pre-ngtcp2_crypto_ossl variables
3324  CLEANLDFLAGS="$LDFLAGS"
3325  CLEANLDFLAGSPC="$LDFLAGSPC"
3326  CLEANCPPFLAGS="$CPPFLAGS"
3327  CLEANLIBS="$LIBS"
3328
3329  CURL_CHECK_PKGCONFIG(libngtcp2_crypto_ossl, $want_tcp2_path, 1)
3330
3331  if test "$PKGCONFIG" != "no"; then
3332    LIB_NGTCP2_CRYPTO_OSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path], 1)
3333      $PKGCONFIG --libs-only-l libngtcp2_crypto_ossl`
3334    AC_MSG_NOTICE([-l is $LIB_NGTCP2_CRYPTO_OSSL])
3335
3336    CPP_NGTCP2_CRYPTO_OSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path], 1)
3337      $PKGCONFIG --cflags-only-I libngtcp2_crypto_ossl`
3338    AC_MSG_NOTICE([-I is $CPP_NGTCP2_CRYPTO_OSSL])
3339
3340    LD_NGTCP2_CRYPTO_OSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path], 1)
3341      $PKGCONFIG --libs-only-L libngtcp2_crypto_ossl`
3342    AC_MSG_NOTICE([-L is $LD_NGTCP2_CRYPTO_OSSL])
3343
3344    LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_OSSL"
3345    LDFLAGSPC="$LDFLAGSPC $LD_NGTCP2_CRYPTO_OSSL"
3346    CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_OSSL"
3347    LIBS="$LIB_NGTCP2_CRYPTO_OSSL $LIBS"
3348
3349    if test "$cross_compiling" != "yes"; then
3350      DIR_NGTCP2_CRYPTO_OSSL=`echo $LD_NGTCP2_CRYPTO_OSSL | $SED -e 's/^-L//'`
3351    fi
3352    AC_CHECK_LIB(ngtcp2_crypto_ossl, ngtcp2_crypto_recv_client_initial_cb,
3353      [
3354        AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h,
3355          USE_NGTCP2=1
3356          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_OSSL"
3357          export CURL_LIBRARY_PATH
3358          AC_MSG_NOTICE([Added $DIR_NGTCP2_CRYPTO_OSSL to CURL_LIBRARY_PATH])
3359          LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libngtcp2_crypto_ossl"
3360          AC_DEFINE(OPENSSL_QUIC_API2, 1, [openssl with new QUIC API])
3361        )
3362      ],
3363        dnl not found, revert back to clean variables
3364        LDFLAGS=$CLEANLDFLAGS
3365        LDFLAGSPC=$CLEANLDFLAGSPC
3366        CPPFLAGS=$CLEANCPPFLAGS
3367        LIBS=$CLEANLIBS
3368    )
3369
3370  else
3371    dnl no ngtcp2_crypto_ossl pkg-config found, deal with it
3372    if test "$want_tcp2" != "default"; then
3373      dnl To avoid link errors, we do not allow --with-ngtcp2 without
3374      dnl a pkgconfig file
3375      AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2_crypto_ossl pkg-config file.])
3376    fi
3377  fi
3378fi
3379
3380if test "$USE_NGTCP2" = "1" && test "$OPENSSL_ENABLED" = "1" &&
3381   (test "$OPENSSL_IS_AWSLC" = "1" || test "$OPENSSL_IS_BORINGSSL" = "1"); then
3382
3383  dnl backup the pre-ngtcp2_crypto_boringssl variables
3384  CLEANLDFLAGS="$LDFLAGS"
3385  CLEANLDFLAGSPC="$LDFLAGSPC"
3386  CLEANCPPFLAGS="$CPPFLAGS"
3387  CLEANLIBS="$LIBS"
3388
3389  CURL_CHECK_PKGCONFIG(libngtcp2_crypto_boringssl, $want_tcp2_path, 1)
3390
3391  if test "$PKGCONFIG" != "no"; then
3392    LIB_NGTCP2_CRYPTO_BORINGSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path], 1)
3393      $PKGCONFIG --libs-only-l libngtcp2_crypto_boringssl`
3394    AC_MSG_NOTICE([-l is $LIB_NGTCP2_CRYPTO_BORINGSSL])
3395
3396    CPP_NGTCP2_CRYPTO_BORINGSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path], 1)
3397      $PKGCONFIG --cflags-only-I libngtcp2_crypto_boringssl`
3398    AC_MSG_NOTICE([-I is $CPP_NGTCP2_CRYPTO_BORINGSSL])
3399
3400    LD_NGTCP2_CRYPTO_BORINGSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path], 1)
3401      $PKGCONFIG --libs-only-L libngtcp2_crypto_boringssl`
3402    AC_MSG_NOTICE([-L is $LD_NGTCP2_CRYPTO_BORINGSSL])
3403
3404    LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_BORINGSSL"
3405    LDFLAGSPC="$LDFLAGSPC $LD_NGTCP2_CRYPTO_BORINGSSL"
3406    CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_BORINGSSL"
3407    LIBS="$LIB_NGTCP2_CRYPTO_BORINGSSL $LIBS"
3408
3409    if test "$cross_compiling" != "yes"; then
3410      DIR_NGTCP2_CRYPTO_BORINGSSL=`echo $LD_NGTCP2_CRYPTO_BORINGSSL | $SED -e 's/^-L//'`
3411    fi
3412    AC_CHECK_LIB(ngtcp2_crypto_boringssl, ngtcp2_crypto_recv_client_initial_cb,
3413      [
3414        AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h,
3415          USE_NGTCP2=1
3416          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_BORINGSSL"
3417          export CURL_LIBRARY_PATH
3418          AC_MSG_NOTICE([Added $DIR_NGTCP2_CRYPTO_BORINGSSL to CURL_LIBRARY_PATH])
3419          LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libngtcp2_crypto_boringssl"
3420        )
3421      ],
3422        dnl not found, revert back to clean variables
3423        LDFLAGS=$CLEANLDFLAGS
3424        LDFLAGSPC=$CLEANLDFLAGSPC
3425        CPPFLAGS=$CLEANCPPFLAGS
3426        LIBS=$CLEANLIBS
3427    )
3428
3429  else
3430    dnl no ngtcp2_crypto_boringssl pkg-config found, deal with it
3431    if test "$want_tcp2" != "default"; then
3432      dnl To avoid link errors, we do not allow --with-ngtcp2 without
3433      dnl a pkgconfig file
3434      AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2_crypto_boringssl pkg-config file.])
3435    fi
3436  fi
3437fi
3438
3439if test "$USE_NGTCP2" = "1" && test "$GNUTLS_ENABLED" = "1"; then
3440  dnl backup the pre-ngtcp2_crypto_gnutls variables
3441  CLEANLDFLAGS="$LDFLAGS"
3442  CLEANLDFLAGSPC="$LDFLAGSPC"
3443  CLEANCPPFLAGS="$CPPFLAGS"
3444  CLEANLIBS="$LIBS"
3445
3446  CURL_CHECK_PKGCONFIG(libngtcp2_crypto_gnutls, $want_tcp2_path, 1)
3447
3448  if test "$PKGCONFIG" != "no"; then
3449    LIB_NGTCP2_CRYPTO_GNUTLS=`CURL_EXPORT_PCDIR([$want_tcp2_path], 1)
3450      $PKGCONFIG --libs-only-l libngtcp2_crypto_gnutls`
3451    AC_MSG_NOTICE([-l is $LIB_NGTCP2_CRYPTO_GNUTLS])
3452
3453    CPP_NGTCP2_CRYPTO_GNUTLS=`CURL_EXPORT_PCDIR([$want_tcp2_path], 1)
3454      $PKGCONFIG --cflags-only-I libngtcp2_crypto_gnutls`
3455    AC_MSG_NOTICE([-I is $CPP_NGTCP2_CRYPTO_GNUTLS])
3456
3457    LD_NGTCP2_CRYPTO_GNUTLS=`CURL_EXPORT_PCDIR([$want_tcp2_path], 1)
3458      $PKGCONFIG --libs-only-L libngtcp2_crypto_gnutls`
3459    AC_MSG_NOTICE([-L is $LD_NGTCP2_CRYPTO_GNUTLS])
3460
3461    LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_GNUTLS"
3462    LDFLAGSPC="$LDFLAGSPC $LD_NGTCP2_CRYPTO_GNUTLS"
3463    CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_GNUTLS"
3464    LIBS="$LIB_NGTCP2_CRYPTO_GNUTLS $LIBS"
3465
3466    if test "$cross_compiling" != "yes"; then
3467      DIR_NGTCP2_CRYPTO_GNUTLS=`echo $LD_NGTCP2_CRYPTO_GNUTLS | $SED -e 's/^-L//'`
3468    fi
3469    AC_CHECK_LIB(ngtcp2_crypto_gnutls, ngtcp2_crypto_recv_client_initial_cb,
3470      [
3471        AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h,
3472          USE_NGTCP2=1
3473          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_GNUTLS"
3474          export CURL_LIBRARY_PATH
3475          AC_MSG_NOTICE([Added $DIR_NGTCP2_CRYPTO_GNUTLS to CURL_LIBRARY_PATH])
3476          LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libngtcp2_crypto_gnutls"
3477        )
3478      ],
3479        dnl not found, revert back to clean variables
3480        LDFLAGS=$CLEANLDFLAGS
3481        LDFLAGSPC=$CLEANLDFLAGSPC
3482        CPPFLAGS=$CLEANCPPFLAGS
3483        LIBS=$CLEANLIBS
3484    )
3485
3486  else
3487    dnl no ngtcp2_crypto_gnutls pkg-config found, deal with it
3488    if test "$want_tcp2" != "default"; then
3489      dnl To avoid link errors, we do not allow --with-ngtcp2 without
3490      dnl a pkgconfig file
3491      AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2_crypto_gnutls pkg-config file.])
3492    fi
3493  fi
3494fi
3495
3496if test "$USE_NGTCP2" = "1" && test "$WOLFSSL_ENABLED" = "1"; then
3497  dnl backup the pre-ngtcp2_crypto_wolfssl variables
3498  CLEANLDFLAGS="$LDFLAGS"
3499  CLEANLDFLAGSPC="$LDFLAGSPC"
3500  CLEANCPPFLAGS="$CPPFLAGS"
3501  CLEANLIBS="$LIBS"
3502
3503  CURL_CHECK_PKGCONFIG(libngtcp2_crypto_wolfssl, $want_tcp2_path, 1)
3504
3505  if test "$PKGCONFIG" != "no"; then
3506    LIB_NGTCP2_CRYPTO_WOLFSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path], 1)
3507      $PKGCONFIG --libs-only-l libngtcp2_crypto_wolfssl`
3508    AC_MSG_NOTICE([-l is $LIB_NGTCP2_CRYPTO_WOLFSSL])
3509
3510    CPP_NGTCP2_CRYPTO_WOLFSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path], 1)
3511      $PKGCONFIG --cflags-only-I libngtcp2_crypto_wolfssl`
3512    AC_MSG_NOTICE([-I is $CPP_NGTCP2_CRYPTO_WOLFSSL])
3513
3514    LD_NGTCP2_CRYPTO_WOLFSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path], 1)
3515      $PKGCONFIG --libs-only-L libngtcp2_crypto_wolfssl`
3516    AC_MSG_NOTICE([-L is $LD_NGTCP2_CRYPTO_WOLFSSL])
3517
3518    LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_WOLFSSL"
3519    LDFLAGSPC="$LDFLAGSPC $LD_NGTCP2_CRYPTO_WOLFSSL"
3520    CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_WOLFSSL"
3521    LIBS="$LIB_NGTCP2_CRYPTO_WOLFSSL $LIBS"
3522
3523    if test "$cross_compiling" != "yes"; then
3524      DIR_NGTCP2_CRYPTO_WOLFSSL=`echo $LD_NGTCP2_CRYPTO_WOLFSSL | $SED -e 's/^-L//'`
3525    fi
3526    AC_CHECK_LIB(ngtcp2_crypto_wolfssl, ngtcp2_crypto_recv_client_initial_cb,
3527      [
3528        AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h,
3529          USE_NGTCP2=1
3530          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_WOLFSSL"
3531          export CURL_LIBRARY_PATH
3532          AC_MSG_NOTICE([Added $DIR_NGTCP2_CRYPTO_WOLFSSL to CURL_LIBRARY_PATH])
3533          LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libngtcp2_crypto_wolfssl"
3534        )
3535      ],
3536        dnl not found, revert back to clean variables
3537        LDFLAGS=$CLEANLDFLAGS
3538        LDFLAGSPC=$CLEANLDFLAGSPC
3539        CPPFLAGS=$CLEANCPPFLAGS
3540        LIBS=$CLEANLIBS
3541    )
3542
3543  else
3544    dnl no ngtcp2_crypto_wolfssl pkg-config found, deal with it
3545    if test "$want_tcp2" != "default"; then
3546      dnl To avoid link errors, we do not allow --with-ngtcp2 without
3547      dnl a pkgconfig file
3548      AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2_crypto_wolfssl pkg-config file.])
3549    fi
3550  fi
3551fi
3552
3553dnl **********************************************************************
3554dnl Check for nghttp3 (HTTP/3 with ngtcp2)
3555dnl **********************************************************************
3556
3557OPT_NGHTTP3="yes"
3558
3559if test "$USE_NGTCP2" != "1"; then
3560  dnl without ngtcp2, nghttp3 is of no use for us
3561  OPT_NGHTTP3="no"
3562  want_nghttp3="no"
3563fi
3564
3565AC_ARG_WITH(nghttp3,
3566AS_HELP_STRING([--with-nghttp3=PATH],[Enable nghttp3 usage])
3567AS_HELP_STRING([--without-nghttp3],[Disable nghttp3 usage]),
3568  [OPT_NGHTTP3=$withval])
3569case "$OPT_NGHTTP3" in
3570  no)
3571    dnl --without-nghttp3 option used
3572    want_nghttp3="no"
3573    ;;
3574  yes)
3575    dnl --with-nghttp3 option used without path
3576    want_nghttp3="default"
3577    want_nghttp3_path=""
3578    ;;
3579  *)
3580    dnl --with-nghttp3 option used with path
3581    want_nghttp3="yes"
3582    want_nghttp3_path="$OPT_NGHTTP3/lib/pkgconfig"
3583    ;;
3584esac
3585
3586curl_http3_msg="no      (--with-nghttp3)"
3587if test "$want_nghttp3" != "no"; then
3588
3589  if test "x$USE_NGTCP2" != "x1"; then
3590    dnl without ngtcp2, nghttp3 is of no use for us
3591    AC_MSG_ERROR([nghttp3 enabled without a QUIC library; enable ngtcp2])
3592  fi
3593
3594  dnl backup the pre-nghttp3 variables
3595  CLEANLDFLAGS="$LDFLAGS"
3596  CLEANLDFLAGSPC="$LDFLAGSPC"
3597  CLEANCPPFLAGS="$CPPFLAGS"
3598  CLEANLIBS="$LIBS"
3599
3600  CURL_CHECK_PKGCONFIG(libnghttp3, $want_nghttp3_path)
3601
3602  if test "$PKGCONFIG" != "no"; then
3603    LIB_NGHTTP3=`CURL_EXPORT_PCDIR([$want_nghttp3_path])
3604      $PKGCONFIG --libs-only-l libnghttp3`
3605    AC_MSG_NOTICE([-l is $LIB_NGHTTP3])
3606
3607    CPP_NGHTTP3=`CURL_EXPORT_PCDIR([$want_nghttp3_path])
3608      $PKGCONFIG --cflags-only-I libnghttp3`
3609    AC_MSG_NOTICE([-I is $CPP_NGHTTP3])
3610
3611    LD_NGHTTP3=`CURL_EXPORT_PCDIR([$want_nghttp3_path])
3612      $PKGCONFIG --libs-only-L libnghttp3`
3613    AC_MSG_NOTICE([-L is $LD_NGHTTP3])
3614
3615    LDFLAGS="$LDFLAGS $LD_NGHTTP3"
3616    LDFLAGSPC="$LDFLAGSPC $LD_NGHTTP3"
3617    CPPFLAGS="$CPPFLAGS $CPP_NGHTTP3"
3618    LIBS="$LIB_NGHTTP3 $LIBS"
3619
3620    if test "$cross_compiling" != "yes"; then
3621      DIR_NGHTTP3=`echo $LD_NGHTTP3 | $SED -e 's/^-L//'`
3622    fi
3623    AC_CHECK_LIB(nghttp3, nghttp3_conn_client_new_versioned,
3624      [
3625        AC_CHECK_HEADERS(nghttp3/nghttp3.h,
3626          AC_DEFINE(USE_NGHTTP3, 1, [if nghttp3 is in use])
3627          USE_NGHTTP3=1
3628          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGHTTP3"
3629          export CURL_LIBRARY_PATH
3630          AC_MSG_NOTICE([Added $DIR_NGHTTP3 to CURL_LIBRARY_PATH])
3631          LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libnghttp3"
3632        )
3633      ],
3634        dnl not found, revert back to clean variables
3635        LDFLAGS=$CLEANLDFLAGS
3636        LDFLAGSPC=$CLEANLDFLAGSPC
3637        CPPFLAGS=$CLEANCPPFLAGS
3638        LIBS=$CLEANLIBS
3639    )
3640  else
3641    dnl no nghttp3 pkg-config found, deal with it
3642    if test "$want_nghttp3" != "default"; then
3643      dnl To avoid link errors, we do not allow --with-nghttp3 without
3644      dnl a pkgconfig file
3645      AC_MSG_ERROR([--with-nghttp3 was specified but could not find nghttp3 pkg-config file.])
3646    fi
3647  fi
3648fi
3649
3650dnl **********************************************************************
3651dnl Check for ngtcp2 and nghttp3 (HTTP/3 with ngtcp2 + nghttp3)
3652dnl **********************************************************************
3653
3654if test "$USE_NGTCP2" = "1" && test "$USE_NGHTTP3" = "1"; then
3655  USE_NGTCP2_H3=1
3656  curl_h3_msg="enabled (ngtcp2 + nghttp3)"
3657fi
3658
3659dnl **********************************************************************
3660dnl Check for quiche (QUIC)
3661dnl **********************************************************************
3662
3663OPT_QUICHE="no"
3664
3665if test "$disable_http" = "yes" || test "$USE_NGTCP" = "1"; then
3666  dnl without HTTP or with ngtcp2, quiche is no use
3667  OPT_QUICHE="no"
3668fi
3669
3670AC_ARG_WITH(quiche,
3671AS_HELP_STRING([--with-quiche=PATH],[Enable quiche usage])
3672AS_HELP_STRING([--without-quiche],[Disable quiche usage]),
3673  [OPT_QUICHE=$withval])
3674case "$OPT_QUICHE" in
3675  no)
3676    dnl --without-quiche option used
3677    want_quiche="no"
3678    ;;
3679  yes)
3680    dnl --with-quiche option used without path
3681    want_quiche="default"
3682    want_quiche_path=""
3683    ;;
3684  *)
3685    dnl --with-quiche option used with path
3686    want_quiche="yes"
3687    want_quiche_path="$withval"
3688    ;;
3689esac
3690
3691if test "$want_quiche" != "no"; then
3692
3693  if test "$QUIC_ENABLED" != "yes"; then
3694    AC_MSG_ERROR([the detected TLS library does not support QUIC, making --with-quiche a no-no])
3695  fi
3696
3697  if test "$NGHTTP3_ENABLED" = "1"; then
3698    AC_MSG_ERROR([--with-quiche and --with-ngtcp2 are mutually exclusive])
3699  fi
3700
3701  dnl backup the pre-quiche variables
3702  CLEANLDFLAGS="$LDFLAGS"
3703  CLEANLDFLAGSPC="$LDFLAGSPC"
3704  CLEANCPPFLAGS="$CPPFLAGS"
3705  CLEANLIBS="$LIBS"
3706
3707  CURL_CHECK_PKGCONFIG(quiche, $want_quiche_path)
3708
3709  if test "$PKGCONFIG" != "no"; then
3710    LIB_QUICHE=`CURL_EXPORT_PCDIR([$want_quiche_path])
3711      $PKGCONFIG --libs-only-l quiche`
3712    AC_MSG_NOTICE([-l is $LIB_QUICHE])
3713
3714    CPP_QUICHE=`CURL_EXPORT_PCDIR([$want_quiche_path])
3715      $PKGCONFIG --cflags-only-I quiche`
3716    AC_MSG_NOTICE([-I is $CPP_QUICHE])
3717
3718    LD_QUICHE=`CURL_EXPORT_PCDIR([$want_quiche_path])
3719      $PKGCONFIG --libs-only-L quiche`
3720    AC_MSG_NOTICE([-L is $LD_QUICHE])
3721
3722    LDFLAGS="$LDFLAGS $LD_QUICHE"
3723    LDFLAGSPC="$LDFLAGSPC $LD_QUICHE"
3724    CPPFLAGS="$CPPFLAGS $CPP_QUICHE"
3725    LIBS="$LIB_QUICHE $LIBS"
3726
3727    if test "$cross_compiling" != "yes"; then
3728      DIR_QUICHE=`echo $LD_QUICHE | $SED -e 's/^-L//'`
3729    fi
3730    AC_CHECK_LIB(quiche, quiche_conn_send_ack_eliciting,
3731      [
3732        AC_CHECK_HEADERS(quiche.h,
3733          experimental="$experimental HTTP3"
3734          AC_MSG_NOTICE([HTTP3 support is experimental])
3735          curl_h3_msg="enabled (quiche)"
3736          AC_DEFINE(USE_QUICHE, 1, [if quiche is in use])
3737          USE_QUICHE=1
3738          AC_CHECK_FUNCS([quiche_conn_set_qlog_fd])
3739          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_QUICHE"
3740          export CURL_LIBRARY_PATH
3741          AC_MSG_NOTICE([Added $DIR_QUICHE to CURL_LIBRARY_PATH])
3742          LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE quiche",
3743          [],
3744          [
3745            AC_INCLUDES_DEFAULT
3746            #include <sys/socket.h>
3747          ]
3748        )
3749      ],
3750        dnl not found, revert back to clean variables
3751        AC_MSG_ERROR([could not use quiche])
3752    )
3753  else
3754    dnl no quiche pkg-config found, deal with it
3755    if test "$want_quiche" != "default"; then
3756      dnl To avoid link errors, we do not allow --with-quiche without
3757      dnl a pkgconfig file
3758      AC_MSG_ERROR([--with-quiche was specified but could not find quiche pkg-config file.])
3759    fi
3760  fi
3761fi
3762
3763dnl **********************************************************************
3764dnl libuv is only ever used for debug purposes
3765dnl **********************************************************************
3766
3767OPT_LIBUV=no
3768AC_ARG_WITH(libuv,
3769AS_HELP_STRING([--with-libuv=PATH],[Enable libuv])
3770AS_HELP_STRING([--without-libuv],[Disable libuv]),
3771  [OPT_LIBUV=$withval])
3772case "$OPT_LIBUV" in
3773  no)
3774    dnl --without-libuv option used
3775    want_libuv="no"
3776    ;;
3777  yes)
3778    dnl --with-libuv option used without path
3779    want_libuv="default"
3780    want_libuv_path=""
3781    ;;
3782  *)
3783    dnl --with-libuv option used with path
3784    want_libuv="yes"
3785    want_libuv_path="$withval"
3786    ;;
3787esac
3788
3789if test "$want_libuv" != "no"; then
3790  if test "$want_debug" != "yes"; then
3791    AC_MSG_ERROR([Using libuv without debug support enabled is useless])
3792  fi
3793
3794  dnl backup the pre-libuv variables
3795  CLEANLDFLAGS="$LDFLAGS"
3796  CLEANLDFLAGSPC="$LDFLAGSPC"
3797  CLEANCPPFLAGS="$CPPFLAGS"
3798  CLEANLIBS="$LIBS"
3799
3800  CURL_CHECK_PKGCONFIG(libuv, $want_libuv_path)
3801
3802  if test "$PKGCONFIG" != "no"; then
3803    LIB_LIBUV=`CURL_EXPORT_PCDIR([$want_libuv_path])
3804      $PKGCONFIG --libs-only-l libuv`
3805    AC_MSG_NOTICE([-l is $LIB_LIBUV])
3806
3807    CPP_LIBUV=`CURL_EXPORT_PCDIR([$want_libuv_path])
3808      $PKGCONFIG --cflags-only-I libuv`
3809    AC_MSG_NOTICE([-I is $CPP_LIBUV])
3810
3811    LD_LIBUV=`CURL_EXPORT_PCDIR([$want_libuv_path])
3812      $PKGCONFIG --libs-only-L libuv`
3813    AC_MSG_NOTICE([-L is $LD_LIBUV])
3814
3815    LDFLAGS="$LDFLAGS $LD_LIBUV"
3816    LDFLAGSPC="$LDFLAGSPC $LD_LIBUV"
3817    CPPFLAGS="$CPPFLAGS $CPP_LIBUV"
3818    LIBS="$LIB_LIBUV $LIBS"
3819
3820    if test "$cross_compiling" != "yes"; then
3821      DIR_LIBUV=`echo $LD_LIBUV | $SED -e 's/^-L//'`
3822    fi
3823    AC_CHECK_LIB(uv, uv_default_loop,
3824      [
3825        AC_CHECK_HEADERS(uv.h,
3826          AC_DEFINE(USE_LIBUV, 1, [if libuv is in use])
3827          USE_LIBUV=1
3828          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_LIBUV"
3829          export CURL_LIBRARY_PATH
3830          AC_MSG_NOTICE([Added $DIR_LIBUV to CURL_LIBRARY_PATH])
3831          LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libuv"
3832        )
3833      ],
3834        dnl not found, revert back to clean variables
3835        LDFLAGS=$CLEANLDFLAGS
3836        LDFLAGSPC=$CLEANLDFLAGSPC
3837        CPPFLAGS=$CLEANCPPFLAGS
3838        LIBS=$CLEANLIBS
3839    )
3840  else
3841    dnl no libuv pkg-config found, deal with it
3842    if test "$want_libuv" != "default"; then
3843      dnl To avoid link errors, we do not allow --with-libuv without
3844      dnl a pkgconfig file
3845      AC_MSG_ERROR([--with-libuv was specified but could not find libuv pkg-config file.])
3846    fi
3847  fi
3848
3849fi
3850
3851dnl **********************************************************************
3852dnl Check for zsh completion path
3853dnl **********************************************************************
3854
3855OPT_ZSH_FPATH=default
3856AC_ARG_WITH(zsh-functions-dir,
3857AS_HELP_STRING([--with-zsh-functions-dir=PATH],[Install zsh completions to PATH])
3858AS_HELP_STRING([--without-zsh-functions-dir],[Do not install zsh completions]),
3859  [OPT_ZSH_FPATH=$withval])
3860case "$OPT_ZSH_FPATH" in
3861  default|no)
3862    dnl --without-zsh-functions-dir option used
3863    ;;
3864  yes)
3865    dnl --with-zsh-functions-dir option used without path
3866    ZSH_FUNCTIONS_DIR="$datarootdir/zsh/site-functions"
3867    AC_SUBST(ZSH_FUNCTIONS_DIR)
3868    ;;
3869  *)
3870    dnl --with-zsh-functions-dir option used with path
3871    ZSH_FUNCTIONS_DIR="$withval"
3872    AC_SUBST(ZSH_FUNCTIONS_DIR)
3873    ;;
3874esac
3875if test -z "$PERL" && test -n "$ZSH_FUNCTIONS_DIR"; then
3876  AC_MSG_WARN([perl was not found. Cannot install zsh completions.])
3877  ZSH_FUNCTIONS_DIR=''
3878fi
3879AM_CONDITIONAL(USE_ZSH_COMPLETION, test -n "$ZSH_FUNCTIONS_DIR")
3880
3881dnl **********************************************************************
3882dnl Check for fish completion path
3883dnl **********************************************************************
3884
3885OPT_FISH_FPATH=default
3886AC_ARG_WITH(fish-functions-dir,
3887AS_HELP_STRING([--with-fish-functions-dir=PATH],[Install fish completions to PATH])
3888AS_HELP_STRING([--without-fish-functions-dir],[Do not install fish completions]),
3889  [OPT_FISH_FPATH=$withval])
3890case "$OPT_FISH_FPATH" in
3891  default|no)
3892    dnl --without-fish-functions-dir option used
3893    ;;
3894  yes)
3895    dnl --with-fish-functions-dir option used without path
3896    CURL_CHECK_PKGCONFIG(fish)
3897    if test "$PKGCONFIG" != "no"; then
3898      FISH_FUNCTIONS_DIR=`$PKGCONFIG --variable completionsdir fish`
3899    else
3900      FISH_FUNCTIONS_DIR="$datarootdir/fish/vendor_completions.d"
3901    fi
3902    AC_SUBST(FISH_FUNCTIONS_DIR)
3903    ;;
3904  *)
3905    dnl --with-fish-functions-dir option used with path
3906    FISH_FUNCTIONS_DIR="$withval"
3907    AC_SUBST(FISH_FUNCTIONS_DIR)
3908    ;;
3909esac
3910if test -z "$PERL" && test -n "$FISH_FUNCTIONS_DIR"; then
3911  AC_MSG_WARN([perl was not found. Cannot install fish completions.])
3912  FISH_FUNCTIONS_DIR=''
3913fi
3914AM_CONDITIONAL(USE_FISH_COMPLETION, test -n "$FISH_FUNCTIONS_DIR")
3915
3916dnl Now check for the most basic headers. Then we can use these
3917dnl ones as default-headers when checking for the rest!
3918AC_CHECK_HEADERS(
3919  sys/types.h \
3920  sys/select.h \
3921  sys/ioctl.h \
3922  unistd.h \
3923  arpa/inet.h \
3924  net/if.h \
3925  netinet/in.h \
3926  netinet/in6.h \
3927  sys/un.h \
3928  linux/tcp.h \
3929  netinet/tcp.h \
3930  netinet/udp.h \
3931  netdb.h \
3932  sys/sockio.h \
3933  sys/param.h \
3934  termios.h \
3935  termio.h \
3936  fcntl.h \
3937  io.h \
3938  pwd.h \
3939  utime.h \
3940  sys/utime.h \
3941  sys/poll.h \
3942  poll.h \
3943  sys/resource.h \
3944  libgen.h \
3945  locale.h \
3946  stdbool.h \
3947  sys/filio.h \
3948  sys/eventfd.h,
3949[],
3950[],
3951/* default includes */
3952[
3953#include <stdlib.h>
3954#ifdef HAVE_SYS_TYPES_H
3955#include <sys/types.h>
3956#endif
3957#if !defined(_WIN32) || defined(__MINGW32__)
3958#include <sys/time.h>
3959#endif
3960#ifdef HAVE_SYS_SELECT_H
3961#include <sys/select.h>
3962#elif defined(HAVE_UNISTD_H)
3963#include <unistd.h>
3964#endif
3965#ifndef _WIN32
3966#include <sys/socket.h>
3967#endif
3968#ifdef HAVE_NETINET_IN_H
3969#include <netinet/in.h>
3970#endif
3971#ifdef HAVE_NETINET_IN6_H
3972#include <netinet/in6.h>  /* is this really required to detect other headers? */
3973#endif
3974#ifdef HAVE_SYS_UN_H
3975#include <sys/un.h>  /* is this really required to detect other headers? */
3976#endif
3977]
3978)
3979
3980dnl Checks for typedefs, structures, and compiler characteristics.
3981AC_C_CONST
3982AC_TYPE_SIZE_T
3983
3984CURL_CHECK_STRUCT_TIMEVAL
3985CURL_VERIFY_RUNTIMELIBS
3986
3987CURL_SIZEOF(size_t)
3988CURL_SIZEOF(long)
3989CURL_SIZEOF(int)
3990CURL_SIZEOF(time_t)
3991CURL_SIZEOF(off_t)
3992
3993o=$CPPFLAGS
3994CPPFLAGS="-I$srcdir/include $CPPFLAGS"
3995CURL_SIZEOF(curl_off_t, [
3996#include <curl/system.h>
3997])
3998CURL_SIZEOF(curl_socket_t, [
3999#include <curl/curl.h>
4000])
4001CPPFLAGS=$o
4002
4003if test "$ac_cv_sizeof_curl_off_t" -lt 8; then
4004  AC_MSG_ERROR([64-bit curl_off_t is required])
4005fi
4006
4007dnl check for ssize_t
4008AC_CHECK_TYPE(ssize_t, ,
4009  AC_DEFINE(ssize_t, int, [the signed version of size_t]))
4010
4011dnl check for bool type
4012AC_CHECK_TYPE([bool],[
4013  AC_DEFINE(HAVE_BOOL_T, 1,
4014    [Define to 1 if bool is an available type.])
4015], ,[
4016#ifdef HAVE_SYS_TYPES_H
4017#include <sys/types.h>
4018#endif
4019#ifdef HAVE_STDBOOL_H
4020#include <stdbool.h>
4021#endif
4022])
4023
4024if test "$curl_cv_native_windows" != "yes"; then
4025  dnl check for sa_family_t
4026  AC_CHECK_TYPE(sa_family_t,
4027    AC_DEFINE(HAVE_SA_FAMILY_T, 1, [Define to 1 if symbol `sa_family_t' exists]),,
4028  [
4029  #include <sys/socket.h>
4030  ])
4031fi
4032
4033dnl check for suseconds_t
4034AC_CHECK_TYPE([suseconds_t],[
4035  AC_DEFINE(HAVE_SUSECONDS_T, 1,
4036    [Define to 1 if suseconds_t is an available type.])
4037], ,[
4038#ifdef HAVE_SYS_TYPES_H
4039#include <sys/types.h>
4040#endif
4041#ifndef _WIN32
4042#include <sys/time.h>
4043#endif
4044])
4045
4046case $host_os in
4047  amigaos*|msdos*)
4048    AC_DEFINE(HAVE_TIME_T_UNSIGNED, 1, [Define this if time_t is unsigned])
4049    ;;
4050  *)
4051    AC_MSG_CHECKING([if time_t is unsigned])
4052    CURL_RUN_IFELSE(
4053      [
4054      #include <time.h>
4055      int main(void) {
4056        time_t t = -1;
4057        return t < 0;
4058      }
4059      ],[
4060      AC_MSG_RESULT([yes])
4061      AC_DEFINE(HAVE_TIME_T_UNSIGNED, 1, [Define this if time_t is unsigned])
4062    ],[
4063      AC_MSG_RESULT([no])
4064    ],[
4065      dnl cross-compiling, most systems are signed
4066      AC_MSG_RESULT([no])
4067    ])
4068    ;;
4069esac
4070
4071TYPE_SOCKADDR_STORAGE
4072
4073CURL_CHECK_FUNC_SELECT
4074
4075CURL_CHECK_FUNC_RECV
4076CURL_CHECK_FUNC_SEND
4077
4078CURL_CHECK_FUNC_ALARM
4079CURL_CHECK_FUNC_BASENAME
4080CURL_CHECK_FUNC_CLOSESOCKET
4081CURL_CHECK_FUNC_CLOSESOCKET_CAMEL
4082CURL_CHECK_FUNC_FCNTL
4083CURL_CHECK_FUNC_FREEADDRINFO
4084CURL_CHECK_FUNC_FSETXATTR
4085CURL_CHECK_FUNC_GETADDRINFO
4086CURL_CHECK_FUNC_GETHOSTBYNAME_R
4087CURL_CHECK_FUNC_GETHOSTNAME
4088CURL_CHECK_FUNC_GETIFADDRS
4089CURL_CHECK_FUNC_GETPEERNAME
4090CURL_CHECK_FUNC_GETSOCKNAME
4091CURL_CHECK_FUNC_GMTIME_R
4092CURL_CHECK_FUNC_IOCTL
4093CURL_CHECK_FUNC_IOCTLSOCKET
4094CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL
4095CURL_CHECK_FUNC_LOCALTIME_R
4096CURL_CHECK_FUNC_MEMRCHR
4097CURL_CHECK_FUNC_SIGACTION
4098CURL_CHECK_FUNC_SIGINTERRUPT
4099CURL_CHECK_FUNC_SIGNAL
4100CURL_CHECK_FUNC_SIGSETJMP
4101CURL_CHECK_FUNC_SOCKET
4102CURL_CHECK_FUNC_SOCKETPAIR
4103CURL_CHECK_FUNC_STRERROR_R
4104
4105case $host in
4106  *msdosdjgpp)
4107    ac_cv_func_pipe=no
4108    skipcheck_pipe=yes
4109    AC_MSG_NOTICE([skip check for pipe on msdosdjgpp])
4110    ;;
4111esac
4112
4113AC_CHECK_FUNCS([\
4114  accept4 \
4115  eventfd \
4116  fnmatch \
4117  geteuid \
4118  getpass_r \
4119  getppid \
4120  getpwuid \
4121  getpwuid_r \
4122  getrlimit \
4123  gettimeofday \
4124  mach_absolute_time \
4125  pipe \
4126  poll \
4127  sendmmsg \
4128  sendmsg \
4129  setlocale \
4130  setrlimit \
4131  utime \
4132  utimes \
4133])
4134
4135if test "$curl_cv_apple" != "yes"; then
4136  dnl Apple platforms do not offer pipe2(), but the iPhone Simulator-specific
4137  dnl /usr/lib/system/libsystem_sim_kernel.dylib exports it. To avoid false
4138  dnl detection, omit this feature check for Apple targets.
4139  AC_CHECK_FUNCS([\
4140    pipe2 \
4141  ])
4142fi
4143
4144if test "$curl_cv_native_windows" != "yes"; then
4145  AC_CHECK_FUNCS([\
4146    if_nametoindex \
4147    realpath \
4148    sched_yield \
4149  ])
4150  CURL_CHECK_FUNC_INET_NTOP
4151  CURL_CHECK_FUNC_INET_PTON
4152  CURL_CHECK_FUNC_STRCASECMP
4153  CURL_CHECK_FUNC_STRCMPI
4154  CURL_CHECK_FUNC_STRICMP
4155
4156  CURL_CHECK_FUNC_MEMSET_S
4157  if test "$curl_cv_func_memset_s" = "no"; then
4158    AC_CHECK_FUNCS([memset_explicit])
4159  fi
4160fi
4161
4162if test -z "$ssl_backends"; then
4163  AC_CHECK_FUNCS([arc4random])
4164fi
4165
4166if test "$curl_cv_native_windows" != "yes"; then
4167  AC_CHECK_FUNCS([fseeko])
4168
4169  dnl On Android, the only way to know if fseeko can be used is to see if it is
4170  dnl declared or not (for this API level), as the symbol always exists in the
4171  dnl lib.
4172  AC_CHECK_DECL([fseeko],
4173    [AC_DEFINE([HAVE_DECL_FSEEKO], [1],
4174     [Define to 1 if you have the fseeko declaration])],
4175    [],
4176    [[#include <stdio.h>]])
4177fi
4178
4179CURL_CHECK_NONBLOCKING_SOCKET
4180
4181dnl set variable for use in automakefile(s)
4182AM_CONDITIONAL(BUILD_DOCS, test "$BUILD_DOCS" = "1")
4183
4184dnl *************************************************************************
4185dnl If the manual variable still is set, then we go with providing a built-in
4186dnl manual
4187
4188if test "$USE_MANUAL" = "1"; then
4189  curl_manual_msg="enabled"
4190fi
4191
4192dnl set variable for use in automakefile(s)
4193AM_CONDITIONAL(USE_MANUAL, test "$USE_MANUAL" = "1")
4194
4195CURL_CHECK_LIB_ARES
4196CURL_CHECK_OPTION_THREADED_RESOLVER
4197
4198if test "$ipv6" = "yes" && test "$curl_cv_apple" = "yes"; then
4199  CURL_DARWIN_SYSTEMCONFIGURATION
4200fi
4201
4202dnl detect pthreads
4203if test "$curl_cv_native_windows" != "yes"; then
4204  AC_CHECK_HEADER(pthread.h,
4205    [
4206      save_CFLAGS="$CFLAGS"
4207      dnl When statically linking against BoringSSL, -lpthread is added to LIBS.
4208      dnl Make sure to that this does not pass the check below, we really want
4209      dnl -pthread in CFLAGS as recommended for GCC. This also ensures that
4210      dnl lib1541 and lib1565 tests are built with these options. Otherwise
4211      dnl they fail the build since tests/libtest/Makefile.am clears LIBS.
4212      save_LIBS="$LIBS"
4213
4214      LIBS=
4215      dnl Check for libc variants without a separate pthread lib like bionic
4216      AC_CHECK_FUNC(pthread_create, [HAVE_THREADS_POSIX=1] )
4217      LIBS="$save_LIBS"
4218
4219      case $host in
4220        *-hp-hpux*)
4221          CFLAGS="$CFLAGS -mt"
4222          ;;
4223        *)
4224          ;;
4225      esac
4226
4227      dnl if it was not found without lib, search for it in pthread lib
4228      if test "$HAVE_THREADS_POSIX" != "1"; then
4229        dnl assign PTHREAD for pkg-config use
4230        PTHREAD=" -pthread"
4231
4232        case $host in
4233          *-ibm-aix*)
4234            dnl Check if compiler is xlC
4235            COMPILER_VERSION=`"$CC" -qversion 2>/dev/null`
4236            if test -z "$COMPILER_VERSION"; then
4237              CFLAGS="$CFLAGS -pthread"
4238            else
4239              CFLAGS="$CFLAGS -qthreaded"
4240            fi
4241            ;;
4242          powerpc-*amigaos*)
4243            dnl No -pthread option, but link with -lpthread
4244            PTHREAD=" -lpthread"
4245            ;;
4246          *)
4247            CFLAGS="$CFLAGS -pthread"
4248            ;;
4249        esac
4250        AC_CHECK_LIB(pthread, pthread_create,
4251                     [HAVE_THREADS_POSIX=1],
4252                     [ CFLAGS="$save_CFLAGS"])
4253      fi
4254  ])
4255  if test "$HAVE_THREADS_POSIX" = "1"; then
4256    AC_DEFINE(HAVE_THREADS_POSIX, 1, [if POSIX pthreads are supported])
4257  fi
4258fi
4259
4260dnl threaded resolver check
4261if test "$want_threaded_resolver" = "yes"; then
4262  if test "$curl_cv_native_windows" = "yes"; then
4263    USE_RESOLV_THREADED=1
4264    AC_DEFINE(USE_RESOLV_THREADED, 1, [if you want threaded DNS lookup])
4265    curl_res_msg="Win32 threaded"
4266  elif test "$HAVE_THREADS_POSIX" = "1"; then
4267    USE_RESOLV_THREADED=1
4268    AC_DEFINE(USE_RESOLV_THREADED, 1, [if you want threaded DNS lookup])
4269    curl_res_msg="POSIX threaded"
4270  else
4271    AC_MSG_ERROR([Threaded resolver enabled but no thread library found])
4272  fi
4273elif test "$USE_ARES" = "1"; then
4274  USE_RESOLV_ARES=1
4275  AC_DEFINE(USE_RESOLV_ARES, 1, [if you want c-ares for DNS lookup])
4276  curl_res_msg="c-ares"
4277fi
4278
4279AC_CHECK_HEADER(dirent.h,
4280  [ AC_DEFINE(HAVE_DIRENT_H, 1, [if you have <dirent.h>])
4281    AC_CHECK_FUNC(opendir, AC_DEFINE(HAVE_OPENDIR, 1, [if you have opendir]) )
4282  ]
4283)
4284
4285CURL_CONVERT_INCLUDE_TO_ISYSTEM
4286
4287dnl ************************************************************
4288dnl disable curl_easy_setopt()/curl_easy_getinfo() type checking
4289dnl
4290AC_MSG_CHECKING([whether to enable curl_easy_setopt()/curl_easy_getinfo() type checking])
4291AC_ARG_ENABLE(typecheck,
4292AS_HELP_STRING([--enable-typecheck],[Enable type checking (default)])
4293AS_HELP_STRING([--disable-typecheck],[Disable type checking]),
4294[ case "$enableval" in
4295  no)
4296    AC_MSG_RESULT(no)
4297    dnl Set it via the command-line to make it apply to examples also.
4298    CPPFLAGS="$CPPFLAGS -DCURL_DISABLE_TYPECHECK"
4299    curl_typecheck_msg="no"
4300    ;;
4301  *)
4302    AC_MSG_RESULT(yes)
4303    ;;
4304  esac ],
4305    AC_MSG_RESULT(yes)
4306)
4307
4308dnl ************************************************************
4309dnl disable verbose text strings
4310dnl
4311AC_MSG_CHECKING([whether to enable verbose strings])
4312AC_ARG_ENABLE(verbose,
4313AS_HELP_STRING([--enable-verbose],[Enable verbose strings])
4314AS_HELP_STRING([--disable-verbose],[Disable verbose strings]),
4315[ case "$enableval" in
4316  no)
4317    AC_MSG_RESULT(no)
4318    AC_DEFINE(CURL_DISABLE_VERBOSE_STRINGS, 1, [to disable verbose strings])
4319    curl_verbose_msg="no"
4320    ;;
4321  *)
4322    AC_MSG_RESULT(yes)
4323    ;;
4324  esac ],
4325    AC_MSG_RESULT(yes)
4326)
4327
4328if test "$curl_cv_winuwp" != "yes"; then
4329  dnl ************************************************************
4330  dnl enable SSPI support
4331  dnl
4332  AC_MSG_CHECKING([whether to enable SSPI support (Windows native builds only)])
4333  AC_ARG_ENABLE(sspi,
4334  AS_HELP_STRING([--enable-sspi],[Enable SSPI])
4335AS_HELP_STRING([--disable-sspi],[Disable SSPI]),
4336  [ case "$enableval" in
4337    yes)
4338      if test "$curl_cv_native_windows" = "yes"; then
4339        AC_MSG_RESULT(yes)
4340        AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
4341        USE_WINDOWS_SSPI=1
4342        curl_sspi_msg="enabled"
4343      else
4344        AC_MSG_RESULT(no)
4345        AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.])
4346      fi
4347      ;;
4348    *)
4349      if test "$SCHANNEL_ENABLED" = "1"; then
4350        dnl --with-schannel implies --enable-sspi
4351        AC_MSG_RESULT(yes)
4352      else
4353        AC_MSG_RESULT(no)
4354      fi
4355      ;;
4356    esac ],
4357      if test "$SCHANNEL_ENABLED" = "1"; then
4358        dnl --with-schannel implies --enable-sspi
4359        AC_MSG_RESULT(yes)
4360      else
4361        AC_MSG_RESULT(no)
4362      fi
4363  )
4364
4365  if test "$USE_WINDOWS_SSPI" = "1"; then
4366    LIBS="-lsecur32 $LIBS"
4367  fi
4368fi
4369
4370dnl ************************************************************
4371dnl disable basic authentication
4372dnl
4373AC_MSG_CHECKING([whether to enable basic authentication method])
4374AC_ARG_ENABLE(basic-auth,
4375AS_HELP_STRING([--enable-basic-auth],[Enable basic authentication (default)])
4376AS_HELP_STRING([--disable-basic-auth],[Disable basic authentication]),
4377[ case "$enableval" in
4378  no)
4379    AC_MSG_RESULT(no)
4380    AC_DEFINE(CURL_DISABLE_BASIC_AUTH, 1, [to disable basic authentication])
4381    ;;
4382  *)
4383    AC_MSG_RESULT(yes)
4384    ;;
4385  esac ],
4386    AC_MSG_RESULT(yes)
4387)
4388
4389dnl ************************************************************
4390dnl disable bearer authentication
4391dnl
4392AC_MSG_CHECKING([whether to enable bearer authentication method])
4393AC_ARG_ENABLE(bearer-auth,
4394AS_HELP_STRING([--enable-bearer-auth],[Enable bearer authentication (default)])
4395AS_HELP_STRING([--disable-bearer-auth],[Disable bearer authentication]),
4396[ case "$enableval" in
4397  no)
4398    AC_MSG_RESULT(no)
4399    AC_DEFINE(CURL_DISABLE_BEARER_AUTH, 1, [to disable bearer authentication])
4400    ;;
4401  *)
4402    AC_MSG_RESULT(yes)
4403    ;;
4404  esac ],
4405    AC_MSG_RESULT(yes)
4406)
4407
4408dnl ************************************************************
4409dnl disable digest authentication
4410dnl
4411AC_MSG_CHECKING([whether to enable digest authentication method])
4412AC_ARG_ENABLE(digest-auth,
4413AS_HELP_STRING([--enable-digest-auth],[Enable digest authentication (default)])
4414AS_HELP_STRING([--disable-digest-auth],[Disable digest authentication]),
4415[ case "$enableval" in
4416  no)
4417    AC_MSG_RESULT(no)
4418    AC_DEFINE(CURL_DISABLE_DIGEST_AUTH, 1, [to disable digest authentication])
4419    ;;
4420  *)
4421    AC_MSG_RESULT(yes)
4422    ;;
4423  esac ],
4424    AC_MSG_RESULT(yes)
4425)
4426
4427dnl ************************************************************
4428dnl disable kerberos authentication
4429dnl
4430AC_MSG_CHECKING([whether to enable kerberos authentication method])
4431AC_ARG_ENABLE(kerberos-auth,
4432AS_HELP_STRING([--enable-kerberos-auth],[Enable kerberos authentication (default)])
4433AS_HELP_STRING([--disable-kerberos-auth],[Disable kerberos authentication]),
4434[ case "$enableval" in
4435  no)
4436    AC_MSG_RESULT(no)
4437    AC_DEFINE(CURL_DISABLE_KERBEROS_AUTH, 1, [to disable kerberos authentication])
4438    CURL_DISABLE_KERBEROS_AUTH=1
4439    ;;
4440  *)
4441    AC_MSG_RESULT(yes)
4442    ;;
4443  esac ],
4444    AC_MSG_RESULT(yes)
4445)
4446
4447dnl ************************************************************
4448dnl disable negotiate authentication
4449dnl
4450AC_MSG_CHECKING([whether to enable negotiate authentication method])
4451AC_ARG_ENABLE(negotiate-auth,
4452AS_HELP_STRING([--enable-negotiate-auth],[Enable negotiate authentication (default)])
4453AS_HELP_STRING([--disable-negotiate-auth],[Disable negotiate authentication]),
4454[ case "$enableval" in
4455  no)
4456    AC_MSG_RESULT(no)
4457    AC_DEFINE(CURL_DISABLE_NEGOTIATE_AUTH, 1, [to disable negotiate authentication])
4458    CURL_DISABLE_NEGOTIATE_AUTH=1
4459    ;;
4460  *)
4461    AC_MSG_RESULT(yes)
4462    ;;
4463  esac ],
4464    AC_MSG_RESULT(yes)
4465)
4466
4467dnl ************************************************************
4468dnl disable aws
4469dnl
4470AC_MSG_CHECKING([whether to enable aws sig methods])
4471AC_ARG_ENABLE(aws,
4472AS_HELP_STRING([--enable-aws],[Enable AWS sig support (default)])
4473AS_HELP_STRING([--disable-aws],[Disable AWS sig support]),
4474[ case "$enableval" in
4475  no)
4476    AC_MSG_RESULT(no)
4477    AC_DEFINE(CURL_DISABLE_AWS, 1, [to disable AWS sig support])
4478    ;;
4479  *)
4480    AC_MSG_RESULT(yes)
4481    ;;
4482  esac ],
4483    AC_MSG_RESULT(yes)
4484)
4485
4486dnl ************************************************************
4487dnl disable NTLM support
4488dnl
4489AC_MSG_CHECKING([whether to support NTLM])
4490AC_ARG_ENABLE(ntlm,
4491AS_HELP_STRING([--enable-ntlm],[Enable NTLM support])
4492AS_HELP_STRING([--disable-ntlm],[Disable NTLM support]),
4493[ case "$enableval" in
4494  yes)
4495    AC_MSG_RESULT(yes)
4496    AC_DEFINE(CURL_ENABLE_NTLM, 1, [enable NTLM support])
4497    CURL_ENABLE_NTLM=1
4498    ;;
4499  *)
4500    AC_MSG_RESULT(no)
4501    ;;
4502  esac ],
4503    AC_MSG_RESULT(no)
4504)
4505
4506dnl ************************************************************
4507dnl disable TLS-SRP authentication
4508dnl
4509AC_MSG_CHECKING([whether to enable TLS-SRP authentication])
4510AC_ARG_ENABLE(tls-srp,
4511AS_HELP_STRING([--enable-tls-srp],[Enable TLS-SRP authentication])
4512AS_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]),
4513[ case "$enableval" in
4514  no)
4515    AC_MSG_RESULT(no)
4516    want_tls_srp=no
4517    ;;
4518  *)
4519    AC_MSG_RESULT(yes)
4520    want_tls_srp=yes
4521    ;;
4522  esac ],
4523    AC_MSG_RESULT(yes)
4524    want_tls_srp=yes
4525)
4526
4527if test "$want_tls_srp" = "yes" && (test "$HAVE_GNUTLS_SRP" = "1" || test "$HAVE_OPENSSL_SRP" = "1"); then
4528  AC_DEFINE(USE_TLS_SRP, 1, [Use TLS-SRP authentication])
4529  USE_TLS_SRP=1
4530  curl_tls_srp_msg="enabled"
4531fi
4532
4533dnl ************************************************************
4534dnl disable Unix domain sockets support
4535dnl
4536AC_MSG_CHECKING([whether to enable Unix domain sockets])
4537AC_ARG_ENABLE(unix-sockets,
4538AS_HELP_STRING([--enable-unix-sockets],[Enable Unix domain sockets])
4539AS_HELP_STRING([--disable-unix-sockets],[Disable Unix domain sockets]),
4540[ case "$enableval" in
4541  no)
4542    AC_MSG_RESULT(no)
4543    want_unix_sockets=no
4544    ;;
4545  *)
4546    AC_MSG_RESULT(yes)
4547    want_unix_sockets=yes
4548    ;;
4549  esac ], [
4550    AC_MSG_RESULT(auto)
4551    want_unix_sockets=auto
4552    ]
4553)
4554if test "$want_unix_sockets" != "no"; then
4555  if test "$curl_cv_native_windows" = "yes"; then
4556    USE_UNIX_SOCKETS=1
4557    AC_DEFINE(USE_UNIX_SOCKETS, 1, [Use Unix domain sockets])
4558    curl_unix_sockets_msg="enabled"
4559  else
4560    AC_CHECK_MEMBER([struct sockaddr_un.sun_path], [
4561      AC_DEFINE(USE_UNIX_SOCKETS, 1, [Use Unix domain sockets])
4562      USE_UNIX_SOCKETS=1
4563      curl_unix_sockets_msg="enabled"
4564    ], [
4565      if test "$want_unix_sockets" = "yes"; then
4566        AC_MSG_ERROR([--enable-unix-sockets is not available on this platform!])
4567      fi
4568    ], [
4569      #include <sys/un.h>
4570    ])
4571  fi
4572fi
4573
4574dnl ************************************************************
4575dnl disable cookies support
4576dnl
4577AC_MSG_CHECKING([whether to support cookies])
4578AC_ARG_ENABLE(cookies,
4579AS_HELP_STRING([--enable-cookies],[Enable cookies support])
4580AS_HELP_STRING([--disable-cookies],[Disable cookies support]),
4581[ case "$enableval" in
4582  no)
4583    AC_MSG_RESULT(no)
4584    AC_DEFINE(CURL_DISABLE_COOKIES, 1, [to disable cookies support])
4585    ;;
4586  *)
4587    AC_MSG_RESULT(yes)
4588    ;;
4589  esac ],
4590    AC_MSG_RESULT(yes)
4591)
4592
4593dnl ************************************************************
4594dnl disable socketpair
4595dnl
4596AC_MSG_CHECKING([whether to support socketpair])
4597AC_ARG_ENABLE(socketpair,
4598AS_HELP_STRING([--enable-socketpair],[Enable socketpair support])
4599AS_HELP_STRING([--disable-socketpair],[Disable socketpair support]),
4600[ case "$enableval" in
4601  no)
4602    AC_MSG_RESULT(no)
4603    AC_DEFINE(CURL_DISABLE_SOCKETPAIR, 1, [to disable socketpair support])
4604    ;;
4605  *)
4606    AC_MSG_RESULT(yes)
4607    ;;
4608  esac ],
4609    AC_MSG_RESULT(yes)
4610)
4611
4612dnl ************************************************************
4613dnl disable HTTP authentication support
4614dnl
4615AC_MSG_CHECKING([whether to support HTTP authentication])
4616AC_ARG_ENABLE(http-auth,
4617AS_HELP_STRING([--enable-http-auth],[Enable HTTP authentication support])
4618AS_HELP_STRING([--disable-http-auth],[Disable HTTP authentication support]),
4619[ case "$enableval" in
4620  no)
4621    AC_MSG_RESULT(no)
4622    AC_DEFINE(CURL_DISABLE_HTTP_AUTH, 1, [disable HTTP authentication])
4623    ;;
4624  *)
4625    AC_MSG_RESULT(yes)
4626    ;;
4627  esac ],
4628    AC_MSG_RESULT(yes)
4629)
4630
4631dnl ************************************************************
4632dnl disable DoH support
4633dnl
4634AC_MSG_CHECKING([whether to support DoH])
4635AC_ARG_ENABLE(doh,
4636AS_HELP_STRING([--enable-doh],[Enable DoH support])
4637AS_HELP_STRING([--disable-doh],[Disable DoH support]),
4638[ case "$enableval" in
4639  no)
4640    AC_MSG_RESULT(no)
4641    AC_DEFINE(CURL_DISABLE_DOH, 1, [disable DoH])
4642    ;;
4643  *)
4644    AC_MSG_RESULT(yes)
4645    ;;
4646  esac ],
4647    AC_MSG_RESULT(yes)
4648)
4649
4650dnl ************************************************************
4651dnl disable mime API support
4652dnl
4653AC_MSG_CHECKING([whether to support the MIME API])
4654AC_ARG_ENABLE(mime,
4655AS_HELP_STRING([--enable-mime],[Enable mime API support])
4656AS_HELP_STRING([--disable-mime],[Disable mime API support]),
4657[ case "$enableval" in
4658  no)
4659    AC_MSG_RESULT(no)
4660    AC_DEFINE(CURL_DISABLE_MIME, 1, [disable mime API])
4661    ;;
4662  *)
4663    AC_MSG_RESULT(yes)
4664    ;;
4665  esac ],
4666    AC_MSG_RESULT(yes)
4667)
4668
4669dnl ************************************************************
4670dnl disable bindlocal
4671dnl
4672AC_MSG_CHECKING([whether to support binding connections locally])
4673AC_ARG_ENABLE(bindlocal,
4674AS_HELP_STRING([--enable-bindlocal],[Enable local binding support])
4675AS_HELP_STRING([--disable-bindlocal],[Disable local binding support]),
4676[ case "$enableval" in
4677  no)
4678    AC_MSG_RESULT(no)
4679    AC_DEFINE(CURL_DISABLE_BINDLOCAL, 1, [disable local binding support])
4680    ;;
4681  *)
4682    AC_MSG_RESULT(yes)
4683    ;;
4684  esac ],
4685    AC_MSG_RESULT(yes)
4686)
4687
4688dnl ************************************************************
4689dnl disable form API support
4690dnl
4691AC_MSG_CHECKING([whether to support the form API])
4692AC_ARG_ENABLE(form-api,
4693AS_HELP_STRING([--enable-form-api],[Enable form API support])
4694AS_HELP_STRING([--disable-form-api],[Disable form API support]),
4695[ case "$enableval" in
4696  no)
4697    AC_MSG_RESULT(no)
4698    AC_DEFINE(CURL_DISABLE_FORM_API, 1, [disable form API])
4699    ;;
4700  *)
4701    AC_MSG_RESULT(yes)
4702    test "x$enable_mime" = "xno" &&
4703      AC_MSG_ERROR(MIME support needs to be enabled in order to enable form API support)
4704    ;;
4705  esac ],
4706[
4707  if test "x$enable_mime" = "xno"; then
4708    enable_form_api=no
4709    AC_MSG_RESULT(no)
4710    AC_DEFINE(CURL_DISABLE_FORM_API, 1, [disable form API])
4711  else
4712    AC_MSG_RESULT(yes)
4713  fi ]
4714)
4715
4716dnl ************************************************************
4717dnl disable date parsing
4718dnl
4719AC_MSG_CHECKING([whether to support date parsing])
4720AC_ARG_ENABLE(dateparse,
4721AS_HELP_STRING([--enable-dateparse],[Enable date parsing])
4722AS_HELP_STRING([--disable-dateparse],[Disable date parsing]),
4723[ case "$enableval" in
4724  no)
4725    AC_MSG_RESULT(no)
4726    AC_DEFINE(CURL_DISABLE_PARSEDATE, 1, [disable date parsing])
4727    ;;
4728  *)
4729    AC_MSG_RESULT(yes)
4730    ;;
4731  esac ],
4732    AC_MSG_RESULT(yes)
4733)
4734
4735dnl ************************************************************
4736dnl disable netrc
4737dnl
4738AC_MSG_CHECKING([whether to support netrc parsing])
4739AC_ARG_ENABLE(netrc,
4740AS_HELP_STRING([--enable-netrc],[Enable netrc parsing])
4741AS_HELP_STRING([--disable-netrc],[Disable netrc parsing]),
4742[ case "$enableval" in
4743  no)
4744    AC_MSG_RESULT(no)
4745    AC_DEFINE(CURL_DISABLE_NETRC, 1, [disable netrc parsing])
4746    ;;
4747  *)
4748    AC_MSG_RESULT(yes)
4749    ;;
4750  esac ],
4751    AC_MSG_RESULT(yes)
4752)
4753
4754dnl ************************************************************
4755dnl disable progress-meter
4756dnl
4757AC_MSG_CHECKING([whether to support progress-meter])
4758AC_ARG_ENABLE(progress-meter,
4759AS_HELP_STRING([--enable-progress-meter],[Enable progress-meter])
4760AS_HELP_STRING([--disable-progress-meter],[Disable progress-meter]),
4761[ case "$enableval" in
4762  no)
4763    AC_MSG_RESULT(no)
4764    AC_DEFINE(CURL_DISABLE_PROGRESS_METER, 1, [disable progress-meter])
4765    ;;
4766  *)
4767    AC_MSG_RESULT(yes)
4768    ;;
4769  esac ],
4770    AC_MSG_RESULT(yes)
4771)
4772
4773dnl ************************************************************
4774dnl disable SHA-512/256 hash algorithm
4775dnl
4776AC_MSG_CHECKING([whether to support the SHA-512/256 hash algorithm])
4777AC_ARG_ENABLE(sha512-256,
4778AS_HELP_STRING([--enable-sha512-256],[Enable SHA-512/256 hash algorithm (default)])
4779AS_HELP_STRING([--disable-sha512-256],[Disable SHA-512/256 hash algorithm]),
4780[ case "$enableval" in
4781  no)
4782    AC_MSG_RESULT(no)
4783    AC_DEFINE(CURL_DISABLE_SHA512_256, 1, [disable SHA-512/256 hash algorithm])
4784    ;;
4785  *)
4786    AC_MSG_RESULT(yes)
4787    ;;
4788  esac ],
4789    AC_MSG_RESULT(yes)
4790)
4791
4792dnl ************************************************************
4793dnl disable shuffle DNS support
4794dnl
4795AC_MSG_CHECKING([whether to support DNS shuffling])
4796AC_ARG_ENABLE(dnsshuffle,
4797AS_HELP_STRING([--enable-dnsshuffle],[Enable DNS shuffling])
4798AS_HELP_STRING([--disable-dnsshuffle],[Disable DNS shuffling]),
4799[ case "$enableval" in
4800  no)
4801    AC_MSG_RESULT(no)
4802    AC_DEFINE(CURL_DISABLE_SHUFFLE_DNS, 1, [disable DNS shuffling])
4803    ;;
4804  *)
4805    AC_MSG_RESULT(yes)
4806    ;;
4807  esac ],
4808    AC_MSG_RESULT(yes)
4809)
4810
4811dnl ************************************************************
4812dnl disable the curl_easy_options API
4813dnl
4814AC_MSG_CHECKING([whether to support curl_easy_option*])
4815AC_ARG_ENABLE(get-easy-options,
4816AS_HELP_STRING([--enable-get-easy-options],[Enable curl_easy_options])
4817AS_HELP_STRING([--disable-get-easy-options],[Disable curl_easy_options]),
4818[ case "$enableval" in
4819  no)
4820    AC_MSG_RESULT(no)
4821    AC_DEFINE(CURL_DISABLE_GETOPTIONS, 1, [to disable curl_easy_options])
4822    ;;
4823  *)
4824    AC_MSG_RESULT(yes)
4825    ;;
4826  esac ],
4827    AC_MSG_RESULT(yes)
4828)
4829
4830dnl ************************************************************
4831dnl switch on/off alt-svc
4832dnl
4833AC_MSG_CHECKING([whether to support alt-svc])
4834AC_ARG_ENABLE(alt-svc,
4835AS_HELP_STRING([--enable-alt-svc],[Enable alt-svc support])
4836AS_HELP_STRING([--disable-alt-svc],[Disable alt-svc support]),
4837[ case "$enableval" in
4838  no)
4839    AC_MSG_RESULT(no)
4840    AC_DEFINE(CURL_DISABLE_ALTSVC, 1, [disable alt-svc])
4841    curl_altsvc_msg="no";
4842    enable_altsvc="no"
4843    ;;
4844  *)
4845    AC_MSG_RESULT(yes)
4846    ;;
4847  esac ],
4848    AC_MSG_RESULT(yes)
4849)
4850
4851dnl ************************************************************
4852dnl switch on/off headers-api
4853dnl
4854AC_MSG_CHECKING([whether to support headers-api])
4855AC_ARG_ENABLE(headers-api,
4856AS_HELP_STRING([--enable-headers-api],[Enable headers-api support])
4857AS_HELP_STRING([--disable-headers-api],[Disable headers-api support]),
4858[ case "$enableval" in
4859  no)
4860    AC_MSG_RESULT(no)
4861    curl_headers_msg="no      (--enable-headers-api)"
4862    AC_DEFINE(CURL_DISABLE_HEADERS_API, 1, [disable headers-api])
4863    ;;
4864  *)
4865    AC_MSG_RESULT(yes)
4866    ;;
4867  esac ],
4868    AC_MSG_RESULT(yes)
4869)
4870
4871dnl only check for HSTS if there is SSL present
4872if test -n "$SSL_ENABLED"; then
4873  dnl ************************************************************
4874  dnl switch on/off hsts
4875  dnl
4876  AC_MSG_CHECKING([whether to support HSTS])
4877  AC_ARG_ENABLE(hsts,
4878AS_HELP_STRING([--enable-hsts],[Enable HSTS support])
4879AS_HELP_STRING([--disable-hsts],[Disable HSTS support]),
4880  [ case "$enableval" in
4881    no)
4882      AC_MSG_RESULT(no)
4883      hsts="no"
4884      ;;
4885    *)
4886      AC_MSG_RESULT(yes)
4887      ;;
4888    esac ],
4889      AC_MSG_RESULT($hsts)
4890  )
4891else
4892  AC_MSG_NOTICE([disables HSTS due to lack of SSL])
4893  hsts="no"
4894fi
4895
4896if test "$hsts" != "yes"; then
4897  curl_hsts_msg="no      (--enable-hsts)";
4898  AC_DEFINE(CURL_DISABLE_HSTS, 1, [disable alt-svc])
4899fi
4900
4901dnl *************************************************************
4902dnl check whether ECH support, if desired, is actually available
4903dnl
4904if test "$want_ech" != "no"; then
4905  AC_MSG_CHECKING([whether ECH support is available])
4906
4907  dnl assume NOT and look for sufficient condition
4908  ECH_ENABLED=0
4909  ECH_ENABLED_OPENSSL=0
4910  ECH_ENABLED_WOLFSSL=0
4911  ECH_ENABLED_RUSTLS=0
4912  ECH_SUPPORT=''
4913
4914  dnl check for OpenSSL equivalent
4915  if test "$OPENSSL_ENABLED" = "1"; then
4916    AC_CHECK_FUNCS(SSL_set1_ech_config_list,
4917      ECH_SUPPORT="$ECH_SUPPORT OpenSSL"
4918      ECH_ENABLED_OPENSSL=1)
4919  fi
4920  if test "$WOLFSSL_ENABLED" = "1"; then
4921    AC_CHECK_FUNCS(wolfSSL_CTX_GenerateEchConfig,
4922      ECH_SUPPORT="$ECH_SUPPORT wolfSSL"
4923      ECH_ENABLED_WOLFSSL=1)
4924  fi
4925  if test "$RUSTLS_ENABLED" = "1"; then
4926    ECH_SUPPORT="$ECH_SUPPORT rustls-ffi"
4927    ECH_ENABLED_RUSTLS=1
4928  fi
4929
4930  dnl now deal with whatever we found
4931  if test "$ECH_ENABLED_OPENSSL" = "1" ||
4932     test "$ECH_ENABLED_WOLFSSL" = "1" ||
4933     test "$ECH_ENABLED_RUSTLS" = "1"; then
4934    AC_DEFINE(USE_ECH, 1, [if ECH support is available])
4935    AC_MSG_RESULT(ECH support available via:$ECH_SUPPORT)
4936    experimental="$experimental ECH"
4937    ECH_ENABLED=1
4938    dnl ECH wants HTTPSRR
4939    want_httpsrr="yes"
4940  else
4941    AC_MSG_ERROR([--enable-ech ignored: No ECH support found])
4942  fi
4943fi
4944
4945AC_MSG_CHECKING([whether to enable HTTPS-RR support])
4946dnl *************************************************************
4947dnl check whether HTTPSRR support if desired
4948dnl
4949if test "$want_httpsrr" != "no"; then
4950  AC_MSG_RESULT([yes])
4951  AC_DEFINE(USE_HTTPSRR, 1, [enable HTTPS RR support])
4952  experimental="$experimental HTTPSRR"
4953  curl_httpsrr_msg="enabled (--disable-httpsrr)"
4954else
4955  AC_MSG_RESULT([no])
4956  dnl no HTTPSRR wanted
4957  if test "$want_threaded_resolver" = "yes"; then
4958    dnl and using the threaded resolver
4959    if test "$USE_ARES" = "1"; then
4960      AC_MSG_ERROR([without HTTPS-RR support, asking for both threaded resolver and c-ares support is ambivalent. Please drop one of them.])
4961    fi
4962  fi
4963fi
4964
4965dnl *************************************************************
4966dnl check whether OpenSSL (lookalikes) have SSL_set0_wbio
4967dnl
4968if test "$OPENSSL_ENABLED" = "1"; then
4969  AC_CHECK_FUNCS([SSL_set0_wbio])
4970fi
4971
4972dnl *************************************************************
4973dnl WebSockets
4974dnl
4975if test "$CURL_DISABLE_HTTP" != "1"; then
4976  AC_MSG_CHECKING([whether to support WebSockets])
4977  AC_ARG_ENABLE(websockets,
4978  AS_HELP_STRING([--enable-websockets],[Enable WebSockets support])
4979AS_HELP_STRING([--disable-websockets],[Disable WebSockets support]),
4980  [ case "$enableval" in
4981    no)
4982      AC_MSG_RESULT(no)
4983      AC_DEFINE(CURL_DISABLE_WEBSOCKETS, [1], [disable WebSockets])
4984      CURL_DISABLE_WEBSOCKETS=1
4985      ;;
4986    *)
4987      if test "$ac_cv_sizeof_curl_off_t" -gt 4; then
4988        AC_MSG_RESULT(yes)
4989      else
4990        dnl WebSockets requires >32-bit curl_off_t
4991        AC_MSG_RESULT(no)
4992        AC_MSG_WARN([WebSockets disabled due to lack of >32-bit curl_off_t])
4993        AC_DEFINE(CURL_DISABLE_WEBSOCKETS, [1], [disable WebSockets])
4994        CURL_DISABLE_WEBSOCKETS=1
4995      fi
4996      ;;
4997    esac ],
4998      AC_MSG_RESULT(yes)
4999  )
5000else
5001  AC_MSG_WARN([WebSockets disabled because HTTP is disabled])
5002  AC_DEFINE(CURL_DISABLE_WEBSOCKETS, [1], [disable WebSockets])
5003  CURL_DISABLE_WEBSOCKETS=1
5004fi
5005
5006dnl *************************************************************
5007dnl check whether experimental SSL Session Im-/Export is enabled
5008dnl
5009if test "$want_ssls_export" != "no"; then
5010  AC_MSG_CHECKING([whether SSL session export support is available])
5011
5012  dnl assume NOT and look for sufficient condition
5013  SSLS_EXPORT_ENABLED=0
5014  SSLS_EXPORT_SUPPORT=''
5015
5016  if test "$SSL_ENABLED" != "1"; then
5017    AC_MSG_WARN([--enable-ssls-export ignored: No SSL support])
5018  else
5019    SSLS_EXPORT_ENABLED=1
5020    AC_DEFINE(USE_SSLS_EXPORT, 1, [if SSL session export support is available])
5021    AC_MSG_RESULT("SSL session im-/export enabled")
5022    experimental="$experimental SSLS-EXPORT"
5023  fi
5024fi
5025
5026dnl ************************************************************
5027dnl hiding of library internal symbols
5028dnl
5029CURL_CONFIGURE_SYMBOL_HIDING
5030
5031dnl
5032dnl All the library dependencies put into $LIB apply to libcurl only.
5033dnl
5034LIBCURL_PC_LDFLAGS_PRIVATE=''
5035dnl Do not quote $INITIAL_LDFLAGS
5036set -- $INITIAL_LDFLAGS
5037while test -n "$1"; do
5038  case "$1" in
5039    -L* | --library-path=* | -F*)
5040      LIBCURL_PC_LDFLAGS_PRIVATE="$LIBCURL_PC_LDFLAGS_PRIVATE $1"
5041      ;;
5042    -framework)
5043      if test -n "$2"; then
5044        LIBCURL_PC_LDFLAGS_PRIVATE="$LIBCURL_PC_LDFLAGS_PRIVATE $1 $2"
5045        shift
5046      fi
5047      ;;
5048  esac
5049  shift
5050done
5051LIBCURL_PC_LDFLAGS_PRIVATE="$LIBCURL_PC_LDFLAGS_PRIVATE $LDFLAGSPC"
5052LIBCURL_PC_LIBS_PRIVATE="$LIBS$PTHREAD"
5053
5054AC_SUBST(LIBCURL_PC_LDFLAGS_PRIVATE)
5055AC_SUBST(LIBCURL_PC_LIBS_PRIVATE)
5056AC_SUBST(CURL_NETWORK_AND_TIME_LIBS)
5057
5058dnl BLANK_AT_MAKETIME may be used in our Makefile.am files to blank
5059dnl LIBS variable used in generated makefile at makefile processing
5060dnl time. Doing this functionally prevents LIBS from being used for
5061dnl all link targets in given makefile.
5062BLANK_AT_MAKETIME=
5063AC_SUBST(BLANK_AT_MAKETIME)
5064
5065AM_CONDITIONAL(CROSSCOMPILING, test "$cross_compiling" = "yes")
5066
5067dnl yes or no
5068ENABLE_SHARED="$enable_shared"
5069AC_SUBST(ENABLE_SHARED)
5070
5071dnl to let curl-config output the static libraries correctly
5072ENABLE_STATIC="$enable_static"
5073AC_SUBST(ENABLE_STATIC)
5074
5075squeeze LIBCURL_PC_REQUIRES_PRIVATE
5076LIBCURL_PC_REQUIRES_PRIVATE=`echo $LIBCURL_PC_REQUIRES_PRIVATE | tr ' ' ','`
5077
5078AC_SUBST(LIBCURL_PC_REQUIRES_PRIVATE)
5079
5080dnl Merge pkg-config private fields into public ones when static-only
5081if test "$enable_shared" = "no"; then
5082  LIBCURL_PC_REQUIRES=$LIBCURL_PC_REQUIRES_PRIVATE
5083  LIBCURL_PC_LIBS=$LIBCURL_PC_LIBS_PRIVATE
5084else
5085  LIBCURL_PC_REQUIRES=
5086  LIBCURL_PC_LIBS=
5087fi
5088AC_SUBST(LIBCURL_PC_REQUIRES)
5089AC_SUBST(LIBCURL_PC_LIBS)
5090
5091rm $compilersh
5092
5093dnl
5094dnl For keeping supported features and protocols also in pkg-config file
5095dnl since it is more cross-compile friendly than curl-config
5096dnl
5097
5098if test "$OPENSSL_ENABLED" = "1"; then
5099  SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
5100elif test -n "$SSL_ENABLED"; then
5101  SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
5102fi
5103if test "$IPV6_ENABLED" = "1"; then
5104  SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6"
5105fi
5106if test "$USE_UNIX_SOCKETS" = "1"; then
5107  SUPPORT_FEATURES="$SUPPORT_FEATURES UnixSockets"
5108fi
5109if test "$HAVE_LIBZ" = "1"; then
5110  SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
5111fi
5112if test "$HAVE_BROTLI" = "1"; then
5113  SUPPORT_FEATURES="$SUPPORT_FEATURES brotli"
5114fi
5115if test "$HAVE_ZSTD" = "1"; then
5116  SUPPORT_FEATURES="$SUPPORT_FEATURES zstd"
5117fi
5118if test "$USE_RESOLV_ARES" = "1" || test "$USE_RESOLV_THREADED" = "1"; then
5119  SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
5120fi
5121if test "$USE_ARES" = "1" && test "$want_threaded_resolver" = "yes" && test "$want_httpsrr" != "no"; then
5122  SUPPORT_FEATURES="$SUPPORT_FEATURES asyn-rr"
5123fi
5124if test "$IDN_ENABLED" = "1"; then
5125  SUPPORT_FEATURES="$SUPPORT_FEATURES IDN"
5126fi
5127if test "$USE_WINDOWS_SSPI" = "1"; then
5128  SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI"
5129fi
5130
5131if test "$HAVE_GSSAPI" = "1"; then
5132  SUPPORT_FEATURES="$SUPPORT_FEATURES GSS-API"
5133fi
5134
5135if test "$curl_psl_msg" = "enabled"; then
5136  SUPPORT_FEATURES="$SUPPORT_FEATURES PSL"
5137fi
5138
5139if test "$curl_gsasl_msg" = "enabled"; then
5140  SUPPORT_FEATURES="$SUPPORT_FEATURES gsasl"
5141fi
5142
5143if test "$enable_altsvc" = "yes"; then
5144  SUPPORT_FEATURES="$SUPPORT_FEATURES alt-svc"
5145fi
5146if test "$hsts" = "yes"; then
5147  SUPPORT_FEATURES="$SUPPORT_FEATURES HSTS"
5148fi
5149
5150if test "$CURL_DISABLE_NEGOTIATE_AUTH" != "1" && (test "$HAVE_GSSAPI" = "1" || test "$USE_WINDOWS_SSPI" = "1"); then
5151  SUPPORT_FEATURES="$SUPPORT_FEATURES SPNEGO"
5152fi
5153
5154if test "$CURL_DISABLE_KERBEROS_AUTH" != "1" && (test "$HAVE_GSSAPI" = "1" || test "$USE_WINDOWS_SSPI" = "1"); then
5155  SUPPORT_FEATURES="$SUPPORT_FEATURES Kerberos"
5156fi
5157
5158use_curl_ntlm_core=no
5159
5160if test "$CURL_ENABLE_NTLM" = "1"; then
5161  if test "$HAVE_DES_ECB_ENCRYPT" = "1" ||
5162     test "$GNUTLS_ENABLED" = "1" ||
5163     test "$USE_WIN32_CRYPTO" = "1" ||
5164     test "$HAVE_WC_DES_ECBENCRYPT" = "1" ||
5165     test "$HAVE_MBEDTLS_DES_CRYPT_ECB" = "1"; then
5166    use_curl_ntlm_core=yes
5167  fi
5168
5169  if test "$use_curl_ntlm_core" = "yes" ||
5170     test "$USE_WINDOWS_SSPI" = "1"; then
5171    SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
5172  fi
5173fi
5174
5175if test "$USE_TLS_SRP" = "1"; then
5176  SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP"
5177fi
5178
5179if test "$USE_NGHTTP2" = "1"; then
5180  SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2"
5181fi
5182
5183if test "$USE_NGTCP2_H3" = "1" ||
5184   test "$USE_QUICHE" = "1" ||
5185   test "$USE_OPENSSL_H3" = "1"; then
5186  if test "$CURL_WITH_MULTI_SSL" = "1"; then
5187    AC_MSG_ERROR([MultiSSL cannot be enabled with HTTP/3 and vice versa])
5188  fi
5189  SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP3"
5190fi
5191
5192if test "$CURL_WITH_MULTI_SSL" = "1"; then
5193  SUPPORT_FEATURES="$SUPPORT_FEATURES MultiSSL"
5194fi
5195
5196AC_MSG_CHECKING([if this build supports HTTPS-proxy])
5197dnl if not explicitly turned off, HTTPS-proxy comes with some TLS backends
5198if test "$CURL_DISABLE_HTTP" != "1"; then
5199  if test "$https_proxy" != "no"; then
5200    if test "$OPENSSL_ENABLED" = "1" ||
5201       test "$GNUTLS_ENABLED" = "1" ||
5202       test "$RUSTLS_ENABLED" = "1" ||
5203       test "$SCHANNEL_ENABLED" = "1" ||
5204       test "$GNUTLS_ENABLED" = "1" ||
5205       test "$MBEDTLS_ENABLED" = "1"; then
5206      SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy"
5207      AC_MSG_RESULT([yes])
5208    elif test "$WOLFSSL_ENABLED" = "1" && test "$HAVE_WOLFSSL_BIO_NEW" = "1"; then
5209      SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy"
5210      AC_MSG_RESULT([yes])
5211    else
5212      AC_MSG_RESULT([no])
5213    fi
5214  else
5215    AC_MSG_RESULT([no])
5216  fi
5217else
5218  AC_MSG_RESULT([no])
5219fi
5220
5221if test "$OPENSSL_ENABLED" = "1" || test -n "$SSL_ENABLED"; then
5222  if test "$ECH_ENABLED" = "1"; then
5223    SUPPORT_FEATURES="$SUPPORT_FEATURES ECH"
5224  fi
5225fi
5226
5227if test -n "$SSL_ENABLED"; then
5228  if test "$APPLE_SECTRUST_ENABLED" = "1"; then
5229    SUPPORT_FEATURES="$SUPPORT_FEATURES AppleSecTrust"
5230  elif test "$ca_native_opt" = "1"; then
5231    SUPPORT_FEATURES="$SUPPORT_FEATURES NativeCA"
5232  fi
5233fi
5234
5235if test "$want_httpsrr" != "no"; then
5236  SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPSRR"
5237fi
5238
5239if test "$SSLS_EXPORT_ENABLED" = "1"; then
5240  SUPPORT_FEATURES="$SUPPORT_FEATURES SSLS-EXPORT"
5241fi
5242
5243if test "$ac_cv_sizeof_curl_off_t" -gt 4; then
5244  if test "$ac_cv_sizeof_off_t" -gt 4 ||
5245     test "$curl_cv_native_windows" = "yes"; then
5246    SUPPORT_FEATURES="$SUPPORT_FEATURES Largefile"
5247  fi
5248fi
5249
5250if test "$tst_atomic" = "yes"; then
5251  SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe"
5252elif test "$HAVE_THREADS_POSIX" = "1" && test "$ac_cv_header_pthread_h" = "yes"; then
5253  SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe"
5254elif test "$curl_cv_native_windows" = "yes"; then
5255  SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe"
5256fi
5257
5258if test "$want_winuni" = "yes"; then
5259  SUPPORT_FEATURES="$SUPPORT_FEATURES Unicode"
5260fi
5261if test "$want_debug" = "yes"; then
5262  SUPPORT_FEATURES="$SUPPORT_FEATURES Debug"
5263fi
5264if test -n "$CURL_CA_EMBED"; then
5265  SUPPORT_FEATURES="$SUPPORT_FEATURES CAcert"
5266  CURL_CA_EMBED_msg="$CURL_CA_EMBED"
5267else
5268  CURL_CA_EMBED_msg='no'
5269fi
5270
5271dnl replace spaces with newlines
5272dnl sort the lines
5273dnl replace the newlines back to spaces
5274if sort -f </dev/null >/dev/null 2>&1; then
5275  SUPPORT_FEATURES=`echo $SUPPORT_FEATURES | tr ' ' '\012' | sort -f | tr '\012' ' '`
5276else
5277  SUPPORT_FEATURES=`echo $SUPPORT_FEATURES | tr ' ' '\012' | sort | tr '\012' ' '`
5278fi
5279AC_SUBST(SUPPORT_FEATURES)
5280
5281dnl For supported protocols in pkg-config file
5282if test "$CURL_DISABLE_HTTP" != "1"; then
5283  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP"
5284  if test "$SSL_ENABLED" = "1"; then
5285    SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS"
5286  fi
5287fi
5288if test "$CURL_DISABLE_FTP" != "1"; then
5289  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTP"
5290  if test "$SSL_ENABLED" = "1"; then
5291    SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTPS"
5292  fi
5293fi
5294if test "$CURL_DISABLE_FILE" != "1"; then
5295  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE"
5296fi
5297if test "$CURL_DISABLE_TELNET" != "1"; then
5298  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET"
5299fi
5300if test "$CURL_DISABLE_LDAP" != "1"; then
5301  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP"
5302  if test "$CURL_DISABLE_LDAPS" != "1"; then
5303    if (test "$USE_OPENLDAP" = "1" && test "$SSL_ENABLED" = "1") ||
5304       (test "$USE_OPENLDAP" != "1" && test "$HAVE_LDAP_SSL" = "1"); then
5305      SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS"
5306    fi
5307  fi
5308fi
5309if test "$CURL_DISABLE_DICT" != "1"; then
5310  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT"
5311fi
5312if test "$CURL_DISABLE_TFTP" != "1"; then
5313  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP"
5314fi
5315if test "$CURL_DISABLE_GOPHER" != "1"; then
5316  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER"
5317  if test "$SSL_ENABLED" = "1"; then
5318    SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHERS"
5319  fi
5320fi
5321if test "$CURL_DISABLE_MQTT" != "1"; then
5322  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS MQTT"
5323  if test "$SSL_ENABLED" = "1"; then
5324    SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS MQTTS"
5325  fi
5326fi
5327if test "$CURL_DISABLE_POP3" != "1"; then
5328  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3"
5329  if test "$SSL_ENABLED" = "1"; then
5330    SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S"
5331  fi
5332fi
5333if test "$CURL_DISABLE_IMAP" != "1"; then
5334  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP"
5335  if test "$SSL_ENABLED" = "1"; then
5336    SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
5337  fi
5338fi
5339if test "$CURL_ENABLE_SMB" = "1" && test "$use_curl_ntlm_core" = "yes"; then
5340  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMB"
5341  if test "$SSL_ENABLED" = "1"; then
5342    SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMBS"
5343  fi
5344fi
5345if test "$CURL_DISABLE_SMTP" != "1"; then
5346  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
5347  if test "$SSL_ENABLED" = "1"; then
5348    SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS"
5349  fi
5350fi
5351if test "$USE_LIBSSH2" = "1"; then
5352  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
5353  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
5354fi
5355if test "$USE_LIBSSH" = "1"; then
5356  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
5357  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
5358fi
5359if test "$CURL_DISABLE_IPFS" != "1"; then
5360  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IPFS IPNS"
5361fi
5362if test "$CURL_DISABLE_RTSP" != "1"; then
5363  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP"
5364fi
5365if test "$CURL_DISABLE_WEBSOCKETS" != "1"; then
5366  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS WS"
5367  if test "$SSL_ENABLED" = "1"; then
5368    SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS WSS"
5369  fi
5370fi
5371
5372dnl replace spaces with newlines
5373dnl sort the lines
5374dnl replace the newlines back to spaces
5375SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '`
5376
5377AC_SUBST(SUPPORT_PROTOCOLS)
5378
5379dnl squeeze whitespace out of some variables
5380
5381squeeze CFLAGS
5382squeeze CPPFLAGS
5383squeeze DEFS
5384squeeze LDFLAGS
5385squeeze LIBS
5386
5387squeeze LIBCURL_PC_LDFLAGS_PRIVATE
5388squeeze LIBCURL_PC_LIBS_PRIVATE
5389squeeze CURL_NETWORK_AND_TIME_LIBS
5390
5391squeeze SUPPORT_FEATURES
5392squeeze SUPPORT_PROTOCOLS
5393
5394XC_CHECK_BUILD_FLAGS
5395
5396SSL_BACKENDS=${ssl_backends}
5397AC_SUBST(SSL_BACKENDS)
5398
5399CURL_PREPARE_CONFIGUREHELP_PM
5400
5401AC_CONFIG_FILES([\
5402  Makefile \
5403  docs/Makefile \
5404  docs/examples/Makefile \
5405  docs/libcurl/Makefile \
5406  docs/libcurl/opts/Makefile \
5407  docs/cmdline-opts/Makefile \
5408  include/Makefile \
5409  include/curl/Makefile \
5410  src/Makefile \
5411  lib/Makefile \
5412  scripts/Makefile \
5413  lib/libcurl.vers \
5414  tests/Makefile \
5415  tests/config \
5416  tests/configurehelp.pm \
5417  tests/certs/Makefile \
5418  tests/data/Makefile \
5419  tests/server/Makefile \
5420  tests/libtest/Makefile \
5421  tests/unit/Makefile \
5422  tests/tunit/Makefile \
5423  tests/http/config.ini \
5424  tests/http/Makefile \
5425  projects/Makefile \
5426  projects/vms/Makefile \
5427  libcurl.pc
5428])
5429AC_CONFIG_FILES([curl-config], [chmod +x curl-config])
5430AC_OUTPUT
5431
5432SUPPORT_PROTOCOLS_LOWER=`echo "$SUPPORT_PROTOCOLS" | tr A-Z a-z`
5433
5434AC_MSG_NOTICE([Configured to build curl/libcurl:
5435
5436  Host setup:       ${host}
5437  Install prefix:   ${prefix}
5438  Compiler:         ${CC}
5439   CFLAGS:          ${CFLAGS}
5440   CFLAGS extras:   ${CURL_CFLAG_EXTRAS}
5441   CPPFLAGS:        ${CPPFLAGS}
5442   LDFLAGS:         ${LDFLAGS}
5443     curl-config:   ${LIBCURL_PC_LDFLAGS_PRIVATE}
5444   LIBS:            ${LIBS}
5445
5446  curl version:     ${CURLVERSION}
5447  SSL:              ${curl_ssl_msg}
5448  SSH:              ${curl_ssh_msg}
5449  zlib:             ${curl_zlib_msg}
5450  brotli:           ${curl_brotli_msg}
5451  zstd:             ${curl_zstd_msg}
5452  GSS-API:          ${curl_gss_msg}
5453  GSASL:            ${curl_gsasl_msg}
5454  TLS-SRP:          ${curl_tls_srp_msg}
5455  resolver:         ${curl_res_msg}
5456  IPv6:             ${curl_ipv6_msg}
5457  Unix sockets:     ${curl_unix_sockets_msg}
5458  IDN:              ${curl_idn_msg}
5459  Build docs:       ${curl_docs_msg}
5460  Build libcurl:    Shared=${enable_shared}, Static=${enable_static}
5461  Built-in manual:  ${curl_manual_msg}
5462  --libcurl option: ${curl_libcurl_msg}
5463  Type checking:    ${curl_typecheck_msg}
5464  Verbose errors:   ${curl_verbose_msg}
5465  Code coverage:    ${curl_coverage_msg}
5466  SSPI:             ${curl_sspi_msg}
5467  ca native:        ${ca_native}
5468  ca cert bundle:   ${ca}${ca_warning}
5469  ca cert path:     ${capath}${capath_warning}
5470  ca cert embed:    ${CURL_CA_EMBED_msg}
5471  ca fallback:      ${with_ca_fallback}
5472  LDAP:             ${curl_ldap_msg}
5473  LDAPS:            ${curl_ldaps_msg}
5474  IPFS/IPNS:        ${curl_ipfs_msg}
5475  RTSP:             ${curl_rtsp_msg}
5476  PSL:              ${curl_psl_msg}
5477  Alt-svc:          ${curl_altsvc_msg}
5478  Headers API:      ${curl_headers_msg}
5479  HSTS:             ${curl_hsts_msg}
5480  HTTP1:            ${curl_h1_msg}
5481  HTTP2:            ${curl_h2_msg}
5482  HTTP3:            ${curl_h3_msg}
5483  ECH:              ${curl_ech_msg}
5484  HTTPS RR:         ${curl_httpsrr_msg}
5485  SSLS-EXPORT:      ${curl_ssls_export_msg}
5486  Protocols:        ${SUPPORT_PROTOCOLS_LOWER}
5487  Features:         ${SUPPORT_FEATURES}
5488])
5489
5490if test -n "$experimental"; then
5491  for a in $experimental; do
5492    AC_MSG_WARN([$a is enabled but marked EXPERIMENTAL. Use with caution!])
5493  done
5494fi
5495
5496CURL_PREPARE_BUILDINFO
5497echo "[@%:@] This is a generated file.  Do not edit.${curl_buildinfo}" > ./buildinfo.txt
5498if test -n "$CURL_BUILDINFO$CURL_CI$CI"; then
5499  AC_MSG_NOTICE([${curl_buildinfo}])
5500fi