diff --git a/doc/“定时起飞”用例实现的顺序图.eddx b/doc/“定时起飞”用例实现的顺序图.eddx
new file mode 100644
index 0000000..934f522
Binary files /dev/null and b/doc/“定时起飞”用例实现的顺序图.eddx differ
diff --git a/doc/“无人机控制”子系统的设计架构图.eddx b/doc/“无人机控制”子系统的设计架构图.eddx
new file mode 100644
index 0000000..522f4e6
Binary files /dev/null and b/doc/“无人机控制”子系统的设计架构图.eddx differ
diff --git a/doc/“森警” 系统实践汇报 .pptx b/doc/“森警” 系统实践汇报 .pptx
new file mode 100644
index 0000000..141e4f9
Binary files /dev/null and b/doc/“森警” 系统实践汇报 .pptx differ
diff --git a/doc/“森警”无人机系统作品介绍.docx b/doc/“森警”无人机系统作品介绍.docx
new file mode 100644
index 0000000..dd3b18d
Binary files /dev/null and b/doc/“森警”无人机系统作品介绍.docx differ
diff --git a/doc/“火情检测预警及反应”子系统的设计架构图.eddx b/doc/“火情检测预警及反应”子系统的设计架构图.eddx
new file mode 100644
index 0000000..b1b266f
Binary files /dev/null and b/doc/“火情检测预警及反应”子系统的设计架构图.eddx differ
diff --git a/doc/体系结构图.png b/doc/体系结构图.png
deleted file mode 100644
index b4190d6..0000000
Binary files a/doc/体系结构图.png and /dev/null differ
diff --git a/doc/图.svg b/doc/图.svg
new file mode 100644
index 0000000..08d0ba6
--- /dev/null
+++ b/doc/图.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/doc/定时起飞.png b/doc/定时起飞.png
deleted file mode 100644
index 7f5abc2..0000000
Binary files a/doc/定时起飞.png and /dev/null differ
diff --git a/doc/无人机调用顺序图.png b/doc/无人机调用顺序图.png
deleted file mode 100644
index b46aa76..0000000
Binary files a/doc/无人机调用顺序图.png and /dev/null differ
diff --git a/doc/森警-彩页.png b/doc/森警-彩页.png
new file mode 100644
index 0000000..72161a3
Binary files /dev/null and b/doc/森警-彩页.png differ
diff --git a/doc/森警系统体系结构图.eddx b/doc/森警系统体系结构图.eddx
new file mode 100644
index 0000000..0fda471
Binary files /dev/null and b/doc/森警系统体系结构图.eddx differ
diff --git a/doc/火情检测.png b/doc/火情检测.png
deleted file mode 100644
index 8f7b72e..0000000
Binary files a/doc/火情检测.png and /dev/null differ
diff --git a/doc/火情检测与预警设计架构.png b/doc/火情检测与预警设计架构.png
deleted file mode 100644
index adf65d4..0000000
Binary files a/doc/火情检测与预警设计架构.png and /dev/null differ
diff --git a/doc/系统整体结构框架图.png b/doc/系统整体结构框架图.png
new file mode 100644
index 0000000..11d23ce
Binary files /dev/null and b/doc/系统整体结构框架图.png differ
diff --git a/doc/系统类图.png b/doc/系统类图.png
deleted file mode 100644
index 1bccc1c..0000000
Binary files a/doc/系统类图.png and /dev/null differ
diff --git a/doc/自主导航巡逻设计架构.png b/doc/自主导航巡逻设计架构.png
deleted file mode 100644
index 955f4f2..0000000
Binary files a/doc/自主导航巡逻设计架构.png and /dev/null differ
diff --git a/doc/航道设置顺序图.png b/doc/航道设置顺序图.png
deleted file mode 100644
index df21b8a..0000000
Binary files a/doc/航道设置顺序图.png and /dev/null differ
diff --git a/doc/软件系统用例图.png b/doc/软件系统用例图.png
deleted file mode 100644
index b33bae8..0000000
Binary files a/doc/软件系统用例图.png and /dev/null differ
diff --git a/doc/软件部署图.png b/doc/软件部署图.png
deleted file mode 100644
index 299af54..0000000
Binary files a/doc/软件部署图.png and /dev/null differ
diff --git a/doc/顺序图.svg b/doc/顺序图.svg
new file mode 100644
index 0000000..0b63caa
--- /dev/null
+++ b/doc/顺序图.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/doc/xu.txt b/ling.txt
similarity index 100%
rename from doc/xu.txt
rename to ling.txt
diff --git a/src/UAV_UI_new/.vs/UAV_UI_new/FileContentIndex/f0b08431-c6f0-4f25-80de-1b621086a1e3.vsidx b/src/UAV_UI_new/.vs/UAV_UI_new/FileContentIndex/f0b08431-c6f0-4f25-80de-1b621086a1e3.vsidx
deleted file mode 100644
index ad95034..0000000
Binary files a/src/UAV_UI_new/.vs/UAV_UI_new/FileContentIndex/f0b08431-c6f0-4f25-80de-1b621086a1e3.vsidx and /dev/null differ
diff --git a/src/UAV_UI_new/.vs/UAV_UI_new/FileContentIndex/fe85f333-ea36-4c81-b16e-7128c6ea02d0.vsidx b/src/UAV_UI_new/.vs/UAV_UI_new/FileContentIndex/fe85f333-ea36-4c81-b16e-7128c6ea02d0.vsidx
deleted file mode 100644
index 4b9606f..0000000
Binary files a/src/UAV_UI_new/.vs/UAV_UI_new/FileContentIndex/fe85f333-ea36-4c81-b16e-7128c6ea02d0.vsidx and /dev/null differ
diff --git a/src/UAV_UI_new/UAV_UI_new/x64/Debug/qmake/temp/FB496CF3-A3CE-4A50-BAC4-A9F43A71A5F9.UAV_UI_new.designtime.idx b/src/UAV_UI_new/UAV_UI_new/x64/Debug/qmake/temp/FB496CF3-A3CE-4A50-BAC4-A9F43A71A5F9.UAV_UI_new.designtime.idx
deleted file mode 100644
index c077172..0000000
--- a/src/UAV_UI_new/UAV_UI_new/x64/Debug/qmake/temp/FB496CF3-A3CE-4A50-BAC4-A9F43A71A5F9.UAV_UI_new.designtime.idx
+++ /dev/null
@@ -1 +0,0 @@
-C:\Users\87334\AppData\Local\Temp\pdg1r02b.ncv.designtime.props
diff --git a/src/fire/.vs/CMakeWorkspaceSettings.json b/src/fire/.vs/CMakeWorkspaceSettings.json
new file mode 100644
index 0000000..d3e1057
--- /dev/null
+++ b/src/fire/.vs/CMakeWorkspaceSettings.json
@@ -0,0 +1,3 @@
+{
+ "enableCMake": false
+}
\ No newline at end of file
diff --git a/src/fire/.vs/ProjectSettings.json b/src/fire/.vs/ProjectSettings.json
new file mode 100644
index 0000000..e257ff9
--- /dev/null
+++ b/src/fire/.vs/ProjectSettings.json
@@ -0,0 +1,3 @@
+{
+ "CurrentProjectSetting": "无配置"
+}
\ No newline at end of file
diff --git a/src/fire/.vs/VSWorkspaceState.json b/src/fire/.vs/VSWorkspaceState.json
new file mode 100644
index 0000000..9afc8b8
--- /dev/null
+++ b/src/fire/.vs/VSWorkspaceState.json
@@ -0,0 +1,9 @@
+{
+ "ExpandedNodes": [
+ "",
+ "\\curl-8.1.2\\include",
+ "\\curl-8.1.2\\include\\curl",
+ "\\fire"
+ ],
+ "PreviewInSolutionExplorer": false
+}
\ No newline at end of file
diff --git a/src/fire/.vs/fire/FileContentIndex/1b1d13ee-e1f3-448a-9e99-ad0fb3aa0cd0.vsidx b/src/fire/.vs/fire/FileContentIndex/1b1d13ee-e1f3-448a-9e99-ad0fb3aa0cd0.vsidx
new file mode 100644
index 0000000..c6d516f
Binary files /dev/null and b/src/fire/.vs/fire/FileContentIndex/1b1d13ee-e1f3-448a-9e99-ad0fb3aa0cd0.vsidx differ
diff --git a/src/fire/.vs/fire/FileContentIndex/6766a9b8-2a0a-4378-8ead-cc0289479f36.vsidx b/src/fire/.vs/fire/FileContentIndex/6766a9b8-2a0a-4378-8ead-cc0289479f36.vsidx
new file mode 100644
index 0000000..3906132
Binary files /dev/null and b/src/fire/.vs/fire/FileContentIndex/6766a9b8-2a0a-4378-8ead-cc0289479f36.vsidx differ
diff --git a/src/fire/.vs/fire/FileContentIndex/731fbf8e-2326-457f-baa4-c59f73c0148f.vsidx b/src/fire/.vs/fire/FileContentIndex/731fbf8e-2326-457f-baa4-c59f73c0148f.vsidx
new file mode 100644
index 0000000..d8195b4
Binary files /dev/null and b/src/fire/.vs/fire/FileContentIndex/731fbf8e-2326-457f-baa4-c59f73c0148f.vsidx differ
diff --git a/src/fire/.vs/fire/FileContentIndex/9cf66d6f-c1fb-4bae-8608-d358e3ac7415.vsidx b/src/fire/.vs/fire/FileContentIndex/9cf66d6f-c1fb-4bae-8608-d358e3ac7415.vsidx
new file mode 100644
index 0000000..849da9c
Binary files /dev/null and b/src/fire/.vs/fire/FileContentIndex/9cf66d6f-c1fb-4bae-8608-d358e3ac7415.vsidx differ
diff --git a/src/fire/.vs/fire/FileContentIndex/9e49852d-a8d0-4346-92a3-23fba3b4a64f.vsidx b/src/fire/.vs/fire/FileContentIndex/9e49852d-a8d0-4346-92a3-23fba3b4a64f.vsidx
new file mode 100644
index 0000000..b7e5984
Binary files /dev/null and b/src/fire/.vs/fire/FileContentIndex/9e49852d-a8d0-4346-92a3-23fba3b4a64f.vsidx differ
diff --git a/src/UAV_UI_new/UAV_UI_new/x64/Debug/UAV_UI_new.vcxproj.FileListAbsolute.txt b/src/fire/.vs/fire/FileContentIndex/read.lock
similarity index 100%
rename from src/UAV_UI_new/UAV_UI_new/x64/Debug/UAV_UI_new.vcxproj.FileListAbsolute.txt
rename to src/fire/.vs/fire/FileContentIndex/read.lock
diff --git a/src/fire/.vs/fire/v17/.suo b/src/fire/.vs/fire/v17/.suo
new file mode 100644
index 0000000..711fc85
Binary files /dev/null and b/src/fire/.vs/fire/v17/.suo differ
diff --git a/src/fire/.vs/fire/v17/.wsuo b/src/fire/.vs/fire/v17/.wsuo
new file mode 100644
index 0000000..89aed7f
Binary files /dev/null and b/src/fire/.vs/fire/v17/.wsuo differ
diff --git a/src/UAV_UI_new/.vs/UAV_UI_new/v17/Browse.VC.db b/src/fire/.vs/fire/v17/Browse.VC.db
similarity index 100%
rename from src/UAV_UI_new/.vs/UAV_UI_new/v17/Browse.VC.db
rename to src/fire/.vs/fire/v17/Browse.VC.db
diff --git a/src/fire/.vs/fire/v17/TestStore/0/000.testlog b/src/fire/.vs/fire/v17/TestStore/0/000.testlog
new file mode 100644
index 0000000..6bbf10e
Binary files /dev/null and b/src/fire/.vs/fire/v17/TestStore/0/000.testlog differ
diff --git a/src/fire/.vs/fire/v17/TestStore/0/testlog.manifest b/src/fire/.vs/fire/v17/TestStore/0/testlog.manifest
new file mode 100644
index 0000000..e92ede2
Binary files /dev/null and b/src/fire/.vs/fire/v17/TestStore/0/testlog.manifest differ
diff --git a/src/fire/.vs/fire/v17/ipch/AutoPCH/4b59ec096f0614fd/MEMDEBUG.ipch b/src/fire/.vs/fire/v17/ipch/AutoPCH/4b59ec096f0614fd/MEMDEBUG.ipch
new file mode 100644
index 0000000..c7af6ce
Binary files /dev/null and b/src/fire/.vs/fire/v17/ipch/AutoPCH/4b59ec096f0614fd/MEMDEBUG.ipch differ
diff --git a/src/fire/.vs/fire/v17/ipch/AutoPCH/4be9bc584cd54adf/POSITION.ipch b/src/fire/.vs/fire/v17/ipch/AutoPCH/4be9bc584cd54adf/POSITION.ipch
new file mode 100644
index 0000000..592d8f8
Binary files /dev/null and b/src/fire/.vs/fire/v17/ipch/AutoPCH/4be9bc584cd54adf/POSITION.ipch differ
diff --git a/src/fire/.vs/fire/v17/ipch/AutoPCH/514d128447becf03/EASY.ipch b/src/fire/.vs/fire/v17/ipch/AutoPCH/514d128447becf03/EASY.ipch
new file mode 100644
index 0000000..12a2eec
Binary files /dev/null and b/src/fire/.vs/fire/v17/ipch/AutoPCH/514d128447becf03/EASY.ipch differ
diff --git a/src/fire/.vs/fire/v17/ipch/AutoPCH/523479f55512c18/SYSTEM_WIN32.ipch b/src/fire/.vs/fire/v17/ipch/AutoPCH/523479f55512c18/SYSTEM_WIN32.ipch
new file mode 100644
index 0000000..75900f5
Binary files /dev/null and b/src/fire/.vs/fire/v17/ipch/AutoPCH/523479f55512c18/SYSTEM_WIN32.ipch differ
diff --git a/src/fire/.vs/fire/v17/ipch/AutoPCH/7007365a898c33b/VTLS.ipch b/src/fire/.vs/fire/v17/ipch/AutoPCH/7007365a898c33b/VTLS.ipch
new file mode 100644
index 0000000..debd67c
Binary files /dev/null and b/src/fire/.vs/fire/v17/ipch/AutoPCH/7007365a898c33b/VTLS.ipch differ
diff --git a/src/fire/.vs/fire/v17/ipch/AutoPCH/73e43129d8acb08b/ASYN-THREAD.ipch b/src/fire/.vs/fire/v17/ipch/AutoPCH/73e43129d8acb08b/ASYN-THREAD.ipch
new file mode 100644
index 0000000..28a8425
Binary files /dev/null and b/src/fire/.vs/fire/v17/ipch/AutoPCH/73e43129d8acb08b/ASYN-THREAD.ipch differ
diff --git a/src/fire/.vs/fire/v17/ipch/AutoPCH/76a64b604a88c2ac/FIRE.ipch b/src/fire/.vs/fire/v17/ipch/AutoPCH/76a64b604a88c2ac/FIRE.ipch
new file mode 100644
index 0000000..dc1c2b5
Binary files /dev/null and b/src/fire/.vs/fire/v17/ipch/AutoPCH/76a64b604a88c2ac/FIRE.ipch differ
diff --git a/src/fire/.vs/fire/v17/ipch/AutoPCH/8cea24eb8637d2ab/CURL_SSPI.ipch b/src/fire/.vs/fire/v17/ipch/AutoPCH/8cea24eb8637d2ab/CURL_SSPI.ipch
new file mode 100644
index 0000000..d95d3b1
Binary files /dev/null and b/src/fire/.vs/fire/v17/ipch/AutoPCH/8cea24eb8637d2ab/CURL_SSPI.ipch differ
diff --git a/src/fire/.vs/fire/v17/ipch/AutoPCH/9769fd2c35dfbaaa/CURL_LOG.ipch b/src/fire/.vs/fire/v17/ipch/AutoPCH/9769fd2c35dfbaaa/CURL_LOG.ipch
new file mode 100644
index 0000000..be75df5
Binary files /dev/null and b/src/fire/.vs/fire/v17/ipch/AutoPCH/9769fd2c35dfbaaa/CURL_LOG.ipch differ
diff --git a/src/fire/.vs/fire/v17/ipch/AutoPCH/d6d94407676d1dd1/FIRE.ipch b/src/fire/.vs/fire/v17/ipch/AutoPCH/d6d94407676d1dd1/FIRE.ipch
new file mode 100644
index 0000000..8ac9942
Binary files /dev/null and b/src/fire/.vs/fire/v17/ipch/AutoPCH/d6d94407676d1dd1/FIRE.ipch differ
diff --git a/src/fire/.vs/fire/v17/ipch/AutoPCH/f2c377b1ea2c0efd/VERSION_WIN32.ipch b/src/fire/.vs/fire/v17/ipch/AutoPCH/f2c377b1ea2c0efd/VERSION_WIN32.ipch
new file mode 100644
index 0000000..2be9d6b
Binary files /dev/null and b/src/fire/.vs/fire/v17/ipch/AutoPCH/f2c377b1ea2c0efd/VERSION_WIN32.ipch differ
diff --git a/src/fire/.vs/fire/v17/workspaceFileList.bin b/src/fire/.vs/fire/v17/workspaceFileList.bin
new file mode 100644
index 0000000..9d35818
Binary files /dev/null and b/src/fire/.vs/fire/v17/workspaceFileList.bin differ
diff --git a/src/fire/.vs/slnx.sqlite b/src/fire/.vs/slnx.sqlite
new file mode 100644
index 0000000..8f24f99
Binary files /dev/null and b/src/fire/.vs/slnx.sqlite differ
diff --git a/src/fire/.vs/tasks.vs.json b/src/fire/.vs/tasks.vs.json
new file mode 100644
index 0000000..148e63c
--- /dev/null
+++ b/src/fire/.vs/tasks.vs.json
@@ -0,0 +1,10 @@
+{
+ "version": "0.2.1",
+ "tasks": [
+ {
+ "taskLabel": "任务-fire",
+ "appliesTo": "fire/fire.cpp",
+ "type": "launch"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/fire/Debug/fire.exe b/src/fire/Debug/fire.exe
new file mode 100644
index 0000000..e8aa13a
Binary files /dev/null and b/src/fire/Debug/fire.exe differ
diff --git a/src/fire/Debug/fire.pdb b/src/fire/Debug/fire.pdb
new file mode 100644
index 0000000..d57d659
Binary files /dev/null and b/src/fire/Debug/fire.pdb differ
diff --git a/src/fire/Debug/libcurl-d.dll b/src/fire/Debug/libcurl-d.dll
new file mode 100644
index 0000000..4850d0e
Binary files /dev/null and b/src/fire/Debug/libcurl-d.dll differ
diff --git a/src/fire/Debug/zlibd1.dll b/src/fire/Debug/zlibd1.dll
new file mode 100644
index 0000000..16b2f57
Binary files /dev/null and b/src/fire/Debug/zlibd1.dll differ
diff --git a/src/fire/curl-8.1.2/CHANGES b/src/fire/curl-8.1.2/CHANGES
new file mode 100644
index 0000000..2dfd4f3
--- /dev/null
+++ b/src/fire/curl-8.1.2/CHANGES
@@ -0,0 +1,9245 @@
+ _ _ ____ _
+ ___| | | | _ \| |
+ / __| | | | |_) | |
+ | (__| |_| | _ <| |___
+ \___|\___/|_| \_\_____|
+
+ Changelog
+
+Version 8.1.2 (30 May 2023)
+
+Daniel Stenberg (30 May 2023)
+
+- RELEASE-NOTES: synced
+
+ 8.1.2 release
+
+- THANKS: contributors from 8.1.2
+
+- lib1560: verify more scheme guessing
+
+ - on 2nd level domains
+ - on names without dots
+
+ As mentioned in #11161, "imap.com" will be guessed IMAP
+
+ Closes #11219
+
+- page-header: minor wording polish in the URL segment
+
+ Closes #11217
+
+- page-header: mention curl version and how to figure out current release
+
+ Closes #11216
+
+- RELEASE-NOTES: synced
+
+- configure: without pkg-config and no custom path, use -lnghttp2
+
+ Reported-by: correctmost on github
+ Fixes #11186
+ Closes #11210
+
+Stefan Eissing (28 May 2023)
+
+- curl: cache the --trace-time value for a second
+
+ - caches HH:MM:SS computed and reuses it for logging during
+ the same second.
+ - common function for plain log line start formatting
+
+ Closes #11211
+
+Kev Jackson (28 May 2023)
+
+- libcurl.m4: remove trailing 'dnl' that causes this to break autoconf
+
+ Closes #11212
+
+Stefan Eissing (26 May 2023)
+
+- http3: send EOF indicator early as possible
+
+ - ngtcp2 and quiche implementations relied on the DONE_SEND event
+ to forward the EOF for uploads to the libraries. This often
+ result in a last 0 length EOF data. Tracking the amount of
+ data left to upload allows EOF indication earlier.
+ - refs #11205 where CloudFlare DoH servers did not like to
+ receive the initial upload DATA without EOF and returned
+ a 400 Bad Request
+
+ Reported-by: Sergey Fionov
+ Fixes #11205
+ Closes #11207
+
+Daniel Stenberg (26 May 2023)
+
+- scripts/contri*sh: no longer grep -v ' '
+
+ Originally these scripts filtered out names that have no space so that
+ they better avoid nick names not intended for credits. Such names are
+ not too commonly used, plus we now give credit even to those.
+
+ Additionally: non-latin names, like Asian, don't have spaces at all so
+ they were also filtered out and had to be manually added which made it
+ an error-prone operation where Asian names eventually easily fell off by
+ mistake.
+
+ Closes #11206
+
+- cf-socket: restore Curl_sock_assign_addr()
+
+ Regression since it was not private. Also used by msh3.c
+
+ Follow-up to 8e85764b7bd7f05f5
+ Reported-by: Gisle Vanem
+ Fixes #11202
+ Closes #11204
+
+- RELEASE-NOTES: synced
+
+ Taken down to 8.1.2 now for pending patch release
+
+- libssh: when keyboard-interactive auth fails, try password
+
+ The state machine had a mistake in that it would not carry on to that
+ next step.
+
+ This also adds a verbose output what methods that are available from the
+ server and renames the macros that change to the next auth methods to
+ try.
+
+ Reported-by: 左潇峰
+ Fixes #11196
+ Closes #11197
+
+Emanuele Torre (25 May 2023)
+
+- configure: fix build with arbitrary CC and LD_LIBRARY_PATH
+
+ Since ./configure and processes that inherit its environment variables
+ are the only callers of the run-compiler script, we can just save the
+ current value of the LD_LIBRARY_PATH and CC variables to another pair of
+ environment variables, and make run-compiler a static script that
+ simply restores CC and LD_LIBRARY_PATH to the saved value, and before
+ running the compiler.
+
+ This avoids having to inject the values of the variables in the script,
+ possibly causing problems if they contains spaces, quotes, and other
+ special characters.
+
+ Also add exports in the script just in case LD_LIBRARY_PATH and CC are
+ not already in the environment.
+
+ follow-up from 471dab2
+
+ Closes #11182
+
+Daniel Stenberg (25 May 2023)
+
+- urlapi: remove superfluous host name check
+
+ ... as it is checked later more proper.
+
+ Closes #11195
+
+Stefan Eissing (25 May 2023)
+
+- http2: fix EOF handling on uploads with auth negotiation
+
+ - doing a POST with `--digest` does an override on the initial request
+ with `Content-Length: 0`, but the http2 filter was unaware of that
+ and expected the originally request body. It did therefore not
+ send a final DATA frame with EOF flag to the server.
+ - The fix overrides any initial notion of post size when the `done_send`
+ event is triggered by the transfer loop, leading to the EOF that
+ is necessary.
+ - refs #11194. The fault did not happen in testing, as Apache httpd
+ never tries to read the request body of the initial request,
+ sends the 401 reply and closes the stream. The server used in the
+ reported issue however tried to read the EOF and timed out on the
+ request.
+
+ Reported-by: Aleksander Mazur
+ Fixes #11194
+ Cloes #11200
+
+Daniel Stenberg (23 May 2023)
+
+- RELEASE-NOTES: synced
+
+ bump to 8.2.0
+
+- lib: remove unused functions, make single-use static
+
+ Closes #11174
+
+- scripts/singleuse.pl: add more API calls
+
+Christian Hesse (23 May 2023)
+
+- configure: quote the assignments for run-compiler
+
+ Building for multilib failed, as the compiler command contains an
+ extra argument. That needs quoting.
+
+ Regression from b78ca50cb3dda361f9c1
+
+ Fixes #11179
+ Closes #11180
+
+Daniel Stenberg (23 May 2023)
+
+- misc: fix spelling mistakes
+
+ Reported-by: musvaage on github
+ Fixes #11171
+ Closes #11172
+
+Version 8.1.1 (23 May 2023)
+
+Daniel Stenberg (23 May 2023)
+
+- RELEASE-NOTES: synced
+
+ curl 8.1.1
+
+- THANKS: contributors from the 8.1.1 release
+
+Dan Fandrich (22 May 2023)
+
+- docs: fix fuzzing documentation link
+
+ Follow-up to 4c712a1b
+
+- CI: add an Alpine build with MUSL
+
+ MUSL is another libc implementation which has its own unique issues
+ worth testing.
+
+ Ref: #11140
+ Closes #11178
+
+- runtests: add a missing \n at the end of a log message
+
+correctmost on github (22 May 2023)
+
+- SECURITY-PROCESS.md: link security advisory doc and fix typo
+
+ Closes #11177
+
+Daniel Stenberg (22 May 2023)
+
+- TODO: build curl with Windows Unicode support
+
+ Closes #7229
+
+- KNOWN_BUGS: hyper memory-leaks
+
+ Closes #10803
+
+Stefan Eissing (22 May 2023)
+
+- http/2: unstick uploads
+
+ - refs #11157 and #11175 where uploads get stuck or lead to RST streams
+ - fixes our h2 send behaviour to continue sending in the nghttp2 session
+ as long as it wants to. This will empty our send buffer as long as
+ the remote stream/connection window allows.
+ - in case the window is exhausted, the data remaining in the send buffer
+ will wait for a WINDOW_UPDATE from the server. Which is a socket event
+ that engages our transfer loop again
+ - the problem in the issue was that we did not exhaust the window, but
+ left data in the sendbuffer and no further socket events did happen.
+ The server was just waiting for us to send more.
+ - relatedly, there was an issue fixed that closing a stream with KEEP_HOLD
+ set kept the transfer from shutting down - as it should have - leading
+ to a timeout.
+
+ Closes #11176
+
+Daniel Stenberg (21 May 2023)
+
+- workflows/macos: add a job using gcc + debug + secure transport
+
+Jay Satiro (21 May 2023)
+
+- lib: fix conversion warnings with gcc on macOS
+
+Daniel Stenberg (21 May 2023)
+
+- sectransp.c: make the code c89 compatible
+
+ Follow-up to dd2bb485521c2ec713001b3a
+
+ Reported-by: FeignClaims on github
+ Fixes #11155
+ Closes #11159
+
+Emanuele Torre (21 May 2023)
+
+- Revert "urlapi: respect CURLU_ALLOW_SPACE and CURLU_NO_AUTHORITY for redirect
+ s"
+
+ This reverts commit df6c2f7b544f1f35f2a3e0be11f345affeb6fe9c.
+ (It only keep the test case that checks redirection to an absolute URL
+ without hostname and CURLU_NO_AUTHORITY).
+
+ I originally wanted to make CURLU_ALLOW_SPACE accept spaces in the
+ hostname only because I thought
+ curl_url_set(CURLUPART_URL, CURLU_ALLOW_SPACE) was already accepting
+ them, and they were only not being accepted in the hostname when
+ curl_url_set(CURLUPART_URL) was used for a redirection.
+
+ That is not actually the case, urlapi never accepted hostnames with
+ spaces, and a hostname with a space in it never makes sense.
+ I probably misread the output of my original test when I they were
+ normally accepted when using CURLU_ALLOW_SPACE, and not redirecting.
+
+ Some other URL parsers seems to allow space in the host part of the URL,
+ e.g. both python3's urllib.parse module, and Chromium's javascript URL
+ object allow spaces (chromium percent escapes the spaces with %20),
+ (they also both ignore TABs, and other whitespace characters), but those
+ URLs with spaces in the hostname are useless, neither python3's requests
+ module nor Chromium's window.location can actually use them.
+
+ There is no reason to add support for URLs with spaces in the host,
+ since it was not a inconsistency bug; let's revert that patch before it
+ makes it into release. Sorry about that.
+
+ I also reverted the extra check for CURLU_NO_AUTHORITY since that does
+ not seem to be necessary, CURLU_NO_AUTHORITY already worked for
+ redirects.
+
+ Closes #11169
+
+Dan Fandrich (20 May 2023)
+
+- runtests: use the correct fd after select
+
+ The code was using the wrong fd when determining which runner was ready
+ with a response.
+
+ Ref: #10818
+ Closes #11160
+
+- test425: fix the log directory for the upload
+
+ This must be %LOGDIR to let it work with parallel tests.
+
+ Ref: #10969
+
+- runtests: handle interrupted reads from IPC pipes
+
+ These can be interrupted by signals, especially SIGINT to shut down, and
+ must be restarted so the IPC call arrives correctly. If the read just
+ returns an error instead, the IPC calling state will go out of sync and
+ a proper shutdown won't happen.
+
+ Ref: #10818
+
+Stefan Eissing (20 May 2023)
+
+- http2: upload improvements
+
+ Make send buffer smaller to have progress and "upload done" reporting
+ closer to reality. Fix handling of send "drain" condition to no longer
+ trigger once the transfer loop reports it is done sending. Also do not
+ trigger the send "drain" on RST streams.
+
+ Background:
+ - a upload stall was reported in #11157 that timed out
+ - test_07_33a reproduces a problem with such a stall if the
+ server 404s the request and RSTs the stream.
+ - test_07_33b verifies a successful PUT, using the parameters
+ from #11157 and checks success
+
+ Ref: #11157
+ Closes #11165
+
+- http2: increase stream window size to 10 MB
+
+ Reported-by: pandada8 on github
+
+ Fixes #11162
+ Closes #11167
+
+Daniel Stenberg (20 May 2023)
+
+- lib: rename struct 'http_req' to 'httpreq'
+
+ Because FreeBSD 14 kidnapped the name.
+ Ref: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=271526
+
+ Fixes #11163
+ Closes #11164
+
+Viktor Szakats (20 May 2023)
+
+- cmake: avoid `list(PREPEND)` for compatibility
+
+ `list(PREPEND)` requires CMake v3.15, our minimum is v3.7.
+
+ Ref: https://cmake.org/cmake/help/latest/command/list.html#prepend
+
+ Regression from 1e3319a167d2f32d295603167486e9e88af9bb4e
+
+ Reported-by: Keitagit-kun on Github
+ Fixes #11141
+ Closes #11144
+
+Daniel Stenberg (19 May 2023)
+
+- RELEASE-NOTES: synced
+
+Stefan Eissing (19 May 2023)
+
+- ngtcp2: proper handling of uint64_t when adjusting send buffer
+
+ Fixes #11149
+ Closes #11153
+
+- ngtcp2: fix compiler warning about possible null-deref
+
+ - compiler analyzer did not include the call context for this
+ static function where the condition had already been checked.
+ - eleminating the problem by making stream a call parameter
+
+ Fixes #11147
+ Closes #11151
+
+Emanuele Torre (19 May 2023)
+
+- docs: document that curl_url_cleanup(NULL) is a safe no-op
+
+ This has always been the case, but it was not documented.
+
+ The paragraph was copied verbatim from curl_easy_cleanup.3
+
+ Closes #11150
+
+Antoine Pitrou (19 May 2023)
+
+- select: avoid returning an error on EINTR from select() or poll()
+
+ This was already done for the poll() and select() calls
+ made directly from Curl_poll(), but was missed in
+ Curl_wait_ms(), which is called when there are no fds
+ to wait on.
+
+ Fixes #11135
+ Closes #11143
+
+Daniel Stenberg (19 May 2023)
+
+- vquic.c: make recvfrom_packets static, avoid compiler warning
+
+ warning: no previous prototype for 'recvfrom_packets'
+
+ Reported-by: Keitagit-kun on github
+ Fixes #11146
+ Closes #11148
+
+- urlapi: allow numerical parts in the host name
+
+ It can only be an IPv4 address if all parts are all digits and no more than
+ four parts, otherwise it is a host name. Even slightly wrong IPv4 will now be
+ passed through as a host name.
+
+ Regression from 17a15d88467 shipped in 8.1.0
+
+ Extended test 1560 accordingly.
+
+ Reported-by: Pavel Kalyugin
+ Fixes #11129
+ Closes #11131
+
+Emilio Cobos Álvarez (19 May 2023)
+
+- http2: double http request parser max line length
+
+ This works around #11138, by doubling the limit, and should be a
+ relatively safe fix.
+
+ Ideally the buffer would grow as needed and there would be no need for a
+ limit? But that might be follow-up material.
+
+ Fixes #11138
+ Closes #11139
+
+Emanuele Torre (18 May 2023)
+
+- configure: fix --help alignment
+
+ AC_ARG_ENABLE seems to only trim off whitespace from the start and end
+ of its help-string argument, while prepending two spaces of indentation
+ to all lines.
+
+ This means that the two spaces of indentation between the --enable-rtsp
+ and the --disable-rtsp line were not removed causing ./configure --help
+ to print:
+
+ Optional Features:
+ [...]
+ --enable-rtsp Enable RTSP support
+ --disable-rtsp Disable RTSP support
+
+ I removed the indentation to fix the issue, now it prints:
+
+ Optional Features:
+ [...]
+ --enable-rtsp Enable RTSP support
+ --disable-rtsp Disable RTSP support
+
+ The --enable-hsts and --disable-hsts lines had the same problems, and
+ have been fixed too.
+
+ Closes #11142
+
+Deal(一线灵) (18 May 2023)
+
+- cmake: repair cross compiling
+
+ It cannot *run* code for testing purposes when cross-compiling.
+
+ Closes #11130
+
+Daniel Stenberg (18 May 2023)
+
+- configure: generate a script to run the compiler
+
+ in the CURL_RUN_IFELSE macro, with LD_LIBRARY_PATH set to the value of
+ the configure invoke, and not the value that might be used later,
+ intended for the execution of the output the compiler ouputs.
+
+ For example when the compiler uses the same library (like libz) that
+ configure checks for.
+
+ Reported-by: Jonas Bülow
+ Fixes #11114
+ Closes #11120
+
+Stefan Eissing (18 May 2023)
+
+- cf-socket: completely remove the disabled USE_RECV_BEFORE_SEND_WORKAROUND
+
+ Closes #11118
+
+Emanuele Torre (18 May 2023)
+
+- urlapi: respect CURLU_ALLOW_SPACE and CURLU_NO_AUTHORITY for redirects
+
+ curl_url_set(uh, CURLUPART_URL, redirurl, flags) was not respecing
+ CURLU_ALLOW_SPACE and CURLU_NO_AUTHORITY in the host part of redirurl
+ when redirecting to an absolute URL.
+
+ Closes #11136
+
+Colin Cross (18 May 2023)
+
+- hostip: move easy_lock.h include above curl_memory.h
+
+ Similar to #9561, move easy_lock.h above curl_memory.h to fix building
+ against musl libc.
+
+ Closes #11140
+
+Hind Montassif (18 May 2023)
+
+- curl_easy_getinfo: clarify on return data types
+
+ Closes #11126
+
+Emanuele Torre (18 May 2023)
+
+- checksrc: disallow spaces before labels
+
+ Out of 415 labels throughout the code base, 86 of those labels were
+ not at the start of the line. Which means labels always at the start of
+ the line is the favoured style overall with 329 instances.
+
+ Out of the 86 labels not at the start of the line:
+ * 75 were indented with the same indentation level of the following line
+ * 8 were indented with exactly one space
+ * 2 were indented with one fewer indentation level then the following
+ line
+ * 1 was indented with the indentation level of the following line minus
+ three space (probably unintentional)
+
+ Co-Authored-By: Viktor Szakats
+
+ Closes #11134
+
+Daniel Stenberg (18 May 2023)
+
+- cookie: update the comment on cookie length and size limits
+
+ To refer to the proper cookie RFC and the upcoming RFC refresh.
+
+ Closes #11127
+
+- url: provide better error message when URLs fail to parse
+
+ By providing the URL API error message into the error message.
+
+ Ref: #11129
+ Closes #11137
+
+- RELEASE-NOTES: synced
+
+ bumped to 8.1.1
+
+Jon Rumsey (18 May 2023)
+
+- os400: update chkstrings.c
+
+ Compensate changes for recent changes to urldata.h to reclassify
+ STRING_AWS_SIGV4.
+
+ Fixes #11132
+ Closes #11133
+
+Version 8.1.0 (17 May 2023)
+
+Daniel Stenberg (17 May 2023)
+
+- RELEASE-NOTES: synced
+
+- THANKS: contributors from the 8.1.0 release
+
+- hostip: include easy_lock.h before using GLOBAL_INIT_IS_THREADSAFE
+
+ Since that header file is the only place that define can be defined.
+
+ Reported-by: Marc Deslauriers
+
+ Follow-up to 13718030ad4b3209
+
+ Closes #11121
+
+Thomas Taylor (16 May 2023)
+
+- aws-sigv4.d: fix region identifier in example
+
+ Closes #11117
+
+Philip Heiduck (15 May 2023)
+
+- mlc_config.json: remove this linkcheck CI job config file
+
+ Closes #11113
+
+Daniel Silverstone (15 May 2023)
+
+- ssh: Add support for libssh2 read timeout
+
+ Hook the new (1.11.0 or newer) libssh2 support for setting a read timeout
+ into the SERVER_RESPONSE_TIMEOUT option. With this done, clients can use
+ the standard curl response timeout setting to also control the time that
+ libssh2 will wait for packets from a slow server. This is necessary to
+ enable use of very slow SFTP servers.
+
+ Signed-off-by: Daniel Silverstone
+
+ Closes #10965
+
+Osama Albahrani (14 May 2023)
+
+- GIT-INFO: add --with-openssl
+
+ Closes #11110
+
+Daniel Stenberg (13 May 2023)
+
+- RELEASE-NOTES: synced
+
+Marcel Raad (13 May 2023)
+
+- md(4|5): don't use deprecated iOS functions
+
+ They are marked as deprecated in iOS 13.0, which might result in
+ warnings-as-errors.
+
+ Also, use `*_MIN_REQUIRED` instead of `*_MIN_ALLOWED`, which seems to
+ be what's currently used.
+
+ Bug: https://github.com/curl/curl/issues/11098
+ Closes https://github.com/curl/curl/pull/11102
+
+- md4: only build when used
+
+ Its only usage in curl_ntlm_core.c is guarded by `USE_CURL_NTLM_CORE`,
+ so let's use this here too.
+
+ Ref: https://github.com/curl/curl/issues/11098
+ Closes https://github.com/curl/curl/pull/11102
+
+Vítor Galvão (12 May 2023)
+
+- write-out.d: Use response_code in example
+
+ Closes #11107
+
+Shohei Maeda (12 May 2023)
+
+- url: fix null dispname for --connect-to option
+
+ Closes #11106
+
+Daniel Stenberg (12 May 2023)
+
+- test2306: verify getting a second response with folded headers
+
+ Reproduces the isue #11101 and verifies the fix.
+
+ Verifies a17b2a503f
+
+- headers: clear (possibly) lingering pointer in init
+
+ The "prevhead" pointer is used for the headers storage but was not
+ cleared correctly in init, which made it possible to act up when a
+ handle is reused.
+
+ Reported-by: Steve Herrell
+ Fixes #11101
+ Closes #11103
+
+- RELEASE-NOTES: synced
+
+- ngtcp2: use 0.15.0
+
+ - nghttp3 0.11.0
+ - nghttp2 1.53.0
+
+ Adapt to new API calls
+
+ Closes #11031
+
+Jay Satiro (10 May 2023)
+
+- openssl: fix indent
+
+Daniel Stenberg (10 May 2023)
+
+- CURLOPT_DNS_CACHE_TIMEOUT.3: fix spelling
+
+ Follow-up to 9ed7d56e044f5aa1b29
+
+ Closes #11096
+
+- hostip: use time_t for storing oldest DNS entry
+
+ Theoretically, the oldest time could overflow an int. In practice that
+ won't happen, but let's do this to please analyzers.
+
+ Follow-up to 9ed7d56e044f5aa1b2928ccde6245d0
+
+ Pointed out by Coverity.
+ Closes #11094
+
+- http: free the url before storing a new copy
+
+ To avoid a memory-leak.
+
+ Reported-by: Hiroki Kurosawa
+
+ Closes #11093
+
+- compressed.d: clarify the words on "not notifying headers"
+
+ Reported-by: Dylan Anthony
+ Fixes #11091
+ Closes #11092
+
+- libssh2: free fingerprint better
+
+ Reported-by: Wei Chong Tan
+ Closes #11088
+
+- CURLOPT_IPRESOLVE.3: clarify that this for host names, not IP addresses
+
+ Reported-by: Harry Sintonen
+ Closes #11087
+
+- hostip: enforce a maximum DNS cache size independent of timeout value
+
+ To reduce the damage an application can cause if using -1 or other
+ ridiculous timeout values and letting the cache live long times.
+
+ The maximum number of entries in the DNS cache is now totally
+ arbitrarily and hard-coded set to 29999.
+
+ Closes #11084
+
+- hostip: store dns timeout as 'int'
+
+ ... because it set and held as an 'int' elsewhere and can never be
+ larger.
+
+- RELEASE-NOTES: synced
+
+- tool_operate: refuse (--data or --form) and --continue-at combo
+
+ libcurl assumes that a --continue-at resumption is done to continue an
+ upload using the read callback and neither --data nor --form use
+ that and thus won't do what the user wants. Whatever the user wants
+ with this strange combination.
+
+ Add test 426 to verify.
+
+ Reported-by: Smackd0wn on github
+ Fixes #11081
+ Closes #11083
+
+- transfer: refuse POSTFIELDS + RESUME_FROM combo
+
+ The code assumes that such a resume is wanting to continue an upload
+ using the read callback, and since POSTFIELDS is done without callback
+ libcurl will just misbehave.
+
+ This combo will make the transfer fail with CURLE_BAD_FUNCTION_ARGUMENT
+ with an explanation in the error message.
+
+ Reported-by: Smackd0wn on github
+ Fixes #11081
+ Closes #11083
+
+- ipv4.d/ipv6.d: they are "mutex", not "boolean"
+
+ ... which for example means they do not have --no-* versions.
+
+ Reported-by: Harry Sintonen
+ Fixes #11085
+ Closes #11086
+
+- docs/SECURITY-ADVISORY.md: how to write a curl security advisory
+
+ Closes #11080
+
+nobedee on github (5 May 2023)
+
+- MANUAL.md: add dict example for looking up a single definition
+
+ Closes #11077
+
+Dan Fandrich (5 May 2023)
+
+- runtests: fix -c option when run with valgrind
+
+ The curl binary argument wasn't being quoted properly. This seems to
+ have broken at some point after quoting was added in commit 606b29fe.
+
+ Reported-by: Daniel Stenberg
+ Ref: #11073
+ Fixes #11074
+ Closes #11076
+
+- runtests: support creating more than one runner process
+
+ The controller currently only creates and uses one, but more are now
+ possible.
+
+ Ref: #10818
+
+- runtests: spawn a new process for the test runner
+
+ When the -j option is given, a new process is spawned in which the test
+ programs are run and from which test servers are started. Only one
+ process can be started at once, but this is sufficient to test that the
+ infrastructure can isolate those functions in a new task. There should
+ be no visible difference between the two modes at the moment.
+
+ Ref: #10818
+ Closes #11064
+
+- runtests: turn singletest() into a state machine
+
+ This allows it to run in a non-blocking manner.
+
+ Ref: #10818
+
+- runtests: change runner interface to be asynchronous
+
+ Program arguments are marshalled and then written to the end of a pipe
+ which is later read from and the arguments unmarshalled before the
+ desired function is called normally. The function return values are
+ then marshalled and written into another pipe when is later read from
+ and unmarshalled before being returned to the caller.
+
+ The implementation is currently blocking but can be made non-blocking
+ without any changes to the API. This allows calling multiple runners
+ without blocking in the future.
+
+ Ref: #10818
+
+- runtests: call citest_finishtest in singletest
+
+ This is where citest_starttest is called.
+
+ Ref: #10818
+
+- runtests: add a runner initialization function
+
+ This sets up the runner environment to start running tests.
+
+ Ref: #10818
+
+- runtests: remove directory from server filename variables
+
+ There will soon be multiple log directories so the paths will no longer
+ be static in runtests.pl. Also, get rid of $SERVER2IN which was not
+ used.
+
+ Ref: #10818
+
+- runtests: reduce package exports after refactoring
+
+ Some recent refactoring made these export no longer necessary. Also,
+ stop displaying the Unix socket paths at startup since there will soon
+ be many of them and they're not that interesting.
+
+ Ref: #10818
+
+- runtests: use a function to obtain $LOGDIR for a test
+
+ This will no longer be static soon.
+
+ Ref: #10818
+
+Jay Satiro (5 May 2023)
+
+- tool_cb_hdr: Fix 'Location:' formatting for early VTE terminals
+
+ - Disable hyperlink formatting for the 'Location:' header value in VTE
+ 0.48.1 and earlier, since it is buggy in some of those versions.
+
+ Prior to this change those terminals may show the location header value
+ as gibberish or show it twice.
+
+ Ref: https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda#backw
+ ard-compatibility
+
+ Fixes https://github.com/curl/curl/issues/10428
+ Closes https://github.com/curl/curl/pull/11071
+
+François Michel (3 May 2023)
+
+- quiche: disable pacing while pacing is not actually performed
+
+ Closes #11068
+
+Daniel Stenberg (2 May 2023)
+
+- easy_cleanup: require a "good" handle to act
+
+ By insisting that the passed in handle is "good" (the magic number is
+ intact), this can limit the potential damage if a bad pointer is passed
+ in. Like when this function is called twice on the same handle pointer.
+
+ Ref: #10964
+ Closes #11061
+
+Andreas Falkenhahn (1 May 2023)
+
+- amiga: Fix CA certificate paths for AmiSSL and MorphOS
+
+ AmiSSL stores certificates in `AmiSSL:Certs` and MorphOS stores them in
+ `MOSSYS:Data/SSL/curl-ca-bundle.crt`.
+
+ Closes https://github.com/curl/curl/pull/11059
+
+Daniel Stenberg (30 Apr 2023)
+
+- http2: (void)-mark when we explicitly ignore the return code
+
+ When h2_progress_egress() is called. Pointed out by Coverity.
+
+ Closes #11057
+
+- checksrc: find bad indentation in conditions without open brace
+
+ If the previous line starts with if/while/for AND ends with a closed
+ parenthesis and there's an equal number of open and closed parentheses
+ on that line, verify that this line is indented $indent more steps, if
+ not a cpp line.
+
+ Also adjust the fall-out from this fix.
+
+ Closes #11054
+
+Diogo Teles Sant'Anna (28 Apr 2023)
+
+- CI: Set minimal permissions on workflow ngtcp2-quictls.yml
+
+ Signed-off-by: Diogo Teles Sant'Anna
+
+ Closes #11055
+
+Dan Fandrich (28 Apr 2023)
+
+- CI: use another glob syntax for matching files on Appveyor
+
+ The previous globbing syntax was not matching files recursively in
+ directories, so try appending a /* to more closely match the examples at
+ https://www.appveyor.com/docs/how-to/filtering-commits/
+
+Daniel Stenberg (28 Apr 2023)
+
+- multi: add multi-ignore logic to multi_socket_action
+
+ The multi-ignore logic that was previously applied to
+ curl_multi_perform() (#10750) is here applied to the loop within
+ curl_multi_socket_action() to make it use the same optimization: most
+ handles have the same signal-ignore option state so this drastically
+ reduces the number of ignore/unignore calls per libcurl function invoke.
+
+ Follow-up to bc90308328afb8
+
+ Closes #11045
+
+Stefan Eissing (28 Apr 2023)
+
+- http2: do flow window accounting for cancelled streams
+
+ - nghttp2 does not free connection level window flow for
+ aborted streams
+ - when closing transfers, make sure that any buffered
+ response data is "given back" to the flow control window
+ - add tests test_02_22 and test_02_23 to reproduce
+
+ Closes #11052
+
+- pingpong: fix compiler warning "assigning an enum to unsigned char"
+
+ Closes #11050
+
+Daniel Stenberg (28 Apr 2023)
+
+- configure: fix detection of apxs (for httpd)
+
+ The condition check was turned the wrong way around!
+
+ Closes #11051
+
+Viktor Szakats (28 Apr 2023)
+
+- ci: `-Wno-vla` no longer necessary
+
+ We handle this issue in the source now.
+
+ Follow-up to b725fe1944b45406676ea3aff333ae3085a848d9
+
+ Reviewed-by: Marcel Raad
+ Reviewed-by: Daniel Stenberg
+ Closes #11048
+
+Marcel Raad (28 Apr 2023)
+
+- tests/http: make curl_setup.h the first include
+
+ This is required for the macros there to take effect for system
+ libraries. Specifically, including the system libraries first led to
+ warnings about `_FILE_OFFSET_BITS` being redefined in curl_config.h on
+ the Solaris autobuilds for ws-data.c and ws-pingpong.c.
+ Also make the curl includes come first for the other source files here
+ for consistency.
+
+ Closes https://github.com/curl/curl/pull/11046
+
+Emanuele Torre (27 Apr 2023)
+
+- checksrc: check for spaces before the colon of switch labels
+
+ Closes #11047
+
+Daniel Stenberg (27 Apr 2023)
+
+- RELEASE-NOTES: synced
+
+- libssh: tell it to use SFTP non-blocking
+
+ Reported-by: Andreas Huebner
+ Fixes #11020
+ Closes #11039
+
+Stefan Eissing (27 Apr 2023)
+
+- http2: enlarge the connection window
+
+ - fixes stalled connections
+
+ - Make the connection window large enough, so that there is
+ some room left should 99/100 streams be PAUSED by the application
+
+ Reported-by: Paweł Wegner
+ Fixes #10988
+ Closes #11043
+
+Daniel Stenberg (27 Apr 2023)
+
+- checksrc: fix SPACEBEFOREPAREN for conditions starting with "*"
+
+ The open paren check wants to warn for spaces before open parenthesis
+ for if/while/for but also for any function call. In order to avoid
+ catching function pointer declarations, the logic allows a space if the
+ first character after the open parenthesis is an asterisk.
+
+ I also spotted what we did not include "switch" in the check but we should.
+
+ This check is a little lame, but we reduce this problem by not allowing
+ that space for if/while/for/switch.
+
+ Reported-by: Emanuele Torre
+ Closes #11044
+
+- docs: minor polish
+
+ - "an HTTP*" (not "a")
+ - remove a few contractions
+ - remove a spurious "a"
+ - reduce use of "I" in texts
+
+ Closes #11040
+
+- ws: fix CONT opcode check
+
+ Detected by Coverity. Follow-up to 930c00c259
+
+ Closes #11037
+
+Dan Fandrich (27 Apr 2023)
+
+- CI: switch the awslc builds to build out-of-tree
+
+ This is a common configuration that should be tested to avoid
+ regressions. The awsls cmake build was already out-of-tree so the
+ automake build now joins it.
+
+ Ref: #11006
+
+- tests/http: fix out-of-tree builds
+
+ Add both lib/ directories (src & build) to the search path so
+ curl_setup.h and its dependencies can be found.
+
+ Followup-to acd82c8b
+
+ Ref: #11006
+ Closes #11036
+
+Daniel Stenberg (27 Apr 2023)
+
+- urlapi: make internal function start with Curl_
+
+ Curl_url_set_authority() it is.
+
+ Follow-up to acd82c8bfd
+
+ Closes #11035
+
+YX Hao (26 Apr 2023)
+
+- cf-socket: turn off IPV6_V6ONLY on Windows if it is supported
+
+ IPV6_V6ONLY refs:
+ https://en.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses
+ https://github.com/golang/go/blob/master/src/net/ipsock_posix.go
+ https://en.wikipedia.org/wiki/Unix-like
+ https://learn.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-o
+ ptions
+
+ default value refs:
+ https://datatracker.ietf.org/doc/html/rfc3493#section-5.3
+ https://www.kernel.org/doc/html/latest/networking/ip-sysctl.html#proc-sys-net
+ -ipv6-variables
+
+ Closes #10975
+
+Daniel Stenberg (26 Apr 2023)
+
+- urldata: shrink *select_bits int => unsigned char
+
+ - dselect_bits
+ - cselect_bits
+
+ ... are using less than 8 bits. Changed types and moved them towards
+ the end of the structs to fit better.
+
+ Closes #11025
+
+Stefan Eissing (26 Apr 2023)
+
+- tests/http: more tests with specific clients
+
+ - Makefile support for building test specific clients in tests/http/clients
+ - auto-make of clients when invoking pytest
+ - added test_09_02 for server PUSH_PROMISEs using clients/h2-serverpush
+ - added test_02_21 for lib based downloads and pausing/unpausing transfers
+
+ curl url parser:
+ - added internal method `curl_url_set_authority()` for setting the
+ authority part of a url (used for PUSH_PROMISE)
+
+ http2:
+ - made logging of PUSH_PROMISE handling nicer
+
+ Placing python test requirements in requirements.txt files
+ - separate files to base test suite and http tests since use
+ and module lists differ
+ - using the files in the gh workflows
+
+ websocket test cases, fixes for we and bufq
+ - bufq: account for spare chunks in space calculation
+ - bufq: reset chunks that are skipped empty
+ - ws: correctly encode frames with 126 bytes payload
+ - ws: update frame meta information on first call of collect
+ callback that fills user buffer
+ - test client ws-data: some test/reporting improvements
+
+ Closes #11006
+
+Jay Satiro (26 Apr 2023)
+
+- libssh2: fix crash in keyboard callback
+
+ - Always set the libssh2 'abstract' user-pointer to the libcurl easy
+ handle associated with the ssh session, so it is always passed to the
+ ssh keyboard callback.
+
+ Prior to this change and since 8b5f100 (precedes curl 8.0.0), if libcurl
+ was built without CURL_DEBUG then it could crash during the ssh auth
+ phase due to a null dereference in the ssh keyboard callback.
+
+ Reported-by: Andreas Falkenhahn
+
+ Fixes https://github.com/curl/curl/pull/11024
+ Closes https://github.com/curl/curl/pull/11026
+
+Daniel Stenberg (26 Apr 2023)
+
+- docs: clarify that more backends have HTTPS proxy support
+
+ Closes #11033
+
+- KNOWN_BUGS: remove two not-bugs
+
+ - 11.7 signal-based resolver timeouts
+
+ Not considered a bug anymore but just implementation details. People
+ should avoid using timeouts with the synchronous name resolver.
+
+ - 11.16 libcurl uses renames instead of locking for atomic operations
+
+ Not a bug, just a description of how it works
+
+ Closes #11032
+
+Harry Sintonen (26 Apr 2023)
+
+- hostip: add locks around use of global buffer for alarm()
+
+ When building with the sync name resolver and timeout ability we now
+ require thread-safety to be present to enable it.
+
+ Closes #11030
+
+Daniel Stenberg (26 Apr 2023)
+
+- curl_path: bring back support for SFTP path ending in /~
+
+ libcurl used to do a directory listing for this case (even though the
+ documentation says a URL needs to end in a slash for this), but
+ 4e2b52b5f7a3 modified the behavior.
+
+ This change brings back a directory listing for SFTP paths that are
+ specified exactly as /~ in the URL.
+
+ Reported-by: Pavel Mayorov
+ Fixes #11001
+ Closes #11023
+
+Emanuele Torre (26 Apr 2023)
+
+- docs/libcurl/curl_*escape.3: rename "url" argument to "input"/"string"
+
+ Also reword the DESCRIPTION section to mention "input"/"string" argument
+ in bold.
+
+ Closes #11027
+
+- docs/libcurl: minor cleanups
+
+ I was reading curl_unescape(3) and I noticed that there was an extra
+ space after the open parenthesis in the SYNOPSIS; I removed the extra
+ space.
+
+ I also ran a few grep -r commands to find and remove extra spaces
+ after '(' in other files, and to find and replace uses of `T*' instead
+ of `T *'. Some of the instances of `T*` where unnecessary casts that I
+ removed.
+
+ I also fixed a comment that was misaligned in CURLMOPT_SOCKETFUNCTION.3.
+
+ And I fixed some formatting inconsistencies: in curl_unescape(3), all
+ function parameter were mentioned with bold text except length, that was
+ mentioned as 'length'; and, in curl_easy_unescape(3), all parameters
+ were mentioned in bold text except url that was italicised. Now they are
+ all mentioned in bold.
+ Documentation is not very consistent in how function parameter are
+ formatted: many pages italicise them, and others display them in bold
+ text; but I think it makes sense to at least be consistent with
+ formatting within the same page.
+
+ Closes #11027
+
+Daniel Stenberg (26 Apr 2023)
+
+- man pages: simplify the .TH sections
+
+ - remove the version numbers
+ - simplify the texts
+
+ The date and version number will be put there for releases when maketgz
+ runs the updatemanpages.pl script.
+
+ Closes #11029
+
+- hostcheck: fix host name wildcard checking
+
+ The leftmost "label" of the host name can now only match against single
+ '*'. Like the browsers have worked for a long time.
+
+ - extended unit test 1397 for this
+ - move some SOURCE variables from unit/Makefile.am to unit/Makefile.inc
+
+ Reported-by: Hiroki Kurosawa
+ Closes #11018
+
+Dan Fandrich (25 Apr 2023)
+
+- smbserver: remove temporary files before exit
+
+ Each execution of test 1451 would leave a file in /tmp before. Since
+ Windows can't delete a file while it's open, all the temporary file
+ names are stored and deleted on exit.
+
+ Closes #10990
+
+Stefan Eissing (25 Apr 2023)
+
+- Websocket en-/decoding
+
+ - state is fully kept at connection, since curl_ws_send() and
+ curl_ws_rec() have lifetime beyond usual transfers
+ - no more limit on frame sizes
+
+ Reported-by: simplerobot on github
+ Fixes #10962
+ Closes #10999
+
+Patrick Monnerat (25 Apr 2023)
+
+- urldata: copy CURLOPT_AWS_SIGV4 value on handle duplication
+
+ Prior to this change STRING_AWS_SIGV4 (CURLOPT_AWS_SIGV4) was wrongly
+ marked as binary data that could not be duplicated.
+
+ Without this fix, this option's value is not copied upon calling
+ curl_easy_duphandle().
+
+ Closes https://github.com/curl/curl/pull/11021
+
+Stefan Eissing (25 Apr 2023)
+
+- http3: expire unpaused transfers in all HTTP/3 backends
+
+ Closes #11005
+
+- http2: always EXPIRE_RUN_NOW unpaused http/2 transfers
+
+ - just increasing the http/2 flow window does not necessarily
+ make a server send new data. It may already have exhausted
+ the window before
+
+ Closes #11005
+
+- http2: pass `stream` to http2_handle_stream_close to avoid NULL checks
+
+ Closes #11005
+
+- h2/h3: replace `state.drain` counter with `state.dselect_bits`
+
+ - `drain` was used by http/2 and http/3 implementations to indicate
+ that the transfer requires send/recv independant from its socket
+ poll state. Intended as a counter, it was used as bool flag only.
+ - a similar mechanism exists on `connectdata->cselect_bits` where
+ specific protocols can indicate something similar, only for the
+ whole connection.
+ - `cselect_bits` are cleard in transfer.c on use and, importantly,
+ also set when the transfer loop expended its `maxloops` tries.
+ `drain` was not cleared by transfer and the http2/3 implementations
+ had to take care of that.
+ - `dselect_bits` is cleared *and* set by the transfer loop. http2/3
+ does no longer clear it, only set when new events happen.
+
+ This change unifies the handling of socket poll overrides, extending
+ `cselect_bits` by a easy handle specific value and a common treatment in
+ transfers.
+
+ Closes #11005
+
+Daniel Stenberg (25 Apr 2023)
+
+- socketpair: verify with a random value
+
+ ... instead of using the curl time struct, since it would use a few
+ uninitialized bytes and the sanitizers would complain. This is a neater
+ approach I think.
+
+ Reported-by: Boris Kuschel
+ Fixes #10993
+ Closes #11015
+
+Stefan Eissing (25 Apr 2023)
+
+- HTTP3: document the ngtcp2/nghttp3 versions to use for building curl
+
+ - refs #11011 to clarify this for people building curl themselves
+
+ Closes #11019
+
+Daniel Stenberg (25 Apr 2023)
+
+- lib: unify the upload/method handling
+
+ By making sure we set state.upload based on the set.method value and not
+ independently as set.upload, we reduce confusion and mixup risks, both
+ internally and externally.
+
+ Closes #11017
+
+- RELEASE-NOTES: synced
+
+Dan Fandrich (24 Apr 2023)
+
+- CI: don't run CI jobs if only another CI was changed
+
+ A few paths were missed in the last commit, as well as a job added since
+ then.
+
+ Followup-to 395b9175
+
+- CI: adjust labeler match patterns
+
+- runtests: support buffering log messages in runner & servers
+
+ Log messages generated with logmsg can now be buffered and returned from
+ the runner as a return value. This will be needed with parallel testing
+ to allow all messages for one test to be displayed together instead of
+ interspersed with messages of multiple tests. Buffering can be disabled
+ by setting a logging callback function with setlogfunc, which is
+ currently being done to preserve existing logging behaviour for now.
+
+ Some additional output is generated in verbose and debugprotocol modes,
+ which don't always use logmsg. These modes also impact some servers
+ which generate extra messages. No attempt is made to buffer everything
+ if these modes are enabled.
+
+ Ref: #10818
+ Closes #11016
+
+- runtests: more consistently use logmsg in server control code
+
+ Also, display an error when sshversioninfo returns one.
+
+ Ref: #10818
+
+- runtests: create runner functions for clearlocks and stopservers
+
+ runtests.pl now uses runner for all server actions beyond the initial
+ variable configuration.
+
+ Ref: #10818
+
+- runtests: tightened servers package exports
+
+ The defaults are intended for runtests.pl, whereas runner.pm needs to
+ explicitly specify them.
+
+- runtests: display logs on server failure in singletest()
+
+ This is closer to the place where logs are displayed on test failure.
+ Also, only display these logs if -p is given, which is the same flag
+ that controls display of test failure logs. Some server log files
+ need to be deleted later so that they stay around long enough to be
+ displayed on failure.
+
+ Ref: #10818
+
+- runtests: turn a print into a logmsg
+
+ Also enable another couple of useful messages in verbose mode.
+
+ Ref: #10818
+
+Daniel Stenberg (24 Apr 2023)
+
+- http: store the password in the correct variable
+
+ Typo from fc2f1e547a4a, detected by Coverity (because there's dead code
+ due to this).
+
+ Closes #11002
+
+Stefan Eissing (24 Apr 2023)
+
+- HTTP3/quiche: terminate h1 response header when no body is sent
+
+ - fixes a failure in test2501 where a response without body was missing
+ the final empty line
+
+ Closes #11003
+
+Dan Fandrich (22 Apr 2023)
+
+- runtests: move showdiff into runtests.pl
+
+ It's not used anywhere else.
+
+- devtest: add a new script for testing the test harness
+
+ This is currently useful for starting a test server on its own without
+ an associated test, which can be used for interactive curl testing or
+ for validating parts of the test harness itself. More commands can be
+ added to perform additional functions in the future.
+
+ Ref: #10818
+ Closes #11008
+
+- runtests: refactor the main test loop into two
+
+ The test loop now has an initial loop that first runs through all
+ possible tests to build a set of those to attempt on this run based on
+ features and keywords and only then goes through that new list to run
+ them. This actually makes it three loops through all tests cases, as
+ there is an existing loop that gathers possible test numbers from the
+ test files on disk.
+
+ This has two minor effects on the output: all the tests that will be
+ skipped are displayed at the start (instead of being interspersed with
+ other tests) and the -l option no longer shows a count of tests at the
+ end or a (misleading) statement that tests have run successfully. The
+ skipped tests are also omitted from the test results sent to AppVeyor
+ and Azure in CI builds.
+
+ Another effect is a reduction in the amount of work considered part of
+ the "Test definition reading and preparation time" reported with -r
+ making those figures slightly lower than before.
+
+ Ref: #10818
+
+- runtests: track only the current test timings in runner.pm
+
+ This avoids passing these data through through global variables, which
+ soon won't be possible.
+
+ Ref: #10818
+
+- runtests: skip test preprocessing when doing -l
+
+ This speeds up the output tremendously by avoiding unnecessary work.
+
+- runtests: simplify value returned regarding use of valgrind
+
+ As a side effect this will now also show in verbose mode that valgrind
+ is being skipped on tests that explicitly disable it, such as 600.
+
+ Ref: #10818
+
+- runtests: fix quoting in Appveyor and Azure test integration
+
+ Test 1442's name was not quoted correctly so wasn't registered in
+ Appveyor and it had the wrong name in Azure. The JSON string quotes were
+ also invalid, even though both servers happened to accept it regardless.
+
+ Closes #11010
+
+Daniel Stenberg (19 Apr 2023)
+
+- RELEASE-NOTES: synced
+
+Dan Fandrich (18 Apr 2023)
+
+- runtests: spread out the port numbers used by servers
+
+ The server ports are chosen randomly for each server, but the random
+ ranges chosen were inconsistently-sized and overlapping. Now, they are
+ spread out more so at least the first random port chosen for each server
+ is guaranteed to not also be chosen by another server. The starting port
+ numbers are also raised to put them in the Ephemeral Port range—not the
+ range defined by RFC 6335 but the one used by Linux, which starts lower
+ and gives us more room to work with.
+
+ Reported-by: Daniel Stenberg
+
+- runtests: fix problems on failure
+
+ The verify time must be set in this case, like all cases. An error
+ message needs to be displayed as well.
+
+- runtests: fix perl warning when is wrong
+
+- runtests: don't try to stop stunnel before trying again
+
+ Calling stopserver() before retrying stunnel due to an error would stop
+ the dependent server (such as HTTP) meaning stunnel would have nothing
+ to talk to when it came up. Don't try to force a stop when it didn't
+ actually start. Also, don't mark the server as bad for future use when
+ it starts up on a retry.
+
+ Reported-by: eaglegai at github
+ Tested-by: eaglegai at github
+ Fixes #10976
+
+- runtests: don't accidentally randomly choose the same port
+
+ If a server couldn't be started on a port, a new one is randomly chosen
+ and the server is tried again. Avoid accidentally using a
+ randomly-chosen 0 port offset by adding 1 to the random number.
+
+ Found-by: Daniel Stenberg
+
+- runtests: don't attempt to use a port we know is in use
+
+ This reduces the startup time when there is a known conflict on the
+ random port chosen for a server. This was already done for stunnel, but
+ now it's done for all servers.
+
+- http-server: fix server name in a log message
+
+ This changed when the file was renamed in commit cbf57176
+
+- runtests: refactor into more packages
+
+ testutil.pm now contains a few miscellaneous functions that are used in
+ several places but have no better place to live. subvariables moves to
+ servers.pm since most variables that it substitutes relate to servers,
+ so this is the most appropriate place. Rename a few functions for better
+ naming consistency.
+
+ Ref: #10818
+ Closes #10995
+
+- runtests: call timestampskippedevents() in singletest
+
+ ..rather than by the runner
+
+- runtests: assume a newer Valgrind by default
+
+ The tests for an older Valgrind version should probably just be deleted,
+ given that they're testing for an 18-year-old version.
+
+- runtests: refactor test runner code into runner.pm
+
+ This is code that is directly responsible for running a single test.
+ This will eventually run in a separate process as part of the parallel
+ testing project.
+
+ Ref: #10818
+
+- runtests: skip unneeded work if test won't be running
+
+ This speeds up tests by avoiding unnecessary processing.
+
+ Ref: #10818
+
+- runtests: factor out singletest_postcheck
+
+ This will eventually need to be part of the test runner.
+
+ Ref: #10818
+
+- test303: kill server after test
+
+ Otherwise, an HTTP test closely following this one with a tight time
+ constraint (e.g. 672) could fail because the test server stays sitting
+ with the wait command for a while.
+
+Patrick Monnerat (18 Apr 2023)
+
+- OS400: provide ILE/RPG usage examples
+
+ Closes https://github.com/curl/curl/pull/10994
+
+- OS400: improve vararg emulation
+
+ - Use V7R4 RPG procedure overloading to improve vararg emulation.
+
+ From OS400 V7R4 and above, ILE/RPG implements a limited procedure
+ overloading feature that can be used to improve curl's typed
+ implementation of varargs procedures. This commit applies it to
+ curl_easy_setopt(), curl_multi_setopt(), curl_share_setopt() and
+ curl_easy_getinfo().
+
+ Closes https://github.com/curl/curl/pull/10994
+
+- OS400: fix and complete ILE/RPG binding
+
+ - Fix wrong definitions of CURL_ZERO_TERNINATED, curl_mime_data() and
+ curl_mime_data_ccsid().
+
+ - Add recent definitions, in particular blob, header API and WebSockets
+ API.
+
+ - Support for CURLVERSION_ELEVENTH.
+
+ - New functions for EBCDIC support.
+
+ Reflect these changes in README.OS400.
+
+ Closes https://github.com/curl/curl/pull/10994
+
+- OS400: implement EBCDIC support for recent features
+
+ - Support CURLVERSION_ELEVENTH.
+
+ - New function curl_url_strerror_ccsid().
+
+ - curl_easy_setopt_ccsid() supports blobs and 3 recent string options.
+
+ - New function curl_easy_header_ccsid().
+
+ - New generic latin1<-->ccsid conversion functions curl_from_ccsid() and
+ curl_to_ccsid() for user convenience.
+
+ - README.OS400 updated accordingly.
+
+ - Removed a leftover QsoSSL support identifier.
+
+ Closes https://github.com/curl/curl/pull/10994
+
+- OS400: rework build scripts
+
+ - Rename shell function "system" to "CLcommand" to avoid confusion with
+ built-in command.
+
+ - Reformat scripts. Fix some indentations. Avoid lines > 80 characters
+ where possible.
+
+ - Support ASCII runtime development files in a user-defined directory
+ path.
+
+ - FIX SONAME detection.
+
+ - Drop form API test program compilation (does not exist anymore).
+
+ Closes https://github.com/curl/curl/pull/10994
+
+Sevan Janiyan (18 Apr 2023)
+
+- tests/sshserver.pl: Define AddressFamily earlier
+
+ As the comment states "Address family must be specified before ListenAddress"
+ , otherwise the tests fail to run
+ `"failed starting SSH server" 52 times (582, 583, 600, 601, 602, 603, 604, 60
+ 5, 606 and 43 more)`
+
+ Closes #10983
+
+Stefan Eissing (18 Apr 2023)
+
+- quiche: Enable IDLE egress handling
+
+ Follow-up to 544abeea which added the handling but wrongly left it
+ commented out.
+
+ Closes https://github.com/curl/curl/pull/11000
+
+Daniel Stenberg (18 Apr 2023)
+
+- docs/examples/protofeats.c: Outputs all protocols and features
+
+ Showing off one way to get to char pointer arrays of info returned by
+ curl_version_info()
+
+ Closes #10991
+
+- tests/keywords.pl: remove
+
+ This script does not work since the introduction of the test
+ preprocessing. If we need this functionality, it probably needs to be
+ moved into the runtests tool or similar.
+
+ Reported-by: Dan Fandrich
+ Fixes #10895
+ Closes #10987
+
+Stefan Eissing (17 Apr 2023)
+
+- http2: support HTTP/2 to forward proxies, non-tunneling
+
+ - with `--proxy-http2` allow h2 ALPN negotiation to
+ forward proxies
+ - applies to http: requests against a https: proxy only,
+ as https: requests will auto-tunnel
+ - adding a HTTP/1 request parser in http1.c
+ - removed h2h3.c
+ - using new request parser in nghttp2 and all h3 backends
+ - adding test 2603 for request parser
+ - adding h2 proxy test cases to test_10_*
+
+ scorecard.py: request scoring accidentally always run curl
+ with '-v'. Removed that, expect double numbers.
+
+ labeller: added http1.* and h2-proxy sources to detection
+
+ Closes #10967
+
+Daniel Stenberg (17 Apr 2023)
+
+- curl_easy_unescape.3: rename the argument
+
+ and highlight it appropriately in the text.
+
+ Closes #10979
+
+Viktor Szakats (17 Apr 2023)
+
+- autotools: sync up clang picky warnings with cmake
+
+ Bringing missing options over from CMake.
+
+ Move around existing `-Wno-pointer-bool-conversion` option to come
+ _after_ `-Wconversion`.
+
+ Reviewed-by: Marcel Raad
+ Closes #10974
+
+Daniel Stenberg (17 Apr 2023)
+
+- tests/libtest/lib1900.c: remove
+
+ This file was left behind when the rest of the test was previously removed.
+
+ Follow-up to e50a877df74f
+
+- src/tool_operhlp.c: fix value stored to 'uerr' is never read
+
+ Ref: https://github.com/curl/curl/pull/10974#issuecomment-1510461343
+ Reported-by: Viktor Szakats
+ Closes #10982
+
+Viktor Szakats (16 Apr 2023)
+
+- cmake: speed up and extend picky clang/gcc options
+
+ Extend existing picky compiler options with ones missing compared to
+ autotools builds. Also sync options between clang and gcc.
+
+ Redesign the way we enable these options to avoid the slow option
+ detection almost completely.
+
+ This reduces the number of detections from 35 to zero for clang and
+ 3 for gcc, even after adding a bunch of new options.
+
+ clang 3.0 (2011-11-29) and gcc 2.95 (1999-07-31) now required.
+
+ Also show enabled picky options.
+
+ Ref: https://github.com/libssh2/libssh2/pull/952
+
+ Reviewed-by: Daniel Stenberg
+ Closes #10973
+
+Andreas Falkenhahn (16 Apr 2023)
+
+- nbtlm: use semicolons instead of commas for (void) args
+
+ Closes #10978
+
+Daniel Stenberg (15 Apr 2023)
+
+- multi: free up more data earleier in DONE
+
+ Before checking for more users of the connection and possibly bailing
+ out.
+
+ Fixes #10971
+ Reported-by: Paweł Wegner
+ Closes #10972
+
+- RELEASE-NOTES: synced
+
+- curl: do NOT append file name to path for upload when there's a query
+
+ Added test 425 to verify.
+
+ Reported-by: Dirk Rosenkranz
+ Bug: https://curl.se/mail/archive-2023-04/0008.html
+ Closes #10969
+
+- libcurl-thread.3: improved name resolver wording
+
+ And make better .SH sections
+
+ Closes #10966
+
+Colman Mbuya (14 Apr 2023)
+
+- CURLOPT_PROXY_SSL_VERIFYPEER.3: fix minor grammar mistake
+
+ Closes #10968
+
+Daniel Stenberg (14 Apr 2023)
+
+- curl: add --proxy-http2
+
+ For trying HTTP/2 with an HTTPS proxy.
+
+ Closes #10926
+
+- KNOWN_BUGS: remove fixed or outdated issues, move non-bugs
+
+ - remove h3 issues believed to be fixed
+
+ - make the flaky CI issue be generic and not Windows specific
+
+ - "TLS session cache does not work with TFO" now documented
+
+ This is now a documented restriction and not a bug. TFO in general is
+ rarely used and has other problems, making it a low-priotity thing to
+ work on.
+
+ - remove "Renegotiate from server may cause hang for OpenSSL backend"
+
+ This is an OpenSSL issue, not a curl one. Even if it taints curl.
+
+ - rm "make distclean loops forever"
+
+ - rm "configure finding libs in wrong directory"
+
+ Added a section to docs/INSTALL.md about it.
+
+ - "A shared connection cache is not thread-safe"
+
+ Moved over to TODO and expanded for other sharing improvements we
+ could do
+
+ - rm "CURLOPT_OPENSOCKETPAIRFUNCTION is missing"
+
+ - rm "Blocking socket operations in non-blocking API"
+
+ Already listed as a TODO
+
+ - rm "curl compiled on OSX 10.13 failed to run on OSX 10.10"
+
+ Water under the bridge. No one cares about this anymore.
+
+ - rm "build on Linux links libcurl to libdl"
+
+ Verified to not be true (anymore).
+
+ - rm "libpsl is not supported"
+
+ The cmake build supports it since cafb356e19cda22
+
+ Closes #10963
+
+- url: fix PVS nits
+
+ - expression 'hostptr' is always true
+ - a part of conditional expression is always true: proxypasswd
+ - expression 'proxyuser' is always true
+ - avoid multiple Curl_now() calls in allocate_conn
+
+ Ref: #10929
+ Closes #10959
+
+- bufq: simplify since expression is always true
+
+ The check for 'len' is already done so it will remain true until
+ updated. Pointed out by PVS.
+
+ Ref: #10929
+ Closes #10958
+
+- hash: fix assigning same value
+
+ Pointed out by PVS
+
+ Ref: #10929
+ Closes #10956
+
+- cookie: address PVS nits
+
+ - avoid assigning the same value again
+ - remove superfluous check of co->domain
+ - reduce variable scope for namep/valuep
+
+ Ref: #10929
+ Closes #10954
+
+Stefan Eissing (14 Apr 2023)
+
+- cf-socket: Disable socket receive buffer by default
+
+ - Disable socket receive buffer unless USE_RECV_BEFORE_SEND_WORKAROUND
+ is in place.
+
+ While we would like to use the receive buffer, we have stalls in
+ parallel transfers where not all buffered data is consumed and no socket
+ events happen.
+
+ Note USE_RECV_BEFORE_SEND_WORKAROUND is a Windows sockets workaround
+ that has been disabled by default since b4b6e4f1, due to other bugs.
+
+ Closes https://github.com/curl/curl/pull/10961
+
+- cf-h2-proxy: fix processing ingress to stop too early
+
+ - progress ingress stopped too early, causing data
+ from the underlying filters to not be processed and
+ report that no tunnel data was available
+ - this lead to "hangers" where no socket activity was
+ seen but data rested in buffers
+
+ Closes #10952
+
+- http3: check stream_ctx more thoroughly in all backends
+
+ - callbacks and filter methods might be invoked at unexpected
+ times, e.g. when the transfer's stream_ctx has not been initialized
+ yet or, more likely, has already been taken down.
+ - check for existance of stream_ctx in such places and return
+ an error or silently succeed the call.
+
+ Closes #10951
+
+Daniel Stenberg (13 Apr 2023)
+
+- ftp: fix 'portsock' variable was assigned the same value
+
+ Pointed out by PVS
+
+ Ref: #10929
+ Closes #10955
+
+- ftp: remove dead code
+
+ This condition can never be true here since it is handled already 28
+ lines above.
+
+ Pointed out by PVS.
+
+ Ref: #10929
+ Closes #10957
+
+- cf-h1-proxy: skip an extra NULL assign
+
+ and use Curl_safefree() once to save another NULL assign. Found by PVS.
+
+ Ref. #10929
+ Closes #10953
+
+Philip Heiduck (13 Apr 2023)
+
+- GHA: suppress git clone output
+
+ Follow-up: https://github.com/curl/curl/commit/8203aa6ed405ec832d2c62f18dfda2
+ 93f89a23f9
+
+ Closes #10949
+
+Stefan Eissing (13 Apr 2023)
+
+- cf-socket: remove dead code discovered by PVS
+
+ Closes #10960
+
+Daniel Stenberg (13 Apr 2023)
+
+- http: skip a double NULL assign
+
+ and also use a local variable to shorten the long names and increase
+ readability in the function. Pointed out by PVS.
+
+ Ref: #10929
+ Closes #10950
+
+- mime: skip NULL assigns after Curl_safefree()
+
+ Pointed out by PVS.
+
+ Ref: #10929
+ Closes #10947
+
+- rtsp: skip NULL assigns after Curl_safefree()
+
+ ... since this is a macro that assigns NULL itself. Pointed out by PVS.
+
+ Ref: #10929
+ Closes #10946
+
+- smb: remove double assign
+
+ The same value is assigned the same value already a few lines above.
+ Pointed out by PVS.
+
+ Ref: #10929
+ Closes #10945
+
+- transfer: skip extra assign
+
+ The 'result' variable already contains CURLE_OK at this point, no use in
+ setting it again. Pointed out by PVS.
+
+ Ref: #10929
+ Closes #10944
+
+- urlapi: skip a pointless assign
+
+ It stores a null byte after already having confirmed there is a null
+ byte there. Detected by PVS.
+
+ Ref: #10929
+ Closes #10943
+
+Philip Heiduck (13 Apr 2023)
+
+- GHA: suppress git clone output
+
+ Closes #10939
+
+Stefan Eissing (13 Apr 2023)
+
+- tests: make test_12_01 a bit more forgiving on connection counts
+
+- cf-socket: add socket recv buffering for most tcp cases
+
+ - use bufq as recv buffer, also for Windows pre-receive handling
+ - catch small reads followed by larger ones in a single socket
+ call. A common pattern on TLS connections.
+
+ Closes #10787
+
+Daniel Stenberg (13 Apr 2023)
+
+- urlapi: cleanups
+
+ - move host checks together
+ - simplify the scheme parser loop and the end of host name parser
+ - avoid itermediate buffer storing in multiple places
+ - reduce scope for several variables
+ - skip the Curl_dyn_tail() call for speed
+ - detect IPv6 earlier and skip extra checks for such hosts
+ - normalize directly in dynbuf instead of itermediate buffer
+ - split out the IPv6 parser into its own funciton
+ - call the IPv6 parser directly for ipv6 addresses
+ - remove (unused) special treatment of % in host names
+ - junkscan() once in the beginning instead of scattered
+ - make junkscan return error code
+ - remove unused query management from dedotdotify()
+ - make Curl_parse_login_details use memchr
+ - more use of memchr() instead of strchr() and less strlen() calls
+ - make junkscan check and return the URL length
+
+ An optimized build runs one of my benchmark URL parsing programs ~41%
+ faster using this branch. (compared against the shipped 7.88.1 library
+ in Debian)
+
+ Closes #10935
+
+Josh McCullough (13 Apr 2023)
+
+- http2: fix typo in infof() call
+
+ Closes #10940
+
+Daniel Stenberg (12 Apr 2023)
+
+- noproxy: pointer to local array 'hostip' is stored outside scope
+
+ Ref: #10929
+ Closes #10933
+
+Stefan Eissing (12 Apr 2023)
+
+- connect: fix https connection setup to treat ssl_mode correctly
+
+ - for HTTPS protocol, a disabled ssl should never be acceptables.
+
+ Closes #10934
+
+Douglas R. Reno (12 Apr 2023)
+
+- CMakeLists.txt: fix typo for Haiku detection
+
+ Closes #10937
+
+Dan Fandrich (11 Apr 2023)
+
+- pathhelp: use the cached $use_cygpath when available
+
+- runtests: eliminate unneeded variable
+
+- runtests: make the # of server start attempts a constant
+
+- runtests: on startup failure call displaylogs only in serverfortest
+
+ This reduces the number of calls spread throughout the code.
+
+ Ref: #10818
+ Closes #10919
+
+- runtests: return an error code with startservers()
+
+ The code indicates the kind of failure encountered in starting a server,
+ which can be used by the caller to tailor the user experience.
+
+ Ref: #10818
+
+- runtests: abort early if runpingpongserver is given a bad server type
+
+- runtests: don't use the SMB server verification time as reference
+
+ %FTPTIME2 and %FTPTIME3 should be set by the FTP server only, for
+ consistency.
+
+- tests: factor out the test server management code
+
+ This now lives in servers.pm with some configuration variables moved to
+ globalconfig.pm
+
+ Ref: #10818
+
+- runtests: remove an inappropriate use of runclientoutput
+
+ This function is intended for running client code, not servers.
+
+- runtests: only add $LIBDIR to the path for checktestcmd
+
+ Since checkcmd is for finding servers, there will never be anything in
+ this directory of interest to them.
+
+ Ref: #10818
+
+- tests: log sshserver.pl messages to a file
+
+ The logmsg messages were thrown away before, so they are now available
+ for debugging.
+
+- runtests: also show DISABLED tests with -l
+
+ Other reasons for skipping tests are ignored for -l, so being explicitly
+ disabled should be too.
+
+- runtests: move the UNIX sockets into $PIDDIR
+
+ These were missed when the other server files were moved there.
+
+ Follow-up to 70d2fca2
+
+ Ref: #10818
+
+- tests: tighten up perl exports
+
+ This reduces namespace pollution a little.
+
+ Ref: #10818
+
+- tests: turn perl modules into full packages
+
+ This helps enforce more modularization and encapsulation. Enable and fix
+ warnings on a few packages. Also, rename ftp.pm to processhelp.pm since
+ there's really nothing ftp-specific in it.
+
+ Ref: #10818
+
+Daniel Stenberg (11 Apr 2023)
+
+- multi: remove a few superfluous assigns
+
+ PVS found these "The 'rc' variable was assigned the same value." cases.
+
+ Ref: #10929
+ Closes #10932
+
+- schannel: add clarifying comment
+
+ Explaining how the PVS warning in #10929 is wrong: Dereferencing of the
+ null pointer 'backend->cred' might take place.
+
+ Closes #10931
+
+- cookie: clarify that init with data set to NULL reads no file
+
+ ... and make Curl_cookie_add() require 'data' being set proper with an
+ assert.
+
+ The function has not worked with a NULL data for quite some time so this
+ just corrects the code and comment.
+
+ This is a different take than the proposed fixed in #10927
+
+ Reported-by: Kvarec Lezki
+ Ref: #10929
+ Closes #10930
+
+Kvarec Lezki (11 Apr 2023)
+
+- vtls: remove int typecast for sizeof()
+
+ V220 Suspicious sequence of types castings: memsize -> 32-bit integer ->
+ memsize. The value being cast: 'sizeof
+ (buf->data)'. curl\lib\vtls\vtls.c 2025
+
+ https://pvs-studio.com/en/docs/warnings/v220/
+
+ Closes #10928
+
+Stefan Eissing (11 Apr 2023)
+
+- http2: fix copynpaste error reported by coverity
+
+ - move all code handling HTTP/2 frames for a particular
+ stream into a separate function to keep from confusing
+ the call `data` with the stream `data`.
+
+ Closes #10924
+
+Dan Fandrich (11 Apr 2023)
+
+- tests: log a too-long Unix socket path in sws and socksd
+
+ Ref: #10919
+
+Daniel Stenberg (11 Apr 2023)
+
+- gen.pl: error on duplicated See-Also fields
+
+ Updated http2.d accordingly.
+
+ Closes #10925
+
+- http2: avoid possible null pointer dereference
+
+ Reported-by: Dan Fandrich
+ Fixes #10920
+ Closes #10923
+
+- lib1560: verify that more bad host names are rejected
+
+ when setting the hostname component of a URL
+
+ Closes #10922
+
+- curl_url_set.3: mention that users can set content rather freely
+
+ ... which then might render bad URLs if you extract a URL later.
+
+ Closes #10921
+
+Dan Fandrich (10 Apr 2023)
+
+- CI: retry failed downloads of aws-lc
+
+ Don't fail the build in case of a temporary server problem.
+
+- test1169: fix so it works properly everywhere
+
+ - Use an absolute path for the -L option since the module isn't in the
+ perl path
+ - Create the needed test file in a section; isn't
+ intended for this
+ - Fix the test number in the file name, which was wrong
+
+ Follow-up to f754990a
+
+ Ref: #10818
+ Fixes #10889
+ Closes #10917
+
+- tests: stop using strndup(), which isn't portable
+
+ It's not available on Solaris 10, for example. Since this is just test
+ code that doesn't need to use an optimized system version, replace it
+ with the implementation copied from tool_cb_hdr.c.
+
+- runtests: fix an incorrect comment about the ld_preload feature
+
+ Follow-up to 1f631864
+
+ Ref: #10818
+
+Daniel Stenberg (9 Apr 2023)
+
+- urlapi: prevent setting invalid schemes with *url_set()
+
+ A typical mistake would be to try to set "https://" - including the
+ separator - this is now rejected as that would then lead to
+ url_get(... URL...) would get an invalid URL extracted.
+
+ Extended test 1560 to verify.
+
+ Closes #10911
+
+Biswapriyo Nath (9 Apr 2023)
+
+- http2: remove unused Curl_http2_strerror function declaration
+
+ Curl_http2_strerror was renamed to http2_strerror in
+ 05b100aee247bb9bec8e9a1b0 and then http2_strerror was removed in
+ 5808a0d0f5ea0399d4a2a2
+
+ This also fixes the following compiler error
+
+ lib/http2.h:41:33: error: unknown type name 'uint32_t'
+ lib/http2.h:1:1: note: 'uint32_t' is defined in header ''
+
+ Closes #10912
+
+Daniel Stenberg (8 Apr 2023)
+
+- RELEASE-NOTES: synced
+
+SuperIlu on github (8 Apr 2023)
+
+- config-dos.h: fix SIZEOF_CURL_OFF_T for MS-DOS/DJGPP
+
+ Fixes #10905
+ Closes #10910
+
+Daniel Stenberg (8 Apr 2023)
+
+- lib: remove CURLX_NO_MEMORY_CALLBACKS
+
+ The only user of this define was 'chkdecimalpoint' - a special purpose
+ test tool that was built but not used anymore (since 17c18fbc3 - Apr
+ 2020).
+
+ Closes #10908
+
+- CURLPROXY_HTTPS2: for HTTPS proxy that may speak HTTP/2
+
+ Setting this proxy type allows curl to negotiate and use HTTP/2 with
+ HTTPS proxies.
+
+ Closes #10900
+
+Ali Khodkar (8 Apr 2023)
+
+- write-out.d: add missing periods
+
+ Closes #10897
+
+Daniel Stenberg (7 Apr 2023)
+
+- http2: remove check for !data after it was already dereferenced
+
+ Pointed out by Coverity
+
+ Closes #10906
+
+- http_proxy: provide missing arg to infof() call
+
+ Pointed out by Coverity
+
+ Closes #10904
+
+- content_encoding: only do tranfer-encoding compression if asked to
+
+ To reduce surprises. Update test 387 and 418 accordingly.
+
+ Closes #10899
+
+- sws: comparison of unsigned expression < 0 is always false
+
+ Follow-up to 356dd0b73a75ed6d5
+
+ Closes #10903
+
+- lib/cmake: add HAVE_WRITABLE_ARGV check
+
+ Assisted-by: Jakub Zakrzewski
+ Closes #10896
+
+- configure: don't set HAVE_WRITABLE_ARGV on Windows
+
+ Ref: #10888
+ Closes #10896
+
+- vtls: fix build error when proxy-disabled
+
+ Closes #10901
+
+Stefan Eissing (6 Apr 2023)
+
+- tests: increase sws timeout for more robust testing
+
+ - for https CONNECT forwarding, this was fixed at 5 seconds
+ which led to spurious CI test failures
+ - add --keepalive parameter to sws to control this
+ - let httpserver use 30 seconds
+
+ Closes #10898
+
+- http2: move HTTP/2 stream vars into local context
+
+ - remove NGHTTP2 members of `struct HTTP`
+ - add `void *h2_ctx` to `struct HTTP`
+ - add `void *h3_ctx` to `struct HTTP`
+ - separate h2/h3 pointers are needed for eyeballing
+ - manage local stream_ctx in http implementations
+
+ Closes #10877
+
+- proxy: http2 proxy tunnel implementation
+
+ - currently only on debug build and when env variable
+ CURL_PROXY_TUNNEL_H2 is present.
+ - will ALPN negotiate with the proxy server and switch
+ tunnel filter based on the protocol negotiated.
+ - http/1.1 tunnel code moved into cf-h1-proxy.[ch]
+ - http/2 tunnel code implemented in cf-h2-proxy.[ch]
+ - tunnel start and ALPN set remains in http_proxy.c
+ - moving all haproxy related code into cf-haproxy.[ch]
+
+ VTLS changes
+ - SSL filters rely solely on the "alpn" specification they
+ are created with and no longer check conn->bits.tls_enable_alpn.
+ - checks on which ALPN specification to use (or none at all) are
+ done in vtls.c when creating the filter.
+
+ Testing
+ - added a nghttpx forward proxy to the pytest setup that
+ speaks HTTP/2 and forwards all requests to the Apache httpd
+ forward proxy server.
+ - extending test coverage in test_10 cases
+ - adding proxy tests for direct/tunnel h1/h2 use of basic auth.
+ - adding test for http/1.1 and h2 proxy tunneling to pytest
+
+ Closes #10780
+
+- vtls and h2 improvements
+
+ - eliminate receive loop in vtls to fill buffer. This may
+ lead to partial reads of data which is counter productive
+ - let http2 instead loop smarter to process pending network
+ data without transfer switches
+
+ scorecard improvements
+ - do not start caddy when only httpd is requested
+ - allow curl -v to stderr file on --curl-verbose
+
+ Closes #10891
+
+Daniel Stenberg (6 Apr 2023)
+
+- tests: 1078 1288 1297 use valid IPv4 addresses
+
+ With the enhanced URL parser, these tests failed because of their bad
+ IPv4 use.
+
+- urlapi: detect and error on illegal IPv4 addresses
+
+ Using bad numbers in an IPv4 numerical address now returns
+ CURLUE_BAD_HOSTNAME.
+
+ I noticed while working on trurl and it was originally reported here:
+ https://github.com/curl/trurl/issues/78
+
+ Updated test 1560 accordingly.
+
+ Closes #10894
+
+- RELEASE-NOTES: synced
+
+- urlapi: URL encoding for the URL missed the fragment
+
+ Meaning that it would wrongly still store the fragment using spaces
+ instead of %20 if allowing space while also asking for URL encoding.
+
+ Discovered when playing with trurl.
+
+ Added test to lib1560 to verify the fix.
+
+ Closes #10887
+
+- rtsp: convert mallocs to dynbuf for RTP buffering
+
+ Closes #10786
+
+- tool_writeout: add URL component variables
+
+ Output specific components from the used URL. The following variables
+ are added for this purpose:
+
+ url.scheme, url.user, url.password, url.options, url.host, url.port,
+ url.path, url.query, url.fragment, url.zoneid
+
+ Add the following for outputting parts of the "effective URL":
+
+ urle.scheme, urle.user, urle.password, urle.options, urle.host, urle.port,
+ urle.path, urle.query, urle.fragment, urle.zoneid
+
+ Added test 423 and 424 to verify.
+
+ Closes #10853
+
+Stefan Eissing (4 Apr 2023)
+
+- tests/http: improved httpd detection
+
+ - better error messages when not found/complete
+ - handling of `--without-test-httpd`
+
+ Reported-by: kwind on github
+ Fixes #10879
+ Closes #10883
+
+Daniel Stenberg (4 Apr 2023)
+
+- configure: make quiche require quiche_conn_send_ack_eliciting
+
+ curl now requires quiche version >= 1.17.1 to be used and this function
+ was added in this version and makes a convenient check.
+
+ This requirement is because this is the lowest quiche version that
+ supports peer-initiated key updates correctly.
+
+ Closes #10886
+
+Dan Fandrich (1 Apr 2023)
+
+- unit tests: use the unit test infrastructure better
+
+ Allow UNITTEST_STOP to return the error code, use the fail & abort
+ macros to indicate test failure and return success instead of fail if
+ the unit test can't test anything because of missing features at
+ compile-time. A couple of tests could never fail because they were
+ overriding the failure return code.
+
+- runtests: strip EOL on precheck output on Windows, too
+
+ Precheck failures would show on two lines in the test summary output
+ otherwise.
+
+- tests: move server config files under the pid dir
+
+ These files are generated by the test servers and must therefore be
+ found in the log directory to make them available to only those servers
+ once multiple test runners are executing in parallel. They must also not
+ be deleted with the log files, so they are stored in the pidfile
+ directory.
+
+ Ref: #10818
+ Closes #10875
+
+- runtests: use the ssh key filenames from the sshhelp package
+
+- tests: move pidfiles and portfiles under the log directory
+
+ This is to segregate all files written by a test process into a single
+ root to allow for future parallel testing.
+
+ Ref: #10818
+ Closes #10874
+
+- runtests: minor code cleanups
+
+- runtests: call processexists() and pidfromfile()
+
+ rather than duplicating the logic in several places.
+
+Viktor Szakats (31 Mar 2023)
+
+- cmake: do not add zlib headers for openssl
+
+ Logic copied earlier from wolfSSL. wolfSSL requires zlib headers for its
+ public headers. OpenSSL does not, so stop adding zlib headers for it.
+
+ Follow-up to 1e3319a167d2f32d295603167486e9e88af9bb4e
+
+ Closes #10878
+
+Stefan Eissing (31 Mar 2023)
+
+- rustls: fix error in recv handling
+
+ - when rustls is told to recieve more TLS data and its internal
+ plaintext buffers are full, it returns an IOERROR
+ - avoid receiving TLS data while plaintext is not read empty
+
+ pytest:
+ - increase curl run timeout when invoking pytest with higher verbosity
+
+ Closes #10876
+
+- http3: improvements across backends
+
+ - ngtcp2: using bufq for recv stream data
+ - internal stream_ctx instead of `struct HTTP` members
+ for quiche, ngtcp2 and msh3
+ - no more QUIC related members in `struct HTTP`
+ - experimental use of recvmmsg(), disabled by default
+ - testing on my old debian box shows no throughput improvements.
+ - leaving it in, but disabled, for future revisit
+ - vquic: common UDP receive code for ngtcp2 and quiche
+ - vquic: common UDP send code for ngtcp2 and quiche
+ - added pytest skips for known msh3 failures
+ - fix unit2601 to survive torture testing
+ - quiche: using latest `master` from quiche and enabling large download
+ tests, now that key change is supported
+ - fixing test_07_21 where retry handling of starting a stream
+ was faulty
+ - msh3: use bufq for recv buffering headers and data
+ - msh3: replace fprintf debug logging with LOG_CF where possible
+ - msh3: force QUIC expire timers on recv/send to have more than
+ 1 request per second served
+
+ Closes #10772
+
+Dan Fandrich (30 Mar 2023)
+
+- test1471/2: add http as a required feature
+
+ curl bails out early with a different error message if http support is
+ compiled out.
+
+ Ref: #10705
+
+- tests: limit return code of unit tests and lib tests
+
+ Values greater than 125 have special meanings, so cap it there. Unit
+ tests and lib tests use the number of failures as the return code, so a
+ large number of failures (such as test 2601 as a torture test) can
+ exceed this causing the test to be erroneously reported as having
+ failed.
+
+ Ref: #10720
+
+- test1960: point to the correct path for the precheck tool
+
+ Otherwise, it might find the binary in .libs which can cause it to use
+ the system libcurl which can fail. This error is only visible by
+ noticing that the test is skipped.
+
+ Follow-up to e4dfe6fc
+
+ Ref: #10651
+
+- tests: use the proper %LOGDIR path on two tests
+
+ Follow-up to e7a021e1
+
+ Ref: #10818
+
+Daniel Stenberg (30 Mar 2023)
+
+- rtsp: fix Value stored to 'skip_size' is never read
+
+ Pointed out by scan-build
+
+ Follow-up to 6c6306f3008f2c9b20a64
+
+ Closes #10872
+
+Stefan Eissing (30 Mar 2023)
+
+- tests/http: relax connection check in test_07_02
+
+ Only 1 connection will be used when curl is slow, happens when
+ address-sanitized in CI, for example
+
+ Closes #10865
+
+- http2: flow control and buffer improvements
+
+ - use bufq for send/receive of network data
+ - usd bufq for send/receive of stream data
+ - use HTTP/2 flow control with no-auto updates to control the
+ amount of data we are buffering for a stream
+ HTTP/2 stream window set to 128K after local tests, defined
+ code constant for now
+ - elminiating PAUSEing nghttp2 processing when receiving data
+ since a stream can now take in all DATA nghttp2 forwards
+
+ Improved scorecard and adjuste http2 stream window sizes
+ - scorecard improved output formatting and options default
+ - scorecard now also benchmarks small requests / second
+
+ Closes #10771
+
+Dan Fandrich (30 Mar 2023)
+
+- runtests: show error message if file can't be written
+
+- tests: fix remaining servers to run with a dynamic log directory
+
+ This final commit in the series is sufficient to allow the tests succeed
+ if $LOGDIR is changed in runtests.pl.
+
+ Ref: #10818
+ Closes #10866
+
+- tests: fix fake_ntlm to run with a dynamic log directory
+
+ Ref: #10818
+
+- tests: fix http servers to run with a dynamic log directory
+
+ Ref: #10818
+
+- tests: fix ftpserver to run with a dynamic log directory
+
+ Ref: #10818
+
+- tests: fix C servers to run with a dynamic log directory
+
+ Ref: #10818
+
+- tests: fix lib tests to run with a dynamic log directory
+
+ Ref: #10818
+
+- tests: fix unit tests to run with a dynamic log directory
+
+ Ref: #10818
+
+- tests: use %LOGDIR to refer to the log directory
+
+ This will allow it be set dynamically.
+
+ Ref: #10818
+
+- runtests: track verification time even if no files to compare
+
+- getpart: better handle case of file not found
+
+- testcurl: bump version date
+
+ It hadn't been updated in 9 years; it's time.
+
+- tests: switch to 3-argument open in test suite
+
+ The perl 2-argument open has been considered not-quite-deprecated since
+ the 3-argument form was introduced almost a quarter century ago.
+
+- tests: silence some Perl::Critic warnings in test suite
+
+ Not all warnings are fixed; many are as much stylistic suggestions than
+ anything and IMHO don't do much to actually improve the code.
+
+ Ref: #10818
+ Closes #10861
+
+- docs: bump the minimum perl version to 5.6
+
+ It's actually been this way since at least 2012 (when a 3-argument open
+ was added to runtests.pl). Given the lack of complaints in the interim,
+ it's safe to call this 23 year old perl version the minimum.
+
+- runtests: memoize the getpart* subroutines to speed up access
+
+ The refactored code calls these functions with the same arguments more
+ often, so this prevents redundant test case file parsing.
+
+ Approved-by: Daniel Stenberg
+ Ref: #10818
+ Closes #10833
+
+- runtests: remove duplicated feature variables
+
+ Use the feature map stored in the hash table instead. Most of the
+ variables were only used only once, to set the value in the hash table.
+
+ Ref: #10818
+
+- runtests: also ignore test file problems when ignoring results
+
+ This simplifies error handling in the test verification code and makes
+ it more consistent.
+
+ Ref: #10818
+
+- runtests: more refactoring for clarity
+
+ Ref: #10818
+
+- runtests: don't start servers if -l is given
+
+- runtests: fix typos
+
+- runtests: refactor singletest() into separate functions
+
+ This takes it from a 1200 line behemoth into something more manageable.
+ The content and order of the functions is taken almost directly from
+ singletest() so the diff sans whitespace is quite short.
+
+ Ref: #10818
+
+- runtests: refactor singletest() into distinct sections
+
+ Namely:
+ - Verify that this test case should be run
+ - Start the servers needed to run this test case
+ - Check that test environment is fine to run this test case
+ - Prepare the test environment to run this test case
+ - Run the test command
+ - Clean up after test command
+ - Verify test succeeded
+
+ Ref: #10818
+
+- runtests: stop copying a few arrays where not needed
+
+ Unlike some other languages that just copy a pointer, perl copies the
+ entire array contents which takes time for a large array.
+
+ Ref: #10818
+
+- runtests: reduce redundant calls to getpart/getpartattr
+
+ These functions scan through the entire test file every time to find the
+ right section, so they can be slow for large test files.
+
+ Ref: #10818
+
+- tests: document that the unittest keyword is special
+
+ Also, add other features that were missing.
+
+Stefan Eissing (30 Mar 2023)
+
+- docs: add documentation for bufq
+
+ Closes #10869
+
+Daniel Stenberg (30 Mar 2023)
+
+- RELEASE-NOTES: synced
+
+Matt Jolly (30 Mar 2023)
+
+- hostip: refuse to resolve the .onion TLD
+
+ RFC 7686 states that:
+
+ > Applications that do not implement the Tor
+ > protocol SHOULD generate an error upon the use of .onion and
+ > SHOULD NOT perform a DNS lookup.
+
+ Let's do that.
+
+ https://www.rfc-editor.org/rfc/rfc7686#section-2
+
+ Add test 1471 and 1472 to verify
+
+ Fixes #543
+ Closes #10705
+
+Philip Heiduck (30 Mar 2023)
+
+- GHA: update ngtcp2-*.yml to v0.10.0
+
+ Closes #10612
+
+Stefan Eissing (30 Mar 2023)
+
+- tests/http: fix log formatting on wrong exit code
+
+ Closes #10868
+
+Daniel Stenberg (30 Mar 2023)
+
+- spellcheck.words: unify the AWS-LC spelling
+
+ Follow-up to 34ef4fab22d93
+
+ Closes #10867
+
+Jim King (30 Mar 2023)
+
+- openssl: interop with AWS-LC
+
+ * Configure changes to detect AWS-LC
+ * CMakeLists.txt changes to detect AWS-LC
+ * Compile-time branches needed to support AWS-LC
+ * Correctly set OSSL_VERSION and report AWS-LC release number
+ * GitHub Actions script to build with autoconf and cmake against AWS-LC
+
+ AWS-LC is a BoringSSL/OpenSSL derivative
+ For more information see https://github.com/awslabs/aws-lc/
+
+ Closes #10320
+
+Viktor Szakats (30 Mar 2023)
+
+- cmake: picky-linker fixes for openssl, ZLIB, H3 and more
+
+ - fix HTTP/3 support detection with OpenSSL/quictls built with ZLIB.
+ (Requires curl be built with ZLIB option also.)
+
+ - fix HTTP/3 support detection with OpenSSL/quictls/LibreSSL and `ld`
+ linker on Windows.
+
+ - fix HTTP/3 support detection with wolfSSL to automatically add
+ `ws2_32` to the lib list on Windows. For all linkers.
+
+ - reposition ZLIB (and other compression) detection _after_ TLS
+ detection, but before calling HTTP/3-support detection via
+ `CheckQuicSupportInOpenSSL`.
+
+ May be a regression from ebef55a61df0094b9790710a42f63c48e7de3c13
+ May fix #10832 (Reported-by: Micah Snyder)
+
+ This also seems to fix an odd case, where OpenSSL/quictls is correctly
+ detected, but its header path is not set while compiling, breaking
+ build at `src/curl_ntlm_core.c`. Reason for this remains undiscovered.
+
+ - satisfy "picky" linkers such as `ld` with MinGW, that are highly
+ sensitive to lib order, by also adding brotli to the beginning of the
+ lib list.
+
+ - satisfy "picky" linkers by adding certain Windows systems libs to
+ the lib list for OpenSSL/LibreSSL. (Might need additional ones for
+ other forks, such as `pthread` for BoringSSL.)
+
+ Note: It'd make sense to _always_ add `ws2_32`, `crypt32` (except
+ Windows App targets perhaps?), `bcrypt` (except old-mingw!) on Windows
+ at this point. They are almost always required, and if some aren't,
+ they are ignored by the linker with no effect on final binaries.
+
+ Closes #10857
+
+Stefan Eissing (30 Mar 2023)
+
+- vlts: use full buffer size when receiving data if possible
+
+ SSL backends like OpenSSL/wolfSSL and other return the content of one
+ TLS record on read, but usually there are more available.
+
+ Change the vtls cfilter recv() function to fill the given buffer until a
+ read would block.
+
+ Closes #10736
+
+dengjfzh on github (30 Mar 2023)
+
+- rtsp: skip malformed RTSP interleaved frame data
+
+ Some IP cameras send malformed RTSP interleaved frames sometimes, which
+ can cause curl_easy_perform return 1 (CURLE_UNSUPPORTED_PROTOCOL). This
+ change attempts to skip clearly incorrect RTSP interleaving frame data.
+
+ Closes #10808
+
+Stefan Eissing (30 Mar 2023)
+
+- lib: add `bufq` and `dynhds`
+
+ Adding `bufq`:
+ - at init() time configured to hold up to `n` chunks of `m` bytes each.
+ - various methods for reading from and writing to it.
+ - `peek` support to get access to buffered data without copy
+ - `pass` support to allow buffer flushing on write if it becomes full
+ - use case: IO buffers for dynamic reads and writes that do not blow up
+ - distinct from `dynbuf` in that:
+ - it maintains a read position
+ - writes on a full bufq return CURLE_AGAIN instead of nuking itself
+ - Init options:
+ - SOFT_LIMIT: allow writes into a full bufq
+ - NO_SPARES: free empty chunks right away
+ - a `bufc_pool` that can keep a number of spare chunks to
+ be shared between different `bufq` instances
+
+ Adding `dynhds`:
+ - a straightforward list of name+value pairs as used for HTTP headers
+ - headers can be appended dynamically
+ - headers can be removed again
+ - headers can be replaced
+ - headers can be looked up
+ - http/1.1 formatting into a `dynbuf`
+ - configured at init() with limits on header counts and total string
+ sizes
+ - use case: pass a HTTP request or response around without being version
+ specific
+ - express a HTTP request without a curl easy handle (used in h2 proxy
+ tunnels)
+ - future extension possibilities:
+ - conversions of `dynhds` to nghttp2/nghttp3 name+value arrays
+
+ Closes #10720
+
+- pytest: improvements for suitable curl and error output
+
+ - will check built curl for http and https support and
+ skip all tests if not there
+ - will dump stdout/stderr/trace output on errored responses
+
+ Closes #10829
+
+Daniel Stenberg (29 Mar 2023)
+
+- lib: use correct printf flags for sockets and timediffs
+
+ Introduces CURL_FORMAT_SOCKET_T for outputting socket numbers.
+
+ Fixes #10737
+ Reported-by: Gisle Vanem
+ Closes #10855
+
+- telnet: make MSVC ignore warning for assignment within conditional
+
+ Follow-up to d92a5007b60e0af7d
+
+ Closes #10859
+
+- ws: handle reads before EAGAIN better
+
+ Reported-by: simplerobot on github
+ Fixes #10831
+ Closes #10856
+
+- test1592: add flaky keyword
+
+ Closes #10860
+
+Frank Gevaerts (28 Mar 2023)
+
+- lib/sha256.c: typo fix in comment (duplicated "is available")
+
+ Closes #10851
+
+Arne Soete (28 Mar 2023)
+
+- tests: update tests/httpd references to tests/http
+
+ tests/httpd was renamed to tests/http in #10654. This patch updates some
+ references in the README
+
+ Closes #10854
+
+Kamil Dudka (28 Mar 2023)
+
+- telnet: simplify the implementation of str_is_nonascii()
+
+ There is no need to traverse the string twice.
+
+ Closes #10852
+
+Frank Gevaerts (28 Mar 2023)
+
+- curl_easy_getinfo.3: typo fix (duplicated "from the")
+
+ Closes #10850
+
+Philip Heiduck (28 Mar 2023)
+
+- wolfssl.yml: bump to version 5.6.0
+
+ Closes #10843
+
+Daniel Stenberg (28 Mar 2023)
+
+- RELEASE-NOTES: synced
+
+Ronan Pigott (28 Mar 2023)
+
+- docs/cmdline-opts: document the dotless config path
+
+ The real xdg config path is $XDG_CONFIG_HOME/curlrc, without the dot.
+ The dotless name seems preferable, so let's match the documentation to
+ the behavior.
+
+ Closes #10849
+
+Daniel Stenberg (28 Mar 2023)
+
+- HTTP-COOKIES.md: mention the #HttpOnly_ prefix
+
+ Fixes #10847
+ Reported-by: Harry Sintonen
+ Closes #10848
+
+- dynbuf: never allocate larger than "toobig"
+
+ As dynbufs always have a fixed maximum size which they are not allowed
+ to grow larger than, making sure that it never allocates a larger buffer
+ makes sure the buffer does not allocate memory that will never be used.
+
+ Closes #10845
+
+- ftplistparser: replace realloc with dynbuf
+
+ Closes #10844
+
+- ftplistparser: use ISDIGIT()
+
+ Closes #10844
+
+- ftplistparser: move out private data from public struct
+
+ The public 'curl_fileinfo' struct contained three fields that are for
+ internal purposes only. This change makes them unused in the public
+ struct.
+
+ The new private struct fields are also renamed to make this separation
+ more obvious internally.
+
+ Closes #10844
+
+- openssl: fix indents - white space edits only
+
+ Closes #10840
+
+- url: remove call to Curl_llist_destroy in Curl_close
+
+ A list that is created with a NULL "destructor" does not need to be
+ destroyed. Not calling it is faster than calling it.
+
+ Closes #10846
+
+- multi: remove PENDING + MSGSENT handles from the main linked list
+
+ As they are not driving transfers or any socket activity, the main loop
+ does not need to iterate over these handles. A performance improvement.
+
+ They are instead only held in their own separate lists.
+
+ 'data->multi' is kept a pointer to the multi handle as long as the easy
+ handle is actually part of it even when the handle is moved to the
+ pending/msgsent lists. It needs to know which multi handle it belongs
+ to, if for example curl_easy_cleanup() is called before the handle is
+ removed from the multi handle.
+
+ Alll 'data->multi' pointers of handles still part of the multi handle
+ gets cleared by curl_multi_cleanup() which "orphans" all previously
+ attached easy handles.
+
+ This is take 2. The first version was reverted for the 8.0.1 release.
+
+ Assisted-by: Stefan Eissing
+ Closes #10801
+
+Stefan Eissing (26 Mar 2023)
+
+- tests/http: add timeout to running curl in test cases
+
+ - we had a CI case once where `curl` seemingly did not
+ return and it was hard to guess what happened.
+ - make curl execution in test cases time out after 60 seconds
+
+ Closes #10783
+
+Daniel Stenberg (26 Mar 2023)
+
+- RELEASE-PROCEDURE: update to new schedule
+
+ Ref: https://curl.se/mail/lib-2023-03/0062.html
+
+ Assisted-by: Andy Alt
+ Assisted-by: Dan Frandrich
+
+ Closes #10827
+
+Patrick Monnerat (26 Mar 2023)
+
+- doc: curl_mime_init() strong easy handle binding has been relaxed in 7.87.0
+
+ Reported-by: Chloe Kudryavtsev
+ Fixes #10834
+ Closes #10835
+
+Jay Satiro (25 Mar 2023)
+
+- CURLOPT_WRITEFUNCTION.3: fix typo
+
+ Reported-by: Osaila@users.noreply.github.com
+
+ Fixes https://github.com/curl/curl/issues/10839
+
+Dan Fandrich (24 Mar 2023)
+
+- CI: skip some more builds when possible
+
+ When a commit only contains tests, documentation, or cmake files, skip
+ those builds that aren't affected by those.
+
+ The file filters available on the CI services don't seem to allow
+ skipping individual jobs, only the entire workflow, so we can't get any
+ more fine-grained than this.
+
+- CI: add and adjust labeler match patterns
+
+ Allow cmdline tool alongside other labels.
+
+Kai Pastor (25 Mar 2023)
+
+- CMake: make config version 8 compatible with 7
+
+ Reviewed-by: Jakub Zakrzewski
+ Closes #10819
+
+Daniel Stenberg (24 Mar 2023)
+
+- RELEASE-NOTES: synced
+
+ Bumped version-in-progress to 8.1.0
+
+- GHA: add a memory-sanitizer job
+
+ Closes #10815
+
+Dan Fandrich (23 Mar 2023)
+
+- CI: fix brew retries on GHA
+
+ The fix in the previous commit was complete for Cirrus but accidentally
+ left off a part for GHA.
+
+ Follow-up to c2b7249d
+
+- CI: skip Azure for more commits which change only GHA
+
+Daniel Stenberg (23 Mar 2023)
+
+- cmake: set SONAME for SunOS too
+
+ Provided-by: Brian Lund
+
+ Closes #10816
+
+Stefan Eissing (23 Mar 2023)
+
+- ngtcp2: adjust config and code checks for ngtcp2 without nghttp3
+
+ - make configure show on HTTP3 feature that both ngtcp2 and nghttp3
+ are in play
+ - define ENABLE_QUIC only when USE_NGTCP2 and USE_NGHTTP3 are defined
+ - add USE_NGHTTP3 in the ngtcp2 implementation
+
+ Fixes #10793
+ Closes #10821
+
+Daniel Stenberg (23 Mar 2023)
+
+- data.d: emphasize no conversion
+
+ When asking curl to send a POST, curl does not encode or change the data.
+
+ Ref: #10820
+ Closes #10823
+
+- server/getpart: clear the buffer before load
+
+ Fixes msan warnings:
+
+ ==54195==WARNING: MemorySanitizer: use-of-uninitialized-value
+ #0 0x55ece35e57cb in line_length /home/runner/work/curl/curl/tests/server
+ /getpart.c:111:25
+ #1 0x55ece35e3b83 in readline /home/runner/work/curl/curl/tests/server/ge
+ tpart.c:164:24
+ #2 0x55ece35e0269 in getpart /home/runner/work/curl/curl/tests/server/get
+ part.c:347:18
+ #3 0x55ece36180b6 in parse_servercmd /home/runner/work/curl/curl/tests/se
+ rver/sws.c:283:13
+
+ Closes #10822
+
+- ntlm: clear lm and nt response buffers before use
+
+ To avoid the risk of MemorySanitizer: use-of-uninitialized-value
+
+ Closes #10814
+
+- digest: clear target buffer
+
+ Closes #10814
+
+Douglas R. Reno (22 Mar 2023)
+
+- cmake: bring in the network library on Haiku.
+
+ When cross-compiling for Haiku, the networking library needs to be
+ brought in. Without this, an unknown type of "Error" is reported in
+ lib/curl_setup_once.h.
+
+ This is also needed when using CMake natively on Haiku to build libcurl.
+
+ Fixes #10296
+ Closes #10792
+
+Daniel Stenberg (22 Mar 2023)
+
+- runtests: die if curl version can be found
+
+ Closes #10813
+
+Stefan Eissing (22 Mar 2023)
+
+- multi: add handle asserts in DEBUG builds
+
+ For GOOD_EASY_HANDLE and GOOD_MULTI_HANDLE checks
+
+ - allow NULL pointers to "just" return an error as before
+ - fail hard on nun-NULL pointers that no longer show the MAGICs
+
+ Closes #10812
+
+Jon Rumsey (22 Mar 2023)
+
+- gskit: various compile errors in OS400
+
+ Various compile failures in gskit.c;
+
+ - pipe_ssloverssl() needs Curl_easy data parameter for
+ Curl_conn_cf_get_socket(cf, data)
+ - key_passwd is in ssl_config, not conn_config
+ - close_on() has 2 parameters, not 4
+ - getsockopt() needs to call Curl_conn_cf_get_socket(), not
+ cxn->sock[FIRSTSOCKET]
+
+ Fixes #10799
+ Closes #10800
+
+Daniel Stenberg (22 Mar 2023)
+
+- tool_operate: pass a long as CURLOPT_HEADEROPT argument
+
+ Closes #10798
+
+- GHA: run all linux test jobs with valgrind
+
+ Closes #10798
+
+- GHA-linux: add an address-sanitizer build
+
+ Closes #10810
+
+Version 8.0.1 (20 Mar 2023)
+
+Daniel Stenberg (20 Mar 2023)
+
+- RELEASE-NOTES: synced
+
+ curl 8.0.1
+
+- Revert "multi: remove PENDING + MSGSENT handles from the main linked list"
+
+ This reverts commit f6d6f3ce01e377932f1ce7c24ee34d45a36950b8.
+
+ The commits caused issues in the 8.0.0 release. Needs a retake.
+
+ Reported-by: Kamil Dudka
+ Closes #10795
+
+- include/curl/curlver.h: bump to 8.0.1
+
+Version 8.0.0 (20 Mar 2023)
+
+Daniel Stenberg (20 Mar 2023)
+
+- RELEASE-NOTES: synced
+
+ The curl 8.0.0 release
+
+- THANKS: from the 8.0.0 release
+
+- scripts/delta: fix "ambiguous argument" when used in branches
+
+- SECURITY-PROCESS.md: Busy-loops are not security problems
+
+ Closes #10790
+
+Stefan Eissing (17 Mar 2023)
+
+- tests/http: do not save files for downloads in scorecard testing
+
+ Closes #10788
+
+Daniel Stenberg (17 Mar 2023)
+
+- cf-socket: use port 80 when resolving name for local bind
+
+ It turns out c-ares returns an error when asked to resolve a host name with
+ ares_getaddrinfo using port number 0.
+
+ Reported as a c-ares bug here: https://github.com/c-ares/c-ares/issues/517
+
+ The work-around is to simply use port 80 instead, as the number typically doe
+ s
+ not make a difference and a non-zero number works for c-ares.
+
+ Fixes #10759
+ Reported-by: Matt Jolly
+ Closes #10789
+
+- curl.h: require gcc 12.1 for the deprecation magic
+
+ Reported-by: kchow-FTNT on github
+ Fixes #10726
+ Closes #10784
+
+- Revert "rtsp: use dynbuf instead of custom reallocs"
+
+ This reverts commit 1b9ea3239d22147e00d8 because of OSS-fuzz reports.
+ I'll do another take after the pending release.
+
+ Closes #10785
+
+- test422: verify --next used without a prior URL
+
+ Closes #10782
+
+- tool_getparam: error if --next is used without a prior URL
+
+ Reported-by: 積丹尼 Dan Jacobson
+ Ref: https://github.com/curl/curl/pull/10769#discussion_r1137895629
+
+ Closes #10782
+
+- libssh: use dynbuf instead of realloc
+
+ When building lines to show for SFTP directory listings.
+
+ Closes #10778
+
+- lib2305: deal with CURLE_AGAIN
+
+ The test does a slightly ugly busy-loop for this case but should be
+ managable due to it likely being a very short moment.
+
+ Mention CURLE_AGAIN in curl_ws_recv.3
+
+ Fixes #10760
+ Reported-by: Jay Satiro
+ Closes #10781
+
+- rtsp: use dynbuf instead of custom reallocs
+
+ For the RTP buffering.
+
+ Closes #10776
+
+- libssh2: remove unused variable from libssh2's struct
+
+ Closes #10777
+
+- RELEASE-NOTES: synced
+
+- multi: remove PENDING + MSGSENT handles from the main linked list
+
+ As they are not driving transfers or any socket activity, the main loop
+ does not need to iterate over these handles. A performance improvement.
+
+ They are instead only held in their own separate lists.
+
+ Assisted-by: Stefan Eissing
+ Ref: #10743
+ Closes #10762
+
+- multi: turn link/unlinking easy handles into dedicated functions
+
+- http_aws_sigv4: fix scan-build "value stored to 'ret' is never read"
+
+ Follow-up to 495d09810aa9a
+
+ Closes #10766
+
+- lib: skip Curl_llist_destroy calls
+
+ Linked lists themselves do not carry any allocations, so for the lists
+ that do not have have a set destructor we can just skip the
+ Curl_llist_destroy() call and save CPU time.
+
+ Closes #10764
+
+- lib643: LIB644 is never defined, this is dead code
+
+ Closes #10765
+
+- libtest/Makefile.inc: remove superfluous variables
+
+ Rely on the defaults when possible.
+
+ Closes #10765
+
+- tests/http: remove year ranges from copyrights
+
+ Closes #10763
+
+Casey Bodley (14 Mar 2023)
+
+- aws_sigv4: fall back to UNSIGNED-PAYLOAD for sign_as_s3
+
+ all s3 requests default to UNSIGNED-PAYLOAD and add the required
+ x-amz-content-sha256 header. this allows CURLAUTH_AWS_SIGV4 to correctly
+ sign s3 requests to amazon with no additional configuration
+
+ Signed-off-by: Casey Bodley
+
+ Closes #9995
+
+Viktor Szakats (14 Mar 2023)
+
+- wolfssl: add quic/ngtcp2 detection in cmake, and fix builds
+
+ - add QUIC/ngtcp2 detection in CMake with wolfSSL.
+
+ Because wolfSSL uses zlib if available, move compression detection
+ before TLS detection. (OpenSSL might also need this in the future.)
+
+ - wolfSSL 5.5.0 started using C99 types in its `quic.h` header, but it
+ doesn't #include the necessary C99 header itself, breaking builds
+ (unless another dependency pulled it by chance.) Add local workaround
+ for it. For this to work with all build tools, we had to fix our
+ header detection first. Ref: #10745
+
+ Ref: https://github.com/curl/curl-for-win/commit/6ad5f6ecc15620c15625fc4434
+ 76b3a1ecef4f3f
+
+ Closes #10739
+
+Stefan Eissing (14 Mar 2023)
+
+- secure-transport: fix recv return code handling
+
+ Return code handling of recv calls were not always correct when an error
+ occured or the connection was closed.
+
+ Closes #10717
+
+- http2: Use KEEP_SEND_HOLD for flow control in HTTP/2
+
+ - use the defined, but so far not used, KEEP_SEND_HOLD bit for flow
+ control based suspend of sending in transfers.
+
+ Prior to this change KEEP_SEND_PAUSE bit was used instead, but that can
+ interfere with pausing streams from the user side via curl_easy_pause.
+
+ Fixes https://github.com/curl/curl/issues/10751
+ Closes https://github.com/curl/curl/pull/10753
+
+Dan Fandrich (13 Mar 2023)
+
+- tests: fix control code that hid some text in runtests.1
+
+- tests: sync option lists in runtests.pl & its man page
+
+Daniel Stenberg (13 Mar 2023)
+
+- multi: make multi_perform ignore/unignore signals less often
+
+ For improved performance
+
+ Reported-by: Jerome St-Louis
+ Ref: #10743
+ Closes #10750
+
+Viktor Szakats (13 Mar 2023)
+
+- cmake: delete unused HAVE__STRTOI64
+
+ Also delete obsolete surrounding comments.
+
+ Reviewed-by: Daniel Stenberg
+ Closes #10756
+
+- CI: fix copyright header
+
+ Follow-up to 395b9175b7422d699fa93643973295c106cdf147
+
+Daniel Stenberg (13 Mar 2023)
+
+- RELEASE-PROCEDURE.md: update coming release dates
+
+Stefan Eissing (13 Mar 2023)
+
+- tests/http: add pytest to GHA and improve tests
+
+ - added to: ngtcp2-quictls, ngtcp2-gnutls and the linux varians
+ quiche, bearssl, libressl, mbedtls, openssl3, rustls
+ - added disabled in ngtcp2-wolfssl due to weird SSL_connect() errors
+ not reproducable locally
+
+ Improvements on pytest:
+
+ - handling of systems with nghttpx in $PATH
+ - configure will seach $PATH got nghttpx used in pytest
+ - pytest fixes for managing nghttpx without h3 support
+ - ngtcp2-wolfssl: use a fully enabled wolfssl build
+
+ - lower parallel count for http/1.1 tests, since we do not
+ want to test excessive connections.
+ - check built curl for HTTPS-proxy support in proxy tests
+ - bearssl does not like one of our critical cert extensions, making
+ it non-critical now
+ - bearssl is too slow for test_12, skipping
+ - making sure we do h3 tests only when curl and server support is there
+
+ Closes #10699
+
+Marcel Raad (13 Mar 2023)
+
+- tool_operate: silence unused parameter warning
+
+ `global` is only used in the `my_setopt` macro version without
+ `CURL_DISABLE_LIBCURL_OPTION` since commit 4774decf10a.
+
+ Closes https://github.com/curl/curl/pull/10752
+
+Viktor Szakats (13 Mar 2023)
+
+- build: fix stdint/inttypes detection with non-autotools
+
+ Fix `stdint.h` and `inttypes.h` detection with non-autotools builds on
+ Windows. (autotools already auto-detected them accurately.)
+
+ `lib/config-win32.h` builds (e.g. `Makefile.mk`):
+ - set `HAVE_STDINT_H` where supported.
+ - set `HAVE_INTTYPES_H` for MinGW.
+
+ CMake:
+ - auto-detect them on Windows. (They were both force-disabled.)
+ - delete unused `CURL_PULL_STDINT_H`.
+ - delete unused `CURL_PULL_INTTYPES_H`.
+ - stop detecting `HAVE_STDINT_H` twice.
+ Present since the initial CMake commit: 4c5307b45655ba75ab066564afdc0c111a8
+ b9291
+
+ curl doesn't use these C99 headers, we need them now to workaround
+ broken wolfSSL builds. Ref: #10739
+
+ Once that clears up, we can delete these detections and macros (unless
+ we want to keep them for future us.)
+
+ Reviewed-by: Daniel Stenberg
+ Closes #10745
+
+Daniel Stenberg (13 Mar 2023)
+
+- RELEASE-NOTES: synced
+
+- ftp: add more conditions for connection reuse
+
+ Reported-by: Harry Sintonen
+ Closes #10730
+
+Dan Fandrich (12 Mar 2023)
+
+- tests: make first.c the same for both lib tests and unit tests
+
+ The only difference used to be global variable used in unittest tests.
+ After cb7ed5a removed individual flag overrides for the unittests, first.c
+ was no longer recompiled for unit tests to include the flag, so whether it
+ worked or gave a link error depended on whether it was compiled in
+ libtest or unittest first. This way also speeds up the build by
+ eliminating 40 identical compile invocations.
+
+ Fixes #10749
+
+- tests: use AM_CPPFILES to modify flags in unit tests
+
+ Using CPPFLAGS sometimes caused odd compile issues when building tests
+ with parallel make and AM_CPPFILES is the right flag, anyway.
+
+ Follow-up to cb7ed5a
+
+ Ref #10749
+
+Viktor Szakats (13 Mar 2023)
+
+- Makefile.mk: fix -g option in debug mode [ci skip]
+
+ Add it to `CFLAGS` (was: `LDFLAGS`).
+
+ Closes #10747
+
+Jay Satiro (12 Mar 2023)
+
+- tool: improve --stderr handling
+
+ - freopen stderr with the user-specified file (--stderr file) instead of
+ using a separate 'errors' stream.
+
+ - In tool_setup.h override stdio.h's stderr macro as global variable
+ tool_stderr.
+
+ Both freopen and overriding the stderr macro are necessary because if
+ the user-specified filename is "-" then stdout is assigned to
+ tool_stderr and no freopen takes place. See the PR for more information.
+
+ Ref: https://github.com/curl/curl/issues/10491
+
+ Closes https://github.com/curl/curl/pull/10673
+
+Dan Fandrich (11 Mar 2023)
+
+- CI: don't run CI jobs if only another CI was changed
+
+ Also skip builds on non-Windows platforms when only Windows build files
+ have changed.
+
+ This should reduce the number of useless builds and the associated
+ waiting time and chance of spurious failures, freeing resources for
+ new PRs.
+
+ Closes #10742
+
+- http: don't send 100-continue for short PUT requests
+
+ This is already how curl is documented to behave in Everything curl, but
+ in actuality only short POSTs skip this. This should knock 30 seconds
+ off a full run of the test suite since the 100-continue timeout will no
+ longer be hit.
+
+ Closes #10740
+
+- tests: add DELAY keyword to more tests using waits
+
+- tests: hack to build most unit tests under cmake
+
+ These are only built when a libcurl static library is available, since
+ we're not building a special libcurlu library yet and these tests rely
+ on private symbols that aren't available in the shared library. A few
+ unit tests do require libcurlu, so those are not built.
+
+ Closes #10722
+
+- tests: fix MSVC unreachable code warnings in unit tests
+
+ Switch unit1654 to use the proper test macros as well.
+
+- tests: make CPPFLAGS common to all unit tests
+
+ There's no need to specify them individually.
+
+- tests: keep cmake unit tests names in sync
+
+ Put only the test names into Makefile.inc so they can be used by both
+ cmake and automake. This will prevent the list of tests from becoming
+ out of date when they are also built under cmake.
+
+Viktor Szakats (11 Mar 2023)
+
+- src: silence wmain() warning for all build methods
+
+ llvm/clang and gcc doesn't recognize the wmain() function in Unicode
+ Windows builds:
+
+ llvm/clang:
+ ```
+ ../../src/tool_main.c:239:5: warning: no previous prototype for function 'wma
+ in' [-Wmissing-prototypes]
+ int wmain(int argc, wchar_t *argv[])
+ ^
+ 1 warning generated.
+ ```
+
+ gcc:
+ ```
+ ../../src/tool_main.c:239:5: warning: no previous prototype for 'wmain' [-Wmi
+ ssing-prototypes]
+ 239 | int wmain(int argc, wchar_t *argv[])
+ | ^~~~~
+ ```
+
+ Before this patch, we already silenced it with CMake. This patch moves
+ the silencing to the source, so that it applies to all build tools.
+
+ Bug: https://github.com/curl/curl/issues/7229#issuecomment-1464806651
+
+ Reviewed-by: Marcel Raad
+ Closes #10744
+
+Dan Fandrich (10 Mar 2023)
+
+- CI: fix retrying on brew failures
+
+ The previous attempt didn't consider that the shell would exit
+ immediately after the false statement in the retry case.
+
+ Follow-up to dc141a37
+
+Stefan Eissing (10 Mar 2023)
+
+- http2: fix error handling during parallel operations
+
+ RST and connection close were not handled correctly during parallel
+ transfers, leading to aborted response bodies being reported complete.
+
+ Closes #10715
+
+Daniel Stenberg (10 Mar 2023)
+
+- url: only reuse connections with same GSS delegation
+
+ Reported-by: Harry Sintonen
+ Closes #10731
+
+Viktor Szakats (10 Mar 2023)
+
+- lib: silence clang/gcc -Wvla warnings in brotli headers
+
+ brotli v1.0.0 throughout current latest v1.0.9 and latest master [1]
+ trigger this warning.
+
+ It happened with CMake and GNU Make. autotools builds avoid it with
+ the `convert -I options to -isystem` macro.
+
+ llvm/clang:
+ ```
+ In file included from ./curl/lib/content_encoding.c:36:
+ ./brotli/x64-ucrt/usr/include/brotli/decode.h:204:34: warning: variable lengt
+ h array used [-Wvla]
+ const uint8_t encoded_buffer[BROTLI_ARRAY_PARAM(encoded_size)],
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ./brotli/x64-ucrt/usr/include/brotli/port.h:253:34: note: expanded from macro
+ 'BROTLI_ARRAY_PARAM'
+ ^~~~~~
+ In file included from ./curl/lib/content_encoding.c:36:
+ ./brotli/x64-ucrt/usr/include/brotli/decode.h:206:48: warning: variable lengt
+ h array used [-Wvla]
+ uint8_t decoded_buffer[BROTLI_ARRAY_PARAM(*decoded_size)]);
+ ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
+ ./brotli/x64-ucrt/usr/include/brotli/port.h:253:35: note: expanded from macro
+ 'BROTLI_ARRAY_PARAM'
+ ~^~~~~
+ ```
+
+ gcc:
+ ```
+ In file included from ./curl/lib/content_encoding.c:36:
+ ./brotli/x64-ucrt/usr/include/brotli/decode.h:204:5: warning: ISO C90 forbids
+ variable length array 'encoded_buffer' [-Wvla]
+ 204 | const uint8_t encoded_buffer[BROTLI_ARRAY_PARAM(encoded_size)],
+ | ^~~~~
+ ./brotli/x64-ucrt/usr/include/brotli/decode.h:206:5: warning: ISO C90 forbids
+ variable length array 'decoded_buffer' [-Wvla]
+ 206 | uint8_t decoded_buffer[BROTLI_ARRAY_PARAM(*decoded_size)]);
+ | ^~~~~~~
+ ```
+
+ [1] https://github.com/google/brotli/commit/ed1995b6bda19244070ab5d331111f16f
+ 67c8054
+
+ Reviewed-by: Daniel Stenberg
+ Reviewed-by: Marcel Raad
+ Closes #10738
+
+Daniel Stenberg (10 Mar 2023)
+
+- curl_path: create the new path with dynbuf
+
+ Closes #10729
+
+- url: remove dummy protocol handler
+
+ Just two added checks were needed saves a whole handler struct.
+
+ Closes #10727
+
+Dan Fandrich (10 Mar 2023)
+
+- CI: retry a failed brew update too, not just brew install
+
+ Also, make sure an eventual failure ends up returning a failure code so
+ the job stops.
+
+Daniel Stenberg (10 Mar 2023)
+
+- url: fix the SSH connection reuse check
+
+ Reported-by: Harry Sintonen
+ Closes #10735
+
+- CURLOPT_PROXY.3: curl+NSS does not handle HTTPS over unix domain socket
+
+ It results in error "NSS error -5985 (PR_ADDRESS_NOT_SUPPORTED_ERROR)"
+
+ Disabled test 1470 for NSS builds and documented the restriction.
+
+ Reported-by: Dan Fandrich
+ Fixes #10723
+ Closes #10734
+
+- CURLSHOPT_SHARE.3: HSTS sharing is not thread-safe
+
+ Reported-by: Hiroki Kurosawa
+ Closes #10732
+
+- telnet: only accept option arguments in ascii
+
+ To avoid embedded telnet negotiation commands etc.
+
+ Reported-by: Harry Sintonen
+ Closes #10728
+
+- test1903: test use of COOKIEFILE - reset - COOKIEFILE
+
+ This also tests for the memory leak bug fixed by parent commit b559ef6f.
+
+ Ref: #10694
+
+ Closes https://github.com/curl/curl/pull/10712
+
+Jay Satiro (10 Mar 2023)
+
+- url: fix cookielist memleak when curl_easy_reset
+
+ - Free set.cookelist in Curl_freeset instead of Curl_close.
+
+ Prior to this change the cookielist linked list wasn't freed by
+ curl_easy_reset which calls Curl_freeset to free all set.
+
+ Bug: https://github.com/curl/curl/issues/10694#issuecomment-1458619157
+ Reported-by: Sergey Ryabinin
+
+ Closes https://github.com/curl/curl/pull/10709
+
+Dan Fandrich (10 Mar 2023)
+
+- tests: fix some keywords and unused sections
+
+- tests: fix test1301 to call the right binary
+
+ It was refactored in commit 480ac6e5 but this step was missed.
+
+- tests: add timeout, SLOWDOWN and DELAY keywords to tests
+
+ These are tests that are testing timing and end up being quite slow.
+
+Daniel Stenberg (10 Mar 2023)
+
+- RELEASE-NOTES: synced
+
+Stefan Eissing (10 Mar 2023)
+
+- wolfSSL: ressurect the BIO `io_result`
+
+ In pytest'ing the situation occored that wolfSSL reported an
+ IO error when the underlying BIO operation was returning an
+ CURLE_AGAIN condition.
+
+ Readding the `io_result` filter context member to detect such
+ situations.
+
+ Also, making sure that the returned CURLcode is initialized
+ on all recv operations outcome.
+
+ Closes #10716
+
+- gssapi: align global `gss_OID_desc` vars to silence ld warnings on macOS vent
+ ura
+
+ Refs #9975 which first reported this.
+
+ Closes #10718
+
+Daniel Stenberg (10 Mar 2023)
+
+- libssh2: only set the memory callbacks when debugging
+
+ This makes us debug libssh2 less and libcurl more when for example
+ running torture tests that otherwise will spend a lot of time in libssh2
+ functions.
+
+ We leave libssh2 to test libssh2.
+
+ Closes #10721
+
+- docs/SECURITY-PROCESS.md: updates
+
+ - allow Low+Medium issues to be managed through plain PRs
+ - update the bug-bounty part to reflect current reality
+
+ Closes #10719
+
+Dan Fandrich (9 Mar 2023)
+
+- tests: fix tag markup issues in some tests
+
+Marcel Raad (9 Mar 2023)
+
+- tests: add `cookies` features
+
+ These tests don't work with `--disable-cookies`.
+
+ Closes https://github.com/curl/curl/pull/10713
+
+- test420: add cookies keyword
+
+ It fails with `--disable-cookies`.
+
+ Closes https://github.com/curl/curl/pull/10713
+
+Dan Fandrich (8 Mar 2023)
+
+- CI: Add more labeler match patterns
+
+ Also, add the CI, tests or libcurl API tags in conjunction with any
+ others that might also apply.
+
+Andy Alt (9 Mar 2023)
+
+- GHA: minor improvements to spellcheck
+
+ Closes #10640
+
+Daniel Stenberg (9 Mar 2023)
+
+- test1671: fix after fix
+
+- test421: -w %{header_json} test with multiple same header names
+
+ To reproduce the issue in #10704
+
+- tool_writeout_json. fix the output for duplicate header names
+
+ Header entries with index != 0 are handled at the index 0 level so they
+ should then be skipped when iterated over.
+
+ Reported-by: Boris Okunskiy
+ Fixes #10704
+ Closes #10707
+
+- headers: make curl_easy_header and nextheader return different buffers
+
+ By letting curl_easy_header() and curl_easy_nextheader() store the
+ header data in their own struct storage when they return a pointer to
+ it, it makes it possible for applications to use them both in a loop.
+ Like the curl tool does.
+
+ Reported-by: Boris Okunskiy
+ Fixes #10704
+ Closes #10707
+
+rcombs (8 Mar 2023)
+
+- urlapi: take const args in _dup and _get functions
+
+ Closes #10708
+
+- urlapi: avoid mutating internals in getter routine
+
+ This was not intended.
+
+ Closes #10708
+
+Daniel Stenberg (8 Mar 2023)
+
+- urlapi: '%' is illegal in host names
+
+ Update test 1560 to verify
+
+ Ref: #10708
+ Closes #10711
+
+- ftp: make the 'ftpauth' a more normal 'char *'-array
+
+ Closes #10703
+
+Evgeny Grin (Karlson2k) (8 Mar 2023)
+
+- doc: fix compiler warning in libcurl.m4
+
+ Current test for curl_free() may produce warnings with strict compiler
+ flags or even with default compiler flags with upcoming versions.
+ These warning could turned into errors by -Werror or similar flags.
+ Such warnings/errors are avoided by this patch.
+
+ Closes #10710
+
+Viktor Szakats (8 Mar 2023)
+
+- misc: fix typos
+
+ Closes #10706
+
+Stefan Eissing (7 Mar 2023)
+
+- ftp: active mode with SSL, add the damn filter
+
+ - since 7.87.0 we lost adding the SSL filter for an active
+ FTP connection that uses SSL. This leads to hangers and timeouts
+ as reported in #10666.
+
+ Reported-by: SandakovMM on github
+ Fixes #10666
+ Closes #10669
+
+Daniel Stenberg (7 Mar 2023)
+
+- docs: extend the URL API descriptions
+
+ Closes #10701
+
+Stefan Eissing (7 Mar 2023)
+
+- url: fix logic in connection reuse to deny reuse on "unclean" connections
+
+ - add parameter to `conn_is_alive()` cfilter method that returns
+ if there is input data waiting on the connection
+ - refrain from re-using connnection from the cache that have
+ input pending
+ - adapt http/2 and http/3 alive checks to digest pending input
+ to check the connection state
+ - remove check_cxn method from openssl as that was just doing
+ what the socket filter now does.
+ - add tests for connection reuse with special server configs
+
+ Closes #10690
+
+Daniel Stenberg (6 Mar 2023)
+
+- x509asn1: use plain %x, not %lx, when the arg is an int
+
+ Pointed out by Coverity.
+
+ Closes #10689
+
+Stefan Eissing (6 Mar 2023)
+
+- http2: fix handling of RST and GOAWAY to recognize partial transfers
+
+ - a reset transfer (HTTP/2 RST) did not always lead to the proper
+ error message on receiving its response, leading to wrong reports
+ of a successful transfer
+ - test_05_02 was able to trigger this condition with increased transfer
+ count. The simulated response errors did not carry a 'Content-Length'
+ so only proper RST handling could detect the abort
+ - When doing such transfers in parallel, a connection could enter the
+ state where
+ a) it had been closed (GOAWAY received)
+ b) the RST had not been "seen" for the transfer yet
+ or c) the GOAWAY announced an error and the last successful
+ stream id was not checked against ongoing transfers
+
+ Closes #10693
+
+- tests: use dynamic ports numbers in pytest suite
+
+ - necessary ports are bound at start of test suite and then
+ given to server fixtures for use.
+ - this make parallel use of pytest (in separate directories),
+ practically safe for use as OS tend to not reuse such port numbers
+ for a while
+
+ Closes #10692
+
+- connect: fix time_connect and time_appconnect timer statistics
+
+ - time_connect was not updated when the overall connection failed,
+ e.g. when SSL verification was unsuccessful, refs #10670
+ - rework gather those values to interrogate involved filters,
+ also from all eyeballing attempts, to report the maximum of
+ those values.
+ - added 3 test cases in test_06 to check reported values on
+ successful, partially failed and totally failed connections.
+
+ Reported-by: Master Inspire
+ Fixes #10670
+ Closes #10671
+
+Daniel Stenberg (6 Mar 2023)
+
+- test1905: update output cookie order
+
+ After the #10685 update
+
+- test420: verify expiring cookies
+
+ Cookies that are loaded fine from a jar but then are expired in headers.
+
+- cookie: don't load cookies again when flushing
+
+ Reported-by: Sergio Mijatovic
+ Fixes #10677
+ Closes #10685
+
+- RELEASE-NOTES: synced
+
+Andy Alt (6 Mar 2023)
+
+- docs: note '--data-urlencode' option
+
+ Closes #10687
+
+Daniel Stenberg (6 Mar 2023)
+
+- DEPRECATE: the original legacy mingw version 1
+
+ Remove completely in September 2023
+
+ Closes #10667
+
+Harry Sintonen (6 Mar 2023)
+
+- rand: use arc4random as fallback when available
+
+ Normally curl uses cryptographically strong random provided by the
+ selected SSL backend. If compiled without SSL support, a naive built-in
+ function was used instead.
+
+ Generally this was okay, but it will result in some downsides for non-
+ SSL builds, such as predictable temporary file names.
+
+ This change ensures that arc4random will be used instead, if available.
+
+ Closes #10672
+
+Grisha Levit (6 Mar 2023)
+
+- tool: dump headers even if file is write-only
+
+ The fixes in #10079 brought a (seemingly unrelated) change of open mode
+ from `wb`/`ab` to `wb+`/`ab+` for the headerfile. This makes it no
+ longer possible to write the header file to e.g. a pipe, like:
+
+ curl -D >(grep ...) file:///dev/null
+
+ Which presently results in `Warning: Failed to open /dev/fd/63`
+
+ See #10079
+ Closes #10675
+
+Jay Satiro (6 Mar 2023)
+
+- tests: fix gnutls-serv check
+
+ - If gnutls-serv doesn't exist then don't try to execute it.
+
+ Follow-up to 2fdc1d81.
+
+ Closes https://github.com/curl/curl/pull/10688
+
+Daniel Stenberg (6 Mar 2023)
+
+- lib1560: fix enumerated type mixed with another type
+
+ Follow-up to c84c0f9aa3bb006
+
+ Closes #10684
+
+Viktor Szakats (5 Mar 2023)
+
+- cmake: fix enabling LDAPS on Windows
+
+ Before this patch, enabling LDAPS required a manual C flag:
+ https://github.com/curl/curl-for-win/blob/c1cfc31cfc04f24f7a4f946564d6f0e1b4d
+ 7dd36/curl-cmake.sh#L105
+
+ Fix this and enable LDAPS automatically when using `wldap32` (and
+ when not explicitly disabled). This matches autotools and `Makefile.mk`
+ behavior. Also remove issue from KNOWN_BUGS.
+
+ Add workaround for MSVS 2010 warning triggered by LDAPS now enabled
+ in more CI tests:
+ `ldap.c(360): warning C4306: 'type cast' : conversion from 'int' to 'void *'
+ of greater size`
+ Ref: https://ci.appveyor.com/project/curlorg/curl/builds/46408284/job/v8mwl9y
+ fbmoeqwlr#L312
+
+ Reported-by: JackBoosY on github
+ Reviewed-by: Jay Satiro
+ Reviewed-by: Marcel Raad
+ Fixes #6284
+ Closes #10674
+
+- Makefile.mk: delete redundant `HAVE_LDAP_SSL` macro [ci skip]
+
+ Since abebb2b8939c6b3e0f951eb2d9ec3729b569aa2c, we set this macro for
+ all Windows `wldap32` builds using `Makefile.mk`.
+
+ For OpenLDAP builds this macro is not enough to enable LDAPS, and
+ OpenLDAP is not an option in `Makefile.mk`. For Novell LDAP it might
+ have helped, but it's also not an option anymore in `Makefile.mk`.
+
+ The future for LDAPS is that we should enable it by default without
+ extra build knobs.
+
+ Reviewed-by: Marcel Raad
+ Closes #10681
+
+- cmake: skip CA-path/bundle auto-detection in cross-builds
+
+ Also remove issue from KNOWN_BUGS.
+
+ Reported-by: Cristian Morales Vega
+ Reviewed-by: Marcel Raad
+ Fixes #6178
+ Closes #10676
+
+Daniel Stenberg (3 Mar 2023)
+
+- schannel: loop over the algos to pick the selected one
+
+ Avoid using the funny macro and the extra buffer copy.
+
+ Closes #10647
+
+- wildcard: remove files and move functions into ftplistparser.c
+
+- ftp: allocate the wildcard struct on demand
+
+ The feature is rarely used so this frees up data for the vast majority
+ of easy handles that don't use it.
+
+ Rename "protdata" to "ftpwc" since it is always an FTP wildcard struct
+ pointer. Made the state struct field an unsigned char to save space.
+
+ Closes #10639
+
+- lib1560: test parsing URLs with ridiculously large fields
+
+ In the order of 120K.
+
+ Closes #10665
+
+Brad Spencer (3 Mar 2023)
+
+- urlapi: parse IPv6 literals without ENABLE_IPV6
+
+ This makes the URL parser API stable and working the same way
+ independently of libcurl supporting IPv6 transfers or not.
+
+ Closes #10660
+
+Jan Engelhardt (3 Mar 2023)
+
+- build: drop the use of XC_AMEND_DISTCLEAN
+
+ Because automake used to delete depdirs at once (.deps) and there was an issu
+ e
+ with portability, curl's XC_AMEND_DISTCLEAN greps the Makefiles in an attempt
+ to build a list of all depfiles and delete them individually instead.
+
+ Since commit 08849db866b44510f6b8fd49e313c91a43a3dfd3, automake switched from
+ deleting directories to individual files. curl's custom logic now finds a lot
+ more results with the grep (the filtering of these results isn't great), whic
+ h
+ causes a massive bloating of the Makefile in the order of O(n^2).
+
+ Also remove now-unused XC_AMEND_DISTCLEAN macro group
+
+ References: https://github.com/curl/curl/issues/9843
+ References: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=59288
+
+ Reported-by: Ilmari Lauhakangas
+ Fixes #9843
+ Closes #10661
+
+Balakrishnan Balasubramanian (3 Mar 2023)
+
+- test1470: test socks proxy using unix sockets and connect to https
+
+ Similar to test1468 except using https instead of http
+
+ Closes #10662
+
+Daniel Stenberg (3 Mar 2023)
+
+- test1960: verify CURL_SOCKOPT_ALREADY_CONNECTED
+
+ When returned from the CURLOPT_SOCKOPTFUNCTION, like when we have a
+ custom socket connected in the app, passed in to libcurl.
+
+ Verifies the fix in #10648
+
+ Closes #10651
+
+Stefan Eissing (2 Mar 2023)
+
+- tests: rename tests/tests-httpd to tests/http
+
+ - httpd is only one server we test with
+ - the suite coveres the HTTP protocol in general where
+ the default test cases need a more beefy environment
+
+ Closes #10654
+
+- socket: detect "dead" connections better, e.g. not fit for reuse
+
+ - refs #10646 where reuse was attempted on closed connections in the
+ cache, leading to an exhaustion of retries on a transfer
+ - the mistake was that poll events like POLLHUP, POLLERR, etc
+ were regarded as "not dead".
+ - change cf-socket filter check to regard such events as inidication
+ of corpsiness.
+ - vtls filter checks: fixed interpretation of backend check result
+ when inconclusive to interrogate status further down the filter
+ chain.
+
+ Reported-by: SendSonS on github
+ Fixes #10646
+ Closes #10652
+
+- lib: give source files cf-http.* better fitting names
+
+ Closes #10656
+
+- http2: fix code indent
+
+ Closes https://github.com/curl/curl/pull/10655
+
+Shankar Jadhavar (1 Mar 2023)
+
+- cf-socket: if socket is already connected, return CURLE_OK
+
+ In 7.87.0, if callback method for CURLOPT_SOCKOPTFUNCTION returns
+ CURL_SOCKOPT_ALREADY_CONNECTED then curl library used to return
+ CURLE_OK. n 7.88.0, now even if callback returns
+ CURL_SOCKOPT_ALREADY_CONNECTED, curl library still tries to connect to
+ socket by invoking method do_connect().
+
+ This is regression caused by commit
+ https://github.com/curl/curl/commit/71b7e0161032927cdfb
+
+ Fix: Check if we are already connected and return CURLE_OK.
+
+ Fixes #10626
+ Closes #10648
+
+Jay Satiro (1 Mar 2023)
+
+- DYNBUF.md: note Curl_dyn_add* calls Curl_dyn_free on failure
+
+ This is the existing behavior and it has been widely assumed in the
+ codebase.
+
+ Closes https://github.com/curl/curl/pull/10645
+
+Stefan Eissing (1 Mar 2023)
+
+- http2: fix upload busy loop
+
+ - Set KEEP_SEND_PAUSE when exhausting remote HTTP/2 window size of a
+ stream.
+
+ - Clear KEEP_SEND_PAUSE when receiving HTTP/2 window updates on a paused
+ stream.
+
+ - Also fix http2 send compiler warnings reported in #10449.
+
+ Prior to this change, starting in 71b7e016 which precedes 7.88.0,
+ libcurl may eat CPU during HTTP/2 upload.
+
+ Reported-by: Jay Satiro
+
+ Fixes https://github.com/curl/curl/issues/10449
+ Fixes https://github.com/curl/curl/issues/10618
+ Closes https://github.com/curl/curl/pull/10627
+
+Daniel Stenberg (1 Mar 2023)
+
+- sectransp: make read_cert() use a dynbuf when loading
+
+ Closes #10632
+
+Jay Satiro (1 Mar 2023)
+
+- transfer: limit Windows SO_SNDBUF updates to once a second
+
+ - Change readwrite_upload() to call win_update_buffer_size() no more
+ than once a second to update SO_SNDBUF (send buffer limit).
+
+ Prior to this change during an upload readwrite_upload() could call
+ win_update_buffer_size() anywhere from hundreds of times per second to
+ an extreme test case of 100k per second (which is likely due to a bug,
+ see #10618). In the latter case WPA profiler showed
+ win_update_buffer_size was the highest capture count in
+ readwrite_upload. In any case the calls were excessive and unnecessary.
+
+ Ref: https://github.com/curl/curl/pull/2762
+
+ Closes https://github.com/curl/curl/pull/10611
+
+Daniel Stenberg (28 Feb 2023)
+
+- RELEASE-NOTES: synced
+
+Stefan Eissing (28 Feb 2023)
+
+- http2: fix for http2-prior-knowledge when reusing connections
+
+ - refs #10634 where errors in the HTTP/2 framing layer are observed.
+ - the bug was that on connection reuse, the code attempted to switch
+ in yet another layer of HTTP/2 handling instead of detecting that
+ this was already in place.
+ - added pytest testcase reproducing the issue.
+
+ Reported-by: rwmjones on github
+ Fixes #10634
+ Closes #10643
+
+- cf-socket: fix handling of remote addr for accepted tcp sockets
+
+ - do not try to determine the remote address of a listen socket. There
+ is none.
+ - Update remote address of an accepted socket by getpeername() if
+ available.
+
+ Reported-by: Harry Sintonen
+ Fixes #10622
+ Closes #10642
+
+- http: fix unix domain socket use in https connects
+
+ - when h2/h3 eyeballing was involved, unix domain socket
+ configurations were not honoured
+ - configuring --unix-socket will disable HTTP/3 as candidate for eyeballing
+ - combinatino of --unix-socket and --http3-only will fail during initialisati
+ on
+ - adding pytest test_11 to reproduce
+
+ Reported-by: Jelle van der Waa
+ Fixes #10633
+ Closes #10641
+
+Daniel Stenberg (28 Feb 2023)
+
+- setopt: move the CURLOPT_CHUNK_DATA pointer to the set struct
+
+ To make duphandle work etc
+
+ Closes #10635
+
+Viktor Szakats (28 Feb 2023)
+
+- quic/schannel: fix compiler warnings
+
+ Fixes #10603
+ Closes #10616
+
+Daniel Stenberg (28 Feb 2023)
+
+- page-footer: add explanation for three missing exit codes
+
+ Added in 7.73.0, 7.77.0 and 7.84.0
+
+ Closes #10630
+
+積丹尼 Dan Jacobson (28 Feb 2023)
+
+- rate.c: single URLs make no sense in --rate example
+
+ Here somehow you need to put more than one URL in these examples, else
+ they will make no sense, as --rate only affects the second and beyond
+ URLs. The first URL will always finish the same time no matter what
+ --rate is given.
+
+ Closes #10638
+
+Daniel Stenberg (28 Feb 2023)
+
+- libcurl-errors.3: add the CURLHcode errors from curl_easy_header.3
+
+ Closes #10629
+
+- mqtt: on send error, return error
+
+ Reported-by: Maciej Domanski
+
+ Closes #10623
+
+- ws: keep the socket non-blocking
+
+ Reported-by: marski on github
+ Fixes #10615
+ Closes #10625
+
+- hostip: avoid sscanf and extra buffer copies
+
+ Also made create_hostcache_id() return the id length.
+
+ Closes #10601
+
+- PARALLEL-TRANSFERS.md: not "early days" for this anymore
+
+ Refresh the language as the support is now over three years old
+
+ Closes #10624
+
+- easy: remove infof() debug leftover from curl_easy_recv
+
+ It said "reached [path]/easy.c:1231"
+
+ Closes #10628
+
+- idn: return error if the conversion ends up with a blank host
+
+ Some IDN sequences are converted into "" (nothing), which can make this
+ function end up with a zero length host name and we cannot consider that
+ a valid host to continue with.
+
+ Reported-by: Maciej Domanski
+ Closes #10617
+
+- examples/http3.c: use CURL_HTTP_VERSION_3
+
+ and update the comment
+
+ Closes #10619
+
+- x509asn1.c: use correct format specifier for infof() call
+
+ Detected by Coverity
+
+ Closes #10614
+
+- Revert "GHA: add Microsoft C++ Code Analysis"
+
+ This reverts commit e0db842b2a082dffad4a9fbe31321e9a75c74041.
+
+ This tool seems very restricted in how often it might be used by a
+ project and thus very quickly start to report fails simply because it
+ refuses to run when "there are more runs than allowed".
+
+ Closes #10613
+
+Patrick Monnerat (25 Feb 2023)
+
+- tests: test secure mail protocols with explicit SSL requests
+
+ New tests 987, 988 and 989, disabled for rustls (hanging).
+
+ Closes #10077
+
+- tests: support for imaps/pop3s/smtps protocols
+
+ Closes #10077
+
+- runtests: use a hash table for server port numbers
+
+ Closes #10077
+
+Andy Alt (25 Feb 2023)
+
+- INTERNALS.md: grammar
+
+ Closes #10607
+
+Daniel Stenberg (25 Feb 2023)
+
+- RELEASE-NOTES: synced
+
+Philip Heiduck (25 Feb 2023)
+
+- .cirrus.yml: Bump to FreeBSD 13.2
+
+ Closes #10270
+
+- ngtcp2-gnutls.yml: bump to gnutls 3.8.0
+
+ Closes #10507
+
+- CI: update ngtcp2 and nghttp2 for pytest
+
+ Follow-up: https://github.com/curl/curl/commit/5c9ee8cef4b351a085b440f8178500
+ 124647f8e6
+
+ Closes #10508
+
+Andy Alt (25 Feb 2023)
+
+- GHA: use same flags for Slackbuild as Slack package
+
+ Closes #10526
+
+Daniel Stenberg (24 Feb 2023)
+
+- rtsp: avoid sscanf for parsing
+
+ Closes #10605
+
+- http_proxy: parse the status line without sscanf
+
+ Closes #10602
+
+- telnet: error correctly for WS set to "x[num]"
+
+ Follow-up to e4f93be9d587
+ Reported-by: Harry Sintonen
+ Closes #10606
+
+- krb5: avoid sscanf for parsing
+
+ Closes #10599
+
+- misc: remove support for curl_off_t < 8 bytes
+
+ Closes #10597
+
+- telnet: parse NEW_ENVIRON without sscanf
+
+ Closes #10596
+
+- telnet: parse the WS= argument without sscanf
+
+ Closes #10596
+
+- telnet: parse telnet options without sscanf
+
+ Closes #10596
+
+- ftp: replace sscanf for MDTM 213 response parsing
+
+ Closes #10590
+
+- ftp: replace sscanf for PASV parsing
+
+ Closes #10590
+
+- ftp: make the EPSV response parser not use sscanf
+
+ Closes #10590
+
+Stefan Eissing (24 Feb 2023)
+
+- ngtcp2: fix unwanted close of file descriptor 0
+
+ ... causing macOS to hand out 0 as next socket handle and failing on
+ further operations.
+
+ Reported-by: Sergey Fionov
+ Fixes #10593
+ Closes #10595
+
+Daniel Stenberg (23 Feb 2023)
+
+- select: stop treating POLLRDBAND as an error
+
+ POLLRDBAND does not seem to be an general error and on Windows the value
+ for POLLIN is 768 and the value for POLLRDBAND is 512.
+
+ Fixes #10501
+ Reported-by: opensslonzos-github on github
+ Closes #10592
+
+- test978: mark file as text mode
+
+ Follow-up to 4ea5702980cb
+
+ To fix test failures on Windows
+
+ Closes #10594
+
+- http: rewrite the status line parser without sscanf
+
+ Closes #10585
+
+- test978: verify that --stderr works for -w's stderr as well
+
+Jay Satiro (23 Feb 2023)
+
+- curl: make -w's %{stderr} use the file set with --stderr
+
+ Reported-by: u20221022 on github
+ Fixes #10491
+ Closes #10569
+
+- winbuild: fix makefile clean
+
+ - Fix and move 'clean' code that removes the output and obj directories
+ trees from MakefileBuild.vc to Makefile.vc.
+
+ Prior to this change the 'clean' code did not work right because the
+ variables containing the directory names were not fully initialized and
+ the rmdir syntax was sometimes incorrect (typos). DIRDIST for example
+ was set to ..\builds\ and not ..\builds\$(CONFIG_NAME_LIB)\ so it would
+ remove the former and not the latter. If WITH_PREFIX was set then that
+ directory was removed instead.
+
+ Also, DIRDIST (the output directory) even if initialized should not be
+ removed by MakefileBuild.vc because by that time it could be set to a
+ user directory that may contain other files if WITH_PREFIX is set (eg we
+ don't want rmdir /s /q C:\usr\local). Therefore we remove from
+ Makefile.vc before any of that happens. I added a comment in both
+ makefiles explaining this.
+
+ Closes https://github.com/curl/curl/pull/10576
+
+- sectransp: fix compiler warning c89 mixed code/declaration
+
+ Since cbf57176 the Cirrus CI 'macOS arm64 SecureTransport http2' has
+ been failing due to c89 warnings mixed code/declaration. That commit is
+ not the cause so I assume something has changed in the CI outside of our
+ configuration. Anyway, we don't mix code/declaration so this is the fix
+ for that.
+
+ Closes https://github.com/curl/curl/pull/10574
+
+Philipp Engel (22 Feb 2023)
+
+- BINDINGS: add Fortran binding
+
+ Closes #10589
+
+Stefan Eissing (22 Feb 2023)
+
+- test2600: detect when ALARM_TIMEOUT is in use and adjust
+
+ - use higher timeout values > 1s
+ - skip duration checks
+
+ Assisted-by: Marcel Raad
+ Closes #10513
+
+Daniel Stenberg (22 Feb 2023)
+
+- RELEASE-NOTES: synced
+
+- test686: verify return code for no URL after --next
+
+- tool_operate: propagate error codes for missing URL after --next
+
+ Fixes #10558
+ Reported-by: u20221022 on github
+ Closes #10580
+
+- test1278: verify that an extra --no-remote-name cause no warning
+
+- tool_getparam: don't add a new node for just --no-remote-name
+
+ Unless --remote-name-all is used.
+
+ Fixes #10564
+ Reported-by: u20221022 on github
+ Closes #10582
+
+- gen.pl: add '%GLOBALS' as a variable for mainpage
+
+ And use it in page-header to list all global command line options.
+
+- docs/cmdline-opts: mark all global options
+
+ gen.pl now outputs a generic explanations for them for each option
+
+ Fixes #10566
+ Reported-by: u20221022 on github
+ Closes #10584
+
+- GHA: add Microsoft C++ Code Analysis
+
+ Closes #10583
+
+- tool_progress: shut off progress meter for --silent in parallel
+
+ Reported-by: finkjsc on github
+ Fixes #10573
+ Closes #10579
+
+- lib1560: add a test using %25 in the userinfo in a URL
+
+ Closes #10578
+
+Stefan Eissing (21 Feb 2023)
+
+- CURLOPT_PIPEWAIT: allow waited reuse also for subsequent connections
+
+ As tested in test_02_07, when firing off 200 urls with --parallel, 199
+ wait for the first connection to be established. if that is multiuse,
+ urls are added up to its capacity.
+
+ The first url over capacity opens another connection. But subsequent
+ urls found the same situation and open a connection too. They should
+ have waited for the second connection to actually connect and make its
+ capacity known.
+
+ This change fixes that by
+
+ - setting `connkeep()` early in the HTTP setup handler. as otherwise
+ a new connection is marked as closeit by default and not considered
+ for multiuse at all
+ - checking the "connected" status for a candidate always and continuing
+ to PIPEWAIT if no alternative is found.
+
+ pytest:
+ - removed "skip" from test_02_07
+ - added test_02_07b to check that http/1.1 continues to work as before
+
+ Closes #10456
+
+Daniel Stenberg (21 Feb 2023)
+
+- test419: verify --dump-header to file that cannot be created
+
+ Closes #10571
+
+- tool_operate: avoid fclose(NULL) on bad header dump file
+
+ Fixes #10570
+ Reported-by: Jérémy Rabasco
+ Closes #10571
+
+- RELEASE-NOTES: synced
+
+ Starting the journey towards 8.0.0
+
+- cookie: parse without sscanf()
+
+ Saves us from using 2*4096 bytes buffers on stack, the extra copies and
+ more.
+
+ Closes #10550
+
+- lib517: verify time stamps without leading zeroes plus some more
+
+- parsedate: replace sscanf( for time stamp parsing
+
+ Closes #10547
+
+- parsedate: parse strings without using sscanf()
+
+ - sscanf is slow and complex, avoid it
+ - give up already if the string is 12 bytes or longer as no valid string
+ can be that long
+ - this can now be done without copy
+
+ Closes #10547
+
+Matt Jolly (20 Feb 2023)
+
+- tests: HTTP server fixups
+
+ - httpserver.pl -> http-server.pl for consistency
+ - add http3-server.pl to EXTRA_DIST; alphabetise for maintainability
+ - nghttpx proxy invocation scripts should not use getcwd
+
+ Closes #10568
+
+Version 7.88.1 (20 Feb 2023)
+
+Daniel Stenberg (20 Feb 2023)
+
+- RELEASE-NOTES: synced
+
+ 7.88.1 release
+
+- THANKS: add contributors from 7.88.1
+
+- socketpair: allow EWOULDBLOCK when reading the pair check bytes
+
+ Reported-by: Gunamoi Software
+ Co-authored-by: Jay Satiro
+ Fixes #10561
+ Closes #10562
+
+Jay Satiro (18 Feb 2023)
+
+- tool_operate: fix scanbuild compiler warning
+
+ Prior to this change Azure CI scanbuild warned of a potential NULL
+ pointer string passed to strtol when CURLDEBUG enabled, even though the
+ way the code was written it wouldn't have happened.
+
+ Bug: https://github.com/curl/curl/commit/5479d991#r101159711
+ Reported-by: Marcel Raad
+
+ Closes https://github.com/curl/curl/pull/10559
+
+- curl_setup: Suppress OpenSSL 3 deprecation warnings
+
+ - Define OPENSSL_SUPPRESS_DEPRECATED.
+
+ OpenSSL 3 has deprecated some of the functions libcurl uses such as
+ those with DES, MD5 and ENGINE prefix. We don't have replacements for
+ those functions so the warnings were disabled in autotools and cmake
+ builds, but still showed in other builds.
+
+ Closes https://github.com/curl/curl/pull/10543
+
+- build-openssl.bat: keep OpenSSL 3 engine binaries
+
+ Prior to this change copying the OpenSSL 3 engine binaries failed
+ because 'engines-1_1' (OpenSSL 1.1.x folder name) was erroneously used
+ instead of 'engines-3'. The OpenSSL 3 builds would complete successfully
+ but without the engine binaries.
+
+ Closes https://github.com/curl/curl/pull/10542
+
+ALittleDruid (18 Feb 2023)
+
+- cmake: fix Windows check for CryptAcquireContext
+
+ Check for CryptAcquireContext in windows.h and wincrypt.h only, since
+ otherwise this check may fail due to third party headers not found.
+
+ Closes https://github.com/curl/curl/pull/10353
+
+Daniel Stenberg (19 Feb 2023)
+
+- remote-header-name.d: mention that filename* is not supported
+
+ and that you can use --clobber to allow overwriting.
+
+ Ref: #10533
+ Closes #10555
+
+ Co-authored-by: Jay Satiro
+
+Pierrick Charron (18 Feb 2023)
+
+- CURLOPT_WS_OPTIONS.3: fix the availability version
+
+ Closes #10557
+
+Jacob Hoffman-Andrews (18 Feb 2023)
+
+- GHA: update rustls dependency to 0.9.2
+
+ This allows re-enabling test 312 for the rustls backend.
+
+ Closes #10553
+
+Philip Heiduck (18 Feb 2023)
+
+- HTTP3.md: update git branches
+
+ Closes #10554
+
+Stefan Eissing (17 Feb 2023)
+
+- urldata: remove `now` from struct SingleRequest - not needed
+
+ Closes #10549
+
+Daniel Stenberg (17 Feb 2023)
+
+- lib1560: add IPv6 canonicalization tests
+
+ Closes #10552
+
+- RELEASE-NOTES: synced
+
+- urlapi: do the port number extraction without using sscanf()
+
+ - sscanf() is rather complex and slow, strchr() much simpler
+
+ - the port number function does not need to fully verify the IPv6 address
+ anyway as it is done later in the hostname_check() function and doing
+ it twice is unnecessary.
+
+ Closes #10541
+
+Stefan Eissing (17 Feb 2023)
+
+- setopt: allow HTTP3 when HTTP2 is not defined
+
+ Reported-by: Karthikdasari0423 on github
+ Fixes #10538
+ Closes #10544
+
+Jon Rumsey (17 Feb 2023)
+
+- os400: correct Curl_os400_sendto()
+
+ Add const qualifier to 5th argument of Curl_os400_sendto()
+
+ Make OS400 wrapper for sendto match the normal prototype of sendto()
+ with a const qualifier.
+
+ Fixes #10539
+ Closes #10548
+
+Stefan Eissing (17 Feb 2023)
+
+- tests-httpd: add proxy tests
+
+ for direct and tunneling checks on http: and https:
+
+ Closes #10519
+
+Daniel Stenberg (17 Feb 2023)
+
+- curl: make --silent work stand-alone
+
+ - renamed the struct field to 'silent' to match the cmdline option
+ - make --show-error toggle independently of --silent
+ - make --silent independent of ->noprogress as well
+
+ By doing this, the three options --silent, --no-progress-meter and
+ --show-error should work independently of each other and also work with
+ and without '--no-' prefix as documented.
+
+ Reported-by: u20221022 on github
+ Fixes #10535
+ Closes #10536
+
+- socks: allow using DoH to resolve host names
+
+ For SOCKS modes where a local host resolve is done.
+
+ It was previously disabled in 12d655d4561, but a few local tests seem to
+ indicate that it works fine. Works now because of the SOCKS refactor of
+ 4a4b63daaa01ef59 that made it non-blocking.
+
+ Reported-by: roughtex on github
+ Fixes #10537
+ Closes #10540
+
+Stefan Eissing (17 Feb 2023)
+
+- test: add test for HTTP/2 corruption as reported in #10525
+
+ - adding test_02_20 for reproducing the situation
+ - using recently released mod_h2 Apache module
+ - skipping test if an older version is installed
+ - adding installation of current mod_h2 to github pytest workflow
+
+ This reproduces the error reliable (for me) on the lib/http2.c version
+ of curl 7.88.0. And passes with the recent curl master.
+
+ Closes #10534
+
+Daniel Stenberg (16 Feb 2023)
+
+- tool_operate: allow debug builds to set buffersize
+
+ Using the CURL_BUFFERSIZE environment variable.
+
+ Closes #10532
+
+Stefan Eissing (16 Feb 2023)
+
+- connnect: fix timeout handling to use full duration
+
+ - connect timeout was used at half the configured value, if the
+ destination had 1 ip version 4 and other version 6 addresses
+ (or the other way around)
+ - extended test2600 to reproduce these cases
+
+ Reported-by: Michael Kaufmann
+ Fixes #10514
+ Closes #10517
+
+Daniel Stenberg (16 Feb 2023)
+
+- tool_getparam: make --get a true boolean
+
+ To match how it is documented in the man page.
+
+ Fixes #10527
+ Reported-by: u20221022 on github
+ Closes #10531
+
+Harry Sintonen (16 Feb 2023)
+
+- http:: include stdint.h more readily
+
+ Closes #10516
+
+Stefan Eissing (16 Feb 2023)
+
+- tests: make the telnet server shut down a socket gracefully
+
+ - test 1452 failed occasionally with ECONNRESET errnos in curl when the
+ server closed the connection in an unclean state.
+
+ Closes #10509
+
+Harry Sintonen (16 Feb 2023)
+
+- http2: set drain on stream end
+
+ Ensure that on_frame_recv() stream end will trigger a read if there is
+ pending data. Without this it could happen that the pending data is
+ never consumed.
+
+ This combined with https://github.com/curl/curl/pull/10529 should fix
+ https://github.com/curl/curl/issues/10525
+
+ Ref: https://github.com/curl/curl/issues/10525
+ Closes #10530
+
+Stefan Eissing (16 Feb 2023)
+
+- http2: buffer/pausedata and output flush fix.
+
+ * do not process pending input data when copying pausedata to the
+ caller
+ * return CURLE_AGAIN if the output buffer could not be completely
+ written out.
+
+ Ref: #10525
+ Closes #10529
+
+Marcel Raad (16 Feb 2023)
+
+- krb5: silence cast-align warning
+
+ Add an intermediate cast to `void *`, as done everywhere else when
+ casting from `sockaddr *` to `sockaddr_in *`.
+
+ Closes https://github.com/curl/curl/pull/10528
+
+Daniel Stenberg (15 Feb 2023)
+
+- RELEASE-NOTES: synced
+
+ bumped to 7.88.1
+
+- tests: make sure gnuserv-tls has SRP support before using it
+
+ Reported-by: fundawang on github
+ Fixes #10522
+ Closes #10524
+
+- runtests: fix "uninitialized value $port"
+
+ by using a more appropriate variable
+
+ Reported-by: fundawang on github
+ Fixes #10518
+ Closes #10520
+
+Version 7.88.0 (15 Feb 2023)
+
+Daniel Stenberg (15 Feb 2023)
+
+- RELEASE-NOTES: synced
+
+ 7.88.0 release
+
+- THANKS: added contributors from 7.88.0
+
+- openssl: rename 'errcode_t' to 'sslerr_t'
+
+ Turns out "/usr/include/et/com_err.h" typedefs this type (without proper
+ variable scoping).
+
+ comerr is the "common error description library" that apparently might be use
+ d
+ by krb5 code, which then makes this header get used in a curl build.
+
+ Reported-by: Bruno Henrique Batista Cruz da Silva
+ Fixed #10502
+ Closes #10500
+
+Dan Fandrich (13 Feb 2023)
+
+- CONTRIBUTE: More formally specify the commit description
+
+ This codifies what people have actually used in git commits over the
+ past 6 years. I've left off some lesser-used headers that appear to
+ duplicate others and tried to describe a consistent use for several
+ others that were used more arbitrarily.
+
+ This makes it easier for new committers to find out the kinds of things
+ we want to acknowledge, makes it easier to perform statistical analysis
+ on commits, and opens the possibility of performing lint checks on
+ descriptions before submission.
+
+ Reviewed-by: Daniel Stenberg
+ Reviewed-by: Jay Satiro
+
+ Closes #10478
+
+Stefan Eissing (13 Feb 2023)
+
+- openssl: test and fix for forward proxy handling (non-tunneling).
+
+ - adding pytest test_10 cases for proxy httpd setup tests
+ - fixing openssl bug in https: proxy hostname verification that
+ used the hostname of the request and not the proxy name.
+
+ Closes #10498
+
+Daniel Stenberg (13 Feb 2023)
+
+- cmdline-opts/Makefile: on error, do not leave a partial
+
+ And support 'make V=1' to show the full command line
+
+ Closes #10497
+
+- curl.1: make help, version and manual sections "custom"
+
+ Instead of using "multi: boolean", as these are slightly special as in
+ they do are not enable/disable ones.
+
+ Fixes #10490
+ Reported-by: u20221022 on github
+ Closes #10497
+
+Stefan Eissing (13 Feb 2023)
+
+- tests: add tests for HTTP/2 and HTTP/3 to verify the header API
+
+ Test 2403 and 2503 check "header_json" output and therefore use of
+ header-api
+
+ Closes #10495
+
+Philip Heiduck (13 Feb 2023)
+
+- CI: update wolfssl / wolfssh to 5.5.4 / 1.4.12
+
+ Closes #10493
+
+Daniel Stenberg (13 Feb 2023)
+
+- KNOW_BUGS: cleanups with some changed to TODOs
+
+ - remove "Excessive HTTP/2 packets with TCP_NODELAY"
+
+ This is not a bug. Rather room for improvement.
+
+ I believe these have been fixed:
+
+ - 17.4 Connection failures with parallel HTTP/2
+ - 17.5 HTTP/2 connections through HTTPS proxy frequently stall
+
+ - remove "FTPS needs session reuse"
+
+ That is still true, but curl should also do session reuse now.
+
+ - remove "ASCII FTP"
+
+ It is documented behavior, and not single user has asked for extended
+ functionality here the last decade or so.
+
+ - remove "Passive transfer tries only one IP address"
+
+ add as a TODO
+
+ - remove "DoH leaks memory after followlocation"
+
+ With a recipe on how to reproduce, this is pointless to keep around
+
+ - remove "DoH does not inherit all transfer options"
+
+ add it as a TODO
+
+ Closes #10487
+
+Tatsuhiro Tsujikawa (13 Feb 2023)
+
+- GHA: bump ngtcp2 workflow dependencies
+
+ Closes #10494
+
+Patrick Monnerat (13 Feb 2023)
+
+- content_encoding: do not reset stage counter for each header
+
+ Test 418 verifies
+
+ Closes #10492
+
+Daniel Stenberg (13 Feb 2023)
+
+- RELEASE-NOTES: synced
+
+Jay Satiro (13 Feb 2023)
+
+- multi: stop sending empty HTTP/3 UDP datagrams on Windows
+
+ - Limit the 0-sized send procedure that is used to reset a SOCKET's
+ FD_WRITE to TCP sockets only.
+
+ Prior to this change the reset was used on UDP sockets as well, but
+ unlike TCP sockets a 0-sized send actually sends out a datagram.
+
+ Assisted-by: Marc Hörsken
+
+ Ref: https://github.com/curl/curl/pull/9203
+
+ Fixes https://github.com/curl/curl/issues/9086
+ Closes https://github.com/curl/curl/pull/10430
+
+Viktor Szakats (12 Feb 2023)
+
+- h3: silence compiler warnings
+
+ Reviewed-by: Daniel Stenberg
+ Fixes #10485
+ Closes #10486
+
+Daniel Stenberg (12 Feb 2023)
+
+- smb: return error on upload without size
+
+ The protocol needs to know the size ahead of time, this is now a known
+ restriction and not a bug.
+
+ Also output a clearer error if the URL path does not contain proper
+ share.
+
+ Ref: #7896
+ Closes #10484
+
+Viktor Szakats (12 Feb 2023)
+
+- windows: always use curl's basename() implementation
+
+ The `basename()` [1][2] implementation provided by mingw-w64 [3] makes
+ assumptions about input encoding and may break with non-ASCII strings.
+
+ `basename()` was auto-detected with CMake, autotools and since
+ 68fa9bf3f5d7b4fcbb57619f70cb4aabb79a51f6 (2022-10-13), also in
+ `Makefile.mk` after syncing its behaviour with the mainline build
+ methods. A similar patch for curl-for-win broke official Windows
+ builds earlier, in release 7.83.1_4 (2022-06-15).
+
+ This patch forces all Windows builds to use curl's internal
+ `basename()` implementation to avoid such problems.
+
+ [1]: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/basename.html
+ [2]: https://www.man7.org/linux/man-pages/man3/basename.3.html
+ [3]: https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-c
+ rt/misc/basename.c
+
+ Reported-by: UnicornZhang on Github
+ Assisted-by: Cherish98 on Github
+ Reviewed-by: Daniel Stenberg
+
+ Fixes #10261
+ Closes #10475
+
+Philip Heiduck (12 Feb 2023)
+
+- Linux CI: Bump rustls-ffi to v0.9.1
+
+ Closes #10476
+
+Daniel Stenberg (12 Feb 2023)
+
+- libtest: build lib2305 with multibyte as well
+
+ Fixes a build regression.
+
+ Follow-up to 5a9a04d5567
+ Reported-by: Viktor Szakats
+ Ref: https://github.com/curl/curl/pull/10475#issuecomment-1426831800
+
+ Closes #10477
+
+Dmitry Atamanov (12 Feb 2023)
+
+- cmake: fix dev warning due to mismatched arg
+
+ The package name passed to find_package_handle_standard_args (BROTLI)
+ does not match the name of the calling package (Brotli). This can lead
+ to problems in calling code that expects find_package result variables
+ (e.g., _FOUND) to follow a certain pattern.
+
+ Closes https://github.com/curl/curl/pull/10471
+
+James Keast (11 Feb 2023)
+
+- setopt: Address undefined behaviour by checking for null
+
+ This addresses undefined behaviour found using clang's UBsan:
+
+ curl/lib/setopt.c:177:14: runtime error: applying non-zero offset 1 to null p
+ ointer
+ SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior curl/lib/setopt.c:177
+ :14 in
+
+ Closes #10472
+
+Jacob Hoffman-Andrews (11 Feb 2023)
+
+- rustls: improve error messages
+
+ Changes numeric error codes into verbose error codes in two places.
+ Adds a prefix indicating that the error came from rustls, and in some
+ places which function it came from.
+
+ Adds special handling for RUSTLS_RESULT_UNEXPECTED_EOF, since the
+ default message of "Unexpected EOF" is insufficiently explanatory.
+
+ Closes #10463
+
+Daniel Stenberg (11 Feb 2023)
+
+- openssl: remove dead code
+
+ Follow-up to e8b00fcd6a
+
+ Due to the new 'if(!nonblocking)' check on the block a level above,
+ there is no need to check for it again within the same conditional.
+
+ Detected by Coverity
+
+ Closes #10473
+
+- ngtcp2: replace removed define and stop using removed function
+
+ They were removed upstream.
+
+ Reported-by: Karthikdasari0423 on github
+ Fixes #10469
+ Closes #10474
+
+- scripts/delta: show percent of number of files changed since last tag
+
+- RELEASE-NOTES: synced
+
+Stefan Eissing (10 Feb 2023)
+
+- pytest: add a test case for PUSH related things.
+
+ - checking that "103 Early Hints" are visible in curl's header dump file
+
+ Closes #10452
+
+Gregory Panakkal (10 Feb 2023)
+
+- WEBSOCKET.md: typo
+
+ Fixing missing slash for ws protocol scheme
+
+ Closes #10464
+
+Stefan Eissing (10 Feb 2023)
+
+- vquic: stabilization and improvements
+
+ vquic stabilization
+ - udp send code shared between ngtcp2 and quiche
+ - quiche handling of data and events improved
+
+ ngtcp2 and pytest improvements
+ - fixes handling of "drain" situations, discovered in scorecard
+ tests with the Caddy server.
+ - improvements in handling transfers that have already data or
+ are already closed to make an early return on recv
+
+ pytest
+ - adding caddy tests when available
+
+ scorecard improvemnts.
+ - using correct caddy port
+ - allowing tests for only httpd or caddy
+
+ Closes #10451
+
+Philip Heiduck (10 Feb 2023)
+
+- Linux CI: update some dependecies to latest tag
+
+ Closes #10458
+
+Daniel Stenberg (10 Feb 2023)
+
+- test2305: send 3 frames, 4097 bytes each, as one message
+
+ Receive them using a 256 bytes buffer in a loop.
+
+- ws: fix recv of larger frames
+
+ + remove 'oleft' from the struct
+ + deal with "overflow data" in a separate dynbuf
+
+ Reported-by: Mike Duglas
+ Fixes #10438
+ Closes #10447
+
+- curl/websockets.h: extend the websocket frame struct
+
+- sws: fix typo, indentation add more ws logging
+
+- test2304: remove stdout verification
+
+ This cripples the test somewhat but the check was bad since depending on
+ timing it could exit before the output was done, making the test flaky.
+
+Dan Fandrich (9 Feb 2023)
+
+- CI: Add more labeler match patterns
+
+- CI: Retry failed downloads to reduce spurious failures
+
+ A temporary error with a remote server shouldn't cause a CI run to fail.
+ Also, put a cap on the time to download to fail faster on a misbehaving
+ server or connection and use HTTP compression where possible to reduce
+ download times.
+
+Daniel Stenberg (9 Feb 2023)
+
+- no-clobber.d: only use long form options in man page text
+
+ ... since they are expanded and the short-form gets mentioned
+ automatically so if the short form is mentioned as well, it gets
+ repeated.
+
+ Fixes #10461
+ Closes #10462
+ Reported-by: Dan Fandrich
+
+- GHA: enable websockets in the torture job
+
+ Closes #10448
+
+- header.d: add a header file example
+
+ Closes #10455
+
+Stefan Eissing (9 Feb 2023)
+
+- HTTP/[23]: continue upload when state.drain is set
+
+ - as reported in #10433, HTTP/2 uploads may stall when a response is
+ received before the upload is done. This happens when the
+ data->state.drain is set for such a transfer, as the special handling
+ in transfer.c from then on only cared about downloads.
+ - add continuation of uploads, if applicable, in this case.
+ - add pytest case test_07_12_upload_seq_large to reproduce this scenario
+ (although, current nghttp2 implementation is using drain less often)
+
+ Reported-by: Lucas Pardue
+
+ Fixes #10433
+ Closes #10443
+
+- http2: minor buffer and error path fixes
+
+ - use memory buffer in full available size
+ - fail receive of reset/errored streams early
+
+ pytest:
+ - make test_05 error cases more reliable
+
+ Closes #10444
+
+Federico Pellegrin (9 Feb 2023)
+
+- openldap: fix missing sasl symbols at build in specific configs
+
+ If curl is built with openldap support (USE_OPENLDAP=1) but does not
+ have also some other protocol (IMAP/SMTP/POP3) enabled that brings
+ in Curl_sasl_* functions, then the build will fail with undefined
+ references to various symbols:
+
+ ld: ../lib/.libs/libcurl.so: undefined reference to `Curl_sasl_decode_mech'
+ ld: ../lib/.libs/libcurl.so: undefined reference to `Curl_sasl_parse_url_auth
+ _option'
+ ld: ../lib/.libs/libcurl.so: undefined reference to `Curl_sasl_cleanup'
+ ld: ../lib/.libs/libcurl.so: undefined reference to `Curl_sasl_can_authentica
+ te'
+ ld: ../lib/.libs/libcurl.so: undefined reference to `Curl_sasl_continue'
+ ld: ../lib/.libs/libcurl.so: undefined reference to `Curl_sasl_start'
+ ld: ../lib/.libs/libcurl.so: undefined reference to `Curl_sasl_init'
+
+ This was tracked down to these functions bein used in openldap.c but
+ defined in curl_sasl.c and then forward in two vauth/ files to have
+ a guard against a set of #define configurations that was now extended
+ to cover also this case.
+
+ Example configuration targeted that could reproduce the problem:
+
+ curl 7.87.1-DEV () libcurl/7.87.1-DEV .... OpenLDAP/2.6.3
+ Protocols: file ftp ftps http https ldap ldaps
+
+ Closes #10445
+
+Daniel Stenberg (9 Feb 2023)
+
+- ws: use %Ou for outputting curl_off_t with info()
+
+ Reported-by: Mike Duglas
+ Fixes #10439
+ Closes #10441
+
+Jay Satiro (9 Feb 2023)
+
+- curl_setup: Disable by default recv-before-send in Windows
+
+ Prior to this change a workaround for Windows to recv before every send
+ was enabled by default. The way it works is a recv is called before
+ every send and saves the received data, in case send fails because in
+ Windows apparently that can wipe out the socket's internal received
+ data buffer.
+
+ This feature has led to several bugs because the way libcurl operates
+ it waits on a socket to read or to write, and may not at all times
+ check for buffered receive data.
+
+ Two recent significant bugs this workaround caused:
+ - Broken Schannel TLS 1.3 connections (#9431)
+ - HTTP/2 arbitrary hangs (#10253)
+
+ The actual code remains though it is disabled by default. Though future
+ changes to connection filter buffering could improve the situation IMO
+ it's just not tenable to manage this workaround.
+
+ Ref: https://github.com/curl/curl/issues/657
+ Ref: https://github.com/curl/curl/pull/668
+ Ref: https://github.com/curl/curl/pull/720
+
+ Ref: https://github.com/curl/curl/issues/9431
+ Ref: https://github.com/curl/curl/issues/10253
+
+ Closes https://github.com/curl/curl/pull/10409
+
+Stefan Eissing (8 Feb 2023)
+
+- http2: aggregate small SETTINGS/PRIO/WIN_UPDATE frames
+
+ add a small buffer to nghttp2 session sending in order to aggregate
+ small SETTINGS/PRIO/WIN_UPDATE frames that nghttp2 "writes" to the
+ callback individually.
+
+ Ref: #10389
+ Closes #10432
+
+- openssl: store the CA after first send (ClientHello)
+
+ move Curl_ssl_setup_x509_store() call after the first send (ClientHello)
+ this gives time to parse CA anchors while waiting on the server reply
+
+ Ref: #10389
+ Closes #10432
+
+Daniel Stenberg (8 Feb 2023)
+
+- RELEASE-NOTES: synced
+
+Anthony Hu (8 Feb 2023)
+
+- wolfssl: remove deprecated post-quantum algorithms
+
+ Closes #10440
+
+John Bampton (8 Feb 2023)
+
+- misc: fix spelling
+
+ Closes #10437
+
+Daniel Stenberg (7 Feb 2023)
+
+- man pages: call the custom user pointer 'clientp' consistently
+
+ The variable had a few different names. Now try to use 'clientp'
+ consistently for all man pages using a custom pointer set by the
+ application.
+
+ Reported-by: Gerrit Renker
+
+ Fixes #10434
+ Closes #10435
+
+- vtls: infof using %.*s needs to provide the length as int
+
+ Fixes a Coverity warning.
+
+ Closes #10436
+
+Stefan Eissing (7 Feb 2023)
+
+- vrls: addressing issues reported by coverity
+
+ I believe the code was secure before this, but limiting the accepted
+ name length to what is used in the structures should help Coverity's
+ analysis.
+
+ Closes #10431
+
+Daniel Stenberg (7 Feb 2023)
+
+- tool_operate: move the 'updated' variable
+
+ This was already done by Dan Fandrich in the previous PR but somehow I
+ lost that fixup.
+
+ Follow-up to 349c5391f2121e
+
+Dan Fandrich (7 Feb 2023)
+
+- tool_operate: Fix error codes during DOS filename sanitize
+
+ It would return CURLE_URL_MALFORMAT in an OOM condition.
+
+ Closes #10414
+
+- tool_operate: Fix error codes on bad URL & OOM
+
+ curl would erroneously report CURLE_OUT_OF_MEMORY in some cases instead
+ of CURLE_URL_MALFORMAT. In other cases, it would erroneously return
+ CURLE_URL_MALFORMAT instead of CURLE_OUT_OF_MEMORY. Add a test case to
+ test the former condition.
+
+ Fixes #10130
+ Closes #10414
+
+Daniel Stenberg (6 Feb 2023)
+
+- setopt: use >, not >=, when checking if uarg is larger than uint-max
+
+ Closes #10421
+
+- vtls: fix failf() format argument type for %.*s handling
+
+ Reported by Coverity
+
+ Closes #10422
+
+- openssl: fix "Improper use of negative value"
+
+ By getting the socket first and returning error in case of bad socket.
+
+ Detected by Coverity.
+
+ Closes #10423
+
+Dan Fandrich (6 Feb 2023)
+
+- packages: Remove Android.mk from makefile
+
+ This was missed in commit #44141512
+
+ Ref: #10418
+
+Daniel Stenberg (6 Feb 2023)
+
+- curl_ws_send.3: clarify how to send multi-frame messages
+
+Mike Duglas (6 Feb 2023)
+
+- ws: fix multiframe send handling
+
+ Fixes #10413
+ Closes #10420
+
+Daniel Stenberg (6 Feb 2023)
+
+- unit2600: make sure numerical curl_easy_setopt sets long
+
+ Follow-up to 671158242db3203
+
+ Reported-by: Marcel Raad
+ Fixes #10410
+ Closes #10419
+
+Andy Alt (6 Feb 2023)
+
+- GHA: move Slackware test into matrix
+
+ Closes #10412
+
+Pronyushkin Petr (6 Feb 2023)
+
+- urlapi: fix part of conditional expression is always true: qlen
+
+ Closes #10408
+
+- url: fix part of conditional expression is always true
+
+ Closes #10407
+
+Daniel Stenberg (6 Feb 2023)
+
+- RELEASE-NOTES: synced
+
+Philip Heiduck (6 Feb 2023)
+
+- GHA/macos.yml: bump to gcc-12
+
+ Closes #10415
+
+Daniel Stenberg (6 Feb 2023)
+
+- packages: remove Android, update README
+
+ - Nobody builds curl for Android using this anymore
+ - Refreshed the README and converted to markdown
+
+ Reported-by: John Porter
+ Fixes #10416
+ Closes #10418
+
+Kvarec Lezki (5 Feb 2023)
+
+- fopen: remove unnecessary assignment
+
+ [CWE-1164] V1048: The '* tempname' variable was assigned the same value.
+
+ Ref: https://pvs-studio.com/en/docs/warnings/v1048/
+
+ Closes https://github.com/curl/curl/pull/10398
+
+Gisle Vanem (5 Feb 2023)
+
+- libtest: add a sleep macro for Windows
+
+ .. because sleep() is used in some libtests.
+
+ Closes https://github.com/curl/curl/pull/10295
+
+Kvarec Lezki (3 Feb 2023)
+
+- http_aws_sigv4: remove typecasts from HMAC_SHA256 macro
+
+ V220: Suspicious sequence of types castings: memsize -> 32-bit integer -> mem
+ size.
+
+ https://pvs-studio.com/en/docs/warnings/v220/
+
+ Closes #10400
+
+Daniel Stenberg (3 Feb 2023)
+
+- mailmap: Thomas1664 on github
+
+Thomas1664 on github (3 Feb 2023)
+
+- CURLOPT_WRITEFUNCTION.3: fix memory leak in example
+
+ Closes #10390
+
+Kvarec Lezki (3 Feb 2023)
+
+- doh: ifdef IPv6 code
+
+ For disabled IPv6 a condition (conn->ip_version != CURL_IPRESOLVE_V4) is
+ always false. https://pvs-studio.com/en/docs/warnings/v560/
+
+ Closes #10397
+
+Daniel Stenberg (3 Feb 2023)
+
+- urlapi: remove pathlen assignment
+
+ "Value stored to 'pathlen' is never read"
+
+ Follow-up to 804d5293f89
+
+ Reported-by: Kvarec Lezki
+
+ Closes #10405
+
+Kvarec Lezki (3 Feb 2023)
+
+- http: fix "part of conditional expression is always false"
+
+ [CWE-570] V560: A part of conditional expression is always false: conn->bits.
+ authneg.
+ [CWE-570] V560: A part of conditional expression is always false: conn->handl
+ er->protocol & (0 | 0).
+
+ https://pvs-studio.com/en/docs/warnings/v560/
+
+ Closes #10399
+
+Daniel Stenberg (2 Feb 2023)
+
+- urlapi: skip the extra dedotdot alloc if no dot in path
+
+ Saves an allocation for many/most URLs.
+
+ Updates test 1395 accordingly
+
+ Closes #10403
+
+Stefan Eissing (2 Feb 2023)
+
+- connections: introduce http/3 happy eyeballs
+
+ New cfilter HTTP-CONNECT for h3/h2/http1.1 eyeballing.
+ - filter is installed when `--http3` in the tool is used (or
+ the equivalent CURLOPT_ done in the library)
+ - starts a QUIC/HTTP/3 connect right away. Should that not
+ succeed after 100ms (subject to change), a parallel attempt
+ is started for HTTP/2 and HTTP/1.1 via TCP
+ - both attempts are subject to IPv6/IPv4 eyeballing, same
+ as happens for other connections
+ - tie timeout to the ip-version HAPPY_EYEBALLS_TIMEOUT
+ - use a `soft` timeout at half the value. When the soft timeout
+ expires, the HTTPS-CONNECT filter checks if the QUIC filter
+ has received any data from the server. If not, it will start
+ the HTTP/2 attempt.
+
+ HTTP/3(ngtcp2) improvements.
+ - setting call_data in all cfilter calls similar to http/2 and vtls filters
+ for use in callback where no stream data is available.
+ - returning CURLE_PARTIAL_FILE for prematurely terminated transfers
+ - enabling pytest test_05 for h3
+ - shifting functionality to "connect" UDP sockets from ngtcp2
+ implementation into the udp socket cfilter. Because unconnected
+ UDP sockets are weird. For example they error when adding to a
+ pollset.
+
+ HTTP/3(quiche) improvements.
+ - fixed upload bug in quiche implementation, now passes 251 and pytest
+ - error codes on stream RESET
+ - improved debug logs
+ - handling of DRAIN during connect
+ - limiting pending event queue
+
+ HTTP/2 cfilter improvements.
+ - use LOG_CF macros for dynamic logging in debug build
+ - fix CURLcode on RST streams to be CURLE_PARTIAL_FILE
+ - enable pytest test_05 for h2
+ - fix upload pytests and improve parallel transfer performance.
+
+ GOAWAY handling for ngtcp2/quiche
+ - during connect, when the remote server refuses to accept new connections
+ and closes immediately (so the local conn goes into DRAIN phase), the
+ connection is torn down and a another attempt is made after a short grace
+ period.
+ This is the behaviour observed with nghttpx when we tell it to shut
+ down gracefully. Tested in pytest test_03_02.
+
+ TLS improvements
+ - ALPN selection for SSL/SSL-PROXY filters in one vtls set of functions, repl
+ aces
+ copy of logic in all tls backends.
+ - standardized the infof logging of offered ALPNs
+ - ALPN negotiated: have common function for all backends that sets alpn propr
+ ty
+ and connection related things based on the negotiated protocol (or lack the
+ reof).
+
+ - new tests/tests-httpd/scorecard.py for testing h3/h2 protocol implementatio
+ n.
+ Invoke:
+ python3 tests/tests-httpd/scorecard.py --help
+ for usage.
+
+ Improvements on gathering connect statistics and socket access.
+ - new CF_CTRL_CONN_REPORT_STATS cfilter control for having cfilters
+ report connection statistics. This is triggered when the connection
+ has completely connected.
+ - new void Curl_pgrsTimeWas(..) method to report a timer update with
+ a timestamp of when it happend. This allows for updating timers
+ "later", e.g. a connect statistic after full connectivity has been
+ reached.
+ - in case of HTTP eyeballing, the previous changes will update
+ statistics only from the filter chain that "won" the eyeballing.
+ - new cfilter query CF_QUERY_SOCKET for retrieving the socket used
+ by a filter chain.
+ Added methods Curl_conn_cf_get_socket() and Curl_conn_get_socket()
+ for convenient use of this query.
+ - Change VTLS backend to query their sub-filters for the socket when
+ checks during the handshake are made.
+
+ HTTP/3 documentation on how https eyeballing works.
+
+ TLS improvements
+ - ALPN selection for SSL/SSL-PROXY filters in one vtls set of functions, repl
+ aces
+ copy of logic in all tls backends.
+ - standardized the infof logging of offered ALPNs
+ - ALPN negotiated: have common function for all backends that sets alpn propr
+ ty
+ and connection related things based on the negotiated protocol (or lack the
+ reof).
+
+ Scorecard with Caddy.
+ - configure can be run with `--with-test-caddy=path` to specify which caddy t
+ o use for testing
+ - tests/tests-httpd/scorecard.py now measures download speeds with caddy
+
+ pytest improvements
+ - adding Makfile to clean gen dir
+ - adding nghttpx rundir creation on start
+ - checking httpd version 2.4.55 for test_05 cases where it is needed. Skippin
+ g with message if too old.
+ - catch exception when checking for caddy existance on system.
+
+ Closes #10349
+
+Daniel Stenberg (2 Feb 2023)
+
+- CODEOWNERS: remove the peeps mentioned as CI owners
+
+ These owners do not have the bandwidth/energy to do the reviews which
+ makes PRs stall and this ownership claim flawed. We can bring people
+ back when the situation is different.
+
+ Follow-up to c04c78ac87c4d46737934345a
+
+ Closes #10386
+
+Martin D'Aloia (2 Feb 2023)
+
+- write-out.d: add 'since version' to %{header_json} documentation
+
+ The documentation of `%{header_json}` missed to mention since which
+ version this variable for `--write-out` is present.
+
+ Based on commit https://github.com/curl/curl/commit/4133a69f2daa476bb
+ we can determine from the tags were this commit is present that the
+ first version to include it was `7.83.0`.
+ This could be also checked with:
+ `git tag --contains 4133a69f2daa476bb6d902687f1dd6660ea9c3c5`
+
+ Closes #10395
+
+Daniel Stenberg (1 Feb 2023)
+
+- urlapi: avoid Curl_dyn_addf() for hex outputs
+
+ Inspired by the recent fixes to escape.c, we should avoid calling
+ Curl_dyn_addf() in loops, perhaps in particular when adding something so
+ simple as %HH codes - for performance reasons. This change makes the
+ same thing for the URL parser's two URL-encoding loops.
+
+ Closes #10384
+
+- urlapi: skip path checks if path is just "/"
+
+ As a miniscule optimization, treat a path of the length 1 as the same as
+ non-existing, as it can only be a single leading slash, and that's what
+ we do for no paths as well.
+
+ Closes #10385
+
+Philip Heiduck (1 Feb 2023)
+
+- GHA/macos: use Xcode_14.0.1 for cmake builds
+
+ Fixes #10356
+ Closes #10381
+
+Viktor Szakats (1 Feb 2023)
+
+- tls: fixes for wolfssl + openssl combo builds
+
+ 1. Add `USE_WOLFSSL` to the TLS backend priority list in
+ `lib/curl_ntlm_core.c`.
+
+ 2. Fix `lib/curl_ntlm_core.h` to respect TLS backend priority, bringing
+ it in sync with the above list and `lib/curl_ntlm_core.c` itself.
+
+ Reported-by: Mark Roszko
+ Ref: https://github.com/curl/curl/issues/10321
+
+ 3. Allow enabling both wolfSSL and OpenSSL at the same time in
+ `lib/Makefile.mk` bringing this in line with cmake/autotools builds.
+ Update logic to select the crypto-specific lib for `ngtcp2`, which
+ supports a single TLS backend at the same time.
+
+ Closes #10322
+
+Daniel Stenberg (1 Feb 2023)
+
+- RELEASE-NOTES: synced
+
+- docs/INSTALL: document how to use multiple TLS backends
+
+ And document how OpenSSL forks and wolfSSL cannot be used at the same
+ time.
+
+ Reported-by: Mark Roszko
+ Fixes #10321
+ Closes #10382
+
+Kvarec Lezki (1 Feb 2023)
+
+- cookies: fp is always not NULL
+
+ Closes #10383
+
+Daniel Stenberg (31 Jan 2023)
+
+- escape: use table lookup when adding %-codes to output
+
+ On my dev host, this code runs 7.8 times faster.
+
+ Closes #10377
+
+- unit2600: avoid error: ‘TEST_CASES’ defined but not used
+
+ Follow-up to d55de24dce9d51
+
+ Closes #10379
+
+- escape: hex decode with a lookup-table
+
+ Makes the decoding 2.8 times faster in my tests.
+
+ Closes #10376
+
+- cf-socket: fix build error wo TCP_FASTOPEN_CONNECT
+
+ Follow-up to 5651a36d1a
+
+ Closes #10378
+
+ Reviewed-by: Stefan Eissing
+
+Stefan Eissing (31 Jan 2023)
+
+- CI: add pytest github workflow to CI test/tests-httpd on a HTTP/3 setup
+
+ Closes #10317
+
+- connect: fix strategy testing for attempts, timeouts and happy-eyeball
+
+ - add test2600 as a unit test that triggers various connect conditions
+ and monitors behaviour, available in a debug build only.
+
+ - this exposed edge cases in connect.c that have been fixed
+
+ Closes #10312
+
+- cf-socket: improvements in socket I/O handling
+
+ - Curl_write_plain/Curl_read_plain have been eliminated. Last code use
+ now uses Curl_conn_send/recv so that requests use conn->send/revc
+ callbacks which defaults to cfilters use.
+ - Curl_recv_plain/Curl_send_plain have been internalized in cf-socket.c.
+ - USE_RECV_BEFORE_SEND_WORKAROUND (active on Windows) has been moved
+ into cf-socket.c. The pre_recv buffer is held at the socket filter
+ context. `postponed_data` structures have been removed from
+ `connectdata`.
+ - the hanger in HTTP/2 request handling was a result of read buffering
+ on all sends and the multi handling is not prepared for this. The
+ following happens:
+
+ - multi preforms on a HTTP/2 easy handle
+ - h2 reads and processes data
+ - this leads to a send of h2 data
+ - which receives and buffers before the send
+ - h2 returns
+ - multi selects on the socket, but no data arrives (its in the buffer alre
+ ady)
+ the workaround now receives data in a loop as long as there is something i
+ n
+ the buffer. The real fix would be for multi to change, so that `data_pendi
+ ng`
+ is evaluated before deciding to wait on the socket.
+
+ io_buffer, optional, in cf-socket.c, http/2 sets state.drain if lower
+ filter have pending data.
+
+ This io_buffer is only available/used when the
+ -DUSE_RECV_BEFORE_SEND_WORKAROUND is active, e.g. on Windows
+ configurations. It also maintains the original checks on protocol
+ handler being HTTP and conn->send/recv not being replaced.
+
+ The HTTP/2 (nghttp2) cfilter now sets data->state.drain when it finds
+ out that the "lower" filter chain has still pending data at the end of
+ its IO operation. This prevents the processing from becoming stalled.
+
+ Closes #10280
+
+Daniel Stenberg (31 Jan 2023)
+
+- openssl: only use CA_BLOB if verifying peer
+
+ Reported-by: Paul Groke
+ Bug: https://curl.se/mail/lib-2023-01/0070.html
+ Fixes #10351
+ Closes #10359
+
+Thomas1664 on github (31 Jan 2023)
+
+- curl_free.3: fix return type of `curl_free`
+
+ Fixes #10373
+ Closes #10374
+
+Daniel Stenberg (30 Jan 2023)
+
+- zuul: stop using this CI service
+
+ The important jobs have already transitioned. The remaining ones we can
+ skip for now.
+
+ Closes #10368
+
+- copyright: remove "m4/ax_compile_check_sizeof.m4" from skips
+
+ and report if skipped files do not exist.
+
+ Follow-up to 9e11c2791fb960758 which removed the file.
+
+ Closes #10369
+
+- ws: unstick connect-only shutdown
+
+ As this mode uses blocking sockets, it must set them back to
+ non-blocking in disconnect to avoid the risk of getting stuck.
+
+ Closes #10366
+
+- ws: remove bad assert
+
+ Reported-by: Stanley Wucw
+ Fixes #10347
+ Closes #10366
+
+- openssl: adapt to boringssl's error code type
+
+ BoringSSL uses uint32_t, OpenSSL uses 'unsigned 'long'
+
+ Closes #10360
+
+- tool_operate: repair --rate
+
+ Regression from a55256cfb242 (7.87.0)
+ Reported-by: highmtworks on github
+ Fixes #10357
+ Closes #10358
+
+- dict: URL decode the entire path always
+
+ Reported-by: dekerser on github
+ Fixes #10298
+ Closes #10354
+
+Stefan Eissing (29 Jan 2023)
+
+- vtls: do not null-check when we already assume cf-ctx exists
+
+ Fixes #10361
+ Closes #10362
+
+Daniel Stenberg (29 Jan 2023)
+
+- RELEASE-NOTES: synced
+
+- CURLOPT_READFUNCTION.3: the callback 'size' arg is always 1
+
+ Reported-by: Brian Green
+ Fixes #10328
+ Closes #10355
+
+- copyright.pl: cease doing year verifications
+
+ As we have (mostly) removed the copyright year ranges.
+
+ Reported-by: Ryan Schmidt
+ Fixes #10345
+ Closes #10352
+
+Dan Fandrich (28 Jan 2023)
+
+- CI: Work around a labeler bug that removes labels
+
+Jay Satiro (26 Jan 2023)
+
+- write-out.d: clarify Windows % symbol escaping
+
+ - Clarify that in Windows batch files the % must be escaped as %%, and
+ at the command prompt it cannot be escaped which could lead to
+ incorrect expansion.
+
+ Prior to this change the doc implied % must be escaped as %% in win32
+ always.
+
+ ---
+
+ Examples showing how a write-out argument is received by curl:
+
+ If curl --write-out "%{http_code}" is executed in a batch file:
+ {http_code}
+
+ If curl --write-out "%%{http_code}" is executed in a batch file:
+ %{http_code}
+
+ If curl --write-out "%{http_code}" is executed from the command prompt:
+ %{http_code}
+
+ If curl --write-out "%%{http_code}" is executed from the command prompt:
+ %%{http_code}
+
+ At the command prompt something like "%{speed_download}%{http_code}"
+ would first be parsed by the command interpreter as %{speed_download}%
+ and would be expanded as environment variable {speed_download} if it
+ existed, though that's highly unlikely since Windows environment names
+ don't use braces.
+
+ ---
+
+ Reported-by: Muhammad Hussein Ammari
+
+ Ref: https://github.com/bagder/everything-curl/pull/279
+
+ Fixes https://github.com/curl/curl/issues/10323
+ Closes https://github.com/curl/curl/pull/10337
+
+Ryan Schmidt (26 Jan 2023)
+
+- connect: Fix build when not ENABLE_IPV6
+
+ Check for ENABLE_IPV6 before accessing AF_INET6. Fixes build failure
+ introduced in 1c5d8ac.
+
+ Closes https://github.com/curl/curl/pull/10344
+
+- cf-socket: Fix build when not HAVE_GETPEERNAME
+
+ Remove remaining references to conn and sockfd, which were removed from
+ the function signature when conninfo_remote was renamed to
+ conn_set_primary_ip in 6a8d7ef.
+
+ Closes https://github.com/curl/curl/pull/10343
+
+Stefan Eissing (26 Jan 2023)
+
+- vtls: Manage current easy handle in nested cfilter calls
+
+ The previous implementation cleared `data` so the outer invocation lost
+ its data, which could lead to a crash.
+
+ Bug: https://github.com/curl/curl/issues/10336
+ Reported-by: Fujii Hironori
+
+ Closes https://github.com/curl/curl/pull/10340
+
+Dan Fandrich (25 Jan 2023)
+
+- CI: Add even more paths to the labeler config (#10326)
+
+- scripts: Fix Appveyor job detection in cijobs.pl
+
+ The reorganization in #9769 broke the script. This should probably be
+ rewritten to use a YAML parser for better upward compatibility.
+
+- CI: Add a few more paths to the labeler config (#10326)
+
+- CI: Switch the labeler event to pull_request_target
+
+ Otherwise, the action won't work on PRs from forked repositories
+ (#10326).
+
+Viktor Szakats (25 Jan 2023)
+
+- cmake: delete redundant macro definition `SECURITY_WIN32`
+
+ Stop explicitly defining `SECURITY_WIN32` in CMake builds.
+
+ No other build systems define this macro, because it's unconditionally
+ defined in `lib/curl_sspi.h` already. This is the only curl source using
+ the `sspi.h` and `security.h` Win32 headers, and no other Win32 headers
+ need this macro.
+
+ Reviewed-by: Jay Satiro
+ Closes #10341
+
+Fredrik (24 Jan 2023)
+
+- winbuild: document that arm64 is supported
+
+ Building an arm64 version works flawlessly with the VS arm64 toolset.
+
+ Closes https://github.com/curl/curl/pull/10332
+
+Cherish98 (24 Jan 2023)
+
+- openssl: don't log raw record headers
+
+ - Skip content type SSL3_RT_HEADER in verbose TLS output.
+
+ This commit prevents bogus and misleading verbose TLS header messages as
+ discussed in #10299.
+
+ Assisted-by: Peter Wu
+
+ Closes https://github.com/curl/curl/pull/10299
+
+Marc Aldorasi (24 Jan 2023)
+
+- cmake: use list APPEND syntax for CMAKE_REQUIRED_DEFINITIONS
+
+ - Use list() instead of set() for CMAKE_REQUIRED_DEFINITIONS list since
+ the former is clearer.
+
+ Closes https://github.com/curl/curl/pull/10272
+
+Dan Fandrich (23 Jan 2023)
+
+- CI: Add a workflow to automatically label pull requests
+
+ The labeler language is quite restrictive right now so labels are added
+ quite conservatively, meaning that many PRs won't get labels when it's
+ "obvious" they should. It will still save some manual work on those
+ that it can label.
+
+Jay Satiro (21 Jan 2023)
+
+- system.h: assume OS400 is always built with ILEC compiler
+
+ Prior to this change the OS400 types were only defined when __ILEC400__.
+ That symbol is only defined by IBM's C compiler and not their C++
+ compiler, which led to missing types when users on OS400 would compile a
+ C++ application that included curl.
+
+ The IBM C and C++ compilers are the only native compilers on the
+ platform.
+
+ Assisted-by: Jon Rumsey
+ Reported-by: John Sherrill
+
+ Fixes https://github.com/curl/curl/issues/10305
+ Closes https://github.com/curl/curl/pull/10329
+
+xgladius (20 Jan 2023)
+
+- cmake: Remove deprecated symbols check
+
+ curl stopped use of CMAKE_USE_ as a prefix for its own build symbols in
+ 2021 and added a check, meant to last 1 year, to fatally error on those
+ symbols. This commit removes that check.
+
+ Closes https://github.com/curl/curl/pull/10314
+
+Dan Fandrich (20 Jan 2023)
+
+- docs: POSTFIELDSIZE must be set to -1 with read function
+
+ Reported-by: RanBarLavie on github
+
+ Closes #10313
+
+Stefan Eissing (20 Jan 2023)
+
+- vtls: fix hostname handling in filters
+
+ - Copy the hostname and dispname to ssl_connect_data.
+
+ Use a copy instead of referencing the `connectdata` instance since this
+ may get free'ed on connection reuse.
+
+ Reported-by: Stefan Talpalaru
+ Reported-by: sergio-nsk@users.noreply.github.com
+
+ Fixes https://github.com/curl/curl/issues/10273
+ Fixes https://github.com/curl/curl/issues/10309
+
+ Closes https://github.com/curl/curl/pull/10310
+
+Sergey Bronnikov (17 Jan 2023)
+
+- lib: fix typos
+
+ Closes https://github.com/curl/curl/pull/10307
+
+- curl_version_info.3: fix typo
+
+ Closes https://github.com/curl/curl/pull/10306
+
+Jay Satiro (17 Jan 2023)
+
+- openssl: Don't ignore CA paths when using Windows CA store (redux)
+
+ .. and remove 'experimental' designation from CURLSSLOPT_NATIVE_CA.
+
+ This commit restores the behavior of CURLSSLOPT_NATIVE_CA so that it
+ does not override CURLOPT_CAINFO / CURLOPT_CAPATH, or the hardcoded
+ default locations. Instead the native Windows CA store can be used at
+ the same time.
+
+ ---
+
+ This behavior was originally added over two years ago in abbc5d60
+ (#5585) but then 83393b1a (#7892) broke it over a year ago, I assume
+ inadvertently.
+
+ The CURLSSLOPT_NATIVE_CA feature was marked experimental and likely
+ rarely used.
+
+ Ref: https://github.com/curl/curl/pull/5585
+ Ref: https://github.com/curl/curl/pull/7892
+ Ref: https://curl.se/mail/lib-2023-01/0019.html
+
+ Closes https://github.com/curl/curl/pull/10244
+
+Daniel Stenberg (13 Jan 2023)
+
+- RELEASE-NOTES: synced
+
+- ws: fix autoping handling
+
+ Reported-by: Alexey Savchuk
+ Fixes #10289
+ Closes #10294
+
+- curl_log: avoid printf() format checking with mingw
+
+ Since it does not seem to like %zu and more
+
+ Follow-up to db91dbbf2
+
+ Fixes #10291
+ Closes #10292
+
+- tool_getparam: fix compiler warning when !HAVE_WRITABLE_ARGV
+
+ Follow-up to 2ed0e1f70ee176edf3d2
+
+ Closes #10286
+
+Stefan Eissing (12 Jan 2023)
+
+- openssl: make the BIO_METHOD a local variable in the connection filter
+
+ This avoids UAF issues when `curl_global_cleanup()` is called before all
+ transfers have been completely handled. Unfortunately this seems to be a
+ more common pattern than we like.
+
+ Closes #10285
+
+Daniel Stenberg (12 Jan 2023)
+
+- curl: output warning at --verbose output for debug-enabled version
+
+ + a libcurl warning in the debug output
+
+ Assisted-by: Jay Satiro
+
+ Ref: https://curl.se/mail/lib-2023-01/0039.html
+ Closes #10278
+
+- src: add --http3-only
+
+ Warning: --http3 and --http3-only are subject to change again (or be
+ removed) before HTTP/3 support goes non-experimental.
+
+ Closes #10264
+
+- curl.h: add CURL_HTTP_VERSION_3ONLY
+
+ As the previous CURL_HTTP_VERSION_3 option gets a slightly altered meaning.
+
+ Closes #10264
+
+- connect: fix access of pointer before NULL check
+
+ Detected by Coverity CID 1518992
+
+ Closes #10284
+
+Daniel Gustafsson (12 Jan 2023)
+
+- easyoptions: Fix header printing in generation script
+
+ The optiontable.pl script prints the header comment when generating
+ easyoptions.c, but it wasn't escaping all characters which jumbled the
+ curl ascii logo. Fix by escaping.
+
+ Cloes #10275
+
+Harry Sintonen (12 Jan 2023)
+
+- tool_getparam: fix hiding of command line secrets
+
+ Closes #10276
+
+Stefan Eissing (12 Jan 2023)
+
+- tests: document the cfilter debug logging options
+
+ Closes #10283
+
+- curl_log: for failf/infof and debug logging implementations
+
+ - new functions and macros for cfilter debugging
+ - set CURL_DEBUG with names of cfilters where debug logging should be
+ enabled
+ - use GNUC __attribute__ to enable printf format checks during compile
+
+ Closes #10271
+
+Daniel Stenberg (10 Jan 2023)
+
+- RELEASE-NOTES: synced
+
+Nick Banks (10 Jan 2023)
+
+- msh3: update to v0.6
+
+ Closes #10192
+
+Stefan Eissing (10 Jan 2023)
+
+- ngtcp2: add CURLOPT_SSL_CTX_FUNCTION support for openssl+wolfssl
+
+ Using common method for SSL_CTX initialization of verfiy peer and CA
+ settings. This also provides X509_STORE sharing to become available for
+ ngtcp2+openssl HTTP/3.
+
+ Reported-by: violetlige on github
+
+ Fixes #10222
+ Closes #10239
+
+Daniel Stenberg (10 Jan 2023)
+
+- cf-socket: make infof() call use %zu for size_t output
+
+ Detected by Coverity CID 1518986 and CID 1518984
+
+ Closes #10268
+
+Jon Rumsey (10 Jan 2023)
+
+- os400: fixes to make-lib.sh and initscript.sh
+
+ Adjust how exports list is generated from header files to account for
+ declarations across multiple lines and CURL_DEPRECATED(...) tags.
+
+ Update initscript.sh
+
+ Specify qadrt_use_inline to prevent unistd.h in ASCII runtime defining
+ close(a) -> close_a(a)
+
+ Fixes #10266
+ Closes #10267
+
+Stefan Eissing (9 Jan 2023)
+
+- tests-httpd: basic infra to run curl against an apache httpd plus nghttpx for
+ h3
+
+ - adding '--with-test-httpd=' to configure non-standard apache2
+ install
+ - python env and base classes for running httpd
+ - basic tests for connectivity with h1/h2/h3
+ - adding test cases for truncated responses in http versions.
+ - adding goaway test for HTTP/3.
+ - adding "stuttering" tests with parallel downloads in chunks with
+ varying delays between chunks.
+
+ - adding a curltest module to the httpd server, adding GOAWAY test.
+ - mod_curltest now installs 2 handlers
+ - 'echo': writing as response body what came as request body
+ - 'tweak': with query parameters to tweak response behaviour
+ - marked known fails as skip for now
+
+ Closes #10175
+
+- quic: improve connect error message, debugging info, fix false connect report
+
+ - ECONNECTREFUSED has not its own fail message in quic filters
+ - Debug logging in connect eyballing improved
+ - Fix bug in ngtcp2/quiche that could lead to false success reporting.
+
+ Reported-by: Divy Le Ray
+
+ Fixes #10245
+ Closes #10248
+
+- quiche: fix build without any HTTP/2 implementation
+
+ Fixes #10260
+ Closes #10263
+
+Daniel Stenberg (9 Jan 2023)
+
+- .github/workflows/linux.yml: add a quiche CI job
+
+ Move over from zuul
+
+ Closes #10241
+
+- curl.h: allow up to 10M buffer size
+
+ Bump the limit from 512K. There might be reasons for applications using
+ h3 to set larger buffers and there is no strong reason for curl to have
+ a very small maximum.
+
+ Ref: https://curl.se/mail/lib-2023-01/0026.html
+
+ Closes #10256
+
+Tatsuhiro Tsujikawa (8 Jan 2023)
+
+- GHA: use designated ngtcp2 and its dependencies versions
+
+ Designate ngtcp2 and its dependency versions so that the CI build does
+ not fail without our control.
+
+ Closes #10257
+
+Daniel Stenberg (8 Jan 2023)
+
+- docs/cmdline-opts/hsts.d: explain hsts more
+
+ Closes #10258
+
+Stefan Eissing (8 Jan 2023)
+
+- msh3: run again in its cfilter
+
+ - test 2500, single GET works
+ - test 2501, single POST stalls
+ - test 2502, multiple, sequential GETs each use a new connection since
+ MsH3ConnectionGetState(qconn) no longer reports CONNECTED after one
+ GET.
+
+ Closes #10204
+
+Jay Satiro (8 Jan 2023)
+
+- sendf: fix build for Linux TCP fastopen
+
+ - Fix the remote addr struct dereference.
+
+ - Include cf-socket.h in urldata.h.
+
+ Follow-up to 6a8d7ef9 which changed conn->ipaddr (Curl_addrinfo* )
+ member to conn->remote_addr (Curl_sockaddr_ex *) several days ago.
+
+ Reported-by: Stephan Guilloux
+
+ Fixes https://github.com/curl/curl/issues/10249
+ Closes https://github.com/curl/curl/pull/10250
+
+Daniel Stenberg (7 Jan 2023)
+
+- RELEASE-NOTES: synced
+
+- setopt: move the SHA256 opt within #ifdef libssh2
+
+ Because only the libssh2 backend not supports it and thus this should
+ return error if this option is used other backends.
+
+ Reported-by: Harry Sintonen
+
+ Closes #10255
+
+Patrick Monnerat (7 Jan 2023)
+
+- nss: implement data_pending method
+
+ NSS currently uses the default Curl_none_data_pending() method which
+ always returns false, causing TLS buffered input data to be missed.
+
+ The current commit implements the nss_data_pending() method that properly
+ monitors the presence of available TLS data.
+
+ Ref:#10077
+
+ Closes #10225
+
+Jay Satiro (6 Jan 2023)
+
+- CURLOPT_HEADERDATA.3: warn DLL users must set write function
+
+ - Warn that in Windows if libcurl is running from a DLL and if
+ CURLOPT_HEADERDATA is set then CURLOPT_WRITEFUNCTION or
+ CURLOPT_HEADERFUNCTION must be set as well, otherwise the user may
+ experience crashes.
+
+ We already have a similar warning in CURLOPT_WRITEDATA. Basically, in
+ Windows libcurl could crash writing a FILE pointer that was created by
+ a different C runtime. In Windows each DLL that is part of a program may
+ or may not have its own C runtime.
+
+ Ref: https://github.com/curl/curl/issues/10231
+
+ Closes https://github.com/curl/curl/pull/10233
+
+Jon Rumsey (5 Jan 2023)
+
+- x509asn1: fix compile errors and warnings
+
+ Various small issues when built for GSKit
+
+ Closes #10238
+
+Patrick Monnerat (5 Jan 2023)
+
+- runtests: fix detection of TLS backends
+
+ Built-in TLS backends are detected at test time by scanning for their
+ names in the version string line returned by the cli tool: as this line
+ may also list the libssh configuration that mentions its own backend,
+ the curl backend may be wrongly determined.
+
+ In example, if the version line contains "libssh/0.10.4/openssl/zlib",
+ OpenSSL is detected as a curl-configured backend even if not.
+
+ This fix requires the backend names to appear as full words preceded by
+ spacing in the version line to be recognized as curl TLS backends.
+
+ Closes #10236
+
+Andy Alt (5 Jan 2023)
+
+- GHA: add job on Slackware 15.0
+
+ Closes #10230
+
+Daniel Stenberg (5 Jan 2023)
+
+- test363: make even smaller writes to loop more
+
+- http_proxy: do not assign data->req.p.http use local copy
+
+ Avoid the tricky reusing of the data->req.p.http pointer for http proxy
+ tunneling.
+
+ Fixes #10194
+ Closes #10234
+
+Stefan Eissing (5 Jan 2023)
+
+- quic: rename vquic implementations, fix for quiche build.
+
+ - quiche in debug mode did not build, fixed.
+ - moved all vquic implementation files to prefix curl_* to avoid
+ the potential mixups between provided .h files and our own.
+ - quich passes test 2500 and 2502. 2501, the POST, fail with
+ the body being rejected. Quich bug?
+
+ Closes #10242
+
+- sectransp: fix for incomplete read/writes
+
+ SecureTransport expects result code errSSLWouldBlock when the requested
+ length could not be sent/recieved in full. The previous code returned
+ noErr, which let SecureTransport to believe that the IO had terminated
+ prematurely.
+
+ Fixes #10227
+ Closes #10235
+
+Andy Alt (5 Jan 2023)
+
+- GHA: Hacktoberfest CI: Update deprecated 'set-output' command
+
+ Closes #10221
+
+Jay Satiro (5 Jan 2023)
+
+- scripts: set file mode +x on all perl and shell scripts
+
+ - Set all scripts +x, ie 644 => 755.
+
+ Prior to this change some scripts were not executable and therefore
+ could not be called directly.
+
+ ~~~
+ git ls-files -s \*.{sh,pl,py} | grep -v 100755
+ ~~~
+
+ Closes https://github.com/curl/curl/pull/10219
+
+Stefan Eissing (4 Jan 2023)
+
+- tool_operate: fix headerfile writing
+
+ Do not rely on the first transfer started to be the first to get a
+ response (remember -Z). All transfers now write the headefile (-D) in
+ append mode, making sure that the order of transfer responses does not
+ lead to overwrites of previous data.
+
+ Closes #10224
+
+Daniel Stenberg (4 Jan 2023)
+
+- misc: reduce struct and struct field sizes
+
+ - by using BIT() instead of bool
+ - imap: shrink struct
+ - ftp: make state 'unsigned char'
+ - ftp: sort ftp_conn struct entries on size
+ - urldata: use smaller fields for SSL version info storage
+ - pop3: reduce the pop3_conn struct size
+ - smtp: reduce the size of the smtp structs
+
+ Closes #10186
+
+- noproxy: support for space-separated names is deprecated
+
+ To be removed in July 2024.
+
+ Assisted-by: Michael Osipov
+ Fixes #10209
+ Closes #10215
+
+Andrei Rybak (4 Jan 2023)
+
+- lib: fix typos in comments which repeat a word
+
+ Remove erroneously duplicated words in code comments of files
+ `lib.connect.c` and `lib/url.c`.
+
+ Closes #10220
+
+Radek Brich (3 Jan 2023)
+
+- cmake: set SOVERSION also for macOS
+
+ Closes #10214
+
+Jay Satiro (3 Jan 2023)
+
+- http2: fix compiler warning due to uninitialized variable
+
+ Prior to this change http2_cfilter_add could return an uninitialized
+ cfilter pointer in an OOM condition. In this case though, the pointer
+ is discarded and not dereferenced so there was no risk of a crash.
+
+Stefan Eissing (3 Jan 2023)
+
+- cf-socket: keep sockaddr local in the socket filters
+
+ - copy `struct Curl_addrinfo` on filter setup into context
+ - remove `struct Curl_addrinfoi *` with `struct Curl_sockaddr_ex *` in
+ connectdata that is set and NULLed by the socket filter
+ - this means we have no reference to the resolver info in connectdata or
+ its filters
+ - trigger the CF_CTRL_CONN_INFO_UPDATE event when the complete filter
+ chain reaches connected status
+ - update easy handle connection information on CF_CTRL_DATA_SETUP event.
+
+ Closes #10213
+
+Daniel Stenberg (3 Jan 2023)
+
+- RELEASE-NOTES: synced
+
+- runtests: consider warnings fatal and error on them
+
+ To help us detect and fix warnings in this script easier and faster.
+
+ Assisted-by: Jakob Hirsch
+
+ Ref: #10206
+ Closes #10208
+
+- copyright: update all copyright lines and remove year ranges
+
+ - they are mostly pointless in all major jurisdictions
+ - many big corporations and projects already don't use them
+ - saves us from pointless churn
+ - git keeps history for us
+ - the year range is kept in COPYING
+
+ checksrc is updated to allow non-year using copyright statements
+
+ Closes #10205
+
+- docs/DEPRECATE.md: deprecate gskit
+
+ Ref: #10163
+
+ - This is a niche TLS library, only running on some IBM systems
+ - no regular curl contributors use this backend
+ - no CI builds use or verify this backend
+ - gskit, or the curl adaption for it, lacks many modern TLS features
+ making it an inferior solution
+ - build breakages in this code take weeks or more to get detected
+ - fixing gskit code is mostly done "flying blind"
+
+ Closes #10201
+
+- Revert "x509asn1: avoid freeing unallocated pointers"
+
+ This reverts commit 6b19247e794cfdf4ec63c5880d8f4f5485f653ab.
+
+ Fixes #10163
+ Closes #10207
+
+- ngtcp2: fix the build without 'sendmsg'
+
+ Follow-up from 71b7e0161032
+
+ Closes #10210
+
+- cmake: check for sendmsg
+
+ Used by ngtcp2
+
+ Closes #10211
+
+Timmy Schierling (2 Jan 2023)
+
+- runtest.pl: add expected fourth return value
+
+ Fixes warning in autobild log: "Use of uninitialized value $HTTP2TLSPORT
+ in substitution iterator at /tests/runtests.pl line 3516"
+
+ Closes #10206
+
+Daniel Stenberg (2 Jan 2023)
+
+- http2: when using printf %.*s, the length arg must be 'int'
+
+ Detected by Coverity CID 1518341
+
+ Closes #10203
+
+- cfilters: check for NULL before using pointer
+
+ Detected by Coverity CID 1518343
+
+ Closes #10202
+
+- http2: in connisdead check, attach the connection before reading
+
+ Otherwise data->conn is NULL and things go wrong.
+
+ This problem caused occastional failures in test 359, 1700 and more
+ depending on timing and the alignment of various planets.
+
+ Assisted-by: Stefan Eissing
+
+ Closes #10199
+
+Philip Heiduck (2 Jan 2023)
+
+- Linux CI: update some dependecies to latest tag
+
+ Closes #10195
+
+Daniel Stenberg (2 Jan 2023)
+
+- c-hyper: move down the Accept-Encoding header generation
+
+ To match the internal HTTP request header order so that test 1277 works
+ again.
+
+ Closes #10200
+
+- release-notes.pl: check fixes/closes lines better
+
+ To better skip lines that just happen to mention those words at the
+ start of a line without being instructions.
+
+- test1560: use a UTF8-using locale when run
+
+ There are odd cases that don't use UTF8 and then the IDN handling goes
+ wrong.
+
+ Reported-by: Marcel Raad
+ Fixes #10193
+ Closes #10196
+
+- cf-socket: fix build regression
+
+ Reported-by: Stephan Guilloux
+ Fixes #10190
+ Closes #10191
+
+- examples: remove the curlgtk.c example
+
+ - it does not add a lot of value
+ - we do not test-build it to verify because of its dependencies
+ - unclear for what GTK versions it works or not
+
+ Reported-by: odek86 on github
+
+ Fixes #10197
+ Closes #10198
+
+Andy Alt (2 Jan 2023)
+
+- docs: add link to GitHub Discussions
+
+ Closes #10171
+
+- GHA: ignore changes to md files for most workflows
+
+ Closes #10176
+
+Josh Brobst (2 Jan 2023)
+
+- http: decode transfer encoding first
+
+ The unencoding stack is added to as Transfer-Encoding and
+ Content-Encoding fields are encountered with no distinction between the
+ two, meaning the stack will be incorrect if, e.g., the message has both
+ fields and a non-chunked Transfer-Encoding comes first. This commit
+ fixes this by ordering the stack with transfer encodings first.
+
+ Reviewed-by: Patrick Monnerat
+ Closes #10187
+
+Daniel Stenberg (1 Jan 2023)
+
+- curl.h: mark CURLSSLBACKEND_MESALINK as deprecated
+
+ Follow-up since 223f26c28a340b36
+
+ Deprecated since 7.82.0
+
+ Closes #10189
+
+- curl_global_sslset.3: clarify the openssl situation
+
+ and add rustls
+
+ Closes #10188
+
+Cameron Blomquist (1 Jan 2023)
+
+- http: add additional condition for including stdint.h
+
+ stdint.h was only included in http.h when ENABLE_QUIC was defined, but
+ symbols from stdint.h are also used when USE_NGHTTP2 is defined. This
+ causes build errors when USE_NGHTTP2 is defined but ENABLE_QUIC is not.
+
+ Closes #10185
+
+Daniel Stenberg (31 Dec 2022)
+
+- urldata: cease storing TLS auth type
+
+ The only TLS auth type libcurl ever supported is SRP and that is the
+ default type. Since nobody ever sets any other type, there is no point
+ in wasting space to store the set type and code to check the type.
+
+ If TLS auth is used, SRP is now implied.
+
+ Closes #10181
+
+- vtls: use ALPN HTTP/1.0 when HTTP/1.0 is used
+
+ Previously libcurl would use the HTTP/1.1 ALPN id even when the
+ application specified HTTP/1.0.
+
+ Reported-by: William Tang
+ Ref: #10183
+
+Marcel Raad (30 Dec 2022)
+
+- lib670: make test.h the first include
+
+ As in all other lib tests. This avoids a macro redefinition warning for
+ `_FILE_OFFSET_BITS` visible in the autobuilds.
+
+ Closes https://github.com/curl/curl/pull/10182
+
+Stefan Eissing (30 Dec 2022)
+
+- lib: connect/h2/h3 refactor
+
+ Refactoring of connection setup and happy eyeballing. Move
+ nghttp2. ngtcp2, quiche and msh3 into connection filters.
+
+ - eyeballing cfilter that uses sub-filters for performing parallel connects
+ - socket cfilter for all transport types, including QUIC
+ - QUIC implementations in cfilter, can now participate in eyeballing
+ - connection setup is more dynamic in order to adapt to what filter did
+ really connect. Relevant to see if a SSL filter needs to be added or
+ if SSL has already been provided
+ - HTTP/3 test cases similar to HTTP/2
+ - multiuse of parallel transfers for HTTP/3, tested for ngtcp2 and quiche
+
+ - Fix for data attach/detach in VTLS filters that could lead to crashes
+ during parallel transfers.
+ - Eliminating setup() methods in cfilters, no longer needed.
+ - Improving Curl_conn_is_alive() to replace Curl_connalive() and
+ integrated ssl alive checks into cfilter.
+ - Adding CF_CNTRL_CONN_INFO_UPDATE to tell filters to update
+ connection into and persist it at the easy handle.
+
+ - Several more cfilter related cleanups and moves:
+ - stream_weigth and dependency info is now wrapped in struct
+ Curl_data_priority
+ - Curl_data_priority members depend is available in HTTP2|HTTP3
+ - Curl_data_priority members depend on NGHTTP2 support
+ - handling init/reset/cleanup of priority part of url.c
+ - data->state.priority same struct, but shallow copy for compares only
+
+ - PROTOPT_STREAM has been removed
+ - Curl_conn_is_mulitplex() now available to check on capability
+
+ - Adding query method to connection filters.
+ - ngtcp2+quiche: implementing query for max concurrent transfers.
+
+ - Adding is_alive and keep_alive cfilter methods. Adding DATA_SETUP event.
+ - setting keepalive timestamp on connect
+ - DATA_SETUP is called after the connection has been completely
+ setup (but may not connected yet) to allow filters to initialize
+ data members they use.
+
+ - there is no socket to be had with msh3, it is unclear how select
+ shall work
+
+ - manual test via "curl --http3 https://curl.se" fail with "empty
+ reply from server".
+
+ - Various socket/conn related cleanups:
+ - Curl_socket is now Curl_socket_open and in cf-socket.c
+ - Curl_closesocket is now Curl_socket_close and in cf-socket.c
+ - Curl_ssl_use has been replaced with Cur_conn_is_ssl
+ - Curl_conn_tcp_accepted_set has been split into
+ Curl_conn_tcp_listen_set and Curl_conn_tcp_accepted_set
+ with a clearer purpose
+
+ Closes #10141
+
+Daniel Stenberg (30 Dec 2022)
+
+- RELEASE-NOTES: synced
+
+- docs/libcurl/curl_getdate.3: minor whitespace edit
+
+ To avoid a fccp quirk that made it render wrongly on the website
+
+- transfer: break the read loop when RECV is cleared
+
+ When the RECV bit is cleared because the response reading for this
+ transfer is complete, the read loop should be stopped. data_pending()
+ can otherwise still return TRUE and another read would be attempted.
+
+ Reported-by: Hide Ishikawa
+ Fixes #10172
+ Closes #10174
+
+- multihandle: turn bool struct fields into bits
+
+ Closes #10179
+
+Stefan Eissing (30 Dec 2022)
+
+- ftpserver: lower the normal DATA connect timeout to speed up torture tests
+
+ - tests/ftpserver.pl blocks when expecting a DATA connection from the
+ client.
+
+ - the previous 10 seconds were encountered repeatedly in torture tests
+ and let to long waits.
+
+ - 2 seconds should still be sufficient for current hw, but CI will show.
+
+ Closes #10178
+
+Nick Banks (28 Dec 2022)
+
+- msh3: add support for request payload
+
+ Closes #10136
+
+Stefan Eissing (28 Dec 2022)
+
+- openssl: remove attached easy handles from SSL instances
+
+ - keeping the "current" easy handle registered at SSL* is no longer
+ necessary, since the "calling" data object is already stored in the
+ cfilter's context (and used by other SSL backends from there).
+ - The "detach" of an easy handle that goes out of scope is then avoided.
+ - using SSL_set0_wbio for clear reference counting where available.
+
+ Closes #10151
+
+Daniel Stenberg (28 Dec 2022)
+
+- socketpair: allow localhost MITM sniffers
+
+ Windows allow programs to MITM connections to localhost. The previous
+ check here would detect that and error out. This new method writes data
+ to verify the pipe thus allowing MITM.
+
+ Reported-by: SerusDev on github
+ Fixes #10144
+ Closes #10169
+
+- HTTP3: mention what needs to be in place to remove EXPERIMENTAL label
+
+ Closes #10168
+
+Andy Alt (28 Dec 2022)
+
+- MANUAL.md: add pipe to apt-key example
+
+ Closes #10170
+
+Daniel Stenberg (27 Dec 2022)
+
+- test417: verify %{certs} output
+
+- runtests: make 'mbedtls' a testable feature
+
+ Also add to FILEFORMAT.md
+
+- writeout: add %{certs} and %{num_certs}
+
+ Let users get the server certificate chain using the command line
+
+ Closes #10019
+
+Stefan Eissing (27 Dec 2022)
+
+- haxproxy: send before TLS handhshake
+
+ - reverse order of haproxy and final ssl cfilter
+
+ - make haproxy avaiable on PROXY builds, independent of HTTP support as
+ it can be used with any protocol.
+
+ Reported-by: Sergio-IME on github
+ Fixes #10165
+ Closes #10167
+
+Daniel Stenberg (27 Dec 2022)
+
+- RELEASE-NOTES: synced
+
+- test446: verify hsts with two URLs
+
+- runtests: support crlf="yes" for verify/proxy
+
+- hsts: handle adding the same host name again
+
+ It will then use the largest expire time of the two entries.
+
+- tool_operate: share HSTS between handles
+
+- share: add sharing of HSTS cache among handles
+
+ Closes #10138
+
+Viktor Szakats (27 Dec 2022)
+
+- Makefile.mk: fix wolfssl and mbedtls default paths
+
+ Fix the defaults for `WOLFSSL_PATH` and `MBEDTLS_PATH` to have
+ meaningful values instead of the copy-pasted wrong ones.
+
+ Ref: https://github.com/curl/curl/commit/66e68ca47f7fd00dff2cb7c45ba6725d4009
+ 9585#r94275172
+
+ Reported-by: Ryan Schmidt
+ Closes #10164
+
+Daniel Stenberg (27 Dec 2022)
+
+- INTERNALS: cleanup
+
+ - remove "operating systems" (mostly outdated)
+
+ - upodate the "build tools"
+
+ Closes #10162
+
+- cmake: bump requirement to 3.7
+
+ Because this is the cmake version (released in November 2016) that
+ introduced GREATER_EQUAL, which is used already.
+
+ Reported-by: nick-telia on github
+ Fixes #10128
+ Closes #10161
+
+- cfilters:Curl_conn_get_select_socks: use the first non-connected filter
+
+ When there are filters addded for both socket and SSL, the code
+ previously checked the SSL sockets during connect when it *should* first
+ check the socket layer until that has connected.
+
+ Fixes #10157
+ Fixes #10146
+ Closes #10160
+
+ Reviewed-by: Stefan Eissing
+
+- urlapi: add CURLU_PUNYCODE
+
+ Allows curl_url_get() get the punycode version of host names for the
+ host name and URL parts.
+
+ Extend test 1560 to verify.
+
+ Closes #10109
+
+- RELEASE-NOTES: synced
+
+- libssh2: try sha2 algos for hostkey methods
+
+ As is supported by recent libssh2, but should just be ignored by older
+ versions.
+
+ Reported-by: norbertmm on github
+ Assisted-by: norbertmm on github
+ Fixes #10143
+ Closes #10145
+
+Patrick Monnerat (26 Dec 2022)
+
+- typecheck: accept expressions for option/info parameters
+
+ As expressions can have side effects, evaluate only once.
+
+ To enable deprecation reporting only once, get rid of the __typeof__
+ use to define the local temporary variable and use the target type
+ (CURLoption/CURLINFO). This also avoids multiple reports on type
+ conflicts (if some) by the curlcheck_* macros.
+
+ Note that CURLOPT_* and CURLINFO_* symbols may be deprecated, but not
+ their values: a curl_easy_setopt call with an integer constant as option
+ will never report a deprecation.
+
+ Reported-by: Thomas Klausner
+ Fixes #10148
+ Closes #10149
+
+Paul Howarth (26 Dec 2022)
+
+- tests: avoid use of sha1 in certificates
+
+ The SHA-1 algorithm is deprecated (particularly for security-sensitive
+ applications) in a variety of OS environments. This already affects
+ RHEL-9 and derivatives, which are not willing to use certificates using
+ that algorithm. The fix is to use sha256 instead, which is already used
+ for most of the other certificates in the test suite.
+
+ Fixes #10135
+
+ This gets rid of issues related to sha1 signatures.
+
+ Manual steps after "make clean-certs" and "make build-certs":
+
+ - Copy tests/certs/stunnel-sv.pem to tests/stunnel.pem
+ (make clean-certs does not remove the original tests/stunnel.pem)
+
+ - Copy tests/certs/Server-localhost-sv.pubkey-pinned into --pinnedpubkey
+ options of tests/data/test2041 and tests/data/test2087
+
+ Closes #10153
+
+Yurii Rashkovskii (26 Dec 2022)
+
+- cmake: fix the snprintf detection
+
+ I haven't had the time to check other configurations, but on my macOS
+ Ventura 13.1 with XCode 14.2 cmake does not find `snprintf`.
+
+ Solution: ensure stdio.h is checked for definitions
+
+ Closes #10155
+
+Radu Hociung (26 Dec 2022)
+
+- http: remove the trace message "Mark bundle... multiuse"
+
+ The message "Mark bundle as not supporting multiuse" was added at commit
+ 29364d93 when an http/2-related bug was fixed, and it appears to be a
+ leftover trace message.
+
+ This message should be removed because:
+ * it conveys no information to the user
+ * it is enabled in the default build (--enable-verbose)
+ * it reads like a warning/unexpected condition
+ * it is equivalent to "Detected http proto < 2", which is
+ not a useful message.
+ * it is a time-wasting red-herring for anyone who encounters
+ it for the first time while investigating some other, real
+ problem.
+
+ This commit removes the trace message "Mark bundle as not
+ supporting multiuse"
+
+ Closes #10159
+
+Hannah Schierling (26 Dec 2022)
+
+- url: fix build with `--disable-cookies`
+
+ Struct `UserDefined` has no member `cookielist` if
+ `CURL_DISABLE_COOKIES` is defined.
+
+ Follow-up to af5999a
+
+ Closes #10158
+
+Stefan Eissing (23 Dec 2022)
+
+- runtests: also tear down http2/http3 servers when https server is stopped
+
+ Closes #10114
+
+- tests: add 3 new HTTP/2 test cases, plus https: support for nghttpx
+
+ - a simple https get
+ - a simple https post
+ - a multi get of 4 requests and check that same connection was used
+
+ Closes #10114
+
+Daniel Stenberg (23 Dec 2022)
+
+- urldata: remove unused struct fields, made more conditional
+
+ - source_quote, source_prequote and source_postquote have not been used since
+ 5e0d9aea3; September 2006
+
+ - make several fields conditional on proxy support
+
+ - make three quote struct fields conditional on FTP || SSH
+
+ - make 'mime_options' depend on MIME
+
+ - make trailer_* fields depend on HTTP
+
+ - change 'gssapi_delegation' from long to unsigned char
+
+ - make 'localportrange' unsigned short instead of int
+
+ - conn->trailer now depends on HTTP
+
+ Closes #10147
+
+- urldata: make set.http200aliases conditional on HTTP being present
+
+ And make a few SSH-only fields depend on SSH
+
+ Closes #10140
+
+- md4: fix build with GnuTLS + OpenSSL v1
+
+ Reported-by: Esdras de Morais da Silva
+
+ Fixes #10110
+ Closes #10142
+
+- urldata: make 'ftp_create_missing_dirs' depend on FTP || SFTP
+
+ Closes #10139
+
+John Bampton (22 Dec 2022)
+
+- misc: fix grammar and spelling
+
+ Closes #10137
+
+Daniel Stenberg (22 Dec 2022)
+
+- urldata: move the cookefilelist to the 'set' struct
+
+ The cookiefile entries are set into the handle and should remain set for
+ the lifetime of the handle so that duplicating it also duplicates the
+ list. Therefore, the struct field is moved from 'state' to 'set'.
+
+ Fixes #10133
+ Closes #10134
+
+- strdup: name it Curl_strdup
+
+ It does not belong in the curlx_ name space as it is never used
+ externally.
+
+ Closes #10132
+
+Nick Banks (22 Dec 2022)
+
+- msh3: update to v0.5 Release
+
+ Closes #10125
+
+Andy Alt (22 Dec 2022)
+
+- workflows/linux.yml: merge 3 common packages
+
+ Closes #10071
+
+Daniel Stenberg (21 Dec 2022)
+
+- docs: mention indirect effects of --insecure
+
+ Warn users that disabling certficate verification allows servers to
+ "pollute" curl with data it trusts.
+
+ Reported-by: Harry Sintonen
+ Closes #10126
+
+- SECURITY-PROCESS.md: document severity levels
+
+ Closes #10118
+
+- RELEASE_NOTES: synced
+
+ bumped version for new cycle
+
+Marcel Raad (21 Dec 2022)
+
+- tool_operate: fix `CURLOPT_SOCKS5_GSSAPI_NEC` type
+
+ `CURLOPT_SOCKS5_GSSAPI_NEC` is a long, while `socks5_gssapi_nec` was
+ made a bool in commit 4ac64eadf60.
+
+ Closes https://github.com/curl/curl/pull/10124
+
+Version 7.87.0 (21 Dec 2022)
+
+Daniel Stenberg (21 Dec 2022)
+
+- RELEASE-NOTES: synced
+
+ The curl 7.87.0 release
+
+- THANKS: 40 new contributors from 7.87.0
+
+- http: fix the ::1 comparison for IPv6 localhost for cookies
+
+ When checking if there is a "secure context", which it is if the
+ connection is to localhost even if the protocol is HTTP, the comparison
+ for ::1 was done incorrectly and included brackets.
+
+ Reported-by: BratSinot on github
+
+ Fixes #10120
+ Closes #10121
+
+Philip Heiduck (19 Dec 2022)
+
+- CI/spell: actions/checkout@v2 > actions/checkout@v3
+
+Daniel Stenberg (19 Dec 2022)
+
+- smb/telnet: do not free the protocol struct in *_done()
+
+ It is managed by the generic layer.
+
+ Reported-by: Trail of Bits
+
+ Closes #10112
+
+- http: use the IDN decoded name in HSTS checks
+
+ Otherwise it stores the info HSTS into the persistent cache for the IDN
+ name which will not match when the HSTS status is later checked for
+ using the decoded name.
+
+ Reported-by: Hiroki Kurosawa
+
+ Closes #10111
+
+- CURLOPT_DEBUGFUNCTION.3: emphasize that incoming data is "raw"
+
+ Closes #10106
+
+Xì Gà (16 Dec 2022)
+
+- socks: fix username max size is 255 (0xFF)
+
+ Closes #10105
+
+ Reviewed-by: Daniel Gustafsson
+
+Daniel Stenberg (16 Dec 2022)
+
+- limit-rate.d: see also --rate
+
+- lib1560: add some basic IDN host name tests
+
+ Closes #10094
+
+- idn: rename the files to idn.[ch] and hold all IDN functions
+
+ Closes #10094
+
+- idn: remove Curl_win32_ascii_to_idn
+
+ It was not used. Introduce a new IDN header for the prototype(s).
+
+ Closes #10094
+
+- RELEASE-NOTES: synced
+
+- curl_url_get.3: remove spurious backtick
+
+ Put there by mistake.
+
+ Follow-up from 9a8564a92
+
+ Closes #10101
+
+- socks: fix infof() flag for outputing a char
+
+ It used to be a 'long', %lu is no longer correct.
+
+ Follow-up to 57d2d9b6bed33d
+ Detected by Coverity CID 1517663
+
+ Closes #10100
+
+- ssl-reqd.d: clarify that this is for upgrading connections only
+
+ Closes #10093
+
+- curl_url_set.3: document CURLU_DISALLOW_USER
+
+ Closes #10099
+
+- cmake: set the soname on the shared library
+
+ Set SONAME and VERSION for platforms we think this works on. Remove
+ issue from KNOWN_BUGS.
+
+ Assisted-by: Jakub Zakrzewski
+
+ Closes #10023
+
+- tool_paramhlp: free the proto strings on exit
+
+ And also make sure that repeated use of the options free the previous
+ string before it stores a new.
+
+ Follow-up from e6f8445edef8e7996d
+
+ Closes #10098
+
+- tool_cfgable: free the ssl_ec_curves on exit
+
+ Follow-up to ede125b7b
+
+ Closes #10097
+
+- urlapi: reject more bad letters from the host name: &+()
+
+ Follow-up from eb0167ff7d31d3a5
+
+ Extend test 1560 to verify
+
+ Closes #10096
+
+- altsvc: fix rejection of negative port numbers
+
+ Follow-up to ac612dfeee95
+
+ strtoul() accepts a leading minus so better make sure there is none
+
+ Extended test 356 somewhat to use a huge negative 64 bit number that
+ otherwise becomes a low positive number.
+
+ Closes #10095
+
+- lib: use size_t or int etc instead of longs
+
+ Since long is not using a consistent data size in curl builds, making it
+ often "waste" 32 bits.
+
+ Closes #10088
+
+- azure: use "unversioned" clang and clang-tools for scanbuild job
+
+ To make it less fragile
+
+ Closes #10092
+
+Daniel Gustafsson (14 Dec 2022)
+
+- x509asn1: avoid freeing unallocated pointers
+
+ When utf8asn1str fails there is no allocation returned, so freeing
+ the return pointer in **to is at best a no-op and at worst a double-
+ free bug waiting to happen. The current coding isn't hiding any such
+ bugs but to future proof, avoid freeing the return value pointer iff
+ the function failed.
+
+ Closes: #10087
+ Reviewed-by: Daniel Stenberg
+
+Emil Engler (13 Dec 2022)
+
+- curl_url_set.3: fix typo
+
+ Closes: #10089
+ Reviewed-by: Daniel Gustafsson
+
+Daniel Stenberg (13 Dec 2022)
+
+- test2304: verify websocket handling when connection is closed
+
+- server/sws: if asked to close connection, skip the websocket handling
+
+- ws: if no connection is around, return error
+
+ - curl_ws_send returns CURLE_SEND_ERROR if data->conn is gone
+
+ - curl_ws_recv returns CURLE_GOT_NOTHING on connection close
+
+ - curl_ws_recv.3: mention new return code for connection close + example
+ embryo
+
+ Closes #10084
+
+Emil Engler (13 Dec 2022)
+
+- docs: extend the dump-header documentation
+
+ This commit extends the documentation of the --dump-header command-line
+ option to reflect the behavior introduced in 8b1e5df7.
+
+ See #10079
+ Closes #10085
+
+Daniel Stenberg (12 Dec 2022)
+
+- RELEASE-NOTES: synced
+
+- styled-output.d: this option does not work on Windows
+
+ Reported-by: u20221022 on github
+
+ Fixes #10082
+ Closes #10083
+
+Emil Engler (12 Dec 2022)
+
+- tool: determine the correct fopen option for -D
+
+ This commit fixes a bug in the dump-header feature regarding the
+ determination of the second fopen(3) option.
+
+ Reported-by: u20221022 on github
+
+ See #4753
+ See #4762
+ Fixes #10074
+ Closes #10079
+
+Christian Schmitz (11 Dec 2022)
+
+- docs/curl_ws_send: Fixed typo in websocket docs
+
+ Replace as with is in relevant sentences.
+
+ Closes: #10081
+ Reviewed-by: Daniel Gustafsson
+
+Prithvi MK (11 Dec 2022)
+
+- c-hyper: fix multi-request mechanism
+
+ It makes test 565 run fine.
+
+ Fixes #8896
+ Closes #10080
+ Assisted-by: Daniel Stenberg
+
+Andy Alt (11 Dec 2022)
+
+- page-header: grammar improvement (display transfer rate)
+
+ Closes #10068
+
+- docs/DEPRECATE.md: grammar improvement and sp correction
+
+ The main thing I wanted to do was fix the spelling of "spent", but I
+ think this rewording improves the flow of the paragraph.
+
+ Closes #10067
+
+Boris Verkhovskiy (11 Dec 2022)
+
+- tool_cfgable: make socks5_gssapi_nec a boolean
+
+ Closes #10078
+
+Frank Gevaerts (9 Dec 2022)
+
+- contributors.sh: actually use $CURLWWW instead of just setting it.
+
+ The script was all set up for flexibility where curl-www is elsewhere in
+ the filesystem, but then hard-coded ../curl-www anyway...
+
+ Closes #10064
+
+Daniel Stenberg (9 Dec 2022)
+
+- KNOWN_BUGS: remove items not considered bugs any more
+
+ - CURL_GLOBAL_SSL
+
+ This option was changed in libcurl 7.57.0 and clearly it has not caused
+ too many issues and a lot of time has passed.
+
+ - Store TLS context per transfer instead of per connection
+
+ This is a possible future optimization. One that is much less important
+ and interesting since the added support for CA caching.
+
+ - Microsoft telnet server
+
+ This bug was filed in May 2007 against curl 7.16.1 and we have not
+ received further reports.
+
+ - active FTP over a SOCKS
+
+ Actually, proxies in general is not working with active FTP mode. This
+ is now added in proxy documentation.
+
+ - DICT responses show the underlying protocol
+
+ curl still does this, but since this is now an established behavior
+ since forever we cannot change it easily and adding an option for it
+ seems crazy as this protocol is not so little its not worth it. Let's
+ just live with it.
+
+ - Secure Transport disabling hostname validation also disables SNI
+
+ This is an already documented restriction in Secure Transport.
+
+ - CURLOPT_SEEKFUNCTION not called with CURLFORM_STREAM
+
+ The curl_formadd() function is marked and documented as deprecated. No
+ point in collecting bugs for it. It should not be used further.
+
+ - STARTTRANSFER time is wrong for HTTP POSTs
+
+ After close source code inspection I cannot see how this is true or that
+ there is any special treatment for different HTTP methods. We also have
+ not received many further reports on this, making me strongly suspect
+ that this is no (longer an) issue.
+
+ - multipart formposts file name encoding
+
+ The once proposed RFC 5987-encoding is since RFC 7578 documented as MUST
+ NOT be used. The since then implemented MIME API allows the user to set
+ the name on their own and can thus provide it encoded as it wants.
+
+ - DoH is not used for all name resolves when enabled
+
+ It is questionable if users actually want to use DoH for interface and
+ FTP port name resolving. This restriction is now documented and we
+ advice users against using name resolving at all for these functions.
+
+ Closes #10043
+
+- CURLOPT_COOKIEFILE.3: advice => advise
+
+ Closes #10063
+
+ Reviewed-by: Daniel Gustafsson
+
+Daniel Gustafsson (9 Dec 2022)
+
+- curl.h: reword comment to not use deprecated option
+
+ CURLOPT_INFILE was replaced by CURLOPT_READDATA in 7.9.7, reword the
+ comment mentioning it to make code grepping easier as well as improve
+ the documentation.
+
+ Closes: #10062
+ Reviewed-by: Daniel Stenberg
+
+Ryan Schmidt (9 Dec 2022)
+
+- system.h: fix socklen_t, curl_off_t, long long for Classic Mac OS
+
+ Change "__MWERKS__" to "macintosh". When this block was originally added
+ in 3ac6929 it was probably intended to handle classic Mac OS since the
+ previous classic Mac OS build procedure for curl (which was removed in
+ bf327a9) used Metrowerks CodeWarrior.
+
+ But there are other classic Mac OS compilers, such as the MPW compilers,
+ that were not handled by this case. For classic Mac OS,
+ CURL_TYPEOF_CURL_SOCKLEN_T needs to match what's provided by the
+ third-party GUSI library, which does not vary by compiler.
+
+ Meanwhile CodeWarrior works on platforms other than classic Mac OS, and
+ they may need different definitions. Separate blocks could be added
+ later for any of those platforms that curl doesn't already support.
+
+ Closes #10049
+
+- vms: remove SIZEOF_SHORT
+
+ The rest of SIZEOF_SHORT was removed in d48dd15.
+
+ See #9291
+ Closes #10061
+
+Daniel Gustafsson (8 Dec 2022)
+
+- tool_formparse: avoid clobbering on function params
+
+ While perfectly legal to do, clobbering function parameters and using
+ them as local variables is confusing at best and rarely improves code
+ readability. Fix by using a local variable instead, no functionality
+ is changed.
+
+ This also renames the parameter from data to mime_data since the term
+ data is (soft) reserved for the easy handle struct.
+
+ Closes: #10046
+ Reviewed-by: Daniel Stenberg
+
+- noproxy: guard against empty hostnames in noproxy check
+
+ When checking for a noproxy setting we need to ensure that we get
+ a hostname passed in. If there is no hostname then there cannot be
+ a matching noproxy rule for it by definition.
+
+ Closes: #10057
+ Reported-by: Geeknik Labs
+ Reviewed-by: Daniel Stenberg
+
+Daniel Stenberg (8 Dec 2022)
+
+- c-hyper: CONNECT respones are not server responses
+
+ Together with d31915a8dbbd it makes test 265 run fine.
+
+ Fixes #8853
+ Assisted-by: Prithvi MK
+ Assisted-by: Sean McArthur
+ Closes #10060
+
+- test265: Use "connection: keep-alive" response header
+
+ When it answers as HTTP/1.0, so that clients (hyper) knows properly that
+ the connection remains intact.
+
+- RELEASE-NOTES: synced
+
+Stefan Eissing (8 Dec 2022)
+
+- cfilter: improve SSL connection checks
+
+ - fixes `Curl_ssl_cf_get_ssl()` to detect also the first filter instance
+ as ssl (refs #10053)
+
+ - replaces `Curl_ssl_use()` with the correct `Curl_conn_is_ssl()`
+
+ Closes #10054
+ Fixes #10053
+
+ Reported-by: Patrick Monnerat
+
+Daniel Stenberg (8 Dec 2022)
+
+- runtests: silence nghttpx errors
+
+ Also, move the output of the nghttpx_h3 info to the general "Env:" line
+ in the test output header.
+
+ Reported-by: Marcel Raad
+ Ref: https://github.com/curl/curl/commit/ca15b7512e8d1199e55fbaa206ef01e64b8f
+ 147d#commitcomment-92015094
+ Closes #10044
+
+Ryan Schmidt (7 Dec 2022)
+
+- config-mac: define HAVE_SYS_IOCTL_H
+
+ This is needed to compile nonblock.c on classic Mac OS with Grand
+ Unified Socket Interface (GUSI) because nonblock.c uses FIONBIO which is
+ defined in which is included by .
+
+ Ref: https://sourceforge.net/projects/gusi/
+
+ Closes https://github.com/curl/curl/pull/10042
+
+Philip Heiduck (7 Dec 2022)
+
+- CI: Change FreeBSD image from 12.3 to 12.4
+
+ Ref: https://www.phoronix.com/news/FreeBSD-12.4-Released
+
+ Closes https://github.com/curl/curl/pull/10051
+
+Ryan Schmidt (7 Dec 2022)
+
+- test1421: fix typo
+
+ Closes https://github.com/curl/curl/pull/10055
+
+Jay Satiro (7 Dec 2022)
+
+- build: assume errno.h is always available
+
+ - Remove errno.h detection from all build configurations.
+
+ errno.h is a standard header according to C89.
+
+ Closes https://github.com/curl/curl/pull/9986
+
+- build: assume assert.h is always available
+
+ - Remove assert.h detection from all build configurations.
+
+ assert.h is a standard header according to C89.
+
+ I had proposed this several years ago as part of a larger change that
+ was abandoned.
+
+ Ref: https://github.com/curl/curl/issues/1237#issuecomment-277500720
+
+ Closes https://github.com/curl/curl/pull/9985
+
+Philip Heiduck (7 Dec 2022)
+
+- CI: LGTM.com will be shut down in December 2022
+
+ Closes #10052
+
+Daniel Stenberg (6 Dec 2022)
+
+- mailmap: Andy Alt
+
+Andy Alt (6 Dec 2022)
+
+- misc: Fix incorrect spelling
+
+ Fix various uses of connnect by replacing them with connect.
+
+ Closes: #10045
+ Reviewed-by: Daniel Stenberg
+ Reviewed-by: Daniel Gustafsson
+
+Stefan Eissing (6 Dec 2022)
+
+- wolfssl: remove special BIO return code handling
+
+ - rely solely on the retry flag in BIO, similar to OpenSSL vtls
+ implementation.
+
+ Ref: https://github.com/curl/curl/pull/10021#issuecomment-1336147053
+
+ Closes #10033
+
+Daniel Stenberg (6 Dec 2022)
+
+- openssl: return -1 on error in the BIO callbacks
+
+ BIO_read and BIO_write return negative numbers on error, including
+ retryable ones. A regression from 55807e6. Both branches should be
+ returning -1.
+
+ The APIs are patterned after POSIX read and write which, similarly,
+ return -1 on errors, not zero, with EAGAIN treated as an error.
+
+ Bug: https://github.com/curl/curl/issues/10013#issuecomment-1335308146
+ Reported-by: David Benjamin
+ Closes #10021
+
+Ryan Schmidt (6 Dec 2022)
+
+- config-mac: remove HAVE_SYS_SELECT_H
+
+ When compiling for classic Mac OS with GUSI, there is no sys/select.h.
+ GUSI provides the "select" function prototype in sys/time.h.
+
+ Closes #10039
+
+- setup: do not require __MRC__ defined for Mac OS 9 builds
+
+ Partially reverts "somewhat protect Mac OS X users from using Mac OS 9
+ config file", commit 62519bfe059251af2914199f284c736553ff0489.
+
+ Do things that are specific to classic Mac OS (i.e. include config-mac.h
+ in curl_setup.h and rename "main" to "curl_main" in tool_setup.h) when
+ only "macintosh" is defined. Remove the additional condition that
+ "__MRC__" should be defined since that would only be true with the MPW
+ MrC compiler which prevents the use of other reasonable compilers like
+ the MPW SC compiler and especially the Metrowerks CodeWarrior compilers.
+ "macintosh" is only defined by classic Mac OS compilers so this change
+ should not affect users of Mac OS X / OS X / macOS / any other OS.
+
+ Closes #10037
+
+- curl.h: name all public function parameters
+
+ Most public function parameters already have names; this adds those
+ that were missing.
+
+ Closes #10036
+
+Andy Alt (6 Dec 2022)
+
+- docs/examples: spell correction ('Retrieve')
+
+ Closes #10040
+
+Daniel Stenberg (6 Dec 2022)
+
+- unit1302: slightly extended
+
+ To test more base64 decoding
+
+- base64: faster base64 decoding
+
+ - by using a lookup table instead of strchr()
+ - by doing full quantums first, then padding
+
+ Closes #10032
+
+Michael Musset (6 Dec 2022)
+
+- libssh2: return error when ssh_hostkeyfunc returns error
+
+ return CURLE_PEER_FAILED_VERIFICATION if verification with the callback
+ return a result different than CURLKHMATCH_OK
+
+ Closes #10034
+
+Viktor Szakats (5 Dec 2022)
+
+- Makefile.mk: improve a GNU Make hack [ci skip]
+
+ Replace the hack of using `$() ` to represent a single space. The new
+ method silences the `--warn-undefined-variables` debug warning and it's
+ also a better-known form of solving this problem.
+
+ Reviewed-by: Jay Satiro
+ Closes #10031
+
+Daniel Stenberg (5 Dec 2022)
+
+- tests/unit/.gitignore: ignore all unit + 4 digits files
+
+- base64: encode without using snprintf
+
+ For speed. In some tests, this approch is 29 times faster!
+
+ Closes #10026
+
+- base64: better alloc size
+
+ The previous algorithm allocated more bytes than necessary.
+
+ Suggested-by: xtonik on github
+ Fixes #10024
+ Closes #10025
+
+Ryan Schmidt (5 Dec 2022)
+
+- config-mac: fix typo: size_T -> size_t
+
+ Both MPW and CodeWarrior compilers complained about this.
+
+ Closes #10029
+
+Daniel Stenberg (3 Dec 2022)
+
+- RELEASE-NOTES: synced
+
+Jakub Zakrzewski (2 Dec 2022)
+
+- CMake: fix build with `CURL_USE_GSSAPI`
+
+ CMAKE_*_LINKER_FLAGS must be a string but GSS_LINKER_FLAGS is a list, so
+ we need to replace semicolons with spaces when setting those.
+
+ Fixes #9017
+ Closes #1022
+
+Max Dymond (2 Dec 2022)
+
+- ci: Reuse fuzzing snippet from curl-fuzzer project
+
+Diogo Teles Sant'Anna (2 Dec 2022)
+
+- GHA: clarify workflows permissions, set least possible privilege
+
+ Set top-level permissions to None on all workflows, setting per-job
+ permissions. This avoids that new jobs inherit unwanted permissions.
+
+ Discussion: https://curl.se/mail/lib-2022-11/0028.html
+
+ Signed-off-by: Diogo Teles Sant'Anna
+
+ Closes #9928
+
+Viktor Szakats (2 Dec 2022)
+
+- Makefile.mk: address minor issues
+
+ - Fix `NROFF` auto-detection with certain shell/make-build combinations:
+
+ When a non-MSYS2 GNU Make runs inside an MSYS2 shell, Make executes
+ the detection command as-is via `CreateProcess()`. It fails because
+ `command` is an `sh` built-in. Ensure to explicitly invoke the shell.
+
+ - Initialize user-customizable variables:
+
+ Silences a list of warnings when running GNU Make with the option
+ `--warn-undefined-variables`. Another benefit is that it's now easy
+ to look up all user-customizable `Makefile.mk` variables by grepping
+ for ` ?=` in the curl source tree.
+
+ Suggested-by: Gisle Vanem
+ Ref: https://github.com/curl/curl/pull/9764#issuecomment-1330674433
+
+ - Fix `MKDIR` invocation:
+
+ Avoid a warning and potential issue in envs without forward-slash
+ support.
+
+ Closes #10000
+
+Rob de Wit (2 Dec 2022)
+
+- curl_get_line: allow last line without newline char
+
+ improve backwards compatibility
+
+ Test 3200 verifies
+
+ Closes #9973
+
+Daniel Stenberg (2 Dec 2022)
+
+- cookie: open cookie jar as a binary file
+
+ On Windows there is a difference and for text files, ^Z means end of
+ file which is not desirable.
+
+ Ref: #9973
+ Closes #10017
+
+- runtests: only do CRLF replacements for hyper if it is HTTP
+
+ Closes #10016
+
+Stefan Eissing (1 Dec 2022)
+
+- openssl: fix for BoringSSL BIO result interpretation mixups
+
+ Reported-by: Robin Marx
+ Fixes #10013
+ Closes #10015
+
+Max Dymond (1 Dec 2022)
+
+- ci: Remove zuul fuzzing job as it's superseded by CIFuzz
+
+Daniel Stenberg (1 Dec 2022)
+
+- runtests: do CRLF replacements per section only
+
+ The `crlf="yes"` attribute and "hyper mode" are now only applied on a
+ subset of dedicated sections: data, datacheck, stdout and protocol.
+
+ Updated test 2500 accordingly.
+
+ Also made test1 use crlf="yes" for , mostly because it is
+ often used as a template test case. Going forward, using this attribute
+ we should be able to write test cases using linefeeds only and avoid
+ mixed line ending encodings.
+
+ Follow-up to ca15b7512e8d11
+
+ Fixes #10009
+ Closes #10010
+
+Stefan Eissing (1 Dec 2022)
+
+- gnutls: use common gnutls init and verify code for ngtcp2
+
+ Closes #10007
+
+Baitinq on github (1 Dec 2022)
+
+- aws_sigv4: fix typos in aws_sigv4.c
+
+ Closes #10008
+
+Kenneth Myhra (30 Nov 2022)
+
+- curl.h: include on SerenityOS
+
+ Closes #10006
+
+Daniel Stenberg (30 Nov 2022)
+
+- openssl: prefix errors with '[lib]/[version]: '
+
+ To help users understand where this (cryptic) error message comes from.
+
+ Suggested-by: Philip Sanetra
+ Ref: #10002
+ Closes #10004
+
+Stefan Eissing (30 Nov 2022)
+
+- tests: add HTTP/3 test case, custom location for proper nghttpx
+
+ - adding support for HTTP/3 test cases via a nghttpx server that is
+ build with ngtcp2 and nghttp3.
+ - test2500 is the first test case, performing a simple GET.
+ - nghttpx is checked for support and the 'feature' nghttpx-h3
+ is set accordingly. test2500 will only run, when supported.
+ - a specific nghttpx location can be given in the environment
+ variable NGHTTPX or via the configure option
+ --with-test-nghttpx=
+
+ Extend NGHTTPX config to H2 tests as well
+
+ * use $ENV{NGHTTPX} and the configured default also in http2 server starts
+ * always provide the empty test/nghttpx.conf to nghttpx. as it defaults to
+ reading /etc/nghttpx/nghttpx.conf otherwise.
+
+ Added nghttpx to CI ngtcp2 jobs to run h3 tests.
+
+ Closes #9031
+
+Daniel Stenberg (30 Nov 2022)
+
+- RELEASE-NOTES: synced
+
+ Removed duplicate after contributors.sh fix: 9967c10b6daa1
+
+- scripts/contributors.sh: strip one OR MORE leading spaces
+
+ From names found credited in commit logs
+
+- RELEASE-NOTES: synced
+
+- openssl/mbedtls: use %d for outputing port with failf (int)
+
+ Coverity CID 1517100
+
+ Also, remove some int typecasts in vtls.c for the port number
+
+ Closes #10001
+
+- KNOWN_BUGS: remove "Multi perform hangs waiting for threaded resolver"
+
+ We now offer a way to avoid that hang, using CURLOPT_QUICK_EXIT.
+
+ Follow-up to 49798cac832ab1 fixed via #9147
+
+ Closes #9999
+
+- KNOWN_BUGS: remove "--interface for ipv6 binds to unusable IP address"
+
+ Since years back the "if2ip" function verifies that it binds to a local IPv6
+ address that uses the same scope as the remote address.
+
+ This is not a bug.
+
+ Fixes #686
+ Closes #9998
+
+- test1276: verify lib/optiontable.pl
+
+ Checks that it generates an output identical to the file.
+
+- lib/optiontable.pl: adapt to CURLOPTDEPRECATED()
+
+ Follow-up from 6967571bf20624bc
+
+ Reported-by: Gisle Vanem
+
+ Fixes #9992
+ Closes #9993
+
+- docs/INSTALL.md: list OSes and CPUs quoted
+
+ to make them skip spellcheck. Also added a new CPU.
+
+ Follow-up to 4506cbf7f24a2a
+
+ Closes #9997
+
+Ikko Ashimine (28 Nov 2022)
+
+- vtls: fix typo in vtls_int.h
+
+ paramter -> parameter
+
+ Closes: #9996
+ Reviewed-by: Daniel Gustafsson
+
+Daniel Stenberg (28 Nov 2022)
+
+- curl-openssl.m4: do not add $prefix/include/openssl to CPPFLAGS
+
+ As OpenSSL's include files are all included using in curl
+ source code, we just risk that existing openssl files will "shadow"
+ include files without path if that path is provided.
+
+ Fixes #9989
+ Closes #9988
+
+- INSTALL: update operating systems and CPU archs
+
+ Update after recent runs on Twitter/Mastodon and my blog
+
+ Closes #9994
+
+Stefan Eissing (28 Nov 2022)
+
+- tls: backends use connection filters for IO, enabling HTTPS-proxy
+
+ - OpenSSL (and compatible)
+ - BearSSL
+ - gnutls
+ - mbedtls
+ - rustls
+ - schannel
+ - secure-transport
+ - wolfSSL (v5.0.0 and newer)
+
+ This leaves only the following without HTTPS-proxy support:
+ - gskit
+ - nss
+ - wolfSSL (versions earlier than v5.0.0)
+
+ Closes #9962
+
+Daniel Stenberg (28 Nov 2022)
+
+- include/curl/curl.h: bump the deprecated requirements to gcc 6.1
+
+ Reported-by: Michael Kaufmann
+ Fixes #9917
+ Closes #9987
+
+Patrick Monnerat (28 Nov 2022)
+
+- mime: relax easy/mime structures binding
+
+ Deprecation and removal of codeset conversion support from the library
+ have released the strict need for an early binding of mime structures to
+ an easy handle (https://github.com/curl/curl/commit/2610142).
+
+ This constraint currently forces to create the handle before the mime
+ structure and the latter cannot be attached to another handle once
+ created (see https://curl.se/mail/lib-2022-08/0027.html).
+
+ This commit removes the handle pointers from the mime structures
+ allowing more flexibility on their use.
+
+ When an easy handle is duplicated, bound mime structures must however
+ still be duplicated too as their components hold send-time dynamic
+ information.
+
+ Closes #9927
+
+fractal-access (26 Nov 2022)
+
+- test416: verify growing FTP file support
+
+ Added setting: RETRSIZE [size] in the section. When set this
+ will cause the test FTP server to return the size set (rather than the
+ actual size) in the acknowledgement from a RETR request.
+
+ Closes #9772
+
+- ftp: support growing files with CURLOPT_IGNORE_CONTENT_LENGTH
+
+ When using the option CURLOPT_IGNORE_CONTENT_LENGTH (set.ignorecl in
+ code) to support growing files in FTP, the code should ignore the
+ initial size it gets from the server as this will not be the final size
+ of the file. This is done in ftp_state_quote() to prevent a size request
+ being issued in the initial sequence. However, in a later call to
+ ftp_state_get_resp() the code attempts to get the size of the content
+ again if it doesn't already have it, by parsing the response from the
+ RETR request. This fix prevents this parsing of the response to get the
+ size when the set.ignorecl option is set. This should maintain the size
+ value as -1, unknown, in this situation.
+
+ Closes #9772
+
+Stefan Eissing (26 Nov 2022)
+
+- cfilter: re-add `conn` as parameter to cfilter setup methods
+
+ - `Curl_ssl_get_config()` now returns the first config if no SSL proxy
+ filter is active
+
+ - socket filter starts connection only on first invocation of its
+ connect method
+
+ Fixes #9982
+ Closes #9983
+
+Daniel Stenberg (26 Nov 2022)
+
+- KNOWN_BUGS: remove five FTP related issues
+
+ - "FTP with CONNECT and slow server"
+
+ I believe this is not a problem these days.
+
+ - "FTP with NULs in URL parts"
+
+ The FTP protocol does not support them properly anyway.
+
+ - remove "FTP and empty path parts in the URL"
+
+ I don't think this has ever been reported as a real problem but was only
+ a hypothetical one.
+
+ - "Premature transfer end but healthy control channel"
+
+ This is not a bug, this is an optimization that *could* be performed but is
+ not an actual problem.
+
+ - "FTP without or slow 220 response"
+
+ Instead add to the documentation of the connect timeout that the
+ connection is considered complete at TCP/TLS/QUIC layer.
+
+ Closes #9979
+
+Stefan Eissing (26 Nov 2022)
+
+- tests: add authorityInfoAccess to generated certs
+
+ Generate stunnel.pem as well
+
+ Closes #9980
+
+Daniel Stenberg (25 Nov 2022)
+
+- runtests: --no-debuginfod now disables DEBUGINFOD_URLS
+
+ Prior to this change, DEBUGINFOD_URLS was always disabled by runtests
+ due to a report of it slowing down tests. However, some setups need it
+ to fetch debug symbols, and if it is disabled on those systems then curl
+ tests with valgrind will fail.
+
+ Reported-by: Mark Gaiser
+
+ Ref: #8805
+ Closes #9950
+
+Casey Bodley (25 Nov 2022)
+
+- test/aws_sigv4: test cases for content-sha256
+
+ 1956 adds the sha256 value corresponding to an empty buffer
+ 1957 adds an arbitrary value and confirms that the signature differs from 195
+ 6
+ 1958 adds whitespace to 1957 and confirms that the signature matches 1957
+ 1959 adds a value longer than 'char sha_hex[65]' in Curl_output_aws_sigv4()
+
+ Signed-off-by: Casey Bodley
+
+ Closes #9804
+
+- aws_sigv4: consult x-%s-content-sha256 for payload hash
+
+ `Curl_output_aws_sigv4()` doesn't always have the whole payload in
+ memory to generate a real payload hash. this commit allows the user to
+ pass in a header like `x-amz-content-sha256` to provide their desired
+ payload hash
+
+ some services like s3 require this header, and may support other values
+ like s3's `UNSIGNED-PAYLOAD` and `STREAMING-AWS4-HMAC-SHA256-PAYLOAD`
+ with special semantics. servers use this header's value as the payload
+ hash during signature validation, so it must match what the client uses
+ to generate the signature
+
+ CURLOPT_AWS_SIGV4.3 now describes the content-sha256 interaction
+
+ Signed-off-by: Casey Bodley
+
+ Closes #9804
+
+Philip Heiduck (25 Nov 2022)
+
+- GHA: NSS use clang instead of clang-9
+
+ Closes #9978
+
+Daniel Stenberg (25 Nov 2022)
+
+- RELEASE-NOTES: synced
+
+- tool_operate: override the numeric locale and set "C" by force
+
+ Makes curl always use dot as decimal separator for options,
+ independently of what the locale says. Makes scripts and command lines
+ portable.
+
+ Updated docs accordingly.
+
+ Reported-by: Daniel Faust
+
+ Fixes #9969
+ Closes #9972
+
+- test1662: verify formpost, 301 redirect, no rewind possible
+
+ Reproduces #9735 and verifies the subsequent fix. The original issue
+ uses a pipe that cannot be rewound, but this test case instead sets a
+ callback without rewind ability to get roughly the same properties but
+ being a much more portable test.
+
+- lib: rewind BEFORE request instead of AFTER previous
+
+ This makes a big difference for cases when the rewind is not actually
+ necessary to perofm (for example HTTP response code 301 converts to GET)
+ and therefore the rewind can be avoided. In particular for situations
+ when that rewind fails, for example when reading from a pipe or similar.
+
+ Reported-by: Ali Utku Selen
+
+ Fixes #9735
+ Closes #9958
+
+- vtls: repair build with disabled proxy
+
+ Closes #9974
+
+Daniel Gustafsson (23 Nov 2022)
+
+- packaging: remove traces of deleted files
+
+ Commit a8861b6cc removed packages/DOS but left a few traces of it
+ which broke the distcheck CI. Remove all traces.
+
+ Closes: #9971
+ Reviewed-by: Daniel Stenberg
+
+- openssl: silence compiler warning when not using IPv6
+
+ In non-IPv6 builds the conn parameter is unused, and compilers which
+ run with "-Werror=unused-parameter" (or similar) warnings turned on
+ fails to build. Below is an excerpt from a CI job:
+
+ vtls/openssl.c: In function ‘Curl_ossl_verifyhost’:
+ vtls/openssl.c:2016:75: error: unused parameter ‘conn’ [-Werror=unused-
+ parameter]
+ 2016 | CURLcode Curl_ossl_verifyhost(struct Curl_easy *data, struct connec
+ tdata *conn,
+ | ~~~~~~~~~~~~~
+ ~~~~~~~^~~~
+
+ Closes: #9970
+ Reviewed-by: Daniel Stenberg
+
+- netware: remove leftover traces
+
+ Commit 3b16575ae938dec2a29454631a12aa52b6ab9c67 removed support for
+ building on Novell Netware, but a few leftover traces remained. This
+ removes the last bits.
+
+ Closes: #9966
+ Reviewed-by: Daniel Stenberg
+
+Ryan Schmidt (23 Nov 2022)
+
+- curl_endian: remove Curl_write64_le from header
+
+ The actual function was already removed in 4331c6dc.
+
+ See #7280
+ Closes #9968
+
+Daniel Stenberg (22 Nov 2022)
+
+- docs: add more "SEE ALSO" links to CA related pages
+
+ Closes #9959
+
+- examples: update descriptions
+
+ Make them not say "this is an example showing..." and instead just say
+ what the example shows.
+
+ Closes #9960
+
+Stefan Eissing (22 Nov 2022)
+
+- vtls: localization of state data in filters
+
+ - almost all backend calls pass the Curl_cfilter intance instead of
+ connectdata+sockindex
+ - ssl_connect_data is remove from struct connectdata and made internal
+ to vtls
+ - ssl_connect_data is allocated in the added filter, kept at cf->ctx
+
+ - added function to let a ssl filter access its ssl_primary_config and
+ ssl_config_data this selects the propert subfields in conn and data,
+ for filters added as plain or proxy
+ - adjusted all backends to use the changed api
+ - adjusted all backends to access config data via the exposed
+ functions, no longer using conn or data directly
+
+ cfilter renames for clear purpose:
+
+ - methods `Curl_conn_*(data, conn, sockindex)` work on the complete
+ filter chain at `sockindex` and connection `conn`.
+ - methods `Curl_cf_*(cf, ...)` work on a specific Curl_cfilter
+ instance.
+ - methods `Curl_conn_cf()` work on/with filter instances at a
+ connection.
+ - rebased and resolved some naming conflicts
+ - hostname validation (und session lookup) on SECONDARY use the same
+ name as on FIRST (again).
+
+ new debug macros and removing connectdata from function signatures where not
+ needed.
+
+ adapting schannel for new Curl_read_plain paramter.
+
+ Closes #9919
+
+Daniel Stenberg (22 Nov 2022)
+
+- examples/10-at-a-time: fix possible skipped final transfers
+
+ Prior to this change if curl_multi_perform returned 0 running handles
+ and then all remaining transfers were added, then the perform loop would
+ end immediately without performing those transfers.
+
+ Reported-by: Mikhail Kuznetsov
+
+ Fixes https://github.com/curl/curl/issues/9953
+ Closes https://github.com/curl/curl/pull/9954
+
+Viktor Szakats (22 Nov 2022)
+
+- Makefile.mk: portable Makefile.m32
+
+ Update bare GNU Make `Makefile.m32` to:
+
+ - Move objects into a subdirectory.
+ - Add support for MS-DOS. Tested with DJGPP.
+ - Add support for Watt-32 (on MS-DOS).
+ - Add support for AmigaOS.
+ - Rename `Makefile.m32` to `Makefile.mk`
+ - Replace `ARCH` with `TRIPLET`.
+ - Build `tool_hugehelp.c` proper (when tools are available).
+ - Drop MS-DOS compatibility macro `USE_ZLIB` (replaced by `HAVE_LIBZ`)
+ - Add support for `ZLIB_LIBS` to override `-lz`.
+ - Omit object files when building examples.
+ - Default `CC` to `gcc` once again, for convenience. (Caveat: compiler
+ name `cc` cannot be set now.)
+ - Set `-DCURL_NO_OLDIES` for examples, like autotools does.
+ - Delete `makefile.dj` files. Notice the configuration details and
+ defaults are not retained with the new method.
+ - Delete `makefile.amiga` files. A successful build needs a few custom
+ options. We're also not retaining all build details from the existing
+ Amiga make files.
+ - Rename `Makefile.m32` to `Makefile.mk` to reflect that they are not
+ Windows/MinGW32-specific anymore.
+ - Add support for new `CFG` options: `-map`, `-debug`, `-trackmem`
+ - Set `-DNDEBUG` by default.
+ - Allow using `-DOS=...` in all `lib/config-*.h` headers, syncing this
+ with `config-win32.h`.
+ - Look for zlib parts in `ZLIB_PATH/include` and `ZLIB_PATH/lib`
+ instead of bare `ZLIB_PATH`.
+
+ Note that existing build configurations for MS-DOS and AmigaOS likely
+ become incompatible with this change.
+
+ Example AmigaOS configuration:
+ ```
+ export CROSSPREFIX=/opt/amiga/bin/m68k-amigaos-
+ export CC=gcc
+ export CPPFLAGS='-DHAVE_PROTO_BSDSOCKET_H'
+ export CFLAGS='-mcrt=clib2'
+ export LDFLAGS="${CFLAGS}"
+ export LIBS='-lnet -lm'
+ make -C lib -f Makefile.mk
+ make -C src -f Makefile.mk
+ ```
+
+ Example MS-DOS configuration:
+ ```
+ export CROSSPREFIX=/opt/djgpp/bin/i586-pc-msdosdjgpp-
+ export WATT_PATH=/opt/djgpp/net/watt
+ export ZLIB_PATH=/opt/djgpp
+ export OPENSSL_PATH=/opt/djgpp
+ export OPENSSL_LIBS='-lssl -lcrypt'
+ export CFG=-zlib-ssl
+ make -C lib -f Makefile.mk
+ make -C src -f Makefile.mk
+ ```
+
+ Closes #9764
+
+Stefan Eissing (22 Nov 2022)
+
+- cfiler: filter types have flags indicating what they do
+
+ - Adding Curl_conn_is_ip_connected() to check if network connectivity
+ has been reached
+
+ - having ftp wait for network connectivity before proceeding with
+ transfers.
+
+ Fixes test failures 1631 and 1632 with hyper.
+
+ Closes #9952
+
+Daniel Stenberg (21 Nov 2022)
+
+- RELEASE-NOTES: synced
+
+Jay Satiro (20 Nov 2022)
+
+- sendf: change Curl_read_plain to wrap Curl_recv_plain (take 2)
+
+ Prior to this change Curl_read_plain would attempt to read the
+ socket directly. On Windows that's a problem because recv data may be
+ cached by libcurl and that data is only drained using Curl_recv_plain.
+
+ Rather than rewrite Curl_read_plain to handle cached recv data, I
+ changed it to wrap Curl_recv_plain, in much the same way that
+ Curl_write_plain already wraps Curl_send_plain.
+
+ Curl_read_plain -> Curl_recv_plain
+ Curl_write_plain -> Curl_send_plain
+
+ This fixes a bug in the schannel backend where decryption of arbitrary
+ TLS records fails because cached recv data is never drained. We send
+ data (TLS records formed by Schannel) using Curl_write_plain, which
+ calls Curl_send_plain, and that may do a recv-before-send
+ ("pre-receive") to cache received data. The code calls Curl_read_plain
+ to read data (TLS records from the server), which prior to this change
+ did not call Curl_recv_plain and therefore cached recv data wasn't
+ retrieved, resulting in malformed TLS records and decryption failure
+ (SEC_E_DECRYPT_FAILURE).
+
+ The bug has only been observed during Schannel TLS 1.3 handshakes. Refer
+ to the issue and PR for more information.
+
+ --
+
+ This is take 2 of the original fix. It preserves the original behavior
+ of Curl_read_plain to write 0 to the bytes read parameter on error,
+ since apparently some callers expect that (SOCKS tests were hanging).
+ The original fix which landed in 12e1def5 and was later reverted in
+ 18383fbf failed to work properly because it did not do that.
+
+ Also, it changes Curl_write_plain the same way to complement
+ Curl_read_plain, and it changes Curl_send_plain to return -1 instead of
+ 0 on CURLE_AGAIN to complement Curl_recv_plain.
+
+ Behavior on error with these changes:
+
+ Curl_recv_plain returns -1 and *code receives error code.
+ Curl_send_plain returns -1 and *code receives error code.
+ Curl_read_plain returns error code and *n (bytes read) receives 0.
+ Curl_write_plain returns error code and *written receives 0.
+
+ --
+
+ Ref: https://github.com/curl/curl/issues/9431#issuecomment-1312420361
+
+ Assisted-by: Joel Depooter
+ Reported-by: Egor Pugin
+
+ Fixes https://github.com/curl/curl/issues/9431
+ Closes https://github.com/curl/curl/pull/9949
+
+Sean McArthur (19 Nov 2022)
+
+- hyper: classify headers as CONNECT and 1XX
+
+ Closes #9947
+
+Stefan Eissing (19 Nov 2022)
+
+- ftp: fix "AUTH TLS" on primary conn and for SSL in PASV second conn
+
+ Follow-up to dafdb20a26d0c89
+
+ Reported-by: Anthony Hu
+ Closes #9948
+
+Jay Satiro (19 Nov 2022)
+
+- CURLOPT_POST.3: Explain setting to 0 changes request type
+
+ Bug: https://github.com/curl/curl/issues/9849
+ Reported-by: MonkeybreadSoftware@users.noreply.github.com
+
+ Closes https://github.com/curl/curl/pull/9942
+
+Daniel Stenberg (19 Nov 2022)
+
+- docs/INSTALL.md: expand on static builds
+
+ Remove from KNOWN_BUGS
+
+ Closes #9944
+
+Stefan Eissing (19 Nov 2022)
+
+- http: restore h3 to working condition after connection filter introduction
+
+ Follow-up to dafdb20a26d0c
+
+ HTTP/3 needs a special filter chain, since it does the TLS handling
+ itself. This PR adds special setup handling in the HTTP protocol handler
+ that takes are of it.
+
+ When a handler, in its setup method, installs filters, the default
+ behaviour for managing the filter chain is overridden.
+
+ Reported-by: Karthikdasari0423 on github
+
+ Fixes #9931
+ Closes #9945
+
+Daniel Stenberg (18 Nov 2022)
+
+- urldata: change port num storage to int and unsigned short
+
+ Instead of long.
+
+ Closes #9946
+
+- Revert "sendf: change Curl_read_plain to wrap Curl_recv_plain"
+
+ This reverts commit 12e1def51a75392df62e65490416007d7e68dab9.
+
+ It introduced SOCKS proxy fails, like test 700 never ending.
+
+ Reopens #9431
+
+- HTTP-COOKIES.md: update the 6265bis link to draft-11
+
+ Closes #9940
+
+- docs/WEBSOCKET.md: explain the URL use
+
+ Fixes #9936
+ Closes #9941
+
+Jay Satiro (18 Nov 2022)
+
+- sendf: change Curl_read_plain to wrap Curl_recv_plain
+
+ Prior to this change Curl_read_plain would attempt to read the
+ socket directly. On Windows that's a problem because recv data may be
+ cached by libcurl and that data is only drained using Curl_recv_plain.
+
+ Rather than rewrite Curl_read_plain to handle cached recv data, I
+ changed it to wrap Curl_recv_plain, in much the same way that
+ Curl_write_plain already wraps Curl_send_plain.
+
+ Curl_read_plain -> Curl_recv_plain
+ Curl_write_plain -> Curl_send_plain
+
+ This fixes a bug in the schannel backend where decryption of arbitrary
+ TLS records fails because cached recv data is never drained. We send
+ data (TLS records formed by Schannel) using Curl_write_plain, which
+ calls Curl_send_plain, and that may do a recv-before-send
+ ("pre-receive") to cache received data. The code calls Curl_read_plain
+ to read data (TLS records from the server), which prior to this change
+ did not call Curl_recv_plain and therefore cached recv data wasn't
+ retrieved, resulting in malformed TLS records and decryption failure
+ (SEC_E_DECRYPT_FAILURE).
+
+ The bug has only been observed during Schannel TLS 1.3 handshakes. Refer
+ to the issue and PR for more information.
+
+ Ref: https://github.com/curl/curl/issues/9431#issuecomment-1312420361
+
+ Assisted-by: Joel Depooter
+ Reported-by: Egor Pugin
+
+ Fixes https://github.com/curl/curl/issues/9431
+ Closes https://github.com/curl/curl/pull/9904
+
+- test3026: reduce runtime in legacy mingw builds
+
+ - Load Windows system libraries secur32 and iphlpapi beforehand, so
+ that libcurl's repeated global init/cleanup only increases/decreases
+ the library's refcount rather than causing it to load/unload.
+
+ Assisted-by: Marc Hoersken
+
+ Closes https://github.com/curl/curl/pull/9412
+
+Daniel Stenberg (18 Nov 2022)
+
+- url: move back the IDN conversion of proxy names
+
+ Regression: in commit 53bcf55 we moved the IDN conversion calls to
+ happen before the HSTS checks. But the HSTS checks are only done on the
+ server host name, not the proxy names. By moving the proxy name IDN
+ conversions, we accidentally broke the verbose output showing the proxy
+ name.
+
+ This change moves back the IDN conversions for the proxy names to the
+ place in the code path they were before 53bcf55.
+
+ Reported-by: Andy Stamp
+ Fixes #9937
+ Closes #9939
diff --git a/src/fire/curl-8.1.2/CMake/CMakeConfigurableFile.in b/src/fire/curl-8.1.2/CMake/CMakeConfigurableFile.in
new file mode 100644
index 0000000..a3d2bc4
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/CMakeConfigurableFile.in
@@ -0,0 +1,24 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+@CMAKE_CONFIGURABLE_FILE_CONTENT@
diff --git a/src/fire/curl-8.1.2/CMake/CurlSymbolHiding.cmake b/src/fire/curl-8.1.2/CMake/CurlSymbolHiding.cmake
new file mode 100644
index 0000000..142e919
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/CurlSymbolHiding.cmake
@@ -0,0 +1,78 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+include(CheckCSourceCompiles)
+
+option(CURL_HIDDEN_SYMBOLS "Set to ON to hide libcurl internal symbols (=hide all symbols that aren't officially external)." ON)
+mark_as_advanced(CURL_HIDDEN_SYMBOLS)
+
+if(CURL_HIDDEN_SYMBOLS)
+ set(SUPPORTS_SYMBOL_HIDING FALSE)
+
+ if(CMAKE_C_COMPILER_ID MATCHES "Clang" AND NOT MSVC)
+ set(SUPPORTS_SYMBOL_HIDING TRUE)
+ set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))")
+ set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden")
+ elseif(CMAKE_COMPILER_IS_GNUCC)
+ if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4)
+ # note: this is considered buggy prior to 4.0 but the autotools don't care, so let's ignore that fact
+ set(SUPPORTS_SYMBOL_HIDING TRUE)
+ set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))")
+ set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden")
+ endif()
+ elseif(CMAKE_C_COMPILER_ID MATCHES "SunPro" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 8.0)
+ set(SUPPORTS_SYMBOL_HIDING TRUE)
+ set(_SYMBOL_EXTERN "__global")
+ set(_CFLAG_SYMBOLS_HIDE "-xldscope=hidden")
+ elseif(CMAKE_C_COMPILER_ID MATCHES "Intel" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 9.0)
+ # note: this should probably just check for version 9.1.045 but I'm not 100% sure
+ # so let's do it the same way autotools do.
+ set(SUPPORTS_SYMBOL_HIDING TRUE)
+ set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))")
+ set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden")
+ check_c_source_compiles("#include
+ int main (void) { printf(\"icc fvisibility bug test\"); return 0; }" _no_bug)
+ if(NOT _no_bug)
+ set(SUPPORTS_SYMBOL_HIDING FALSE)
+ set(_SYMBOL_EXTERN "")
+ set(_CFLAG_SYMBOLS_HIDE "")
+ endif()
+ elseif(MSVC)
+ set(SUPPORTS_SYMBOL_HIDING TRUE)
+ endif()
+
+ set(HIDES_CURL_PRIVATE_SYMBOLS ${SUPPORTS_SYMBOL_HIDING})
+elseif(MSVC)
+ if(NOT CMAKE_VERSION VERSION_LESS 3.7)
+ set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) #present since 3.4.3 but broken
+ set(HIDES_CURL_PRIVATE_SYMBOLS FALSE)
+ else()
+ message(WARNING "Hiding private symbols regardless CURL_HIDDEN_SYMBOLS being disabled.")
+ set(HIDES_CURL_PRIVATE_SYMBOLS TRUE)
+ endif()
+else()
+ set(HIDES_CURL_PRIVATE_SYMBOLS FALSE)
+endif()
+
+set(CURL_CFLAG_SYMBOLS_HIDE ${_CFLAG_SYMBOLS_HIDE})
+set(CURL_EXTERN_SYMBOL ${_SYMBOL_EXTERN})
diff --git a/src/fire/curl-8.1.2/CMake/CurlTests.c b/src/fire/curl-8.1.2/CMake/CurlTests.c
new file mode 100644
index 0000000..3dbba3c
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/CurlTests.c
@@ -0,0 +1,532 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) Daniel Stenberg, , et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#ifdef TIME_WITH_SYS_TIME
+/* Time with sys/time test */
+
+#include
+#include
+#include
+
+int
+main ()
+{
+if ((struct tm *) 0)
+return 0;
+ ;
+ return 0;
+}
+
+#endif
+
+#ifdef HAVE_FCNTL_O_NONBLOCK
+
+/* headers for FCNTL_O_NONBLOCK test */
+#include
+#include
+#include
+/* */
+#if defined(sun) || defined(__sun__) || \
+ defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+# if defined(__SVR4) || defined(__srv4__)
+# define PLATFORM_SOLARIS
+# else
+# define PLATFORM_SUNOS4
+# endif
+#endif
+#if (defined(_AIX) || defined(__xlC__)) && !defined(_AIX41)
+# define PLATFORM_AIX_V3
+#endif
+/* */
+#if defined(PLATFORM_SUNOS4) || defined(PLATFORM_AIX_V3)
+#error "O_NONBLOCK does not work on this platform"
+#endif
+
+int
+main ()
+{
+ /* O_NONBLOCK source test */
+ int flags = 0;
+ if(0 != fcntl(0, F_SETFL, flags | O_NONBLOCK))
+ return 1;
+ return 0;
+}
+#endif
+
+/* tests for gethostbyname_r */
+#if defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT) || \
+ defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) || \
+ defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT)
+# define _REENTRANT
+ /* no idea whether _REENTRANT is always set, just invent a new flag */
+# define TEST_GETHOSTBYFOO_REENTRANT
+#endif
+#if defined(HAVE_GETHOSTBYNAME_R_3) || \
+ defined(HAVE_GETHOSTBYNAME_R_5) || \
+ defined(HAVE_GETHOSTBYNAME_R_6) || \
+ defined(TEST_GETHOSTBYFOO_REENTRANT)
+#include
+#include
+int main(void)
+{
+ char *address = "example.com";
+ int length = 0;
+ int type = 0;
+ struct hostent h;
+ int rc = 0;
+#if defined(HAVE_GETHOSTBYNAME_R_3) || \
+ defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT)
+ struct hostent_data hdata;
+#elif defined(HAVE_GETHOSTBYNAME_R_5) || \
+ defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) || \
+ defined(HAVE_GETHOSTBYNAME_R_6) || \
+ defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT)
+ char buffer[8192];
+ int h_errnop;
+ struct hostent *hp;
+#endif
+
+#if defined(HAVE_GETHOSTBYNAME_R_3) || \
+ defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT)
+ rc = gethostbyname_r(address, &h, &hdata);
+#elif defined(HAVE_GETHOSTBYNAME_R_5) || \
+ defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT)
+ rc = gethostbyname_r(address, &h, buffer, 8192, &h_errnop);
+ (void)hp; /* not used for test */
+#elif defined(HAVE_GETHOSTBYNAME_R_6) || \
+ defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT)
+ rc = gethostbyname_r(address, &h, buffer, 8192, &hp, &h_errnop);
+#endif
+
+ (void)length;
+ (void)type;
+ (void)rc;
+ return 0;
+}
+#endif
+
+#ifdef HAVE_SOCKLEN_T
+#ifdef _WIN32
+#include
+#else
+#include
+#include
+#endif
+int
+main ()
+{
+if ((socklen_t *) 0)
+ return 0;
+if (sizeof (socklen_t))
+ return 0;
+ ;
+ return 0;
+}
+#endif
+#ifdef HAVE_IN_ADDR_T
+#include
+#include
+#include
+
+int
+main ()
+{
+if ((in_addr_t *) 0)
+ return 0;
+if (sizeof (in_addr_t))
+ return 0;
+ ;
+ return 0;
+}
+#endif
+
+#ifdef HAVE_BOOL_T
+#ifdef HAVE_SYS_TYPES_H
+#include
+#endif
+#ifdef HAVE_STDBOOL_H
+#include
+#endif
+int
+main ()
+{
+if (sizeof (bool *) )
+ return 0;
+ ;
+ return 0;
+}
+#endif
+
+#ifdef STDC_HEADERS
+#include
+#include
+#include
+#include
+int main() { return 0; }
+#endif
+#ifdef HAVE_FILE_OFFSET_BITS
+#ifdef _FILE_OFFSET_BITS
+#undef _FILE_OFFSET_BITS
+#endif
+#define _FILE_OFFSET_BITS 64
+#include
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int main () { ; return 0; }
+#endif
+#ifdef HAVE_IOCTLSOCKET
+/* includes start */
+#ifdef HAVE_WINDOWS_H
+# ifndef WIN32_LEAN_AND_MEAN
+# define WIN32_LEAN_AND_MEAN
+# endif
+# include
+# ifdef HAVE_WINSOCK2_H
+# include
+# endif
+#endif
+
+int
+main ()
+{
+
+/* ioctlsocket source code */
+ int socket;
+ unsigned long flags = ioctlsocket(socket, FIONBIO, &flags);
+
+ ;
+ return 0;
+}
+
+#endif
+#ifdef HAVE_IOCTLSOCKET_CAMEL
+/* includes start */
+#ifdef HAVE_WINDOWS_H
+# ifndef WIN32_LEAN_AND_MEAN
+# define WIN32_LEAN_AND_MEAN
+# endif
+# include
+# ifdef HAVE_WINSOCK2_H
+# include
+# endif
+#endif
+
+int
+main ()
+{
+
+/* IoctlSocket source code */
+ if(0 != IoctlSocket(0, 0, 0))
+ return 1;
+ ;
+ return 0;
+}
+#endif
+#ifdef HAVE_IOCTLSOCKET_CAMEL_FIONBIO
+/* includes start */
+#ifdef HAVE_WINDOWS_H
+# ifndef WIN32_LEAN_AND_MEAN
+# define WIN32_LEAN_AND_MEAN
+# endif
+# include
+# ifdef HAVE_WINSOCK2_H
+# include
+# endif
+#endif
+
+int
+main ()
+{
+
+/* IoctlSocket source code */
+ long flags = 0;
+ if(0 != IoctlSocket(0, FIONBIO, &flags))
+ return 1;
+ ;
+ return 0;
+}
+#endif
+#ifdef HAVE_IOCTLSOCKET_FIONBIO
+/* includes start */
+#ifdef HAVE_WINDOWS_H
+# ifndef WIN32_LEAN_AND_MEAN
+# define WIN32_LEAN_AND_MEAN
+# endif
+# include
+# ifdef HAVE_WINSOCK2_H
+# include
+# endif
+#endif
+
+int
+main ()
+{
+
+ int flags = 0;
+ if(0 != ioctlsocket(0, FIONBIO, &flags))
+ return 1;
+
+ ;
+ return 0;
+}
+#endif
+#ifdef HAVE_IOCTL_FIONBIO
+/* headers for FIONBIO test */
+/* includes start */
+#ifdef HAVE_SYS_TYPES_H
+# include
+#endif
+#ifdef HAVE_UNISTD_H
+# include
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+# include
+#endif
+#ifdef HAVE_SYS_IOCTL_H
+# include
+#endif
+#ifdef HAVE_STROPTS_H
+# include
+#endif
+
+int
+main ()
+{
+
+ int flags = 0;
+ if(0 != ioctl(0, FIONBIO, &flags))
+ return 1;
+
+ ;
+ return 0;
+}
+#endif
+#ifdef HAVE_IOCTL_SIOCGIFADDR
+/* headers for FIONBIO test */
+/* includes start */
+#ifdef HAVE_SYS_TYPES_H
+# include
+#endif
+#ifdef HAVE_UNISTD_H
+# include
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+# include
+#endif
+#ifdef HAVE_SYS_IOCTL_H
+# include
+#endif
+#ifdef HAVE_STROPTS_H
+# include
+#endif
+#include
+
+int
+main ()
+{
+ struct ifreq ifr;
+ if(0 != ioctl(0, SIOCGIFADDR, &ifr))
+ return 1;
+
+ ;
+ return 0;
+}
+#endif
+#ifdef HAVE_SETSOCKOPT_SO_NONBLOCK
+/* includes start */
+#ifdef HAVE_WINDOWS_H
+# ifndef WIN32_LEAN_AND_MEAN
+# define WIN32_LEAN_AND_MEAN
+# endif
+# include
+# ifdef HAVE_WINSOCK2_H
+# include
+# endif
+#endif
+/* includes start */
+#ifdef HAVE_SYS_TYPES_H
+# include
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+# include
+#endif
+/* includes end */
+
+int
+main ()
+{
+ if(0 != setsockopt(0, SOL_SOCKET, SO_NONBLOCK, 0, 0))
+ return 1;
+ ;
+ return 0;
+}
+#endif
+#ifdef HAVE_GLIBC_STRERROR_R
+#include
+#include
+
+void check(char c) {}
+
+int
+main () {
+ char buffer[1024];
+ /* This will not compile if strerror_r does not return a char* */
+ check(strerror_r(EACCES, buffer, sizeof(buffer))[0]);
+ return 0;
+}
+#endif
+#ifdef HAVE_POSIX_STRERROR_R
+#include
+#include
+
+/* float, because a pointer can't be implicitly cast to float */
+void check(float f) {}
+
+int
+main () {
+ char buffer[1024];
+ /* This will not compile if strerror_r does not return an int */
+ check(strerror_r(EACCES, buffer, sizeof(buffer)));
+ return 0;
+}
+#endif
+#ifdef HAVE_FSETXATTR_6
+#include /* header from libc, not from libattr */
+int
+main() {
+ fsetxattr(0, 0, 0, 0, 0, 0);
+ return 0;
+}
+#endif
+#ifdef HAVE_FSETXATTR_5
+#include /* header from libc, not from libattr */
+int
+main() {
+ fsetxattr(0, 0, 0, 0, 0);
+ return 0;
+}
+#endif
+#ifdef HAVE_CLOCK_GETTIME_MONOTONIC
+#include
+int
+main() {
+ struct timespec ts = {0, 0};
+ clock_gettime(CLOCK_MONOTONIC, &ts);
+ return 0;
+}
+#endif
+#ifdef HAVE_BUILTIN_AVAILABLE
+int
+main() {
+ if(__builtin_available(macOS 10.12, *)) {}
+ return 0;
+}
+#endif
+#ifdef HAVE_VARIADIC_MACROS_C99
+#define c99_vmacro3(first, ...) fun3(first, __VA_ARGS__)
+#define c99_vmacro2(first, ...) fun2(first, __VA_ARGS__)
+
+int fun3(int arg1, int arg2, int arg3);
+int fun2(int arg1, int arg2);
+
+int fun3(int arg1, int arg2, int arg3) {
+ return arg1 + arg2 + arg3;
+}
+int fun2(int arg1, int arg2) {
+ return arg1 + arg2;
+}
+
+int
+main() {
+ int res3 = c99_vmacro3(1, 2, 3);
+ int res2 = c99_vmacro2(1, 2);
+ (void)res3;
+ (void)res2;
+ return 0;
+}
+#endif
+#ifdef HAVE_VARIADIC_MACROS_GCC
+#define gcc_vmacro3(first, args...) fun3(first, args)
+#define gcc_vmacro2(first, args...) fun2(first, args)
+
+int fun3(int arg1, int arg2, int arg3);
+int fun2(int arg1, int arg2);
+
+int fun3(int arg1, int arg2, int arg3) {
+ return arg1 + arg2 + arg3;
+}
+int fun2(int arg1, int arg2) {
+ return arg1 + arg2;
+}
+
+int
+main() {
+ int res3 = gcc_vmacro3(1, 2, 3);
+ int res2 = gcc_vmacro2(1, 2);
+ (void)res3;
+ (void)res2;
+ return 0;
+}
+#endif
+#ifdef HAVE_ATOMIC
+/* includes start */
+#ifdef HAVE_SYS_TYPES_H
+# include
+#endif
+#ifdef HAVE_UNISTD_H
+# include
+#endif
+#ifdef HAVE_STDATOMIC_H
+# include
+#endif
+/* includes end */
+
+int
+main() {
+ _Atomic int i = 1;
+ i = 0; // Force an atomic-write operation.
+ return i;
+}
+#endif
+#ifdef HAVE_WIN32_WINNT
+/* includes start */
+#ifdef WIN32
+# include "../lib/setup-win32.h"
+#endif
+/* includes end */
+
+#define enquote(x) #x
+#define expand(x) enquote(x)
+#pragma message("_WIN32_WINNT=" expand(_WIN32_WINNT))
+
+int
+main() {
+ return 0;
+}
+#endif
diff --git a/src/fire/curl-8.1.2/CMake/FindBearSSL.cmake b/src/fire/curl-8.1.2/CMake/FindBearSSL.cmake
new file mode 100644
index 0000000..56a064e
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/FindBearSSL.cmake
@@ -0,0 +1,32 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+find_path(BEARSSL_INCLUDE_DIRS bearssl.h)
+
+find_library(BEARSSL_LIBRARY bearssl)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(BEARSSL DEFAULT_MSG
+ BEARSSL_INCLUDE_DIRS BEARSSL_LIBRARY)
+
+mark_as_advanced(BEARSSL_INCLUDE_DIRS BEARSSL_LIBRARY)
diff --git a/src/fire/curl-8.1.2/CMake/FindBrotli.cmake b/src/fire/curl-8.1.2/CMake/FindBrotli.cmake
new file mode 100644
index 0000000..11ab7f8
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/FindBrotli.cmake
@@ -0,0 +1,43 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+include(FindPackageHandleStandardArgs)
+
+find_path(BROTLI_INCLUDE_DIR "brotli/decode.h")
+
+find_library(BROTLICOMMON_LIBRARY NAMES brotlicommon)
+find_library(BROTLIDEC_LIBRARY NAMES brotlidec)
+
+find_package_handle_standard_args(Brotli
+ FOUND_VAR
+ BROTLI_FOUND
+ REQUIRED_VARS
+ BROTLIDEC_LIBRARY
+ BROTLICOMMON_LIBRARY
+ BROTLI_INCLUDE_DIR
+ FAIL_MESSAGE
+ "Could NOT find Brotli"
+)
+
+set(BROTLI_INCLUDE_DIRS ${BROTLI_INCLUDE_DIR})
+set(BROTLI_LIBRARIES ${BROTLICOMMON_LIBRARY} ${BROTLIDEC_LIBRARY})
diff --git a/src/fire/curl-8.1.2/CMake/FindCARES.cmake b/src/fire/curl-8.1.2/CMake/FindCARES.cmake
new file mode 100644
index 0000000..fa75891
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/FindCARES.cmake
@@ -0,0 +1,47 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+# - Find c-ares
+# Find the c-ares includes and library
+# This module defines
+# CARES_INCLUDE_DIR, where to find ares.h, etc.
+# CARES_LIBRARIES, the libraries needed to use c-ares.
+# CARES_FOUND, If false, do not try to use c-ares.
+# also defined, but not for general use are
+# CARES_LIBRARY, where to find the c-ares library.
+
+find_path(CARES_INCLUDE_DIR ares.h)
+
+set(CARES_NAMES ${CARES_NAMES} cares)
+find_library(CARES_LIBRARY
+ NAMES ${CARES_NAMES}
+ )
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(CARES
+ REQUIRED_VARS CARES_LIBRARY CARES_INCLUDE_DIR)
+
+mark_as_advanced(
+ CARES_LIBRARY
+ CARES_INCLUDE_DIR
+ )
diff --git a/src/fire/curl-8.1.2/CMake/FindGSS.cmake b/src/fire/curl-8.1.2/CMake/FindGSS.cmake
new file mode 100644
index 0000000..b244e61
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/FindGSS.cmake
@@ -0,0 +1,312 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+# - Try to find the GSS Kerberos library
+# Once done this will define
+#
+# GSS_ROOT_DIR - Set this variable to the root installation of GSS
+#
+# Read-Only variables:
+# GSS_FOUND - system has the Heimdal library
+# GSS_FLAVOUR - "MIT" or "Heimdal" if anything found.
+# GSS_INCLUDE_DIR - the Heimdal include directory
+# GSS_LIBRARIES - The libraries needed to use GSS
+# GSS_LINK_DIRECTORIES - Directories to add to linker search path
+# GSS_LINKER_FLAGS - Additional linker flags
+# GSS_COMPILER_FLAGS - Additional compiler flags
+# GSS_VERSION - This is set to version advertised by pkg-config or read from manifest.
+# In case the library is found but no version info available it'll be set to "unknown"
+
+set(_MIT_MODNAME mit-krb5-gssapi)
+set(_HEIMDAL_MODNAME heimdal-gssapi)
+
+include(CheckIncludeFile)
+include(CheckIncludeFiles)
+include(CheckTypeSize)
+
+set(_GSS_ROOT_HINTS
+ "${GSS_ROOT_DIR}"
+ "$ENV{GSS_ROOT_DIR}"
+)
+
+# try to find library using system pkg-config if user didn't specify root dir
+if(NOT GSS_ROOT_DIR AND NOT "$ENV{GSS_ROOT_DIR}")
+ if(UNIX)
+ find_package(PkgConfig QUIET)
+ pkg_search_module(_GSS_PKG ${_MIT_MODNAME} ${_HEIMDAL_MODNAME})
+ list(APPEND _GSS_ROOT_HINTS "${_GSS_PKG_PREFIX}")
+ elseif(WIN32)
+ list(APPEND _GSS_ROOT_HINTS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MIT\\Kerberos;InstallDir]")
+ endif()
+endif()
+
+if(NOT _GSS_FOUND) #not found by pkg-config. Let's take more traditional approach.
+ find_file(_GSS_CONFIGURE_SCRIPT
+ NAMES
+ "krb5-config"
+ HINTS
+ ${_GSS_ROOT_HINTS}
+ PATH_SUFFIXES
+ bin
+ NO_CMAKE_PATH
+ NO_CMAKE_ENVIRONMENT_PATH
+ )
+
+ # if not found in user-supplied directories, maybe system knows better
+ find_file(_GSS_CONFIGURE_SCRIPT
+ NAMES
+ "krb5-config"
+ PATH_SUFFIXES
+ bin
+ )
+
+ if(_GSS_CONFIGURE_SCRIPT)
+ execute_process(
+ COMMAND ${_GSS_CONFIGURE_SCRIPT} "--cflags" "gssapi"
+ OUTPUT_VARIABLE _GSS_CFLAGS
+ RESULT_VARIABLE _GSS_CONFIGURE_FAILED
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ message(STATUS "CFLAGS: ${_GSS_CFLAGS}")
+ if(NOT _GSS_CONFIGURE_FAILED) # 0 means success
+ # should also work in an odd case when multiple directories are given
+ string(STRIP "${_GSS_CFLAGS}" _GSS_CFLAGS)
+ string(REGEX REPLACE " +-I" ";" _GSS_CFLAGS "${_GSS_CFLAGS}")
+ string(REGEX REPLACE " +-([^I][^ \\t;]*)" ";-\\1" _GSS_CFLAGS "${_GSS_CFLAGS}")
+
+ foreach(_flag ${_GSS_CFLAGS})
+ if(_flag MATCHES "^-I.*")
+ string(REGEX REPLACE "^-I" "" _val "${_flag}")
+ list(APPEND _GSS_INCLUDE_DIR "${_val}")
+ else()
+ list(APPEND _GSS_COMPILER_FLAGS "${_flag}")
+ endif()
+ endforeach()
+ endif()
+
+ execute_process(
+ COMMAND ${_GSS_CONFIGURE_SCRIPT} "--libs" "gssapi"
+ OUTPUT_VARIABLE _GSS_LIB_FLAGS
+ RESULT_VARIABLE _GSS_CONFIGURE_FAILED
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ message(STATUS "LDFLAGS: ${_GSS_LIB_FLAGS}")
+
+ if(NOT _GSS_CONFIGURE_FAILED) # 0 means success
+ # this script gives us libraries and link directories. Blah. We have to deal with it.
+ string(STRIP "${_GSS_LIB_FLAGS}" _GSS_LIB_FLAGS)
+ string(REGEX REPLACE " +-(L|l)" ";-\\1" _GSS_LIB_FLAGS "${_GSS_LIB_FLAGS}")
+ string(REGEX REPLACE " +-([^Ll][^ \\t;]*)" ";-\\1" _GSS_LIB_FLAGS "${_GSS_LIB_FLAGS}")
+
+ foreach(_flag ${_GSS_LIB_FLAGS})
+ if(_flag MATCHES "^-l.*")
+ string(REGEX REPLACE "^-l" "" _val "${_flag}")
+ list(APPEND _GSS_LIBRARIES "${_val}")
+ elseif(_flag MATCHES "^-L.*")
+ string(REGEX REPLACE "^-L" "" _val "${_flag}")
+ list(APPEND _GSS_LINK_DIRECTORIES "${_val}")
+ else()
+ list(APPEND _GSS_LINKER_FLAGS "${_flag}")
+ endif()
+ endforeach()
+ endif()
+
+ execute_process(
+ COMMAND ${_GSS_CONFIGURE_SCRIPT} "--version"
+ OUTPUT_VARIABLE _GSS_VERSION
+ RESULT_VARIABLE _GSS_CONFIGURE_FAILED
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+
+ # older versions may not have the "--version" parameter. In this case we just don't care.
+ if(_GSS_CONFIGURE_FAILED)
+ set(_GSS_VERSION 0)
+ endif()
+
+ execute_process(
+ COMMAND ${_GSS_CONFIGURE_SCRIPT} "--vendor"
+ OUTPUT_VARIABLE _GSS_VENDOR
+ RESULT_VARIABLE _GSS_CONFIGURE_FAILED
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+
+ # older versions may not have the "--vendor" parameter. In this case we just don't care.
+ if(_GSS_CONFIGURE_FAILED)
+ set(GSS_FLAVOUR "Heimdal") # most probably, shouldn't really matter
+ else()
+ if(_GSS_VENDOR MATCHES ".*H|heimdal.*")
+ set(GSS_FLAVOUR "Heimdal")
+ else()
+ set(GSS_FLAVOUR "MIT")
+ endif()
+ endif()
+
+ else() # either there is no config script or we are on a platform that doesn't provide one (Windows?)
+
+ find_path(_GSS_INCLUDE_DIR
+ NAMES
+ "gssapi/gssapi.h"
+ HINTS
+ ${_GSS_ROOT_HINTS}
+ PATH_SUFFIXES
+ include
+ inc
+ )
+
+ if(_GSS_INCLUDE_DIR) #jay, we've found something
+ set(CMAKE_REQUIRED_INCLUDES "${_GSS_INCLUDE_DIR}")
+ check_include_files( "gssapi/gssapi_generic.h;gssapi/gssapi_krb5.h" _GSS_HAVE_MIT_HEADERS)
+
+ if(_GSS_HAVE_MIT_HEADERS)
+ set(GSS_FLAVOUR "MIT")
+ else()
+ # prevent compiling the header - just check if we can include it
+ list(APPEND CMAKE_REQUIRED_DEFINITIONS -D__ROKEN_H__)
+ check_include_file( "roken.h" _GSS_HAVE_ROKEN_H)
+
+ check_include_file( "heimdal/roken.h" _GSS_HAVE_HEIMDAL_ROKEN_H)
+ if(_GSS_HAVE_ROKEN_H OR _GSS_HAVE_HEIMDAL_ROKEN_H)
+ set(GSS_FLAVOUR "Heimdal")
+ endif()
+ list(REMOVE_ITEM CMAKE_REQUIRED_DEFINITIONS -D__ROKEN_H__)
+ endif()
+ else()
+ # I'm not convinced if this is the right way but this is what autotools do at the moment
+ find_path(_GSS_INCLUDE_DIR
+ NAMES
+ "gssapi.h"
+ HINTS
+ ${_GSS_ROOT_HINTS}
+ PATH_SUFFIXES
+ include
+ inc
+ )
+
+ if(_GSS_INCLUDE_DIR)
+ set(GSS_FLAVOUR "Heimdal")
+ endif()
+ endif()
+
+ # if we have headers, check if we can link libraries
+ if(GSS_FLAVOUR)
+ set(_GSS_LIBDIR_SUFFIXES "")
+ set(_GSS_LIBDIR_HINTS ${_GSS_ROOT_HINTS})
+ get_filename_component(_GSS_CALCULATED_POTENTIAL_ROOT "${_GSS_INCLUDE_DIR}" PATH)
+ list(APPEND _GSS_LIBDIR_HINTS ${_GSS_CALCULATED_POTENTIAL_ROOT})
+
+ if(WIN32)
+ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+ list(APPEND _GSS_LIBDIR_SUFFIXES "lib/AMD64")
+ if(GSS_FLAVOUR STREQUAL "MIT")
+ set(_GSS_LIBNAME "gssapi64")
+ else()
+ set(_GSS_LIBNAME "libgssapi")
+ endif()
+ else()
+ list(APPEND _GSS_LIBDIR_SUFFIXES "lib/i386")
+ if(GSS_FLAVOUR STREQUAL "MIT")
+ set(_GSS_LIBNAME "gssapi32")
+ else()
+ set(_GSS_LIBNAME "libgssapi")
+ endif()
+ endif()
+ else()
+ list(APPEND _GSS_LIBDIR_SUFFIXES "lib;lib64") # those suffixes are not checked for HINTS
+ if(GSS_FLAVOUR STREQUAL "MIT")
+ set(_GSS_LIBNAME "gssapi_krb5")
+ else()
+ set(_GSS_LIBNAME "gssapi")
+ endif()
+ endif()
+
+ find_library(_GSS_LIBRARIES
+ NAMES
+ ${_GSS_LIBNAME}
+ HINTS
+ ${_GSS_LIBDIR_HINTS}
+ PATH_SUFFIXES
+ ${_GSS_LIBDIR_SUFFIXES}
+ )
+
+ endif()
+ endif()
+else()
+ if(_GSS_PKG_${_MIT_MODNAME}_VERSION)
+ set(GSS_FLAVOUR "MIT")
+ set(_GSS_VERSION _GSS_PKG_${_MIT_MODNAME}_VERSION)
+ else()
+ set(GSS_FLAVOUR "Heimdal")
+ set(_GSS_VERSION _GSS_PKG_${_MIT_HEIMDAL}_VERSION)
+ endif()
+endif()
+
+set(GSS_INCLUDE_DIR ${_GSS_INCLUDE_DIR})
+set(GSS_LIBRARIES ${_GSS_LIBRARIES})
+set(GSS_LINK_DIRECTORIES ${_GSS_LINK_DIRECTORIES})
+set(GSS_LINKER_FLAGS ${_GSS_LINKER_FLAGS})
+set(GSS_COMPILER_FLAGS ${_GSS_COMPILER_FLAGS})
+set(GSS_VERSION ${_GSS_VERSION})
+
+if(GSS_FLAVOUR)
+ if(NOT GSS_VERSION AND GSS_FLAVOUR STREQUAL "Heimdal")
+ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+ set(HEIMDAL_MANIFEST_FILE "Heimdal.Application.amd64.manifest")
+ else()
+ set(HEIMDAL_MANIFEST_FILE "Heimdal.Application.x86.manifest")
+ endif()
+
+ if(EXISTS "${GSS_INCLUDE_DIR}/${HEIMDAL_MANIFEST_FILE}")
+ file(STRINGS "${GSS_INCLUDE_DIR}/${HEIMDAL_MANIFEST_FILE}" heimdal_version_str
+ REGEX "^.*version=\"[0-9]\\.[^\"]+\".*$")
+
+ string(REGEX MATCH "[0-9]\\.[^\"]+"
+ GSS_VERSION "${heimdal_version_str}")
+ endif()
+
+ if(NOT GSS_VERSION)
+ set(GSS_VERSION "Heimdal Unknown")
+ endif()
+ elseif(NOT GSS_VERSION AND GSS_FLAVOUR STREQUAL "MIT")
+ get_filename_component(_MIT_VERSION "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MIT\\Kerberos\\SDK\\CurrentVersion;VersionString]" NAME CACHE)
+ if(WIN32 AND _MIT_VERSION)
+ set(GSS_VERSION "${_MIT_VERSION}")
+ else()
+ set(GSS_VERSION "MIT Unknown")
+ endif()
+ endif()
+endif()
+
+include(FindPackageHandleStandardArgs)
+
+set(_GSS_REQUIRED_VARS GSS_LIBRARIES GSS_FLAVOUR)
+
+find_package_handle_standard_args(GSS
+ REQUIRED_VARS
+ ${_GSS_REQUIRED_VARS}
+ VERSION_VAR
+ GSS_VERSION
+ FAIL_MESSAGE
+ "Could NOT find GSS, try to set the path to GSS root folder in the system variable GSS_ROOT_DIR"
+)
+
+mark_as_advanced(GSS_INCLUDE_DIR GSS_LIBRARIES)
diff --git a/src/fire/curl-8.1.2/CMake/FindLibPSL.cmake b/src/fire/curl-8.1.2/CMake/FindLibPSL.cmake
new file mode 100644
index 0000000..e3bd68d
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/FindLibPSL.cmake
@@ -0,0 +1,45 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+# - Try to find the libpsl library
+# Once done this will define
+#
+# LIBPSL_FOUND - system has the libpsl library
+# LIBPSL_INCLUDE_DIR - the libpsl include directory
+# LIBPSL_LIBRARY - the libpsl library name
+
+find_path(LIBPSL_INCLUDE_DIR libpsl.h)
+
+find_library(LIBPSL_LIBRARY NAMES psl libpsl)
+
+if(LIBPSL_INCLUDE_DIR)
+ file(STRINGS "${LIBPSL_INCLUDE_DIR}/libpsl.h" libpsl_version_str REGEX "^#define[\t ]+PSL_VERSION[\t ]+\"(.*)\"")
+ string(REGEX REPLACE "^.*\"([^\"]+)\"" "\\1" LIBPSL_VERSION "${libpsl_version_str}")
+endif()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(LibPSL
+ REQUIRED_VARS LIBPSL_LIBRARY LIBPSL_INCLUDE_DIR
+ VERSION_VAR LIBPSL_VERSION)
+
+mark_as_advanced(LIBPSL_INCLUDE_DIR LIBPSL_LIBRARY)
diff --git a/src/fire/curl-8.1.2/CMake/FindLibSSH2.cmake b/src/fire/curl-8.1.2/CMake/FindLibSSH2.cmake
new file mode 100644
index 0000000..a0c251a
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/FindLibSSH2.cmake
@@ -0,0 +1,45 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+# - Try to find the libssh2 library
+# Once done this will define
+#
+# LIBSSH2_FOUND - system has the libssh2 library
+# LIBSSH2_INCLUDE_DIR - the libssh2 include directory
+# LIBSSH2_LIBRARY - the libssh2 library name
+
+find_path(LIBSSH2_INCLUDE_DIR libssh2.h)
+
+find_library(LIBSSH2_LIBRARY NAMES ssh2 libssh2)
+
+if(LIBSSH2_INCLUDE_DIR)
+ file(STRINGS "${LIBSSH2_INCLUDE_DIR}/libssh2.h" libssh2_version_str REGEX "^#define[\t ]+LIBSSH2_VERSION[\t ]+\"(.*)\"")
+ string(REGEX REPLACE "^.*\"([^\"]+)\"" "\\1" LIBSSH2_VERSION "${libssh2_version_str}")
+endif()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(LibSSH2
+ REQUIRED_VARS LIBSSH2_LIBRARY LIBSSH2_INCLUDE_DIR
+ VERSION_VAR LIBSSH2_VERSION)
+
+mark_as_advanced(LIBSSH2_INCLUDE_DIR LIBSSH2_LIBRARY)
diff --git a/src/fire/curl-8.1.2/CMake/FindMSH3.cmake b/src/fire/curl-8.1.2/CMake/FindMSH3.cmake
new file mode 100644
index 0000000..7d9c6b6
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/FindMSH3.cmake
@@ -0,0 +1,70 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+
+#[=======================================================================[.rst:
+FindMSH3
+----------
+
+Find the msh3 library
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+``MSH3_FOUND``
+ System has msh3
+``MSH3_INCLUDE_DIRS``
+ The msh3 include directories.
+``MSH3_LIBRARIES``
+ The libraries needed to use msh3
+#]=======================================================================]
+if(UNIX)
+ find_package(PkgConfig QUIET)
+ pkg_search_module(PC_MSH3 libmsh3)
+endif()
+
+find_path(MSH3_INCLUDE_DIR msh3.h
+ HINTS
+ ${PC_MSH3_INCLUDEDIR}
+ ${PC_MSH3_INCLUDE_DIRS}
+)
+
+find_library(MSH3_LIBRARY NAMES msh3
+ HINTS
+ ${PC_MSH3_LIBDIR}
+ ${PC_MSH3_LIBRARY_DIRS}
+)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(MSH3
+ REQUIRED_VARS
+ MSH3_LIBRARY
+ MSH3_INCLUDE_DIR
+)
+
+if(MSH3_FOUND)
+ set(MSH3_LIBRARIES ${MSH3_LIBRARY})
+ set(MSH3_INCLUDE_DIRS ${MSH3_INCLUDE_DIR})
+endif()
+
+mark_as_advanced(MSH3_INCLUDE_DIRS MSH3_LIBRARIES)
diff --git a/src/fire/curl-8.1.2/CMake/FindMbedTLS.cmake b/src/fire/curl-8.1.2/CMake/FindMbedTLS.cmake
new file mode 100644
index 0000000..814bd97
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/FindMbedTLS.cmake
@@ -0,0 +1,36 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+find_path(MBEDTLS_INCLUDE_DIRS mbedtls/ssl.h)
+
+find_library(MBEDTLS_LIBRARY mbedtls)
+find_library(MBEDX509_LIBRARY mbedx509)
+find_library(MBEDCRYPTO_LIBRARY mbedcrypto)
+
+set(MBEDTLS_LIBRARIES "${MBEDTLS_LIBRARY}" "${MBEDX509_LIBRARY}" "${MBEDCRYPTO_LIBRARY}")
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(MbedTLS DEFAULT_MSG
+ MBEDTLS_INCLUDE_DIRS MBEDTLS_LIBRARY MBEDX509_LIBRARY MBEDCRYPTO_LIBRARY)
+
+mark_as_advanced(MBEDTLS_INCLUDE_DIRS MBEDTLS_LIBRARY MBEDX509_LIBRARY MBEDCRYPTO_LIBRARY)
diff --git a/src/fire/curl-8.1.2/CMake/FindNGHTTP2.cmake b/src/fire/curl-8.1.2/CMake/FindNGHTTP2.cmake
new file mode 100644
index 0000000..3957646
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/FindNGHTTP2.cmake
@@ -0,0 +1,41 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+include(FindPackageHandleStandardArgs)
+
+find_path(NGHTTP2_INCLUDE_DIR "nghttp2/nghttp2.h")
+
+find_library(NGHTTP2_LIBRARY NAMES nghttp2)
+
+find_package_handle_standard_args(NGHTTP2
+ FOUND_VAR
+ NGHTTP2_FOUND
+ REQUIRED_VARS
+ NGHTTP2_LIBRARY
+ NGHTTP2_INCLUDE_DIR
+)
+
+set(NGHTTP2_INCLUDE_DIRS ${NGHTTP2_INCLUDE_DIR})
+set(NGHTTP2_LIBRARIES ${NGHTTP2_LIBRARY})
+
+mark_as_advanced(NGHTTP2_INCLUDE_DIRS NGHTTP2_LIBRARIES)
diff --git a/src/fire/curl-8.1.2/CMake/FindNGHTTP3.cmake b/src/fire/curl-8.1.2/CMake/FindNGHTTP3.cmake
new file mode 100644
index 0000000..9b13e6c
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/FindNGHTTP3.cmake
@@ -0,0 +1,78 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+
+#[=======================================================================[.rst:
+FindNGHTTP3
+----------
+
+Find the nghttp3 library
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+``NGHTTP3_FOUND``
+ System has nghttp3
+``NGHTTP3_INCLUDE_DIRS``
+ The nghttp3 include directories.
+``NGHTTP3_LIBRARIES``
+ The libraries needed to use nghttp3
+``NGHTTP3_VERSION``
+ version of nghttp3.
+#]=======================================================================]
+
+if(UNIX)
+ find_package(PkgConfig QUIET)
+ pkg_search_module(PC_NGHTTP3 libnghttp3)
+endif()
+
+find_path(NGHTTP3_INCLUDE_DIR nghttp3/nghttp3.h
+ HINTS
+ ${PC_NGHTTP3_INCLUDEDIR}
+ ${PC_NGHTTP3_INCLUDE_DIRS}
+)
+
+find_library(NGHTTP3_LIBRARY NAMES nghttp3
+ HINTS
+ ${PC_NGHTTP3_LIBDIR}
+ ${PC_NGHTTP3_LIBRARY_DIRS}
+)
+
+if(PC_NGHTTP3_VERSION)
+ set(NGHTTP3_VERSION ${PC_NGHTTP3_VERSION})
+endif()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(NGHTTP3
+ REQUIRED_VARS
+ NGHTTP3_LIBRARY
+ NGHTTP3_INCLUDE_DIR
+ VERSION_VAR NGHTTP3_VERSION
+)
+
+if(NGHTTP3_FOUND)
+ set(NGHTTP3_LIBRARIES ${NGHTTP3_LIBRARY})
+ set(NGHTTP3_INCLUDE_DIRS ${NGHTTP3_INCLUDE_DIR})
+endif()
+
+mark_as_advanced(NGHTTP3_INCLUDE_DIRS NGHTTP3_LIBRARIES)
diff --git a/src/fire/curl-8.1.2/CMake/FindNGTCP2.cmake b/src/fire/curl-8.1.2/CMake/FindNGTCP2.cmake
new file mode 100644
index 0000000..ff0d49e
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/FindNGTCP2.cmake
@@ -0,0 +1,115 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+
+#[=======================================================================[.rst:
+FindNGTCP2
+----------
+
+Find the ngtcp2 library
+
+This module accepts optional COMPONENTS to control the crypto library (these are
+mutually exclusive)::
+
+ OpenSSL: Use libngtcp2_crypto_openssl
+ GnuTLS: Use libngtcp2_crypto_gnutls
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+``NGTCP2_FOUND``
+ System has ngtcp2
+``NGTCP2_INCLUDE_DIRS``
+ The ngtcp2 include directories.
+``NGTCP2_LIBRARIES``
+ The libraries needed to use ngtcp2
+``NGTCP2_VERSION``
+ version of ngtcp2.
+#]=======================================================================]
+
+if(UNIX)
+ find_package(PkgConfig QUIET)
+ pkg_search_module(PC_NGTCP2 libngtcp2)
+endif()
+
+find_path(NGTCP2_INCLUDE_DIR ngtcp2/ngtcp2.h
+ HINTS
+ ${PC_NGTCP2_INCLUDEDIR}
+ ${PC_NGTCP2_INCLUDE_DIRS}
+)
+
+find_library(NGTCP2_LIBRARY NAMES ngtcp2
+ HINTS
+ ${PC_NGTCP2_LIBDIR}
+ ${PC_NGTCP2_LIBRARY_DIRS}
+)
+
+if(PC_NGTCP2_VERSION)
+ set(NGTCP2_VERSION ${PC_NGTCP2_VERSION})
+endif()
+
+if(NGTCP2_FIND_COMPONENTS)
+ set(NGTCP2_CRYPTO_BACKEND "")
+ foreach(component IN LISTS NGTCP2_FIND_COMPONENTS)
+ if(component MATCHES "^(BoringSSL|OpenSSL|wolfSSL|GnuTLS)")
+ if(NGTCP2_CRYPTO_BACKEND)
+ message(FATAL_ERROR "NGTCP2: Only one crypto library can be selected")
+ endif()
+ set(NGTCP2_CRYPTO_BACKEND ${component})
+ endif()
+ endforeach()
+
+ if(NGTCP2_CRYPTO_BACKEND)
+ string(TOLOWER "ngtcp2_crypto_${NGTCP2_CRYPTO_BACKEND}" _crypto_library)
+ if(UNIX)
+ pkg_search_module(PC_${_crypto_library} lib${_crypto_library})
+ endif()
+ find_library(${_crypto_library}_LIBRARY
+ NAMES
+ ${_crypto_library}
+ HINTS
+ ${PC_${_crypto_library}_LIBDIR}
+ ${PC_${_crypto_library}_LIBRARY_DIRS}
+ )
+ if(${_crypto_library}_LIBRARY)
+ set(NGTCP2_${NGTCP2_CRYPTO_BACKEND}_FOUND TRUE)
+ set(NGTCP2_CRYPTO_LIBRARY ${${_crypto_library}_LIBRARY})
+ endif()
+ endif()
+endif()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(NGTCP2
+ REQUIRED_VARS
+ NGTCP2_LIBRARY
+ NGTCP2_INCLUDE_DIR
+ VERSION_VAR NGTCP2_VERSION
+ HANDLE_COMPONENTS
+)
+
+if(NGTCP2_FOUND)
+ set(NGTCP2_LIBRARIES ${NGTCP2_LIBRARY} ${NGTCP2_CRYPTO_LIBRARY})
+ set(NGTCP2_INCLUDE_DIRS ${NGTCP2_INCLUDE_DIR})
+endif()
+
+mark_as_advanced(NGTCP2_INCLUDE_DIRS NGTCP2_LIBRARIES)
diff --git a/src/fire/curl-8.1.2/CMake/FindNSS.cmake b/src/fire/curl-8.1.2/CMake/FindNSS.cmake
new file mode 100644
index 0000000..ccddf42
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/FindNSS.cmake
@@ -0,0 +1,40 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+if(UNIX)
+ find_package(PkgConfig QUIET)
+ pkg_search_module(PC_NSS nss)
+endif()
+if(NOT PC_NSS_FOUND)
+ return()
+endif()
+
+set(NSS_LIBRARIES ${PC_NSS_LINK_LIBRARIES})
+set(NSS_INCLUDE_DIRS ${PC_NSS_INCLUDE_DIRS})
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(NSS
+ REQUIRED_VARS NSS_LIBRARIES NSS_INCLUDE_DIRS
+ VERSION_VAR PC_NSS_VERSION)
+
+mark_as_advanced(NSS_INCLUDE_DIRS NSS_LIBRARIES)
diff --git a/src/fire/curl-8.1.2/CMake/FindQUICHE.cmake b/src/fire/curl-8.1.2/CMake/FindQUICHE.cmake
new file mode 100644
index 0000000..0488463
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/FindQUICHE.cmake
@@ -0,0 +1,70 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+
+#[=======================================================================[.rst:
+FindQUICHE
+----------
+
+Find the quiche library
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+``QUICHE_FOUND``
+ System has quiche
+``QUICHE_INCLUDE_DIRS``
+ The quiche include directories.
+``QUICHE_LIBRARIES``
+ The libraries needed to use quiche
+#]=======================================================================]
+if(UNIX)
+ find_package(PkgConfig QUIET)
+ pkg_search_module(PC_QUICHE quiche)
+endif()
+
+find_path(QUICHE_INCLUDE_DIR quiche.h
+ HINTS
+ ${PC_QUICHE_INCLUDEDIR}
+ ${PC_QUICHE_INCLUDE_DIRS}
+)
+
+find_library(QUICHE_LIBRARY NAMES quiche
+ HINTS
+ ${PC_QUICHE_LIBDIR}
+ ${PC_QUICHE_LIBRARY_DIRS}
+)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(QUICHE
+ REQUIRED_VARS
+ QUICHE_LIBRARY
+ QUICHE_INCLUDE_DIR
+)
+
+if(QUICHE_FOUND)
+ set(QUICHE_LIBRARIES ${QUICHE_LIBRARY})
+ set(QUICHE_INCLUDE_DIRS ${QUICHE_INCLUDE_DIR})
+endif()
+
+mark_as_advanced(QUICHE_INCLUDE_DIRS QUICHE_LIBRARIES)
diff --git a/src/fire/curl-8.1.2/CMake/FindWolfSSL.cmake b/src/fire/curl-8.1.2/CMake/FindWolfSSL.cmake
new file mode 100644
index 0000000..d67c0eb
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/FindWolfSSL.cmake
@@ -0,0 +1,36 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+find_path(WolfSSL_INCLUDE_DIR NAMES wolfssl/ssl.h)
+find_library(WolfSSL_LIBRARY NAMES wolfssl)
+mark_as_advanced(WolfSSL_INCLUDE_DIR WolfSSL_LIBRARY)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(WolfSSL
+ REQUIRED_VARS WolfSSL_INCLUDE_DIR WolfSSL_LIBRARY
+ )
+
+if(WolfSSL_FOUND)
+ set(WolfSSL_INCLUDE_DIRS ${WolfSSL_INCLUDE_DIR})
+ set(WolfSSL_LIBRARIES ${WolfSSL_LIBRARY})
+endif()
diff --git a/src/fire/curl-8.1.2/CMake/FindZstd.cmake b/src/fire/curl-8.1.2/CMake/FindZstd.cmake
new file mode 100644
index 0000000..973e6ad
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/FindZstd.cmake
@@ -0,0 +1,71 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+
+#[=======================================================================[.rst:
+FindZstd
+----------
+
+Find the zstd library
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+``Zstd_FOUND``
+ System has zstd
+``Zstd_INCLUDE_DIRS``
+ The zstd include directories.
+``Zstd_LIBRARIES``
+ The libraries needed to use zstd
+#]=======================================================================]
+
+if(UNIX)
+ find_package(PkgConfig QUIET)
+ pkg_search_module(PC_Zstd libzstd)
+endif()
+
+find_path(Zstd_INCLUDE_DIR zstd.h
+ HINTS
+ ${PC_Zstd_INCLUDEDIR}
+ ${PC_Zstd_INCLUDE_DIRS}
+)
+
+find_library(Zstd_LIBRARY NAMES zstd
+ HINTS
+ ${PC_Zstd_LIBDIR}
+ ${PC_Zstd_LIBRARY_DIRS}
+)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Zstd
+ REQUIRED_VARS
+ Zstd_LIBRARY
+ Zstd_INCLUDE_DIR
+)
+
+if(Zstd_FOUND)
+ set(Zstd_LIBRARIES ${Zstd_LIBRARY})
+ set(Zstd_INCLUDE_DIRS ${Zstd_INCLUDE_DIR})
+endif()
+
+mark_as_advanced(Zstd_INCLUDE_DIRS Zstd_LIBRARIES)
diff --git a/src/fire/curl-8.1.2/CMake/Macros.cmake b/src/fire/curl-8.1.2/CMake/Macros.cmake
new file mode 100644
index 0000000..e12bf30
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/Macros.cmake
@@ -0,0 +1,122 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+#File defines convenience macros for available feature testing
+
+# This macro checks if the symbol exists in the library and if it
+# does, it prepends library to the list. It is intended to be called
+# multiple times with a sequence of possibly dependent libraries in
+# order of least-to-most-dependent. Some libraries depend on others
+# to link correctly.
+macro(check_library_exists_concat LIBRARY SYMBOL VARIABLE)
+ check_library_exists("${LIBRARY};${CURL_LIBS}" ${SYMBOL} "${CMAKE_LIBRARY_PATH}"
+ ${VARIABLE})
+ if(${VARIABLE})
+ set(CURL_LIBS ${LIBRARY} ${CURL_LIBS})
+ endif()
+endmacro()
+
+# Check if header file exists and add it to the list.
+# This macro is intended to be called multiple times with a sequence of
+# possibly dependent header files. Some headers depend on others to be
+# compiled correctly.
+macro(check_include_file_concat FILE VARIABLE)
+ check_include_files("${CURL_INCLUDES};${FILE}" ${VARIABLE})
+ if(${VARIABLE})
+ set(CURL_INCLUDES ${CURL_INCLUDES} ${FILE})
+ set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -D${VARIABLE}")
+ endif()
+endmacro()
+
+# For other curl specific tests, use this macro.
+macro(curl_internal_test CURL_TEST)
+ if(NOT DEFINED "${CURL_TEST}")
+ set(MACRO_CHECK_FUNCTION_DEFINITIONS
+ "-D${CURL_TEST} ${CURL_TEST_DEFINES} ${CMAKE_REQUIRED_FLAGS}")
+ if(CMAKE_REQUIRED_LIBRARIES)
+ set(CURL_TEST_ADD_LIBRARIES
+ "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
+ endif()
+
+ message(STATUS "Performing Curl Test ${CURL_TEST}")
+ try_compile(${CURL_TEST}
+ ${CMAKE_BINARY_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/CMake/CurlTests.c
+ CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
+ "${CURL_TEST_ADD_LIBRARIES}"
+ OUTPUT_VARIABLE OUTPUT)
+ if(${CURL_TEST})
+ set(${CURL_TEST} 1 CACHE INTERNAL "Curl test ${FUNCTION}")
+ message(STATUS "Performing Curl Test ${CURL_TEST} - Success")
+ file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+ "Performing Curl Test ${CURL_TEST} passed with the following output:\n"
+ "${OUTPUT}\n")
+ else()
+ message(STATUS "Performing Curl Test ${CURL_TEST} - Failed")
+ set(${CURL_TEST} "" CACHE INTERNAL "Curl test ${FUNCTION}")
+ file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+ "Performing Curl Test ${CURL_TEST} failed with the following output:\n"
+ "${OUTPUT}\n")
+ endif()
+ endif()
+endmacro()
+
+macro(curl_nroff_check)
+ find_program(NROFF NAMES gnroff nroff)
+ if(NROFF)
+ # Need a way to write to stdin, this will do
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt" "test")
+ # Tests for a valid nroff option to generate a manpage
+ foreach(_MANOPT "-man" "-mandoc")
+ execute_process(COMMAND "${NROFF}" ${_MANOPT}
+ OUTPUT_VARIABLE NROFF_MANOPT_OUTPUT
+ INPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt"
+ ERROR_QUIET)
+ # Save the option if it was valid
+ if(NROFF_MANOPT_OUTPUT)
+ message("Found *nroff option: -- ${_MANOPT}")
+ set(NROFF_MANOPT ${_MANOPT})
+ set(NROFF_USEFUL ON)
+ break()
+ endif()
+ endforeach()
+ # No need for the temporary file
+ file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt")
+ if(NOT NROFF_USEFUL)
+ message(WARNING "Found no *nroff option to get plaintext from man pages")
+ endif()
+ else()
+ message(WARNING "Found no *nroff program")
+ endif()
+endmacro()
+
+macro(optional_dependency DEPENDENCY)
+ set(CURL_${DEPENDENCY} AUTO CACHE STRING "Build curl with ${DEPENDENCY} support (AUTO, ON or OFF)")
+ set_property(CACHE CURL_${DEPENDENCY} PROPERTY STRINGS AUTO ON OFF)
+
+ if(CURL_${DEPENDENCY} STREQUAL AUTO)
+ find_package(${DEPENDENCY})
+ elseif(CURL_${DEPENDENCY})
+ find_package(${DEPENDENCY} REQUIRED)
+ endif()
+endmacro()
diff --git a/src/fire/curl-8.1.2/CMake/OtherTests.cmake b/src/fire/curl-8.1.2/CMake/OtherTests.cmake
new file mode 100644
index 0000000..fa1e458
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/OtherTests.cmake
@@ -0,0 +1,136 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+include(CheckCSourceCompiles)
+# The begin of the sources (macros and includes)
+set(_source_epilogue "#undef inline")
+
+macro(add_header_include check header)
+ if(${check})
+ set(_source_epilogue "${_source_epilogue}\n#include <${header}>")
+ endif()
+endmacro()
+
+set(signature_call_conv)
+if(HAVE_WINDOWS_H)
+ add_header_include(HAVE_WINSOCK2_H "winsock2.h")
+ add_header_include(HAVE_WINDOWS_H "windows.h")
+ set(_source_epilogue
+ "${_source_epilogue}\n#ifndef WIN32_LEAN_AND_MEAN\n#define WIN32_LEAN_AND_MEAN\n#endif")
+ set(signature_call_conv "PASCAL")
+ if(HAVE_LIBWS2_32)
+ set(CMAKE_REQUIRED_LIBRARIES ws2_32)
+ endif()
+else()
+ add_header_include(HAVE_SYS_TYPES_H "sys/types.h")
+ add_header_include(HAVE_SYS_SOCKET_H "sys/socket.h")
+endif()
+
+set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
+
+check_c_source_compiles("${_source_epilogue}
+ int main(void) {
+ int flag = MSG_NOSIGNAL;
+ (void)flag;
+ return 0;
+ }" HAVE_MSG_NOSIGNAL)
+
+if(NOT HAVE_WINDOWS_H)
+ add_header_include(HAVE_SYS_TIME_H "sys/time.h")
+ add_header_include(TIME_WITH_SYS_TIME "time.h")
+ add_header_include(HAVE_TIME_H "time.h")
+endif()
+check_c_source_compiles("${_source_epilogue}
+int main(void) {
+ struct timeval ts;
+ ts.tv_sec = 0;
+ ts.tv_usec = 0;
+ (void)ts;
+ return 0;
+}" HAVE_STRUCT_TIMEVAL)
+
+if(HAVE_WINDOWS_H)
+ set(CMAKE_EXTRA_INCLUDE_FILES winsock2.h)
+else()
+ set(CMAKE_EXTRA_INCLUDE_FILES)
+ if(HAVE_SYS_SOCKET_H)
+ set(CMAKE_EXTRA_INCLUDE_FILES sys/socket.h)
+ endif()
+endif()
+
+check_type_size("struct sockaddr_storage" SIZEOF_STRUCT_SOCKADDR_STORAGE)
+if(HAVE_SIZEOF_STRUCT_SOCKADDR_STORAGE)
+ set(HAVE_STRUCT_SOCKADDR_STORAGE 1)
+endif()
+
+unset(CMAKE_TRY_COMPILE_TARGET_TYPE)
+
+if(NOT CMAKE_CROSSCOMPILING)
+ if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "iOS")
+ # only try this on non-apple platforms
+
+ # if not cross-compilation...
+ include(CheckCSourceRuns)
+ set(CMAKE_REQUIRED_FLAGS "")
+ if(HAVE_SYS_POLL_H)
+ set(CMAKE_REQUIRED_FLAGS "-DHAVE_SYS_POLL_H")
+ elseif(HAVE_POLL_H)
+ set(CMAKE_REQUIRED_FLAGS "-DHAVE_POLL_H")
+ endif()
+ check_c_source_runs("
+ #include
+ #include
+
+ #ifdef HAVE_SYS_POLL_H
+ # include
+ #elif HAVE_POLL_H
+ # include
+ #endif
+
+ int main(void)
+ {
+ if(0 != poll(0, 0, 10)) {
+ return 1; /* fail */
+ }
+ else {
+ /* detect the 10.12 poll() breakage */
+ struct timeval before, after;
+ int rc;
+ size_t us;
+
+ gettimeofday(&before, NULL);
+ rc = poll(NULL, 0, 500);
+ gettimeofday(&after, NULL);
+
+ us = (after.tv_sec - before.tv_sec) * 1000000 +
+ (after.tv_usec - before.tv_usec);
+
+ if(us < 400000) {
+ return 1;
+ }
+ }
+ return 0;
+ }" HAVE_POLL_FINE)
+ endif()
+endif()
+
diff --git a/src/fire/curl-8.1.2/CMake/PickyWarnings.cmake b/src/fire/curl-8.1.2/CMake/PickyWarnings.cmake
new file mode 100644
index 0000000..1310cb4
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/PickyWarnings.cmake
@@ -0,0 +1,197 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+include(CheckCCompilerFlag)
+
+if(PICKY_COMPILER)
+ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
+
+ # https://clang.llvm.org/docs/DiagnosticsReference.html
+ # https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
+
+ # WPICKY_ENABLE = Options we want to enable as-is.
+ # WPICKY_DETECT = Options we want to test first and enable if available.
+
+ # Prefer the -Wextra alias with clang.
+ if(CMAKE_C_COMPILER_ID MATCHES "Clang")
+ set(WPICKY_ENABLE "-Wextra")
+ else()
+ set(WPICKY_ENABLE "-W")
+ endif()
+
+ list(APPEND WPICKY_ENABLE
+ -Wall -pedantic
+ )
+
+ # ----------------------------------
+ # Add new options here, if in doubt:
+ # ----------------------------------
+ set(WPICKY_DETECT
+ )
+
+ # Assume these options always exist with both clang and gcc.
+ # Require clang 3.0 / gcc 2.95 or later.
+ list(APPEND WPICKY_ENABLE
+ -Wbad-function-cast # clang 3.0 gcc 2.95
+ -Wconversion # clang 3.0 gcc 2.95
+ -Winline # clang 1.0 gcc 1.0
+ -Wmissing-declarations # clang 1.0 gcc 2.7
+ -Wmissing-prototypes # clang 1.0 gcc 1.0
+ -Wnested-externs # clang 1.0 gcc 2.7
+ -Wno-long-long # clang 1.0 gcc 2.95
+ -Wno-multichar # clang 1.0 gcc 2.95
+ -Wpointer-arith # clang 1.0 gcc 1.4
+ -Wshadow # clang 1.0 gcc 2.95
+ -Wsign-compare # clang 1.0 gcc 2.95
+ -Wundef # clang 1.0 gcc 2.95
+ -Wunused # clang 1.1 gcc 2.95
+ -Wwrite-strings # clang 1.0 gcc 1.4
+ )
+
+ # Always enable with clang, version dependent with gcc
+ set(WPICKY_COMMON_OLD
+ -Wcast-align # clang 1.0 gcc 4.2
+ -Wdeclaration-after-statement # clang 1.0 gcc 3.4
+ -Wempty-body # clang 3.0 gcc 4.3
+ -Wendif-labels # clang 1.0 gcc 3.3
+ -Wfloat-equal # clang 1.0 gcc 2.96 (3.0)
+ -Wignored-qualifiers # clang 3.0 gcc 4.3
+ -Wno-format-nonliteral # clang 1.0 gcc 2.96 (3.0)
+ -Wno-sign-conversion # clang 3.0 gcc 4.3
+ -Wno-system-headers # clang 1.0 gcc 3.0
+ -Wstrict-prototypes # clang 1.0 gcc 3.3
+ -Wtype-limits # clang 3.0 gcc 4.3
+ -Wvla # clang 2.8 gcc 4.3
+ )
+
+ set(WPICKY_COMMON
+ -Wdouble-promotion # clang 3.6 gcc 4.6 appleclang 6.3
+ -Wenum-conversion # clang 3.2 gcc 10.0 appleclang 4.6 g++ 11.0
+ -Wunused-const-variable # clang 3.4 gcc 6.0 appleclang 5.1
+ )
+
+ if(CMAKE_C_COMPILER_ID MATCHES "Clang")
+ list(APPEND WPICKY_ENABLE
+ ${WPICKY_COMMON_OLD}
+ -Wshift-sign-overflow # clang 2.9
+ -Wshorten-64-to-32 # clang 1.0
+ )
+ # Enable based on compiler version
+ if((CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.6) OR
+ (CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 6.3))
+ list(APPEND WPICKY_ENABLE
+ ${WPICKY_COMMON}
+ )
+ endif()
+ if((CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.9) OR
+ (CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 8.3))
+ list(APPEND WPICKY_ENABLE
+ -Wcomma # clang 3.9 appleclang 8.3
+ -Wmissing-variable-declarations # clang 3.2 appleclang 4.6
+ )
+ endif()
+ if((CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 7.0) OR
+ (CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 10.3))
+ list(APPEND WPICKY_ENABLE
+ -Wassign-enum # clang 7.0 appleclang 10.3
+ -Wextra-semi-stmt # clang 7.0 appleclang 10.3
+ )
+ endif()
+ else() # gcc
+ list(APPEND WPICKY_DETECT
+ ${WPICKY_COMMON}
+ )
+ # Enable based on compiler version
+ if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.3)
+ list(APPEND WPICKY_ENABLE
+ ${WPICKY_COMMON_OLD}
+ -Wmissing-parameter-type # gcc 4.3
+ -Wold-style-declaration # gcc 4.3
+ -Wstrict-aliasing=3 # gcc 4.0
+ )
+ endif()
+ if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.5 AND MINGW)
+ list(APPEND WPICKY_ENABLE
+ -Wno-pedantic-ms-format # gcc 4.5 (mingw-only)
+ )
+ endif()
+ if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.8)
+ list(APPEND WPICKY_ENABLE
+ -Wformat=2 # clang 3.0 gcc 4.8 (clang part-default, enabling it fully causes -Wformat-nonliteral warnings)
+ )
+ endif()
+ if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 5.0)
+ list(APPEND WPICKY_ENABLE
+ -Warray-bounds=2 -ftree-vrp # clang 3.0 gcc 5.0 (clang default: -Warray-bounds)
+ )
+ endif()
+ if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 6.0)
+ list(APPEND WPICKY_ENABLE
+ -Wduplicated-cond # gcc 6.0
+ -Wnull-dereference # clang 3.0 gcc 6.0 (clang default)
+ -fdelete-null-pointer-checks
+ -Wshift-negative-value # clang 3.7 gcc 6.0 (clang default)
+ -Wshift-overflow=2 # clang 3.0 gcc 6.0 (clang default: -Wshift-overflow)
+ )
+ endif()
+ if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 7.0)
+ list(APPEND WPICKY_ENABLE
+ -Walloc-zero # gcc 7.0
+ -Wduplicated-branches # gcc 7.0
+ -Wformat-overflow=2 # gcc 7.0
+ -Wformat-truncation=1 # gcc 7.0
+ -Wrestrict # gcc 7.0
+ )
+ endif()
+ if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 10.0)
+ list(APPEND WPICKY_ENABLE
+ -Warith-conversion # gcc 10.0
+ )
+ endif()
+ endif()
+
+ #
+
+ unset(WPICKY)
+
+ foreach(_CCOPT ${WPICKY_ENABLE})
+ set(WPICKY "${WPICKY} ${_CCOPT}")
+ endforeach()
+
+ foreach(_CCOPT ${WPICKY_DETECT})
+ # surprisingly, CHECK_C_COMPILER_FLAG needs a new variable to store each new
+ # test result in.
+ string(MAKE_C_IDENTIFIER "OPT${_CCOPT}" _optvarname)
+ # GCC only warns about unknown -Wno- options if there are also other diagnostic messages,
+ # so test for the positive form instead
+ string(REPLACE "-Wno-" "-W" _CCOPT_ON "${_CCOPT}")
+ check_c_compiler_flag(${_CCOPT_ON} ${_optvarname})
+ if(${_optvarname})
+ set(WPICKY "${WPICKY} ${_CCOPT}")
+ endif()
+ endforeach()
+
+ message(STATUS "Picky compiler options:${WPICKY}")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WPICKY}")
+ endif()
+endif()
diff --git a/src/fire/curl-8.1.2/CMake/Platforms/WindowsCache.cmake b/src/fire/curl-8.1.2/CMake/Platforms/WindowsCache.cmake
new file mode 100644
index 0000000..3771237
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/Platforms/WindowsCache.cmake
@@ -0,0 +1,91 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+if(NOT UNIX)
+ if(WIN32)
+ set(HAVE_LIBSOCKET 0)
+ set(HAVE_GETHOSTNAME 1)
+ set(HAVE_LIBZ 0)
+
+ set(HAVE_ARPA_INET_H 0)
+ set(HAVE_FCNTL_H 1)
+ set(HAVE_IO_H 1)
+ set(HAVE_NETDB_H 0)
+ set(HAVE_NETINET_IN_H 0)
+ set(HAVE_NET_IF_H 0)
+ set(HAVE_PWD_H 0)
+ set(HAVE_SETJMP_H 1)
+ set(HAVE_SIGNAL_H 1)
+ set(HAVE_STDLIB_H 1)
+ set(HAVE_STRINGS_H 0)
+ set(HAVE_STRING_H 1)
+ set(HAVE_SYS_PARAM_H 0)
+ set(HAVE_SYS_POLL_H 0)
+ set(HAVE_SYS_SELECT_H 0)
+ set(HAVE_SYS_SOCKET_H 0)
+ set(HAVE_SYS_SOCKIO_H 0)
+ set(HAVE_SYS_STAT_H 1)
+ set(HAVE_SYS_TIME_H 0)
+ set(HAVE_SYS_TYPES_H 1)
+ set(HAVE_SYS_UTIME_H 1)
+ set(HAVE_TERMIOS_H 0)
+ set(HAVE_TERMIO_H 0)
+ set(HAVE_TIME_H 1)
+ set(HAVE_UTIME_H 0)
+
+ set(HAVE_SOCKET 1)
+ set(HAVE_SELECT 1)
+ set(HAVE_STRDUP 1)
+ set(HAVE_STRICMP 1)
+ set(HAVE_STRCMPI 1)
+ set(HAVE_GETTIMEOFDAY 0)
+ set(HAVE_CLOSESOCKET 1)
+ set(HAVE_SIGSETJMP 0)
+ set(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1)
+ set(HAVE_GETPASS_R 0)
+ set(HAVE_GETPWUID 0)
+ set(HAVE_GETEUID 0)
+ set(HAVE_UTIME 1)
+ set(HAVE_RAND_EGD 0)
+ set(HAVE_GMTIME_R 0)
+ set(HAVE_GETHOSTBYNAME_R 0)
+ set(HAVE_SIGNAL 1)
+
+ set(HAVE_GETHOSTBYNAME_R_3 0)
+ set(HAVE_GETHOSTBYNAME_R_3_REENTRANT 0)
+ set(HAVE_GETHOSTBYNAME_R_5 0)
+ set(HAVE_GETHOSTBYNAME_R_5_REENTRANT 0)
+ set(HAVE_GETHOSTBYNAME_R_6 0)
+ set(HAVE_GETHOSTBYNAME_R_6_REENTRANT 0)
+
+ set(TIME_WITH_SYS_TIME 0)
+ set(HAVE_O_NONBLOCK 0)
+ set(HAVE_IN_ADDR_T 0)
+ set(STDC_HEADERS 1)
+
+ set(HAVE_SIGACTION 0)
+ set(HAVE_MACRO_SIGSETJMP 0)
+ else()
+ message("This file should be included on Windows platform only")
+ endif()
+endif()
diff --git a/src/fire/curl-8.1.2/CMake/Utilities.cmake b/src/fire/curl-8.1.2/CMake/Utilities.cmake
new file mode 100644
index 0000000..9ff38e3
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/Utilities.cmake
@@ -0,0 +1,35 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+# File containing various utilities
+
+# Returns a list of arguments that evaluate to true
+function(count_true output_count_var)
+ set(lst_len 0)
+ foreach(option_var IN LISTS ARGN)
+ if(${option_var})
+ math(EXPR lst_len "${lst_len} + 1")
+ endif()
+ endforeach()
+ set(${output_count_var} ${lst_len} PARENT_SCOPE)
+endfunction()
diff --git a/src/fire/curl-8.1.2/CMake/cmake_uninstall.cmake.in b/src/fire/curl-8.1.2/CMake/cmake_uninstall.cmake.in
new file mode 100644
index 0000000..47aec8d
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/cmake_uninstall.cmake.in
@@ -0,0 +1,49 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+ message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+endif()
+
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@")
+endif()
+message(${CMAKE_INSTALL_PREFIX})
+
+file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
+string(REGEX REPLACE "\n" ";" files "${files}")
+foreach(file ${files})
+ message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
+ if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
+ exec_program(
+ "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
+ OUTPUT_VARIABLE rm_out
+ RETURN_VALUE rm_retval
+ )
+ if(NOT "${rm_retval}" STREQUAL 0)
+ message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
+ endif()
+ else()
+ message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
+ endif()
+endforeach()
diff --git a/src/fire/curl-8.1.2/CMake/curl-config.cmake.in b/src/fire/curl-8.1.2/CMake/curl-config.cmake.in
new file mode 100644
index 0000000..dbe4ed2
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMake/curl-config.cmake.in
@@ -0,0 +1,35 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+@PACKAGE_INIT@
+
+include(CMakeFindDependencyMacro)
+if(@USE_OPENSSL@)
+ find_dependency(OpenSSL @OPENSSL_VERSION_MAJOR@)
+endif()
+if(@USE_ZLIB@)
+ find_dependency(ZLIB @ZLIB_VERSION_MAJOR@)
+endif()
+
+include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake")
+check_required_components("@PROJECT_NAME@")
diff --git a/src/fire/curl-8.1.2/CMakeLists.txt b/src/fire/curl-8.1.2/CMakeLists.txt
new file mode 100644
index 0000000..49a44ea
--- /dev/null
+++ b/src/fire/curl-8.1.2/CMakeLists.txt
@@ -0,0 +1,1668 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+# curl/libcurl CMake script
+# by Tetetest and Sukender (Benoit Neil)
+
+# TODO:
+# The output .so file lacks the soname number which we currently have within the lib/Makefile.am file
+# Add full (4 or 5 libs) SSL support
+# Add INSTALL target (EXTRA_DIST variables in Makefile.am may be moved to Makefile.inc so that CMake/CPack is aware of what's to include).
+# Check on all possible platforms
+# Test with as many configurations possible (With or without any option)
+# Create scripts that help keeping the CMake build system up to date (to reduce maintenance). According to Tetetest:
+# - lists of headers that 'configure' checks for;
+# - curl-specific tests (the ones that are in m4/curl-*.m4 files);
+# - (most obvious thing:) curl version numbers.
+# Add documentation subproject
+#
+# To check:
+# (From Daniel Stenberg) The cmake build selected to run gcc with -fPIC on my box while the plain configure script did not.
+# (From Daniel Stenberg) The gcc command line use neither -g nor any -O options. As a developer, I also treasure our configure scripts's --enable-debug option that sets a long range of "picky" compiler options.
+
+# Note: By default this CMake build script detects the version of some
+# dependencies using `check_symbol_exists`. Those checks do not work
+# in the case that both CURL and its dependency are included as
+# sub-projects in a larger build using `FetchContent`. To support
+# that case, additional variables may be defined by the parent
+# project, ideally in the "extra" find package redirect file:
+# https://cmake.org/cmake/help/latest/module/FetchContent.html#integrating-with-find-package
+#
+# The following variables are available:
+# HAVE_RAND_EGD: `RAND_egd` present in OpenSSL
+# HAVE_AWSLC: OpenSSL is AWS-LC
+# HAVE_BORINGSSL: OpenSSL is BoringSSL
+# HAVE_PK11_CREATEMANAGEDGENERICOBJECTL: `PK11_CreateManagedGenericObject` present in NSS
+# HAVE_SSL_CTX_SET_QUIC_METHOD: `SSL_CTX_set_quic_method` present in OpenSSL/wolfSSL
+# HAVE_QUICHE_CONN_SET_QLOG_FD: `quiche_conn_set_qlog_fd` present in QUICHE
+# HAVE_ZSTD_CREATEDSTREAM: `ZSTD_createDStream` present in Zstd
+#
+# For each of the above variables, if the variable is DEFINED (either
+# to ON or OFF), the symbol detection will be skipped. If the
+# variable is NOT DEFINED, the symbol detection will be performed.
+
+cmake_minimum_required(VERSION 3.7...3.16 FATAL_ERROR)
+
+set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake;${CMAKE_MODULE_PATH}")
+include(Utilities)
+include(Macros)
+include(CMakeDependentOption)
+include(CheckCCompilerFlag)
+
+project(CURL C)
+
+file(STRINGS ${CURL_SOURCE_DIR}/include/curl/curlver.h CURL_VERSION_H_CONTENTS REGEX "#define LIBCURL_VERSION( |_NUM )")
+string(REGEX MATCH "#define LIBCURL_VERSION \"[^\"]*"
+ CURL_VERSION ${CURL_VERSION_H_CONTENTS})
+string(REGEX REPLACE "[^\"]+\"" "" CURL_VERSION ${CURL_VERSION})
+string(REGEX MATCH "#define LIBCURL_VERSION_NUM 0x[0-9a-fA-F]+"
+ CURL_VERSION_NUM ${CURL_VERSION_H_CONTENTS})
+string(REGEX REPLACE "[^0]+0x" "" CURL_VERSION_NUM ${CURL_VERSION_NUM})
+
+
+# Setup package meta-data
+# SET(PACKAGE "curl")
+message(STATUS "curl version=[${CURL_VERSION}]")
+# SET(PACKAGE_TARNAME "curl")
+# SET(PACKAGE_NAME "curl")
+# SET(PACKAGE_VERSION "-")
+# SET(PACKAGE_STRING "curl-")
+# SET(PACKAGE_BUGREPORT "a suitable curl mailing list => https://curl.se/mail/")
+set(OPERATING_SYSTEM "${CMAKE_SYSTEM_NAME}")
+if(CMAKE_C_COMPILER_TARGET)
+ set(OS "\"${CMAKE_C_COMPILER_TARGET}\"")
+else()
+ set(OS "\"${CMAKE_SYSTEM_NAME}\"")
+endif()
+
+include_directories(${CURL_SOURCE_DIR}/include)
+
+option(CURL_WERROR "Turn compiler warnings into errors" OFF)
+option(PICKY_COMPILER "Enable picky compiler options" ON)
+option(BUILD_CURL_EXE "Set to ON to build curl executable." ON)
+option(BUILD_SHARED_LIBS "Build shared libraries" ON)
+option(ENABLE_ARES "Set to ON to enable c-ares support" OFF)
+if(WIN32)
+ option(CURL_STATIC_CRT "Set to ON to build libcurl with static CRT on Windows (/MT)." OFF)
+ option(ENABLE_UNICODE "Set to ON to use the Unicode version of the Windows API functions" OFF)
+ set(CURL_TARGET_WINDOWS_VERSION "" CACHE STRING "Minimum target Windows version as hex string")
+ if(CURL_TARGET_WINDOWS_VERSION)
+ add_definitions(-D_WIN32_WINNT=${CURL_TARGET_WINDOWS_VERSION})
+ list(APPEND CMAKE_REQUIRED_DEFINITIONS -D_WIN32_WINNT=${CURL_TARGET_WINDOWS_VERSION})
+ set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -D_WIN32_WINNT=${CURL_TARGET_WINDOWS_VERSION}")
+ endif()
+ if(ENABLE_UNICODE)
+ add_definitions(-DUNICODE -D_UNICODE)
+ if(MINGW)
+ add_compile_options(-municode)
+ endif()
+ endif()
+endif()
+option(CURL_LTO "Turn on compiler Link Time Optimizations" OFF)
+
+cmake_dependent_option(ENABLE_THREADED_RESOLVER "Set to ON to enable threaded DNS lookup"
+ ON "NOT ENABLE_ARES"
+ OFF)
+
+option(ENABLE_DEBUG "Set to ON to enable curl debug features" OFF)
+option(ENABLE_CURLDEBUG "Set to ON to build with TrackMemory feature enabled" OFF)
+
+include(PickyWarnings)
+
+if(ENABLE_DEBUG)
+ # DEBUGBUILD will be defined only for Debug builds
+ set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$:DEBUGBUILD>)
+ set(ENABLE_CURLDEBUG ON)
+endif()
+
+if(ENABLE_CURLDEBUG)
+ set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS CURLDEBUG)
+endif()
+
+# For debug libs and exes, add "-d" postfix
+if(NOT DEFINED CMAKE_DEBUG_POSTFIX)
+ set(CMAKE_DEBUG_POSTFIX "-d")
+endif()
+
+# initialize CURL_LIBS
+set(CURL_LIBS "")
+
+if(ENABLE_ARES)
+ set(USE_ARES 1)
+ find_package(CARES REQUIRED)
+ list(APPEND CURL_LIBS ${CARES_LIBRARY})
+endif()
+
+include(CurlSymbolHiding)
+
+option(CURL_ENABLE_EXPORT_TARGET "to enable cmake export target" ON)
+mark_as_advanced(CURL_ENABLE_EXPORT_TARGET)
+
+option(CURL_DISABLE_ALTSVC "disables alt-svc support" OFF)
+mark_as_advanced(CURL_DISABLE_ALTSVC)
+option(CURL_DISABLE_COOKIES "disables cookies support" OFF)
+mark_as_advanced(CURL_DISABLE_COOKIES)
+option(CURL_DISABLE_CRYPTO_AUTH "disables cryptographic authentication" OFF)
+mark_as_advanced(CURL_DISABLE_CRYPTO_AUTH)
+option(CURL_DISABLE_DICT "disables DICT" OFF)
+mark_as_advanced(CURL_DISABLE_DICT)
+option(CURL_DISABLE_DOH "disables DNS-over-HTTPS" OFF)
+mark_as_advanced(CURL_DISABLE_DOH)
+option(CURL_DISABLE_FILE "disables FILE" OFF)
+mark_as_advanced(CURL_DISABLE_FILE)
+option(CURL_DISABLE_FTP "disables FTP" OFF)
+mark_as_advanced(CURL_DISABLE_FTP)
+option(CURL_DISABLE_GETOPTIONS "disables curl_easy_options API for existing options to curl_easy_setopt" OFF)
+mark_as_advanced(CURL_DISABLE_GETOPTIONS)
+option(CURL_DISABLE_GOPHER "disables Gopher" OFF)
+mark_as_advanced(CURL_DISABLE_GOPHER)
+option(CURL_DISABLE_HSTS "disables HSTS support" OFF)
+mark_as_advanced(CURL_DISABLE_HSTS)
+option(CURL_DISABLE_HTTP "disables HTTP" OFF)
+mark_as_advanced(CURL_DISABLE_HTTP)
+option(CURL_DISABLE_HTTP_AUTH "disables all HTTP authentication methods" OFF)
+mark_as_advanced(CURL_DISABLE_HTTP_AUTH)
+option(CURL_DISABLE_IMAP "disables IMAP" OFF)
+mark_as_advanced(CURL_DISABLE_IMAP)
+option(CURL_DISABLE_LDAP "disables LDAP" OFF)
+mark_as_advanced(CURL_DISABLE_LDAP)
+option(CURL_DISABLE_LDAPS "disables LDAPS" OFF)
+mark_as_advanced(CURL_DISABLE_LDAPS)
+option(CURL_DISABLE_LIBCURL_OPTION "disables --libcurl option from the curl tool" OFF)
+mark_as_advanced(CURL_DISABLE_LIBCURL_OPTION)
+option(CURL_DISABLE_MIME "disables MIME support" OFF)
+mark_as_advanced(CURL_DISABLE_MIME)
+option(CURL_DISABLE_MQTT "disables MQTT" OFF)
+mark_as_advanced(CURL_DISABLE_MQTT)
+option(CURL_DISABLE_NETRC "disables netrc parser" OFF)
+mark_as_advanced(CURL_DISABLE_NETRC)
+option(CURL_DISABLE_NTLM "disables NTLM support" OFF)
+mark_as_advanced(CURL_DISABLE_NTLM)
+option(CURL_DISABLE_PARSEDATE "disables date parsing" OFF)
+mark_as_advanced(CURL_DISABLE_PARSEDATE)
+option(CURL_DISABLE_POP3 "disables POP3" OFF)
+mark_as_advanced(CURL_DISABLE_POP3)
+option(CURL_DISABLE_PROGRESS_METER "disables built-in progress meter" OFF)
+mark_as_advanced(CURL_DISABLE_PROGRESS_METER)
+option(CURL_DISABLE_PROXY "disables proxy support" OFF)
+mark_as_advanced(CURL_DISABLE_PROXY)
+option(CURL_DISABLE_RTSP "disables RTSP" OFF)
+mark_as_advanced(CURL_DISABLE_RTSP)
+option(CURL_DISABLE_SHUFFLE_DNS "disables shuffle DNS feature" OFF)
+mark_as_advanced(CURL_DISABLE_SHUFFLE_DNS)
+option(CURL_DISABLE_SMB "disables SMB" OFF)
+mark_as_advanced(CURL_DISABLE_SMB)
+option(CURL_DISABLE_SMTP "disables SMTP" OFF)
+mark_as_advanced(CURL_DISABLE_SMTP)
+option(CURL_DISABLE_SOCKETPAIR "disables use of socketpair for curl_multi_poll" OFF)
+mark_as_advanced(CURL_DISABLE_SOCKETPAIR)
+option(CURL_DISABLE_TELNET "disables Telnet" OFF)
+mark_as_advanced(CURL_DISABLE_TELNET)
+option(CURL_DISABLE_TFTP "disables TFTP" OFF)
+mark_as_advanced(CURL_DISABLE_TFTP)
+option(CURL_DISABLE_VERBOSE_STRINGS "disables verbose strings" OFF)
+mark_as_advanced(CURL_DISABLE_VERBOSE_STRINGS)
+
+# Corresponds to HTTP_ONLY in lib/curl_setup.h
+option(HTTP_ONLY "disables all protocols except HTTP (This overrides all CURL_DISABLE_* options)" OFF)
+mark_as_advanced(HTTP_ONLY)
+
+if(HTTP_ONLY)
+ set(CURL_DISABLE_DICT ON)
+ set(CURL_DISABLE_FILE ON)
+ set(CURL_DISABLE_FTP ON)
+ set(CURL_DISABLE_GOPHER ON)
+ set(CURL_DISABLE_IMAP ON)
+ set(CURL_DISABLE_LDAP ON)
+ set(CURL_DISABLE_LDAPS ON)
+ set(CURL_DISABLE_MQTT ON)
+ set(CURL_DISABLE_POP3 ON)
+ set(CURL_DISABLE_RTSP ON)
+ set(CURL_DISABLE_SMB ON)
+ set(CURL_DISABLE_SMTP ON)
+ set(CURL_DISABLE_TELNET ON)
+ set(CURL_DISABLE_TFTP ON)
+endif()
+
+option(ENABLE_IPV6 "Define if you want to enable IPv6 support" ON)
+mark_as_advanced(ENABLE_IPV6)
+if(ENABLE_IPV6 AND NOT WIN32)
+ include(CheckStructHasMember)
+ check_struct_has_member("struct sockaddr_in6" sin6_addr "netinet/in.h"
+ HAVE_SOCKADDR_IN6_SIN6_ADDR)
+ check_struct_has_member("struct sockaddr_in6" sin6_scope_id "netinet/in.h"
+ HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID)
+ if(NOT HAVE_SOCKADDR_IN6_SIN6_ADDR)
+ message(WARNING "struct sockaddr_in6 not available, disabling IPv6 support")
+ # Force the feature off as this name is used as guard macro...
+ set(ENABLE_IPV6 OFF
+ CACHE BOOL "Define if you want to enable IPv6 support" FORCE)
+ endif()
+
+ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND NOT ENABLE_ARES)
+ set(use_core_foundation ON)
+
+ find_library(SYSTEMCONFIGURATION_FRAMEWORK "SystemConfiguration")
+ if(NOT SYSTEMCONFIGURATION_FRAMEWORK)
+ message(FATAL_ERROR "SystemConfiguration framework not found")
+ endif()
+
+ list(APPEND CURL_LIBS "-framework SystemConfiguration")
+ endif()
+endif()
+
+if(USE_MANUAL)
+ #nroff is currently only used when USE_MANUAL is set, so we can prevent the warning of no *NROFF if USE_MANUAL is OFF (or not defined), by not even looking for NROFF..
+ curl_nroff_check()
+endif()
+find_package(Perl)
+
+cmake_dependent_option(ENABLE_MANUAL "to provide the built-in manual"
+ ON "NROFF_USEFUL;PERL_FOUND"
+ OFF)
+
+if(ENABLE_MANUAL)
+ set(USE_MANUAL ON)
+endif()
+
+if(CURL_STATIC_CRT)
+ set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>")
+ set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MT")
+ set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd")
+endif()
+
+# Disable warnings on Borland to avoid changing 3rd party code.
+if(BORLAND)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w-")
+endif()
+
+# If we are on AIX, do the _ALL_SOURCE magic
+if(${CMAKE_SYSTEM_NAME} MATCHES AIX)
+ set(_ALL_SOURCE 1)
+endif()
+
+# If we are on Haiku, make sure that the network library is brought in.
+if(${CMAKE_SYSTEM_NAME} MATCHES Haiku)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lnetwork")
+endif()
+
+# Include all the necessary files for macros
+include(CMakePushCheckState)
+include(CheckFunctionExists)
+include(CheckIncludeFile)
+include(CheckIncludeFiles)
+include(CheckLibraryExists)
+include(CheckSymbolExists)
+include(CheckTypeSize)
+include(CheckCSourceCompiles)
+
+# On windows preload settings
+if(WIN32)
+ list(APPEND CMAKE_REQUIRED_DEFINITIONS -D_WINSOCKAPI_=)
+ include(${CMAKE_CURRENT_SOURCE_DIR}/CMake/Platforms/WindowsCache.cmake)
+endif()
+
+if(ENABLE_THREADED_RESOLVER)
+ find_package(Threads REQUIRED)
+ if(WIN32)
+ set(USE_THREADS_WIN32 ON)
+ else()
+ set(USE_THREADS_POSIX ${CMAKE_USE_PTHREADS_INIT})
+ set(HAVE_PTHREAD_H ${CMAKE_USE_PTHREADS_INIT})
+ endif()
+ set(CURL_LIBS ${CURL_LIBS} ${CMAKE_THREAD_LIBS_INIT})
+endif()
+
+# Check for all needed libraries
+check_library_exists_concat("socket" connect HAVE_LIBSOCKET)
+
+check_function_exists(gethostname HAVE_GETHOSTNAME)
+
+if(WIN32)
+ check_library_exists_concat("ws2_32" getch HAVE_LIBWS2_32)
+ check_library_exists_concat("winmm" getch HAVE_LIBWINMM)
+
+ # Matching logic used for Curl_win32_random()
+ if(MINGW)
+ check_c_source_compiles("
+ #include <_mingw.h>
+ #if defined(__MINGW64_VERSION_MAJOR)
+ #error
+ #endif
+ int main(void) {
+ return 0;
+ }"
+ HAVE_MINGW_ORIGINAL)
+ endif()
+endif()
+
+# check SSL libraries
+# TODO support GnuTLS
+option(CURL_ENABLE_SSL "Enable SSL support" ON)
+
+if(APPLE)
+ cmake_dependent_option(CURL_USE_SECTRANSP "enable Apple OS native SSL/TLS" OFF CURL_ENABLE_SSL OFF)
+endif()
+if(WIN32)
+ cmake_dependent_option(CURL_USE_SCHANNEL "enable Windows native SSL/TLS" OFF CURL_ENABLE_SSL OFF)
+ cmake_dependent_option(CURL_WINDOWS_SSPI "Use windows libraries to allow NTLM authentication without OpenSSL" ON
+ CURL_USE_SCHANNEL OFF)
+endif()
+cmake_dependent_option(CURL_USE_MBEDTLS "Enable mbedTLS for SSL/TLS" OFF CURL_ENABLE_SSL OFF)
+cmake_dependent_option(CURL_USE_BEARSSL "Enable BearSSL for SSL/TLS" OFF CURL_ENABLE_SSL OFF)
+cmake_dependent_option(CURL_USE_NSS "Enable NSS for SSL/TLS" OFF CURL_ENABLE_SSL OFF)
+cmake_dependent_option(CURL_USE_WOLFSSL "enable wolfSSL for SSL/TLS" OFF CURL_ENABLE_SSL OFF)
+
+set(openssl_default ON)
+if(WIN32 OR CURL_USE_SECTRANSP OR CURL_USE_SCHANNEL OR CURL_USE_MBEDTLS OR CURL_USE_NSS OR CURL_USE_WOLFSSL)
+ set(openssl_default OFF)
+endif()
+cmake_dependent_option(CURL_USE_OPENSSL "Use OpenSSL code. Experimental" ${openssl_default} CURL_ENABLE_SSL OFF)
+option(CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG "Disable automatic loading of OpenSSL configuration" OFF)
+
+count_true(enabled_ssl_options_count
+ CURL_USE_SCHANNEL
+ CURL_USE_SECTRANSP
+ CURL_USE_OPENSSL
+ CURL_USE_MBEDTLS
+ CURL_USE_BEARSSL
+ CURL_USE_NSS
+ CURL_USE_WOLFSSL
+)
+if(enabled_ssl_options_count GREATER "1")
+ set(CURL_WITH_MULTI_SSL ON)
+endif()
+
+if(CURL_USE_SCHANNEL)
+ set(SSL_ENABLED ON)
+ set(USE_SCHANNEL ON) # Windows native SSL/TLS support
+ set(USE_WINDOWS_SSPI ON) # CURL_USE_SCHANNEL implies CURL_WINDOWS_SSPI
+endif()
+if(CURL_WINDOWS_SSPI)
+ set(USE_WINDOWS_SSPI ON)
+endif()
+
+if(CURL_USE_SECTRANSP)
+ set(use_core_foundation ON)
+
+ find_library(SECURITY_FRAMEWORK "Security")
+ if(NOT SECURITY_FRAMEWORK)
+ message(FATAL_ERROR "Security framework not found")
+ endif()
+
+ set(SSL_ENABLED ON)
+ set(USE_SECTRANSP ON)
+ list(APPEND CURL_LIBS "-framework Security")
+endif()
+
+if(use_core_foundation)
+ find_library(COREFOUNDATION_FRAMEWORK "CoreFoundation")
+ if(NOT COREFOUNDATION_FRAMEWORK)
+ message(FATAL_ERROR "CoreFoundation framework not found")
+ endif()
+
+ list(APPEND CURL_LIBS "-framework CoreFoundation")
+endif()
+
+if(CURL_USE_OPENSSL)
+ find_package(OpenSSL REQUIRED)
+ set(SSL_ENABLED ON)
+ set(USE_OPENSSL ON)
+
+ # Depend on OpenSSL via imported targets if supported by the running
+ # version of CMake. This allows our dependents to get our dependencies
+ # transitively.
+ if(NOT CMAKE_VERSION VERSION_LESS 3.4)
+ list(APPEND CURL_LIBS OpenSSL::SSL OpenSSL::Crypto)
+ else()
+ list(APPEND CURL_LIBS ${OPENSSL_LIBRARIES})
+ include_directories(${OPENSSL_INCLUDE_DIR})
+ endif()
+
+ if(WIN32)
+ list(APPEND CURL_LIBS "ws2_32")
+ if(NOT HAVE_MINGW_ORIGINAL)
+ list(APPEND CURL_LIBS "bcrypt") # for OpenSSL/LibreSSL
+ endif()
+ endif()
+
+ set(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
+ if(NOT DEFINED HAVE_RAND_EGD)
+ check_symbol_exists(RAND_egd "${CURL_INCLUDES}" HAVE_RAND_EGD)
+ endif()
+ if(NOT DEFINED HAVE_BORINGSSL)
+ check_symbol_exists(OPENSSL_IS_BORINGSSL "openssl/base.h" HAVE_BORINGSSL)
+ endif()
+ if(NOT DEFINED HAVE_AWSLC)
+ check_symbol_exists(OPENSSL_IS_AWSLC "openssl/base.h" HAVE_AWSLC)
+ endif()
+endif()
+
+if(CURL_USE_MBEDTLS)
+ find_package(MbedTLS REQUIRED)
+ set(SSL_ENABLED ON)
+ set(USE_MBEDTLS ON)
+ list(APPEND CURL_LIBS ${MBEDTLS_LIBRARIES})
+ include_directories(${MBEDTLS_INCLUDE_DIRS})
+endif()
+
+if(CURL_USE_BEARSSL)
+ find_package(BearSSL REQUIRED)
+ set(SSL_ENABLED ON)
+ set(USE_BEARSSL ON)
+ list(APPEND CURL_LIBS ${BEARSSL_LIBRARY})
+ include_directories(${BEARSSL_INCLUDE_DIRS})
+endif()
+
+if(CURL_USE_WOLFSSL)
+ find_package(WolfSSL REQUIRED)
+ set(SSL_ENABLED ON)
+ set(USE_WOLFSSL ON)
+ list(APPEND CURL_LIBS ${WolfSSL_LIBRARIES})
+ include_directories(${WolfSSL_INCLUDE_DIRS})
+endif()
+
+if(CURL_USE_NSS)
+ find_package(NSS REQUIRED)
+ include_directories(${NSS_INCLUDE_DIRS})
+ list(APPEND CURL_LIBS ${NSS_LIBRARIES})
+ set(SSL_ENABLED ON)
+ set(USE_NSS ON)
+ if(NOT DEFINED HAVE_PK11_CREATEMANAGEDGENERICOBJECT)
+ cmake_push_check_state()
+ set(CMAKE_REQUIRED_INCLUDES ${NSS_INCLUDE_DIRS})
+ set(CMAKE_REQUIRED_LIBRARIES ${NSS_LIBRARIES})
+ check_symbol_exists(PK11_CreateManagedGenericObject "pk11pub.h" HAVE_PK11_CREATEMANAGEDGENERICOBJECT)
+ cmake_pop_check_state()
+ endif()
+endif()
+
+# Keep ZLIB detection after TLS detection,
+# and before calling CheckQuicSupportInOpenSSL.
+
+set(HAVE_LIBZ OFF)
+set(USE_ZLIB OFF)
+optional_dependency(ZLIB)
+if(ZLIB_FOUND)
+ set(HAVE_LIBZ ON)
+ set(USE_ZLIB ON)
+
+ # Depend on ZLIB via imported targets if supported by the running
+ # version of CMake. This allows our dependents to get our dependencies
+ # transitively.
+ if(NOT CMAKE_VERSION VERSION_LESS 3.4)
+ list(APPEND CURL_LIBS ZLIB::ZLIB)
+ else()
+ list(APPEND CURL_LIBS ${ZLIB_LIBRARIES})
+ include_directories(${ZLIB_INCLUDE_DIRS})
+ endif()
+ list(APPEND CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIRS})
+endif()
+
+option(CURL_BROTLI "Set to ON to enable building curl with brotli support." OFF)
+set(HAVE_BROTLI OFF)
+if(CURL_BROTLI)
+ find_package(Brotli QUIET)
+ if(BROTLI_FOUND)
+ set(HAVE_BROTLI ON)
+ set(CURL_LIBS "${BROTLI_LIBRARIES};${CURL_LIBS}") # For 'ld' linker. Emulate `list(PREPEND ...)` to stay compatible with \n")
+ endforeach()
+
+ set(_SRC_STRING
+ "
+ ${_INCLUDE_STRING}
+ int main(int argc, char ** argv)
+ {
+ BerValue *bvp = NULL;
+ BerElement *bep = ber_init(bvp);
+ ber_free(bep, 1);
+ return 0;
+ }"
+ )
+ list(APPEND CMAKE_REQUIRED_DEFINITIONS -DLDAP_DEPRECATED=1)
+ list(APPEND CMAKE_REQUIRED_LIBRARIES ${CMAKE_LDAP_LIB})
+ if(HAVE_LIBLBER)
+ list(APPEND CMAKE_REQUIRED_LIBRARIES ${CMAKE_LBER_LIB})
+ endif()
+ check_c_source_compiles("${_SRC_STRING}" NOT_NEED_LBER_H)
+ unset(CMAKE_REQUIRED_LIBRARIES)
+
+ if(NOT_NEED_LBER_H)
+ set(NEED_LBER_H OFF)
+ else()
+ set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -DNEED_LBER_H")
+ endif()
+ endif()
+ endif()
+endif()
+
+# No ldap, no ldaps.
+if(CURL_DISABLE_LDAP)
+ if(NOT CURL_DISABLE_LDAPS)
+ message(STATUS "LDAP needs to be enabled to support LDAPS")
+ set(CURL_DISABLE_LDAPS ON CACHE BOOL "" FORCE)
+ endif()
+endif()
+
+if(NOT CURL_DISABLE_LDAPS)
+ check_include_file_concat("ldap_ssl.h" HAVE_LDAP_SSL_H)
+endif()
+
+# Check for idn2
+option(USE_LIBIDN2 "Use libidn2 for IDN support" ON)
+if(USE_LIBIDN2)
+ check_library_exists_concat("idn2" idn2_lookup_ul HAVE_LIBIDN2)
+else()
+ set(HAVE_LIBIDN2 OFF)
+endif()
+
+if(WIN32)
+ option(USE_WIN32_IDN "Use WinIDN for IDN support" OFF)
+ if(USE_WIN32_IDN)
+ list(APPEND CURL_LIBS "normaliz")
+ endif()
+endif()
+
+#libpsl
+option(CURL_USE_LIBPSL "Use libPSL" ON)
+mark_as_advanced(CURL_USE_LIBPSL)
+set(USE_LIBPSL OFF)
+
+if(CURL_USE_LIBPSL)
+ find_package(LibPSL)
+ if(LIBPSL_FOUND)
+ list(APPEND CURL_LIBS ${LIBPSL_LIBRARY})
+ list(APPEND CMAKE_REQUIRED_INCLUDES "${LIBPSL_INCLUDE_DIR}")
+ include_directories("${LIBPSL_INCLUDE_DIR}")
+ set(USE_LIBPSL ON)
+ endif()
+endif()
+
+#libSSH2
+option(CURL_USE_LIBSSH2 "Use libSSH2" ON)
+mark_as_advanced(CURL_USE_LIBSSH2)
+set(USE_LIBSSH2 OFF)
+
+if(CURL_USE_LIBSSH2)
+ find_package(LibSSH2)
+ if(LIBSSH2_FOUND)
+ list(APPEND CURL_LIBS ${LIBSSH2_LIBRARY})
+ list(APPEND CMAKE_REQUIRED_INCLUDES "${LIBSSH2_INCLUDE_DIR}")
+ include_directories("${LIBSSH2_INCLUDE_DIR}")
+ set(USE_LIBSSH2 ON)
+ endif()
+endif()
+
+# libssh
+option(CURL_USE_LIBSSH "Use libSSH" OFF)
+mark_as_advanced(CURL_USE_LIBSSH)
+if(NOT USE_LIBSSH2 AND CURL_USE_LIBSSH)
+ find_package(libssh CONFIG)
+ if(libssh_FOUND)
+ message(STATUS "Found libssh ${libssh_VERSION}")
+ # Use imported target for include and library paths.
+ list(APPEND CURL_LIBS ssh)
+ set(USE_LIBSSH ON)
+ endif()
+endif()
+
+option(CURL_USE_GSSAPI "Use GSSAPI implementation (right now only Heimdal is supported with CMake build)" OFF)
+mark_as_advanced(CURL_USE_GSSAPI)
+
+if(CURL_USE_GSSAPI)
+ find_package(GSS)
+
+ set(HAVE_GSSAPI ${GSS_FOUND})
+ if(GSS_FOUND)
+
+ message(STATUS "Found ${GSS_FLAVOUR} GSSAPI version: \"${GSS_VERSION}\"")
+
+ list(APPEND CMAKE_REQUIRED_INCLUDES ${GSS_INCLUDE_DIR})
+ check_include_file_concat("gssapi/gssapi.h" HAVE_GSSAPI_GSSAPI_H)
+ check_include_file_concat("gssapi/gssapi_generic.h" HAVE_GSSAPI_GSSAPI_GENERIC_H)
+ check_include_file_concat("gssapi/gssapi_krb5.h" HAVE_GSSAPI_GSSAPI_KRB5_H)
+
+ if(GSS_FLAVOUR STREQUAL "Heimdal")
+ set(HAVE_GSSHEIMDAL ON)
+ else() # MIT
+ set(HAVE_GSSMIT ON)
+ set(_INCLUDE_LIST "")
+ if(HAVE_GSSAPI_GSSAPI_H)
+ list(APPEND _INCLUDE_LIST "gssapi/gssapi.h")
+ endif()
+ if(HAVE_GSSAPI_GSSAPI_GENERIC_H)
+ list(APPEND _INCLUDE_LIST "gssapi/gssapi_generic.h")
+ endif()
+ if(HAVE_GSSAPI_GSSAPI_KRB5_H)
+ list(APPEND _INCLUDE_LIST "gssapi/gssapi_krb5.h")
+ endif()
+
+ string(REPLACE ";" " " _COMPILER_FLAGS_STR "${GSS_COMPILER_FLAGS}")
+ string(REPLACE ";" " " _LINKER_FLAGS_STR "${GSS_LINKER_FLAGS}")
+
+ foreach(_dir ${GSS_LINK_DIRECTORIES})
+ set(_LINKER_FLAGS_STR "${_LINKER_FLAGS_STR} -L\"${_dir}\"")
+ endforeach()
+
+ if(NOT DEFINED HAVE_GSS_C_NT_HOSTBASED_SERVICE)
+ set(CMAKE_REQUIRED_FLAGS "${_COMPILER_FLAGS_STR} ${_LINKER_FLAGS_STR}")
+ set(CMAKE_REQUIRED_LIBRARIES ${GSS_LIBRARIES})
+ check_symbol_exists("GSS_C_NT_HOSTBASED_SERVICE" ${_INCLUDE_LIST} HAVE_GSS_C_NT_HOSTBASED_SERVICE)
+ unset(CMAKE_REQUIRED_LIBRARIES)
+ endif()
+ if(NOT HAVE_GSS_C_NT_HOSTBASED_SERVICE)
+ set(HAVE_OLD_GSSMIT ON)
+ endif()
+ endif()
+
+ include_directories(${GSS_INCLUDE_DIR})
+ link_directories(${GSS_LINK_DIRECTORIES})
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GSS_COMPILER_FLAGS}")
+ string(REPLACE ";" " " GSS_LINKER_FLAGS "${GSS_LINKER_FLAGS}")
+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${GSS_LINKER_FLAGS}")
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GSS_LINKER_FLAGS}")
+ set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} ${GSS_LINKER_FLAGS}")
+ list(APPEND CURL_LIBS ${GSS_LIBRARIES})
+
+ else()
+ message(WARNING "GSSAPI support has been requested but no supporting libraries found. Skipping.")
+ endif()
+endif()
+
+option(ENABLE_UNIX_SOCKETS "Define if you want Unix domain sockets support" ON)
+if(ENABLE_UNIX_SOCKETS)
+ include(CheckStructHasMember)
+ if(WIN32)
+ set(USE_UNIX_SOCKETS ON)
+ else()
+ check_struct_has_member("struct sockaddr_un" sun_path "sys/un.h" USE_UNIX_SOCKETS)
+ endif()
+else()
+ unset(USE_UNIX_SOCKETS CACHE)
+endif()
+
+
+#
+# CA handling
+#
+set(CURL_CA_BUNDLE "auto" CACHE STRING
+ "Path to the CA bundle. Set 'none' to disable or 'auto' for auto-detection. Defaults to 'auto'.")
+set(CURL_CA_FALLBACK OFF CACHE BOOL
+ "Set ON to use built-in CA store of TLS backend. Defaults to OFF")
+set(CURL_CA_PATH "auto" CACHE STRING
+ "Location of default CA path. Set 'none' to disable or 'auto' for auto-detection. Defaults to 'auto'.")
+
+if("${CURL_CA_BUNDLE}" STREQUAL "")
+ message(FATAL_ERROR "Invalid value of CURL_CA_BUNDLE. Use 'none', 'auto' or file path.")
+elseif("${CURL_CA_BUNDLE}" STREQUAL "none")
+ unset(CURL_CA_BUNDLE CACHE)
+elseif("${CURL_CA_BUNDLE}" STREQUAL "auto")
+ unset(CURL_CA_BUNDLE CACHE)
+ if(NOT CMAKE_CROSSCOMPILING)
+ set(CURL_CA_BUNDLE_AUTODETECT TRUE)
+ endif()
+else()
+ set(CURL_CA_BUNDLE_SET TRUE)
+endif()
+
+if("${CURL_CA_PATH}" STREQUAL "")
+ message(FATAL_ERROR "Invalid value of CURL_CA_PATH. Use 'none', 'auto' or directory path.")
+elseif("${CURL_CA_PATH}" STREQUAL "none")
+ unset(CURL_CA_PATH CACHE)
+elseif("${CURL_CA_PATH}" STREQUAL "auto")
+ unset(CURL_CA_PATH CACHE)
+ if(NOT CMAKE_CROSSCOMPILING AND NOT USE_NSS)
+ set(CURL_CA_PATH_AUTODETECT TRUE)
+ endif()
+else()
+ set(CURL_CA_PATH_SET TRUE)
+endif()
+
+if(CURL_CA_BUNDLE_SET AND CURL_CA_PATH_AUTODETECT)
+ # Skip autodetection of unset CA path because CA bundle is set explicitly
+elseif(CURL_CA_PATH_SET AND CURL_CA_BUNDLE_AUTODETECT)
+ # Skip autodetection of unset CA bundle because CA path is set explicitly
+elseif(CURL_CA_PATH_AUTODETECT OR CURL_CA_BUNDLE_AUTODETECT)
+ # first try autodetecting a CA bundle, then a CA path
+
+ if(CURL_CA_BUNDLE_AUTODETECT)
+ set(SEARCH_CA_BUNDLE_PATHS
+ /etc/ssl/certs/ca-certificates.crt
+ /etc/pki/tls/certs/ca-bundle.crt
+ /usr/share/ssl/certs/ca-bundle.crt
+ /usr/local/share/certs/ca-root-nss.crt
+ /etc/ssl/cert.pem)
+
+ foreach(SEARCH_CA_BUNDLE_PATH ${SEARCH_CA_BUNDLE_PATHS})
+ if(EXISTS "${SEARCH_CA_BUNDLE_PATH}")
+ message(STATUS "Found CA bundle: ${SEARCH_CA_BUNDLE_PATH}")
+ set(CURL_CA_BUNDLE "${SEARCH_CA_BUNDLE_PATH}" CACHE STRING
+ "Path to the CA bundle. Set 'none' to disable or 'auto' for auto-detection. Defaults to 'auto'.")
+ set(CURL_CA_BUNDLE_SET TRUE CACHE BOOL "Path to the CA bundle has been set")
+ break()
+ endif()
+ endforeach()
+ endif()
+
+ if(CURL_CA_PATH_AUTODETECT AND (NOT CURL_CA_PATH_SET))
+ if(EXISTS "/etc/ssl/certs")
+ set(CURL_CA_PATH "/etc/ssl/certs" CACHE STRING
+ "Location of default CA path. Set 'none' to disable or 'auto' for auto-detection. Defaults to 'auto'.")
+ set(CURL_CA_PATH_SET TRUE CACHE BOOL "Path to the CA bundle has been set")
+ endif()
+ endif()
+endif()
+
+if(CURL_CA_PATH_SET AND NOT USE_OPENSSL AND NOT USE_MBEDTLS)
+ message(STATUS
+ "CA path only supported by OpenSSL, GnuTLS or mbed TLS. "
+ "Set CURL_CA_PATH=none or enable one of those TLS backends.")
+endif()
+
+# Check for header files
+if(NOT UNIX)
+ check_include_file_concat("windows.h" HAVE_WINDOWS_H)
+ check_include_file_concat("ws2tcpip.h" HAVE_WS2TCPIP_H)
+ check_include_file_concat("winsock2.h" HAVE_WINSOCK2_H)
+ check_include_file_concat("wincrypt.h" HAVE_WINCRYPT_H)
+endif()
+
+check_include_file_concat("inttypes.h" HAVE_INTTYPES_H)
+check_include_file_concat("sys/filio.h" HAVE_SYS_FILIO_H)
+check_include_file_concat("sys/ioctl.h" HAVE_SYS_IOCTL_H)
+check_include_file_concat("sys/param.h" HAVE_SYS_PARAM_H)
+check_include_file_concat("sys/poll.h" HAVE_SYS_POLL_H)
+check_include_file_concat("sys/resource.h" HAVE_SYS_RESOURCE_H)
+check_include_file_concat("sys/select.h" HAVE_SYS_SELECT_H)
+check_include_file_concat("sys/socket.h" HAVE_SYS_SOCKET_H)
+check_include_file_concat("sys/sockio.h" HAVE_SYS_SOCKIO_H)
+check_include_file_concat("sys/stat.h" HAVE_SYS_STAT_H)
+check_include_file_concat("sys/time.h" HAVE_SYS_TIME_H)
+check_include_file_concat("sys/types.h" HAVE_SYS_TYPES_H)
+check_include_file_concat("sys/un.h" HAVE_SYS_UN_H)
+check_include_file_concat("sys/utime.h" HAVE_SYS_UTIME_H)
+check_include_file_concat("sys/xattr.h" HAVE_SYS_XATTR_H)
+check_include_file_concat("arpa/inet.h" HAVE_ARPA_INET_H)
+check_include_file_concat("arpa/tftp.h" HAVE_ARPA_TFTP_H)
+check_include_file_concat("fcntl.h" HAVE_FCNTL_H)
+check_include_file_concat("idn2.h" HAVE_IDN2_H)
+check_include_file_concat("ifaddrs.h" HAVE_IFADDRS_H)
+check_include_file_concat("io.h" HAVE_IO_H)
+check_include_file_concat("libgen.h" HAVE_LIBGEN_H)
+check_include_file_concat("locale.h" HAVE_LOCALE_H)
+check_include_file_concat("net/if.h" HAVE_NET_IF_H)
+check_include_file_concat("netdb.h" HAVE_NETDB_H)
+check_include_file_concat("netinet/in.h" HAVE_NETINET_IN_H)
+check_include_file_concat("netinet/tcp.h" HAVE_NETINET_TCP_H)
+check_include_file("linux/tcp.h" HAVE_LINUX_TCP_H)
+
+check_include_file_concat("poll.h" HAVE_POLL_H)
+check_include_file_concat("pwd.h" HAVE_PWD_H)
+check_include_file_concat("setjmp.h" HAVE_SETJMP_H)
+check_include_file_concat("signal.h" HAVE_SIGNAL_H)
+check_include_file_concat("ssl.h" HAVE_SSL_H)
+check_include_file_concat("stdatomic.h" HAVE_STDATOMIC_H)
+check_include_file_concat("stdbool.h" HAVE_STDBOOL_H)
+check_include_file_concat("stdint.h" HAVE_STDINT_H)
+check_include_file_concat("stdlib.h" HAVE_STDLIB_H)
+check_include_file_concat("string.h" HAVE_STRING_H)
+check_include_file_concat("strings.h" HAVE_STRINGS_H)
+check_include_file_concat("stropts.h" HAVE_STROPTS_H)
+check_include_file_concat("termio.h" HAVE_TERMIO_H)
+check_include_file_concat("termios.h" HAVE_TERMIOS_H)
+check_include_file_concat("time.h" HAVE_TIME_H)
+check_include_file_concat("unistd.h" HAVE_UNISTD_H)
+check_include_file_concat("utime.h" HAVE_UTIME_H)
+
+check_include_file_concat("stddef.h" HAVE_STDDEF_H)
+check_include_file_concat("sys/utsname.h" HAVE_SYS_UTSNAME_H)
+
+check_type_size(size_t SIZEOF_SIZE_T)
+check_type_size(ssize_t SIZEOF_SSIZE_T)
+check_type_size("long long" SIZEOF_LONG_LONG)
+check_type_size("long" SIZEOF_LONG)
+check_type_size("int" SIZEOF_INT)
+check_type_size("__int64" SIZEOF___INT64)
+check_type_size("time_t" SIZEOF_TIME_T)
+if(NOT HAVE_SIZEOF_SSIZE_T)
+ if(SIZEOF_LONG EQUAL SIZEOF_SIZE_T)
+ set(ssize_t long)
+ endif()
+ if(NOT ssize_t AND SIZEOF___INT64 EQUAL SIZEOF_SIZE_T)
+ set(ssize_t __int64)
+ endif()
+endif()
+# off_t is sized later, after the HAVE_FILE_OFFSET_BITS test
+
+if(HAVE_SIZEOF_LONG_LONG)
+ set(HAVE_LONGLONG 1)
+endif()
+
+if(NOT CMAKE_CROSSCOMPILING)
+ find_file(RANDOM_FILE urandom /dev)
+ mark_as_advanced(RANDOM_FILE)
+endif()
+
+# Check for some functions that are used
+if(HAVE_LIBWS2_32)
+ set(CMAKE_REQUIRED_LIBRARIES ws2_32)
+elseif(HAVE_LIBSOCKET)
+ set(CMAKE_REQUIRED_LIBRARIES socket)
+endif()
+
+check_symbol_exists(fchmod "${CURL_INCLUDES}" HAVE_FCHMOD)
+check_symbol_exists(basename "${CURL_INCLUDES}" HAVE_BASENAME)
+check_symbol_exists(socket "${CURL_INCLUDES}" HAVE_SOCKET)
+check_symbol_exists(socketpair "${CURL_INCLUDES}" HAVE_SOCKETPAIR)
+check_symbol_exists(recv "${CURL_INCLUDES}" HAVE_RECV)
+check_symbol_exists(send "${CURL_INCLUDES}" HAVE_SEND)
+check_symbol_exists(sendmsg "${CURL_INCLUDES}" HAVE_SENDMSG)
+check_symbol_exists(select "${CURL_INCLUDES}" HAVE_SELECT)
+check_symbol_exists(strdup "${CURL_INCLUDES}" HAVE_STRDUP)
+check_symbol_exists(strtok_r "${CURL_INCLUDES}" HAVE_STRTOK_R)
+check_symbol_exists(strcasecmp "${CURL_INCLUDES}" HAVE_STRCASECMP)
+check_symbol_exists(stricmp "${CURL_INCLUDES}" HAVE_STRICMP)
+check_symbol_exists(strcmpi "${CURL_INCLUDES}" HAVE_STRCMPI)
+check_symbol_exists(alarm "${CURL_INCLUDES}" HAVE_ALARM)
+check_symbol_exists(getppid "${CURL_INCLUDES}" HAVE_GETPPID)
+check_symbol_exists(utimes "${CURL_INCLUDES}" HAVE_UTIMES)
+
+check_symbol_exists(gettimeofday "${CURL_INCLUDES}" HAVE_GETTIMEOFDAY)
+check_symbol_exists(closesocket "${CURL_INCLUDES}" HAVE_CLOSESOCKET)
+check_symbol_exists(sigsetjmp "${CURL_INCLUDES}" HAVE_SIGSETJMP)
+check_symbol_exists(getpass_r "${CURL_INCLUDES}" HAVE_GETPASS_R)
+check_symbol_exists(getpwuid "${CURL_INCLUDES}" HAVE_GETPWUID)
+check_symbol_exists(getpwuid_r "${CURL_INCLUDES}" HAVE_GETPWUID_R)
+check_symbol_exists(geteuid "${CURL_INCLUDES}" HAVE_GETEUID)
+check_symbol_exists(utime "${CURL_INCLUDES}" HAVE_UTIME)
+check_symbol_exists(gmtime_r "${CURL_INCLUDES}" HAVE_GMTIME_R)
+
+check_symbol_exists(gethostbyname_r "${CURL_INCLUDES}" HAVE_GETHOSTBYNAME_R)
+
+check_symbol_exists(signal "${CURL_INCLUDES}" HAVE_SIGNAL)
+check_symbol_exists(strtoll "${CURL_INCLUDES}" HAVE_STRTOLL)
+check_symbol_exists(strerror_r "${CURL_INCLUDES}" HAVE_STRERROR_R)
+check_symbol_exists(siginterrupt "${CURL_INCLUDES}" HAVE_SIGINTERRUPT)
+check_symbol_exists(getaddrinfo "${CURL_INCLUDES}" HAVE_GETADDRINFO)
+if(WIN32)
+ set(HAVE_GETADDRINFO_THREADSAFE ${HAVE_GETADDRINFO})
+endif()
+check_symbol_exists(freeaddrinfo "${CURL_INCLUDES}" HAVE_FREEADDRINFO)
+check_symbol_exists(pipe "${CURL_INCLUDES}" HAVE_PIPE)
+check_symbol_exists(ftruncate "${CURL_INCLUDES}" HAVE_FTRUNCATE)
+check_symbol_exists(getpeername "${CURL_INCLUDES}" HAVE_GETPEERNAME)
+check_symbol_exists(getsockname "${CURL_INCLUDES}" HAVE_GETSOCKNAME)
+check_symbol_exists(if_nametoindex "${CURL_INCLUDES}" HAVE_IF_NAMETOINDEX)
+check_symbol_exists(getrlimit "${CURL_INCLUDES}" HAVE_GETRLIMIT)
+check_symbol_exists(setlocale "${CURL_INCLUDES}" HAVE_SETLOCALE)
+check_symbol_exists(setmode "${CURL_INCLUDES}" HAVE_SETMODE)
+check_symbol_exists(setrlimit "${CURL_INCLUDES}" HAVE_SETRLIMIT)
+
+if(NOT MSVC OR (MSVC_VERSION GREATER_EQUAL 1900))
+ # earlier MSVC compilers had faulty snprintf implementations
+ check_symbol_exists(snprintf "stdio.h" HAVE_SNPRINTF)
+endif()
+check_function_exists(mach_absolute_time HAVE_MACH_ABSOLUTE_TIME)
+check_symbol_exists(inet_ntop "${CURL_INCLUDES}" HAVE_INET_NTOP)
+if(MSVC AND (MSVC_VERSION LESS_EQUAL 1600))
+ set(HAVE_INET_NTOP OFF)
+endif()
+check_symbol_exists(inet_pton "${CURL_INCLUDES}" HAVE_INET_PTON)
+
+check_symbol_exists(fsetxattr "${CURL_INCLUDES}" HAVE_FSETXATTR)
+if(HAVE_FSETXATTR)
+ foreach(CURL_TEST HAVE_FSETXATTR_5 HAVE_FSETXATTR_6)
+ curl_internal_test(${CURL_TEST})
+ endforeach()
+endif()
+
+set(CMAKE_EXTRA_INCLUDE_FILES "sys/socket.h")
+check_type_size("sa_family_t" SIZEOF_SA_FAMILY_T)
+set(HAVE_SA_FAMILY_T ${HAVE_SIZEOF_SA_FAMILY_T})
+set(CMAKE_EXTRA_INCLUDE_FILES "")
+
+set(CMAKE_EXTRA_INCLUDE_FILES "ws2def.h")
+check_type_size("ADDRESS_FAMILY" SIZEOF_ADDRESS_FAMILY)
+set(HAVE_ADDRESS_FAMILY ${HAVE_SIZEOF_ADDRESS_FAMILY})
+set(CMAKE_EXTRA_INCLUDE_FILES "")
+
+# sigaction and sigsetjmp are special. Use special mechanism for
+# detecting those, but only if previous attempt failed.
+if(HAVE_SIGNAL_H)
+ check_symbol_exists(sigaction "signal.h" HAVE_SIGACTION)
+endif()
+
+if(NOT HAVE_SIGSETJMP)
+ if(HAVE_SETJMP_H)
+ check_symbol_exists(sigsetjmp "setjmp.h" HAVE_MACRO_SIGSETJMP)
+ if(HAVE_MACRO_SIGSETJMP)
+ set(HAVE_SIGSETJMP 1)
+ endif()
+ endif()
+endif()
+
+# If there is no stricmp(), do not allow LDAP to parse URLs
+if(NOT HAVE_STRICMP)
+ set(HAVE_LDAP_URL_PARSE 1)
+endif()
+
+# Do curl specific tests
+foreach(CURL_TEST
+ HAVE_FCNTL_O_NONBLOCK
+ HAVE_IOCTLSOCKET
+ HAVE_IOCTLSOCKET_CAMEL
+ HAVE_IOCTLSOCKET_CAMEL_FIONBIO
+ HAVE_IOCTLSOCKET_FIONBIO
+ HAVE_IOCTL_FIONBIO
+ HAVE_IOCTL_SIOCGIFADDR
+ HAVE_SETSOCKOPT_SO_NONBLOCK
+ TIME_WITH_SYS_TIME
+ HAVE_O_NONBLOCK
+ HAVE_GETHOSTBYNAME_R_3
+ HAVE_GETHOSTBYNAME_R_5
+ HAVE_GETHOSTBYNAME_R_6
+ HAVE_GETHOSTBYNAME_R_3_REENTRANT
+ HAVE_GETHOSTBYNAME_R_5_REENTRANT
+ HAVE_GETHOSTBYNAME_R_6_REENTRANT
+ HAVE_IN_ADDR_T
+ HAVE_BOOL_T
+ STDC_HEADERS
+ HAVE_FILE_OFFSET_BITS
+ HAVE_VARIADIC_MACROS_C99
+ HAVE_VARIADIC_MACROS_GCC
+ HAVE_ATOMIC
+ )
+ curl_internal_test(${CURL_TEST})
+endforeach()
+
+if(HAVE_FILE_OFFSET_BITS)
+ set(_FILE_OFFSET_BITS 64)
+ set(CMAKE_REQUIRED_FLAGS "-D_FILE_OFFSET_BITS=64")
+endif()
+check_type_size("off_t" SIZEOF_OFF_T)
+
+# include this header to get the type
+set(CMAKE_REQUIRED_INCLUDES "${CURL_SOURCE_DIR}/include")
+set(CMAKE_EXTRA_INCLUDE_FILES "curl/system.h")
+check_type_size("curl_off_t" SIZEOF_CURL_OFF_T)
+set(CMAKE_EXTRA_INCLUDE_FILES "curl/curl.h")
+check_type_size("curl_socket_t" SIZEOF_CURL_SOCKET_T)
+set(CMAKE_EXTRA_INCLUDE_FILES "")
+
+if(WIN32)
+ # detect actual value of _WIN32_WINNT and store as HAVE_WIN32_WINNT
+ curl_internal_test(HAVE_WIN32_WINNT)
+ if(HAVE_WIN32_WINNT)
+ string(REGEX MATCH ".*_WIN32_WINNT=0x[0-9a-fA-F]+" OUTPUT "${OUTPUT}")
+ string(REGEX REPLACE ".*_WIN32_WINNT=" "" HAVE_WIN32_WINNT "${OUTPUT}")
+ message(STATUS "Found _WIN32_WINNT=${HAVE_WIN32_WINNT}")
+ endif()
+ # avoid storing HAVE_WIN32_WINNT in CMake cache
+ unset(HAVE_WIN32_WINNT CACHE)
+endif()
+
+set(CMAKE_REQUIRED_FLAGS)
+
+option(ENABLE_WEBSOCKETS "Set to ON to enable EXPERIMENTAL websockets" OFF)
+
+if(ENABLE_WEBSOCKETS)
+ if(${SIZEOF_CURL_OFF_T} GREATER "4")
+ set(USE_WEBSOCKETS ON)
+ else()
+ message(WARNING "curl_off_t is too small to enable WebSockets")
+ endif()
+endif()
+
+foreach(CURL_TEST
+ HAVE_GLIBC_STRERROR_R
+ HAVE_POSIX_STRERROR_R
+ )
+ curl_internal_test(${CURL_TEST})
+endforeach()
+
+# Check for reentrant
+foreach(CURL_TEST
+ HAVE_GETHOSTBYNAME_R_3
+ HAVE_GETHOSTBYNAME_R_5
+ HAVE_GETHOSTBYNAME_R_6)
+ if(NOT ${CURL_TEST})
+ if(${CURL_TEST}_REENTRANT)
+ set(NEED_REENTRANT 1)
+ endif()
+ endif()
+endforeach()
+
+if(NEED_REENTRANT)
+ foreach(CURL_TEST
+ HAVE_GETHOSTBYNAME_R_3
+ HAVE_GETHOSTBYNAME_R_5
+ HAVE_GETHOSTBYNAME_R_6)
+ set(${CURL_TEST} 0)
+ if(${CURL_TEST}_REENTRANT)
+ set(${CURL_TEST} 1)
+ endif()
+ endforeach()
+endif()
+
+# Check clock_gettime(CLOCK_MONOTONIC, x) support
+curl_internal_test(HAVE_CLOCK_GETTIME_MONOTONIC)
+
+# Check compiler support of __builtin_available()
+curl_internal_test(HAVE_BUILTIN_AVAILABLE)
+
+# Some other minor tests
+
+if(NOT HAVE_IN_ADDR_T)
+ set(in_addr_t "unsigned long")
+endif()
+
+# Check for nonblocking
+set(HAVE_DISABLED_NONBLOCKING 1)
+if(HAVE_FIONBIO OR
+ HAVE_IOCTLSOCKET OR
+ HAVE_IOCTLSOCKET_CASE OR
+ HAVE_O_NONBLOCK)
+ set(HAVE_DISABLED_NONBLOCKING)
+endif()
+
+if(CMAKE_COMPILER_IS_GNUCC AND APPLE)
+ include(CheckCCompilerFlag)
+ check_c_compiler_flag(-Wno-long-double HAVE_C_FLAG_Wno_long_double)
+ if(HAVE_C_FLAG_Wno_long_double)
+ # The Mac version of GCC warns about use of long double. Disable it.
+ get_source_file_property(MPRINTF_COMPILE_FLAGS mprintf.c COMPILE_FLAGS)
+ if(MPRINTF_COMPILE_FLAGS)
+ set(MPRINTF_COMPILE_FLAGS "${MPRINTF_COMPILE_FLAGS} -Wno-long-double")
+ else()
+ set(MPRINTF_COMPILE_FLAGS "-Wno-long-double")
+ endif()
+ set_source_files_properties(mprintf.c PROPERTIES
+ COMPILE_FLAGS ${MPRINTF_COMPILE_FLAGS})
+ endif()
+endif()
+
+# TODO test which of these headers are required
+if(WIN32)
+ set(CURL_PULL_WS2TCPIP_H ${HAVE_WS2TCPIP_H})
+else()
+ set(CURL_PULL_SYS_TYPES_H ${HAVE_SYS_TYPES_H})
+ set(CURL_PULL_SYS_SOCKET_H ${HAVE_SYS_SOCKET_H})
+ set(CURL_PULL_SYS_POLL_H ${HAVE_SYS_POLL_H})
+endif()
+
+include(CMake/OtherTests.cmake)
+
+add_definitions(-DHAVE_CONFIG_H)
+
+# For Windows, all compilers used by CMake should support large files
+if(WIN32)
+ set(USE_WIN32_LARGE_FILES ON)
+
+ # Use the manifest embedded in the Windows Resource
+ set(CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS} -DCURL_EMBED_MANIFEST")
+
+ # Check if crypto functions in wincrypt.h are actually available
+ if(HAVE_WINCRYPT_H)
+ check_symbol_exists(CryptAcquireContext "windows.h;wincrypt.h" USE_WINCRYPT)
+ endif()
+ if(USE_WINCRYPT)
+ set(USE_WIN32_CRYPTO ON)
+ endif()
+
+ # Link required libraries for USE_WIN32_CRYPTO or USE_SCHANNEL
+ if(USE_WIN32_CRYPTO OR USE_SCHANNEL)
+ list(APPEND CURL_LIBS "advapi32" "crypt32")
+ endif()
+
+ if(NOT HAVE_MINGW_ORIGINAL)
+ list(APPEND CURL_LIBS "bcrypt")
+ else()
+ set(HAVE_FTRUNCATE OFF)
+ endif()
+endif()
+
+if(MSVC)
+ # Disable default manifest added by CMake
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
+
+ add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
+ if(CMAKE_C_FLAGS MATCHES "/W[0-4]")
+ string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
+ else()
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4")
+ endif()
+
+ # Use multithreaded compilation on VS 2008+
+ if(MSVC_VERSION GREATER_EQUAL 1500)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP")
+ endif()
+endif()
+
+if(CURL_WERROR)
+ if(MSVC_VERSION)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX")
+ else()
+ # this assumes clang or gcc style options
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
+ endif()
+endif()
+
+if(CURL_LTO)
+ if(CMAKE_VERSION VERSION_LESS 3.9)
+ message(FATAL_ERROR "Requested LTO but your cmake version ${CMAKE_VERSION} is to old. You need at least 3.9")
+ endif()
+
+ cmake_policy(SET CMP0069 NEW)
+
+ include(CheckIPOSupported)
+ check_ipo_supported(RESULT CURL_HAS_LTO OUTPUT CURL_LTO_ERROR LANGUAGES C)
+ if(CURL_HAS_LTO)
+ message(STATUS "LTO supported and enabled")
+ else()
+ message(FATAL_ERROR "LTO was requested - but compiler doesn't support it\n${CURL_LTO_ERROR}")
+ endif()
+endif()
+
+
+# Ugly (but functional) way to include "Makefile.inc" by transforming it (= regenerate it).
+function(transform_makefile_inc INPUT_FILE OUTPUT_FILE)
+ file(READ ${INPUT_FILE} MAKEFILE_INC_TEXT)
+ string(REPLACE "$(top_srcdir)" "\${CURL_SOURCE_DIR}" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT})
+ string(REPLACE "$(top_builddir)" "\${CURL_BINARY_DIR}" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT})
+
+ string(REGEX REPLACE "\\\\\n" "!π!α!" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT})
+ string(REGEX REPLACE "([a-zA-Z_][a-zA-Z0-9_]*)[\t ]*=[\t ]*([^\n]*)" "SET(\\1 \\2)" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT})
+ string(REPLACE "!π!α!" "\n" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT})
+
+ string(REGEX REPLACE "\\$\\(([a-zA-Z_][a-zA-Z0-9_]*)\\)" "\${\\1}" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT}) # Replace $() with ${}
+ string(REGEX REPLACE "@([a-zA-Z_][a-zA-Z0-9_]*)@" "\${\\1}" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT}) # Replace @@ with ${}, even if that may not be read by CMake scripts.
+ file(WRITE ${OUTPUT_FILE} ${MAKEFILE_INC_TEXT})
+ set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${INPUT_FILE}")
+endfunction()
+
+include(GNUInstallDirs)
+
+set(CURL_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
+set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
+set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
+set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake")
+set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake")
+
+if(USE_MANUAL)
+ add_subdirectory(docs)
+endif()
+
+add_subdirectory(lib)
+
+if(BUILD_CURL_EXE)
+ add_subdirectory(src)
+endif()
+
+cmake_dependent_option(BUILD_TESTING "Build tests"
+ ON "PERL_FOUND;NOT CURL_DISABLE_TESTS"
+ OFF)
+if(BUILD_TESTING)
+ add_subdirectory(tests)
+endif()
+
+# Helper to populate a list (_items) with a label when conditions (the remaining
+# args) are satisfied
+macro(_add_if label)
+ # needs to be a macro to allow this indirection
+ if(${ARGN})
+ set(_items ${_items} "${label}")
+ endif()
+endmacro()
+
+# NTLM support requires crypto function adaptions from various SSL libs
+# TODO alternative SSL libs tests for SSP1, GNUTLS, NSS
+if(NOT (CURL_DISABLE_CRYPTO_AUTH OR CURL_DISABLE_NTLM) AND
+ (USE_OPENSSL OR USE_MBEDTLS OR USE_DARWINSSL OR USE_WIN32_CRYPTO))
+ set(use_curl_ntlm_core ON)
+endif()
+
+# Clear list and try to detect available features
+set(_items)
+_add_if("SSL" SSL_ENABLED)
+_add_if("IPv6" ENABLE_IPV6)
+_add_if("unixsockets" USE_UNIX_SOCKETS)
+_add_if("libz" HAVE_LIBZ)
+_add_if("brotli" HAVE_BROTLI)
+_add_if("zstd" HAVE_ZSTD)
+_add_if("AsynchDNS" USE_ARES OR USE_THREADS_POSIX OR USE_THREADS_WIN32)
+_add_if("IDN" HAVE_LIBIDN2 OR USE_WIN32_IDN)
+_add_if("Largefile" (SIZEOF_CURL_OFF_T GREATER 4) AND
+ ((SIZEOF_OFF_T GREATER 4) OR USE_WIN32_LARGE_FILES))
+# TODO SSP1 (Schannel) check is missing
+_add_if("SSPI" USE_WINDOWS_SSPI)
+_add_if("GSS-API" HAVE_GSSAPI)
+_add_if("alt-svc" NOT CURL_DISABLE_ALTSVC)
+_add_if("HSTS" NOT CURL_DISABLE_HSTS)
+# TODO SSP1 missing for SPNEGO
+_add_if("SPNEGO" NOT CURL_DISABLE_CRYPTO_AUTH AND
+ (HAVE_GSSAPI OR USE_WINDOWS_SSPI))
+_add_if("Kerberos" NOT CURL_DISABLE_CRYPTO_AUTH AND
+ (HAVE_GSSAPI OR USE_WINDOWS_SSPI))
+# NTLM support requires crypto function adaptions from various SSL libs
+# TODO alternative SSL libs tests for SSP1, GNUTLS, NSS
+_add_if("NTLM" NOT (CURL_DISABLE_CRYPTO_AUTH OR CURL_DISABLE_NTLM) AND
+ (use_curl_ntlm_core OR USE_WINDOWS_SSPI))
+# TODO missing option (autoconf: --enable-ntlm-wb)
+_add_if("NTLM_WB" NOT (CURL_DISABLE_CRYPTO_AUTH OR CURL_DISABLE_NTLM) AND
+ (use_curl_ntlm_core OR USE_WINDOWS_SSPI) AND
+ NOT CURL_DISABLE_HTTP AND NTLM_WB_ENABLED)
+# TODO missing option (--enable-tls-srp), depends on GNUTLS_SRP/OPENSSL_SRP
+_add_if("TLS-SRP" USE_TLS_SRP)
+# TODO option --with-nghttp2 tests for nghttp2 lib and nghttp2/nghttp2.h header
+_add_if("HTTP2" USE_NGHTTP2)
+_add_if("HTTP3" USE_NGTCP2 OR USE_QUICHE)
+_add_if("MultiSSL" CURL_WITH_MULTI_SSL)
+# TODO wolfSSL only support this from v5.0.0 onwards
+_add_if("HTTPS-proxy" SSL_ENABLED AND (USE_OPENSSL OR USE_GNUTLS OR USE_NSS
+ OR USE_SCHANNEL OR USE_RUSTLS OR USE_BEARSSL OR
+ USE_MBEDTLS OR USE_SECTRANSP))
+_add_if("unicode" ENABLE_UNICODE)
+_add_if("threadsafe" HAVE_ATOMIC OR (WIN32 AND
+ HAVE_WIN32_WINNT GREATER_EQUAL 0x600))
+_add_if("PSL" USE_LIBPSL)
+string(REPLACE ";" " " SUPPORT_FEATURES "${_items}")
+message(STATUS "Enabled features: ${SUPPORT_FEATURES}")
+
+# Clear list and try to detect available protocols
+set(_items)
+_add_if("HTTP" NOT CURL_DISABLE_HTTP)
+_add_if("HTTPS" NOT CURL_DISABLE_HTTP AND SSL_ENABLED)
+_add_if("FTP" NOT CURL_DISABLE_FTP)
+_add_if("FTPS" NOT CURL_DISABLE_FTP AND SSL_ENABLED)
+_add_if("FILE" NOT CURL_DISABLE_FILE)
+_add_if("TELNET" NOT CURL_DISABLE_TELNET)
+_add_if("LDAP" NOT CURL_DISABLE_LDAP)
+# CURL_DISABLE_LDAP implies CURL_DISABLE_LDAPS
+# TODO check HAVE_LDAP_SSL (in autoconf this is enabled with --enable-ldaps)
+_add_if("LDAPS" NOT CURL_DISABLE_LDAPS AND
+ ((USE_OPENLDAP AND SSL_ENABLED) OR
+ (NOT USE_OPENLDAP AND HAVE_LDAP_SSL)))
+_add_if("DICT" NOT CURL_DISABLE_DICT)
+_add_if("TFTP" NOT CURL_DISABLE_TFTP)
+_add_if("GOPHER" NOT CURL_DISABLE_GOPHER)
+_add_if("GOPHERS" NOT CURL_DISABLE_GOPHER AND SSL_ENABLED)
+_add_if("POP3" NOT CURL_DISABLE_POP3)
+_add_if("POP3S" NOT CURL_DISABLE_POP3 AND SSL_ENABLED)
+_add_if("IMAP" NOT CURL_DISABLE_IMAP)
+_add_if("IMAPS" NOT CURL_DISABLE_IMAP AND SSL_ENABLED)
+_add_if("SMB" NOT CURL_DISABLE_SMB AND
+ use_curl_ntlm_core AND (SIZEOF_CURL_OFF_T GREATER 4))
+_add_if("SMBS" NOT CURL_DISABLE_SMB AND SSL_ENABLED AND
+ use_curl_ntlm_core AND (SIZEOF_CURL_OFF_T GREATER 4))
+_add_if("SMTP" NOT CURL_DISABLE_SMTP)
+_add_if("SMTPS" NOT CURL_DISABLE_SMTP AND SSL_ENABLED)
+_add_if("SCP" USE_LIBSSH2 OR USE_LIBSSH)
+_add_if("SFTP" USE_LIBSSH2 OR USE_LIBSSH)
+_add_if("RTSP" NOT CURL_DISABLE_RTSP)
+_add_if("RTMP" USE_LIBRTMP)
+_add_if("MQTT" NOT CURL_DISABLE_MQTT)
+_add_if("WS" USE_WEBSOCKETS)
+_add_if("WSS" USE_WEBSOCKETS)
+if(_items)
+ list(SORT _items)
+endif()
+string(REPLACE ";" " " SUPPORT_PROTOCOLS "${_items}")
+message(STATUS "Enabled protocols: ${SUPPORT_PROTOCOLS}")
+
+# Clear list and collect SSL backends
+set(_items)
+_add_if("Schannel" SSL_ENABLED AND USE_SCHANNEL)
+_add_if("OpenSSL" SSL_ENABLED AND USE_OPENSSL)
+_add_if("Secure Transport" SSL_ENABLED AND USE_SECTRANSP)
+_add_if("mbedTLS" SSL_ENABLED AND USE_MBEDTLS)
+_add_if("BearSSL" SSL_ENABLED AND USE_BEARSSL)
+_add_if("NSS" SSL_ENABLED AND USE_NSS)
+_add_if("wolfSSL" SSL_ENABLED AND USE_WOLFSSL)
+if(_items)
+ list(SORT _items)
+endif()
+string(REPLACE ";" " " SSL_BACKENDS "${_items}")
+message(STATUS "Enabled SSL backends: ${SSL_BACKENDS}")
+
+# curl-config needs the following options to be set.
+set(CC "${CMAKE_C_COMPILER}")
+# TODO probably put a -D... options here?
+set(CONFIGURE_OPTIONS "")
+# TODO when to set "-DCURL_STATICLIB" for CPPFLAG_CURL_STATICLIB?
+set(CPPFLAG_CURL_STATICLIB "")
+set(CURLVERSION "${CURL_VERSION}")
+set(exec_prefix "\${prefix}")
+set(includedir "\${prefix}/include")
+set(LDFLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
+set(LIBCURL_LIBS "")
+set(libdir "${CMAKE_INSTALL_PREFIX}/lib")
+foreach(_lib ${CMAKE_C_IMPLICIT_LINK_LIBRARIES} ${CURL_LIBS})
+ if(TARGET "${_lib}")
+ set(_libname "${_lib}")
+ get_target_property(_imported "${_libname}" IMPORTED)
+ if(NOT _imported)
+ # Reading the LOCATION property on non-imported target will error out.
+ # Assume the user won't need this information in the .pc file.
+ continue()
+ endif()
+ get_target_property(_lib "${_libname}" LOCATION)
+ if(NOT _lib)
+ message(WARNING "Bad lib in library list: ${_libname}")
+ continue()
+ endif()
+ endif()
+ if(_lib MATCHES ".*/.*" OR _lib MATCHES "^-")
+ set(LIBCURL_LIBS "${LIBCURL_LIBS} ${_lib}")
+ else()
+ set(LIBCURL_LIBS "${LIBCURL_LIBS} -l${_lib}")
+ endif()
+endforeach()
+if(BUILD_SHARED_LIBS)
+ set(ENABLE_SHARED "yes")
+ set(ENABLE_STATIC "no")
+ set(LIBCURL_NO_SHARED "")
+else()
+ set(ENABLE_SHARED "no")
+ set(ENABLE_STATIC "yes")
+ set(LIBCURL_NO_SHARED "${LIBCURL_LIBS}")
+endif()
+# "a" (Linux) or "lib" (Windows)
+string(REPLACE "." "" libext "${CMAKE_STATIC_LIBRARY_SUFFIX}")
+set(prefix "${CMAKE_INSTALL_PREFIX}")
+# Set this to "yes" to append all libraries on which -lcurl is dependent
+set(REQUIRE_LIB_DEPS "no")
+# SUPPORT_FEATURES
+# SUPPORT_PROTOCOLS
+set(VERSIONNUM "${CURL_VERSION_NUM}")
+
+# Finally generate a "curl-config" matching this config
+# Use:
+# * ENABLE_SHARED
+# * ENABLE_STATIC
+configure_file("${CURL_SOURCE_DIR}/curl-config.in"
+ "${CURL_BINARY_DIR}/curl-config" @ONLY)
+install(FILES "${CURL_BINARY_DIR}/curl-config"
+ DESTINATION ${CMAKE_INSTALL_BINDIR}
+ PERMISSIONS
+ OWNER_READ OWNER_WRITE OWNER_EXECUTE
+ GROUP_READ GROUP_EXECUTE
+ WORLD_READ WORLD_EXECUTE)
+
+# Finally generate a pkg-config file matching this config
+configure_file("${CURL_SOURCE_DIR}/libcurl.pc.in"
+ "${CURL_BINARY_DIR}/libcurl.pc" @ONLY)
+install(FILES "${CURL_BINARY_DIR}/libcurl.pc"
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+
+# install headers
+install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/curl"
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+ FILES_MATCHING PATTERN "*.h")
+
+include(CMakePackageConfigHelpers)
+write_basic_package_version_file(
+ "${version_config}"
+ VERSION ${CURL_VERSION}
+ COMPATIBILITY SameMajorVersion
+)
+file(READ "${version_config}" generated_version_config)
+file(WRITE "${version_config}"
+"if(NOT PACKAGE_FIND_VERSION_RANGE AND PACKAGE_FIND_VERSION_MAJOR STREQUAL \"7\")
+ # Version 8 satisfies version 7... requirements
+ set(PACKAGE_FIND_VERSION_MAJOR 8)
+ set(PACKAGE_FIND_VERSION_COUNT 1)
+endif()
+${generated_version_config}"
+)
+
+# Use:
+# * TARGETS_EXPORT_NAME
+# * PROJECT_NAME
+configure_package_config_file(CMake/curl-config.cmake.in
+ "${project_config}"
+ INSTALL_DESTINATION ${CURL_INSTALL_CMAKE_DIR}
+)
+
+if(CURL_ENABLE_EXPORT_TARGET)
+ install(
+ EXPORT "${TARGETS_EXPORT_NAME}"
+ NAMESPACE "${PROJECT_NAME}::"
+ DESTINATION ${CURL_INSTALL_CMAKE_DIR}
+ )
+endif()
+
+install(
+ FILES ${version_config} ${project_config}
+ DESTINATION ${CURL_INSTALL_CMAKE_DIR}
+)
+
+# Workaround for MSVS10 to avoid the Dialog Hell
+# FIXME: This could be removed with future version of CMake.
+if(MSVC_VERSION EQUAL 1600)
+ set(CURL_SLN_FILENAME "${CMAKE_CURRENT_BINARY_DIR}/CURL.sln")
+ if(EXISTS "${CURL_SLN_FILENAME}")
+ file(APPEND "${CURL_SLN_FILENAME}" "\n# This should be regenerated!\n")
+ endif()
+endif()
+
+if(NOT TARGET curl_uninstall)
+ configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/CMake/cmake_uninstall.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/CMake/cmake_uninstall.cmake
+ IMMEDIATE @ONLY)
+
+ add_custom_target(curl_uninstall
+ COMMAND ${CMAKE_COMMAND} -P
+ ${CMAKE_CURRENT_BINARY_DIR}/CMake/cmake_uninstall.cmake)
+endif()
diff --git a/src/fire/curl-8.1.2/COPYING b/src/fire/curl-8.1.2/COPYING
new file mode 100644
index 0000000..d1eab3e
--- /dev/null
+++ b/src/fire/curl-8.1.2/COPYING
@@ -0,0 +1,22 @@
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright (c) 1996 - 2023, Daniel Stenberg, , and many
+contributors, see the THANKS file.
+
+All rights reserved.
+
+Permission to use, copy, modify, and distribute this software for any purpose
+with or without fee is hereby granted, provided that the above copyright
+notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
+NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall not
+be used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization of the copyright holder.
diff --git a/src/fire/curl-8.1.2/MacOSX-Framework b/src/fire/curl-8.1.2/MacOSX-Framework
new file mode 100644
index 0000000..5ac5376
--- /dev/null
+++ b/src/fire/curl-8.1.2/MacOSX-Framework
@@ -0,0 +1,160 @@
+#!/usr/bin/env bash
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+# This script performs all of the steps needed to build a
+# universal binary libcurl.framework for Mac OS X 10.4 or greater.
+#
+# Hendrik Visage:
+# Generalizations added since Snowleopard (10.6) do not include
+# the 10.4u SDK.
+#
+# Also note:
+# 10.5 is the *ONLY* SDK that support PPC64 :( -- 10.6 do not have ppc64 support
+#If you need to have PPC64 support then change below to 1
+PPC64_NEEDED=0
+# Apple does not support building for PPC anymore in Xcode 4 and later.
+# If you're using Xcode 3 or earlier and need PPC support, then change
+# the setting below to 1
+PPC_NEEDED=0
+
+# For me the default is to develop for the platform I am on, and if you
+#desire compatibility with older versions then change USE_OLD to 1 :)
+USE_OLD=0
+
+VERSION=`/usr/bin/sed -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' include/curl/curlver.h`
+FRAMEWORK_VERSION=Versions/Release-$VERSION
+
+#I also wanted to "copy over" the system, and thus the reason I added the
+# version to Versions/Release-7.20.1 etc.
+# now a simple rsync -vaP libcurl.framework /Library/Frameworks will install it
+# and setup the right paths to this version, leaving the system version
+# "intact", so you can "fix" it later with the links to Versions/A/...
+
+DEVELOPER_PATH=`xcode-select --print-path`
+# Around Xcode 4.3, SDKs were moved from the Developer folder into the
+# MacOSX.platform folder
+if test -d "$DEVELOPER_PATH/Platforms/MacOSX.platform/Developer/SDKs"; then
+ SDK_PATH="$DEVELOPER_PATH/Platforms/MacOSX.platform/Developer/SDKs"
+else
+ SDK_PATH="$DEVELOPER_PATH/SDKs"
+fi
+OLD_SDK=`ls $SDK_PATH|head -1`
+NEW_SDK=`ls -r $SDK_PATH|head -1`
+
+if test "0"$USE_OLD -gt 0
+then
+ SDK32=$OLD_SDK
+else
+ SDK32=$NEW_SDK
+fi
+
+MACVER=`echo $SDK32|sed -e s/[a-zA-Z]//g -e s/.\$//`
+
+SDK32_DIR=$SDK_PATH/$SDK32
+MINVER32='-mmacosx-version-min='$MACVER
+if test $PPC_NEEDED -gt 0; then
+ ARCHES32='-arch i386 -arch ppc'
+else
+ ARCHES32='-arch i386'
+fi
+
+if test $PPC64_NEEDED -gt 0
+then
+ SDK64=10.5
+ ARCHES64='-arch x86_64 -arch ppc64'
+ SDK64=`ls $SDK_PATH | grep "10\.5" | head -1`
+else
+ ARCHES64='-arch x86_64'
+ #We "know" that 10.4 and earlier do not support 64bit
+ OLD_SDK64=`ls $SDK_PATH | grep -v "10\.[0-4]" | head -1`
+ NEW_SDK64=`ls -r $SDK_PATH | grep -v "10\.[0-4][^0-9]" | head -1`
+ if test $USE_OLD -gt 0
+ then
+ SDK64=$OLD_SDK64
+ else
+ SDK64=$NEW_SDK64
+ fi
+fi
+
+SDK64_DIR=$SDK_PATH/$SDK64
+MACVER64=`echo $SDK64|sed -e s/[a-zA-Z]//g -e s/.\$//`
+
+MINVER64='-mmacosx-version-min='$MACVER64
+
+if test ! -z $SDK32; then
+ echo "----Configuring libcurl for 32 bit universal framework..."
+ make clean
+ ./configure --disable-dependency-tracking --disable-static --with-gssapi --with-secure-transport \
+ CFLAGS="-Os -isysroot $SDK32_DIR $ARCHES32" \
+ LDFLAGS="-Wl,-syslibroot,$SDK32_DIR $ARCHES32 -Wl,-headerpad_max_install_names" \
+ CC=$CC
+
+ echo "----Building 32 bit libcurl..."
+ make -j `sysctl -n hw.logicalcpu_max`
+
+ echo "----Creating 32 bit framework..."
+ rm -r libcurl.framework
+ mkdir -p libcurl.framework/${FRAMEWORK_VERSION}/Resources
+ cp lib/.libs/libcurl.dylib libcurl.framework/${FRAMEWORK_VERSION}/libcurl
+ install_name_tool -id @rpath/libcurl.framework/${FRAMEWORK_VERSION}/libcurl libcurl.framework/${FRAMEWORK_VERSION}/libcurl
+ cp lib/libcurl.plist libcurl.framework/${FRAMEWORK_VERSION}/Resources/Info.plist
+ mkdir -p libcurl.framework/${FRAMEWORK_VERSION}/Headers/curl
+ cp include/curl/*.h libcurl.framework/${FRAMEWORK_VERSION}/Headers/curl
+ pushd libcurl.framework
+ ln -fs ${FRAMEWORK_VERSION}/libcurl libcurl
+ ln -fs ${FRAMEWORK_VERSION}/Resources Resources
+ ln -fs ${FRAMEWORK_VERSION}/Headers Headers
+ cd Versions
+ ln -fs $(basename "${FRAMEWORK_VERSION}") Current
+
+ echo Testing for SDK64
+ if test -d $SDK64_DIR; then
+ echo entering...
+ popd
+ make clean
+ echo "----Configuring libcurl for 64 bit universal framework..."
+ ./configure --disable-dependency-tracking --disable-static --with-gssapi --with-secure-transport \
+ CFLAGS="-Os -isysroot $SDK64_DIR $ARCHES64" \
+ LDFLAGS="-Wl,-syslibroot,$SDK64_DIR $ARCHES64 -Wl,-headerpad_max_install_names" \
+ CC=$CC
+
+ echo "----Building 64 bit libcurl..."
+ make -j `sysctl -n hw.logicalcpu_max`
+
+ echo "----Appending 64 bit framework to 32 bit framework..."
+ cp lib/.libs/libcurl.dylib libcurl.framework/${FRAMEWORK_VERSION}/libcurl64
+ install_name_tool -id @rpath/libcurl.framework/${FRAMEWORK_VERSION}/libcurl libcurl.framework/${FRAMEWORK_VERSION}/libcurl64
+ cp libcurl.framework/${FRAMEWORK_VERSION}/libcurl libcurl.framework/${FRAMEWORK_VERSION}/libcurl32
+ pwd
+ lipo libcurl.framework/${FRAMEWORK_VERSION}/libcurl32 libcurl.framework/${FRAMEWORK_VERSION}/libcurl64 -create -output libcurl.framework/${FRAMEWORK_VERSION}/libcurl
+ rm libcurl.framework/${FRAMEWORK_VERSION}/libcurl32 libcurl.framework/${FRAMEWORK_VERSION}/libcurl64
+ fi
+
+ pwd
+ lipo -info libcurl.framework/${FRAMEWORK_VERSION}/libcurl
+ echo "libcurl.framework is built and can now be included in other projects."
+ echo "Copy libcurl.framework to your bundle's Contents/Frameworks folder, ~/Library/Frameworks or /Library/Frameworks."
+else
+ echo "Building libcurl.framework requires Mac OS X 10.4 or later with the MacOSX10.4/5/6 SDK installed."
+fi
diff --git a/src/fire/curl-8.1.2/Makefile b/src/fire/curl-8.1.2/Makefile
new file mode 100644
index 0000000..a5818e1
--- /dev/null
+++ b/src/fire/curl-8.1.2/Makefile
@@ -0,0 +1,92 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+
+all:
+ ./configure
+ make
+
+ssl:
+ ./configure --with-openssl
+ make
+
+mingw32:
+ $(MAKE) -C lib -f Makefile.mk
+ $(MAKE) -C src -f Makefile.mk
+
+mingw32-clean:
+ $(MAKE) -C lib -f Makefile.mk clean
+ $(MAKE) -C src -f Makefile.mk clean
+ $(MAKE) -C docs/examples -f Makefile.mk clean
+
+mingw32-vclean mingw32-distclean:
+ $(MAKE) -C lib -f Makefile.mk vclean
+ $(MAKE) -C src -f Makefile.mk vclean
+ $(MAKE) -C docs/examples -f Makefile.mk vclean
+
+mingw32-examples%:
+ $(MAKE) -C docs/examples -f Makefile.mk CFG=$@
+
+mingw32%:
+ $(MAKE) -C lib -f Makefile.mk CFG=$@
+ $(MAKE) -C src -f Makefile.mk CFG=$@
+
+vc:
+ cd winbuild
+ nmake /f Makefile.vc MACHINE=x86
+
+vc-x64:
+ cd winbuild
+ nmake /f Makefile.vc MACHINE=x64
+
+djgpp%:
+ $(MAKE) -C lib -f Makefile.mk CFG=$@ CROSSPREFIX=i586-pc-msdosdjgpp-
+ $(MAKE) -C src -f Makefile.mk CFG=$@ CROSSPREFIX=i586-pc-msdosdjgpp-
+
+cygwin:
+ ./configure
+ make
+
+cygwin-ssl:
+ ./configure --with-openssl
+ make
+
+amiga%:
+ $(MAKE) -C lib -f Makefile.mk CFG=$@ CROSSPREFIX=m68k-amigaos-
+ $(MAKE) -C src -f Makefile.mk CFG=$@ CROSSPREFIX=m68k-amigaos-
+
+unix: all
+
+unix-ssl: ssl
+
+linux: all
+
+linux-ssl: ssl
+
+ca-bundle: scripts/mk-ca-bundle.pl
+ @echo "generate a fresh ca-bundle.crt"
+ @perl $< -b -l -u lib/ca-bundle.crt
+
+ca-firefox: lib/firefox-db2pem.sh
+ @echo "generate a fresh ca-bundle.crt"
+ ./lib/firefox-db2pem.sh lib/ca-bundle.crt
diff --git a/src/fire/curl-8.1.2/Makefile.am b/src/fire/curl-8.1.2/Makefile.am
new file mode 100644
index 0000000..f25e4e2
--- /dev/null
+++ b/src/fire/curl-8.1.2/Makefile.am
@@ -0,0 +1,614 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+
+AUTOMAKE_OPTIONS = foreign
+
+ACLOCAL_AMFLAGS = -I m4
+
+CMAKE_DIST = \
+ CMake/cmake_uninstall.cmake.in \
+ CMake/CMakeConfigurableFile.in \
+ CMake/curl-config.cmake.in \
+ CMake/CurlSymbolHiding.cmake \
+ CMake/CurlTests.c \
+ CMake/FindBearSSL.cmake \
+ CMake/FindBrotli.cmake \
+ CMake/FindCARES.cmake \
+ CMake/FindGSS.cmake \
+ CMake/FindLibPSL.cmake \
+ CMake/FindLibSSH2.cmake \
+ CMake/FindMbedTLS.cmake \
+ CMake/FindMSH3.cmake \
+ CMake/FindNGHTTP2.cmake \
+ CMake/FindNGHTTP3.cmake \
+ CMake/FindNGTCP2.cmake \
+ CMake/FindNSS.cmake \
+ CMake/FindQUICHE.cmake \
+ CMake/FindWolfSSL.cmake \
+ CMake/FindZstd.cmake \
+ CMake/Macros.cmake \
+ CMake/OtherTests.cmake \
+ CMake/PickyWarnings.cmake \
+ CMake/Platforms/WindowsCache.cmake \
+ CMake/Utilities.cmake \
+ CMakeLists.txt
+
+VC10_LIBTMPL = projects/Windows/VC10/lib/libcurl.tmpl
+VC10_LIBVCXPROJ = projects/Windows/VC10/lib/libcurl.vcxproj.dist
+VC10_LIBVCXPROJ_DEPS = $(VC10_LIBTMPL) Makefile.am lib/Makefile.inc
+VC10_SRCTMPL = projects/Windows/VC10/src/curl.tmpl
+VC10_SRCVCXPROJ = projects/Windows/VC10/src/curl.vcxproj.dist
+VC10_SRCVCXPROJ_DEPS = $(VC10_SRCTMPL) Makefile.am src/Makefile.inc
+
+VC11_LIBTMPL = projects/Windows/VC11/lib/libcurl.tmpl
+VC11_LIBVCXPROJ = projects/Windows/VC11/lib/libcurl.vcxproj.dist
+VC11_LIBVCXPROJ_DEPS = $(VC11_LIBTMPL) Makefile.am lib/Makefile.inc
+VC11_SRCTMPL = projects/Windows/VC11/src/curl.tmpl
+VC11_SRCVCXPROJ = projects/Windows/VC11/src/curl.vcxproj.dist
+VC11_SRCVCXPROJ_DEPS = $(VC11_SRCTMPL) Makefile.am src/Makefile.inc
+
+VC12_LIBTMPL = projects/Windows/VC12/lib/libcurl.tmpl
+VC12_LIBVCXPROJ = projects/Windows/VC12/lib/libcurl.vcxproj.dist
+VC12_LIBVCXPROJ_DEPS = $(VC12_LIBTMPL) Makefile.am lib/Makefile.inc
+VC12_SRCTMPL = projects/Windows/VC12/src/curl.tmpl
+VC12_SRCVCXPROJ = projects/Windows/VC12/src/curl.vcxproj.dist
+VC12_SRCVCXPROJ_DEPS = $(VC12_SRCTMPL) Makefile.am src/Makefile.inc
+
+VC14_LIBTMPL = projects/Windows/VC14/lib/libcurl.tmpl
+VC14_LIBVCXPROJ = projects/Windows/VC14/lib/libcurl.vcxproj.dist
+VC14_LIBVCXPROJ_DEPS = $(VC14_LIBTMPL) Makefile.am lib/Makefile.inc
+VC14_SRCTMPL = projects/Windows/VC14/src/curl.tmpl
+VC14_SRCVCXPROJ = projects/Windows/VC14/src/curl.vcxproj.dist
+VC14_SRCVCXPROJ_DEPS = $(VC14_SRCTMPL) Makefile.am src/Makefile.inc
+
+VC14_10_LIBTMPL = projects/Windows/VC14.10/lib/libcurl.tmpl
+VC14_10_LIBVCXPROJ = projects/Windows/VC14.10/lib/libcurl.vcxproj.dist
+VC14_10_LIBVCXPROJ_DEPS = $(VC14_10_LIBTMPL) Makefile.am lib/Makefile.inc
+VC14_10_SRCTMPL = projects/Windows/VC14.10/src/curl.tmpl
+VC14_10_SRCVCXPROJ = projects/Windows/VC14.10/src/curl.vcxproj.dist
+VC14_10_SRCVCXPROJ_DEPS = $(VC14_10_SRCTMPL) Makefile.am src/Makefile.inc
+
+VC14_30_LIBTMPL = projects/Windows/VC14.30/lib/libcurl.tmpl
+VC14_30_LIBVCXPROJ = projects/Windows/VC14.30/lib/libcurl.vcxproj.dist
+VC14_30_LIBVCXPROJ_DEPS = $(VC14_30_LIBTMPL) Makefile.am lib/Makefile.inc
+VC14_30_SRCTMPL = projects/Windows/VC14.30/src/curl.tmpl
+VC14_30_SRCVCXPROJ = projects/Windows/VC14.30/src/curl.vcxproj.dist
+VC14_30_SRCVCXPROJ_DEPS = $(VC14_30_SRCTMPL) Makefile.am src/Makefile.inc
+
+VC_DIST = projects/README.md \
+ projects/build-openssl.bat \
+ projects/build-wolfssl.bat \
+ projects/checksrc.bat \
+ projects/Windows/VC10/curl-all.sln \
+ projects/Windows/VC10/lib/libcurl.sln \
+ projects/Windows/VC10/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC10/src/curl.sln \
+ projects/Windows/VC10/src/curl.vcxproj.filters \
+ projects/Windows/VC11/curl-all.sln \
+ projects/Windows/VC11/lib/libcurl.sln \
+ projects/Windows/VC11/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC11/src/curl.sln \
+ projects/Windows/VC11/src/curl.vcxproj.filters \
+ projects/Windows/VC12/curl-all.sln \
+ projects/Windows/VC12/lib/libcurl.sln \
+ projects/Windows/VC12/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC12/src/curl.sln \
+ projects/Windows/VC12/src/curl.vcxproj.filters \
+ projects/Windows/VC14/curl-all.sln \
+ projects/Windows/VC14/lib/libcurl.sln \
+ projects/Windows/VC14/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC14/src/curl.sln \
+ projects/Windows/VC14/src/curl.vcxproj.filters \
+ projects/Windows/VC14.10/curl-all.sln \
+ projects/Windows/VC14.10/lib/libcurl.sln \
+ projects/Windows/VC14.10/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC14.10/src/curl.sln \
+ projects/Windows/VC14.10/src/curl.vcxproj.filters \
+ projects/Windows/VC14.30/curl-all.sln \
+ projects/Windows/VC14.30/lib/libcurl.sln \
+ projects/Windows/VC14.30/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC14.30/src/curl.sln \
+ projects/Windows/VC14.30/src/curl.vcxproj.filters \
+ projects/generate.bat \
+ projects/wolfssl_options.h \
+ projects/wolfssl_override.props
+
+WINBUILD_DIST = winbuild/README.md winbuild/gen_resp_file.bat \
+ winbuild/MakefileBuild.vc winbuild/Makefile.vc
+
+PLAN9_DIST = plan9/include/mkfile \
+ plan9/include/mkfile \
+ plan9/mkfile.proto \
+ plan9/mkfile \
+ plan9/README \
+ plan9/lib/mkfile.inc \
+ plan9/lib/mkfile \
+ plan9/src/mkfile.inc \
+ plan9/src/mkfile
+
+EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \
+ RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework $(CMAKE_DIST) \
+ $(VC_DIST) $(WINBUILD_DIST) $(PLAN9_DIST) lib/libcurl.vers.in buildconf.bat
+
+CLEANFILES = $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ) $(VC11_LIBVCXPROJ) \
+ $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ) $(VC14_LIBVCXPROJ) \
+ $(VC14_SRCVCXPROJ) $(VC14_10_LIBVCXPROJ) $(VC14_10_SRCVCXPROJ) \
+ $(VC14_30_LIBVCXPROJ) $(VC14_30_SRCVCXPROJ)
+
+bin_SCRIPTS = curl-config
+
+SUBDIRS = lib src
+DIST_SUBDIRS = $(SUBDIRS) tests packages scripts include docs
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = libcurl.pc
+
+# List of files required to generate VC IDE .dsp, .vcproj and .vcxproj files
+include lib/Makefile.inc
+include src/Makefile.inc
+
+dist-hook:
+ rm -rf $(top_builddir)/tests/log
+ find $(distdir) -name "*.dist" -exec rm {} \;
+ (distit=`find $(srcdir) -name "*.dist" | grep -v ./ares/`; \
+ for file in $$distit; do \
+ strip=`echo $$file | sed -e s/^$(srcdir)// -e s/\.dist//`; \
+ cp -p $$file $(distdir)$$strip; \
+ done)
+
+html:
+ cd docs && $(MAKE) html
+
+pdf:
+ cd docs && $(MAKE) pdf
+
+check: test examples check-docs
+
+if CROSSCOMPILING
+test-full: test
+test-torture: test
+
+test:
+ @echo "NOTICE: we can't run the tests when cross-compiling!"
+
+else
+
+test:
+ @(cd tests; $(MAKE) all quiet-test)
+
+test-full:
+ @(cd tests; $(MAKE) all full-test)
+
+test-nonflaky:
+ @(cd tests; $(MAKE) all nonflaky-test)
+
+test-torture:
+ @(cd tests; $(MAKE) all torture-test)
+
+test-event:
+ @(cd tests; $(MAKE) all event-test)
+
+test-am:
+ @(cd tests; $(MAKE) all am-test)
+
+test-ci:
+ @(cd tests; $(MAKE) all ci-test)
+
+endif
+
+examples:
+ @(cd docs/examples; $(MAKE) check)
+
+check-docs:
+ @(cd docs/libcurl; $(MAKE) check)
+
+# Build source and binary rpms. For rpm-3.0 and above, the ~/.rpmmacros
+# must contain the following line:
+# %_topdir /home/loic/local/rpm
+# and that /home/loic/local/rpm contains the directory SOURCES, BUILD etc.
+#
+# cd /home/loic/local/rpm ; mkdir -p SOURCES BUILD RPMS/i386 SPECS SRPMS
+#
+# If additional configure flags are needed to build the package, add the
+# following in ~/.rpmmacros
+# %configure CFLAGS="%{optflags}" ./configure %{_target_platform} --prefix=%{_prefix} ${AM_CONFIGFLAGS}
+# and run make rpm in the following way:
+# AM_CONFIGFLAGS='--with-uri=/home/users/loic/local/RedHat-6.2' make rpm
+#
+
+rpms:
+ $(MAKE) RPMDIST=curl rpm
+ $(MAKE) RPMDIST=curl-ssl rpm
+
+rpm:
+ RPM_TOPDIR=`rpm --showrc | $(PERL) -n -e 'print if(s/.*_topdir\s+(.*)/$$1/)'` ; \
+ cp $(srcdir)/packages/Linux/RPM/$(RPMDIST).spec $$RPM_TOPDIR/SPECS ; \
+ cp $(PACKAGE)-$(VERSION).tar.gz $$RPM_TOPDIR/SOURCES ; \
+ rpm -ba --clean --rmsource $$RPM_TOPDIR/SPECS/$(RPMDIST).spec ; \
+ mv $$RPM_TOPDIR/RPMS/i386/$(RPMDIST)-*.rpm . ; \
+ mv $$RPM_TOPDIR/SRPMS/$(RPMDIST)-*.src.rpm .
+
+#
+# Build a Solaris pkgadd format file
+# run 'make pkgadd' once you've done './configure' and 'make' to make a Solaris pkgadd format
+# file (which ends up back in this directory).
+# The pkgadd file is in 'pkgtrans' format, so to install on Solaris, do
+# pkgadd -d ./HAXXcurl-*
+#
+
+# gak - libtool requires an absolute directory, hence the pwd below...
+pkgadd:
+ umask 022 ; \
+ $(MAKE) install DESTDIR=`/bin/pwd`/packages/Solaris/root ; \
+ cat COPYING > $(srcdir)/packages/Solaris/copyright ; \
+ cd $(srcdir)/packages/Solaris && $(MAKE) package
+
+#
+# Build a cygwin binary tarball installation file
+# resulting .tar.bz2 file will end up at packages/Win32/cygwin
+cygwinbin:
+ $(MAKE) -C packages/Win32/cygwin cygwinbin
+
+# We extend the standard install with a custom hook:
+install-data-hook:
+ (cd include && $(MAKE) install)
+ (cd docs && $(MAKE) install)
+ (cd docs/libcurl && $(MAKE) install)
+
+# We extend the standard uninstall with a custom hook:
+uninstall-hook:
+ (cd include && $(MAKE) uninstall)
+ (cd docs && $(MAKE) uninstall)
+ (cd docs/libcurl && $(MAKE) uninstall)
+
+ca-bundle: $(srcdir)/scripts/mk-ca-bundle.pl
+ @echo "generating a fresh ca-bundle.crt"
+ @perl $(srcdir)/scripts/mk-ca-bundle.pl -b -l -u lib/ca-bundle.crt
+
+ca-firefox: $(srcdir)/scripts/firefox-db2pem.sh
+ @echo "generating a fresh ca-bundle.crt"
+ $(srcdir)/scripts/firefox-db2pem.sh lib/ca-bundle.crt
+
+checksrc:
+ (cd lib && $(MAKE) checksrc)
+ (cd src && $(MAKE) checksrc)
+ (cd tests && $(MAKE) checksrc)
+ (cd include/curl && $(MAKE) checksrc)
+ (cd docs/examples && $(MAKE) checksrc)
+ (cd packages && $(MAKE) checksrc)
+
+.PHONY: vc-ide
+
+vc-ide: $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \
+ $(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS) \
+ $(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS) \
+ $(VC14_10_LIBVCXPROJ_DEPS) $(VC14_10_SRCVCXPROJ_DEPS) \
+ $(VC14_30_LIBVCXPROJ_DEPS) $(VC14_30_SRCVCXPROJ_DEPS)
+ @(win32_lib_srcs='$(LIB_CFILES)'; \
+ win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
+ win32_lib_rc='$(LIB_RCFILES)'; \
+ win32_lib_vauth_srcs='$(LIB_VAUTH_CFILES)'; \
+ win32_lib_vauth_hdrs='$(LIB_VAUTH_HFILES)'; \
+ win32_lib_vquic_srcs='$(LIB_VQUIC_CFILES)'; \
+ win32_lib_vquic_hdrs='$(LIB_VQUIC_HFILES)'; \
+ win32_lib_vssh_srcs='$(LIB_VSSH_CFILES)'; \
+ win32_lib_vssh_hdrs='$(LIB_VSSH_HFILES)'; \
+ win32_lib_vtls_srcs='$(LIB_VTLS_CFILES)'; \
+ win32_lib_vtls_hdrs='$(LIB_VTLS_HFILES)'; \
+ win32_src_srcs='$(CURL_CFILES)'; \
+ win32_src_hdrs='$(CURL_HFILES)'; \
+ win32_src_rc='$(CURL_RCFILES)'; \
+ win32_src_x_srcs='$(CURLX_CFILES)'; \
+ win32_src_x_hdrs='$(CURLX_HFILES) ../lib/config-win32.h'; \
+ \
+ sorted_lib_srcs=`for file in $$win32_lib_srcs; do echo $$file; done | sort`; \
+ sorted_lib_hdrs=`for file in $$win32_lib_hdrs; do echo $$file; done | sort`; \
+ sorted_lib_vauth_srcs=`for file in $$win32_lib_vauth_srcs; do echo $$file; done | sort`; \
+ sorted_lib_vauth_hdrs=`for file in $$win32_lib_vauth_hdrs; do echo $$file; done | sort`; \
+ sorted_lib_vquic_srcs=`for file in $$win32_lib_vquic_srcs; do echo $$file; done | sort`; \
+ sorted_lib_vquic_hdrs=`for file in $$win32_lib_vquic_hdrs; do echo $$file; done | sort`; \
+ sorted_lib_vssh_srcs=`for file in $$win32_lib_vssh_srcs; do echo $$file; done | sort`; \
+ sorted_lib_vssh_hdrs=`for file in $$win32_lib_vssh_hdrs; do echo $$file; done | sort`; \
+ sorted_lib_vtls_srcs=`for file in $$win32_lib_vtls_srcs; do echo $$file; done | sort`; \
+ sorted_lib_vtls_hdrs=`for file in $$win32_lib_vtls_hdrs; do echo $$file; done | sort`; \
+ sorted_src_srcs=`for file in $$win32_src_srcs; do echo $$file; done | sort`; \
+ sorted_src_hdrs=`for file in $$win32_src_hdrs; do echo $$file; done | sort`; \
+ sorted_src_x_srcs=`for file in $$win32_src_x_srcs; do echo $$file; done | sort`; \
+ sorted_src_x_hdrs=`for file in $$win32_src_x_hdrs; do echo $$file; done | sort`; \
+ \
+ awk_code='\
+function gen_element(type, dir, file)\
+{\
+ sub(/vauth\//, "", file);\
+ sub(/vquic\//, "", file);\
+ sub(/vssh\//, "", file);\
+ sub(/vtls\//, "", file);\
+\
+ spaces=" ";\
+ if(dir == "lib\\vauth" ||\
+ dir == "lib\\vquic" ||\
+ dir == "lib\\vssh" ||\
+ dir == "lib\\vtls")\
+ tabs=" ";\
+ else\
+ tabs=" ";\
+\
+ if(type == "dsp") {\
+ printf("# Begin Source File\r\n");\
+ printf("\r\n");\
+ printf("SOURCE=..\\..\\..\\..\\%s\\%s\r\n", dir, file);\
+ printf("# End Source File\r\n");\
+ }\
+ else if(type == "vcproj1") {\
+ printf("%s\r\n",\
+ tabs, dir, file);\
+ printf("%s\r\n", tabs);\
+ }\
+ else if(type == "vcproj2") {\
+ printf("%s\r\n", tabs);\
+ printf("%s\r\n", tabs);\
+ }\
+ else if(type == "vcxproj") {\
+ i = index(file, ".");\
+ ext = substr(file, i == 0 ? 0 : i + 1);\
+\
+ if(ext == "c")\
+ printf("%s\r\n",\
+ spaces, dir, file);\
+ else if(ext == "h")\
+ printf("%s\r\n",\
+ spaces, dir, file);\
+ else if(ext == "rc")\
+ printf("%s\r\n",\
+ spaces, dir, file);\
+ }\
+}\
+\
+{\
+\
+ if($$0 == "CURL_LIB_C_FILES") {\
+ split(lib_srcs, arr);\
+ for(val in arr) gen_element(proj_type, "lib", arr[val]);\
+ }\
+ else if($$0 == "CURL_LIB_H_FILES") {\
+ split(lib_hdrs, arr);\
+ for(val in arr) gen_element(proj_type, "lib", arr[val]);\
+ }\
+ else if($$0 == "CURL_LIB_RC_FILES") {\
+ split(lib_rc, arr);\
+ for(val in arr) gen_element(proj_type, "lib", arr[val]);\
+ }\
+ else if($$0 == "CURL_LIB_VAUTH_C_FILES") {\
+ split(lib_vauth_srcs, arr);\
+ for(val in arr) gen_element(proj_type, "lib\\vauth", arr[val]);\
+ }\
+ else if($$0 == "CURL_LIB_VAUTH_H_FILES") {\
+ split(lib_vauth_hdrs, arr);\
+ for(val in arr) gen_element(proj_type, "lib\\vauth", arr[val]);\
+ }\
+ else if($$0 == "CURL_LIB_VQUIC_C_FILES") {\
+ split(lib_vquic_srcs, arr);\
+ for(val in arr) gen_element(proj_type, "lib\\vquic", arr[val]);\
+ }\
+ else if($$0 == "CURL_LIB_VQUIC_H_FILES") {\
+ split(lib_vquic_hdrs, arr);\
+ for(val in arr) gen_element(proj_type, "lib\\vquic", arr[val]);\
+ }\
+ else if($$0 == "CURL_LIB_VSSH_C_FILES") {\
+ split(lib_vssh_srcs, arr);\
+ for(val in arr) gen_element(proj_type, "lib\\vssh", arr[val]);\
+ }\
+ else if($$0 == "CURL_LIB_VSSH_H_FILES") {\
+ split(lib_vssh_hdrs, arr);\
+ for(val in arr) gen_element(proj_type, "lib\\vssh", arr[val]);\
+ }\
+ else if($$0 == "CURL_LIB_VTLS_C_FILES") {\
+ split(lib_vtls_srcs, arr);\
+ for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\
+ }\
+ else if($$0 == "CURL_LIB_VTLS_H_FILES") {\
+ split(lib_vtls_hdrs, arr);\
+ for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\
+ }\
+ else if($$0 == "CURL_SRC_C_FILES") {\
+ split(src_srcs, arr);\
+ for(val in arr) gen_element(proj_type, "src", arr[val]);\
+ }\
+ else if($$0 == "CURL_SRC_H_FILES") {\
+ split(src_hdrs, arr);\
+ for(val in arr) gen_element(proj_type, "src", arr[val]);\
+ }\
+ else if($$0 == "CURL_SRC_RC_FILES") {\
+ split(src_rc, arr);\
+ for(val in arr) gen_element(proj_type, "src", arr[val]);\
+ }\
+ else if($$0 == "CURL_SRC_X_C_FILES") {\
+ split(src_x_srcs, arr);\
+ for(val in arr) {\
+ sub(/..\/lib\//, "", arr[val]);\
+ gen_element(proj_type, "lib", arr[val]);\
+ }\
+ }\
+ else if($$0 == "CURL_SRC_X_H_FILES") {\
+ split(src_x_hdrs, arr);\
+ for(val in arr) {\
+ sub(/..\/lib\//, "", arr[val]);\
+ gen_element(proj_type, "lib", arr[val]);\
+ }\
+ }\
+ else\
+ printf("%s\r\n", $$0);\
+}';\
+ \
+ echo "generating '$(VC10_LIBVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v lib_srcs="$$sorted_lib_srcs" \
+ -v lib_hdrs="$$sorted_lib_hdrs" \
+ -v lib_rc="$$win32_lib_rc" \
+ -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
+ -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
+ -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
+ -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
+ -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
+ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
+ -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+ -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC10_LIBTMPL) > $(VC10_LIBVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC10_SRCVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v src_srcs="$$sorted_src_srcs" \
+ -v src_hdrs="$$sorted_src_hdrs" \
+ -v src_rc="$$win32_src_rc" \
+ -v src_x_srcs="$$sorted_src_x_srcs" \
+ -v src_x_hdrs="$$sorted_src_x_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC10_SRCTMPL) > $(VC10_SRCVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC11_LIBVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v lib_srcs="$$sorted_lib_srcs" \
+ -v lib_hdrs="$$sorted_lib_hdrs" \
+ -v lib_rc="$$win32_lib_rc" \
+ -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
+ -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
+ -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
+ -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
+ -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
+ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
+ -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+ -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC11_LIBTMPL) > $(VC11_LIBVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC11_SRCVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v src_srcs="$$sorted_src_srcs" \
+ -v src_hdrs="$$sorted_src_hdrs" \
+ -v src_rc="$$win32_src_rc" \
+ -v src_x_srcs="$$sorted_src_x_srcs" \
+ -v src_x_hdrs="$$sorted_src_x_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC11_SRCTMPL) > $(VC11_SRCVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC12_LIBVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v lib_srcs="$$sorted_lib_srcs" \
+ -v lib_hdrs="$$sorted_lib_hdrs" \
+ -v lib_rc="$$win32_lib_rc" \
+ -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
+ -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
+ -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
+ -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
+ -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
+ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
+ -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+ -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC12_LIBTMPL) > $(VC12_LIBVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC12_SRCVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v src_srcs="$$sorted_src_srcs" \
+ -v src_hdrs="$$sorted_src_hdrs" \
+ -v src_rc="$$win32_src_rc" \
+ -v src_x_srcs="$$sorted_src_x_srcs" \
+ -v src_x_hdrs="$$sorted_src_x_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC14_LIBVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v lib_srcs="$$sorted_lib_srcs" \
+ -v lib_hdrs="$$sorted_lib_hdrs" \
+ -v lib_rc="$$win32_lib_rc" \
+ -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
+ -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
+ -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
+ -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
+ -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
+ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
+ -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+ -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC14_SRCVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v src_srcs="$$sorted_src_srcs" \
+ -v src_hdrs="$$sorted_src_hdrs" \
+ -v src_rc="$$win32_src_rc" \
+ -v src_x_srcs="$$sorted_src_x_srcs" \
+ -v src_x_hdrs="$$sorted_src_x_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC14_10_LIBVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v lib_srcs="$$sorted_lib_srcs" \
+ -v lib_hdrs="$$sorted_lib_hdrs" \
+ -v lib_rc="$$win32_lib_rc" \
+ -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
+ -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
+ -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
+ -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
+ -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
+ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
+ -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+ -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC14_10_LIBTMPL) > $(VC14_10_LIBVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC14_10_SRCVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v src_srcs="$$sorted_src_srcs" \
+ -v src_hdrs="$$sorted_src_hdrs" \
+ -v src_rc="$$win32_src_rc" \
+ -v src_x_srcs="$$sorted_src_x_srcs" \
+ -v src_x_hdrs="$$sorted_src_x_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC14_10_SRCTMPL) > $(VC14_10_SRCVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC14_30_LIBVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v lib_srcs="$$sorted_lib_srcs" \
+ -v lib_hdrs="$$sorted_lib_hdrs" \
+ -v lib_rc="$$win32_lib_rc" \
+ -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
+ -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
+ -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
+ -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
+ -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
+ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
+ -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+ -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC14_30_LIBTMPL) > $(VC14_30_LIBVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC14_30_SRCVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v src_srcs="$$sorted_src_srcs" \
+ -v src_hdrs="$$sorted_src_hdrs" \
+ -v src_rc="$$win32_src_rc" \
+ -v src_x_srcs="$$sorted_src_x_srcs" \
+ -v src_x_hdrs="$$sorted_src_x_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC14_30_SRCTMPL) > $(VC14_30_SRCVCXPROJ) || { exit 1; };)
+
+tidy:
+ (cd src && $(MAKE) tidy)
+ (cd lib && $(MAKE) tidy)
diff --git a/src/fire/curl-8.1.2/Makefile.in b/src/fire/curl-8.1.2/Makefile.in
new file mode 100644
index 0000000..e1ab49d
--- /dev/null
+++ b/src/fire/curl-8.1.2/Makefile.in
@@ -0,0 +1,2141 @@
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+# ./src/Makefile.inc
+# Using the backslash as line continuation character might be problematic with
+# some make flavours. If we ever want to change this in a portable manner then
+# we should consider this idea :
+# CSRC1 = file1.c file2.c file3.c
+# CSRC2 = file4.c file5.c file6.c
+# CSOURCES = $(CSRC1) $(CSRC2)
+
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
+ $(top_srcdir)/m4/curl-bearssl.m4 \
+ $(top_srcdir)/m4/curl-compilers.m4 \
+ $(top_srcdir)/m4/curl-confopts.m4 \
+ $(top_srcdir)/m4/curl-functions.m4 \
+ $(top_srcdir)/m4/curl-gnutls.m4 \
+ $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
+ $(top_srcdir)/m4/curl-openssl.m4 \
+ $(top_srcdir)/m4/curl-override.m4 \
+ $(top_srcdir)/m4/curl-reentrant.m4 \
+ $(top_srcdir)/m4/curl-rustls.m4 \
+ $(top_srcdir)/m4/curl-schannel.m4 \
+ $(top_srcdir)/m4/curl-sectransp.m4 \
+ $(top_srcdir)/m4/curl-sysconfig.m4 \
+ $(top_srcdir)/m4/curl-wolfssl.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/xc-am-iface.m4 \
+ $(top_srcdir)/m4/xc-cc-check.m4 \
+ $(top_srcdir)/m4/xc-lt-iface.m4 \
+ $(top_srcdir)/m4/xc-translit.m4 \
+ $(top_srcdir)/m4/xc-val-flgs.m4 \
+ $(top_srcdir)/m4/zz40-xc-ovr.m4 \
+ $(top_srcdir)/m4/zz50-xc-ovr.m4 \
+ $(top_srcdir)/m4/zz60-xc-ovr.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+ $(am__configure_deps) $(am__DIST_COMMON)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/curl_config.h
+CONFIG_CLEAN_FILES = curl-config libcurl.pc
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgconfigdir)"
+SCRIPTS = $(bin_SCRIPTS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DATA = $(pkgconfig_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ cscope distdir distdir-am dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/curl-config.in \
+ $(srcdir)/lib/Makefile.inc $(srcdir)/libcurl.pc.in \
+ $(srcdir)/src/Makefile.inc COPYING README compile config.guess \
+ config.sub depcomp install-sh ltmain.sh missing
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ if test -d "$(distdir)"; then \
+ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -rf "$(distdir)" \
+ || { sleep 5 && rm -rf "$(distdir)"; }; \
+ else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+DIST_TARGETS = dist-gzip
+# Exists only to be overridden by the user if desired.
+AM_DISTCHECK_DVI_TARGET = dvi
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APACHECTL = @APACHECTL@
+APXS = @APXS@
+AR = @AR@
+AR_FLAGS = @AR_FLAGS@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BLANK_AT_MAKETIME = @BLANK_AT_MAKETIME@
+CADDY = @CADDY@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@
+CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPFLAG_CURL_STATICLIB = @CPPFLAG_CURL_STATICLIB@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
+CURLVERSION = @CURLVERSION@
+CURL_CA_BUNDLE = @CURL_CA_BUNDLE@
+CURL_CFLAG_EXTRAS = @CURL_CFLAG_EXTRAS@
+CURL_DISABLE_DICT = @CURL_DISABLE_DICT@
+CURL_DISABLE_FILE = @CURL_DISABLE_FILE@
+CURL_DISABLE_FTP = @CURL_DISABLE_FTP@
+CURL_DISABLE_GOPHER = @CURL_DISABLE_GOPHER@
+CURL_DISABLE_HTTP = @CURL_DISABLE_HTTP@
+CURL_DISABLE_IMAP = @CURL_DISABLE_IMAP@
+CURL_DISABLE_LDAP = @CURL_DISABLE_LDAP@
+CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
+CURL_DISABLE_MQTT = @CURL_DISABLE_MQTT@
+CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
+CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
+CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
+CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
+CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
+CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
+CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
+CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
+CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
+CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_SHARED = @ENABLE_SHARED@
+ENABLE_STATIC = @ENABLE_STATIC@
+ETAGS = @ETAGS@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FILECMD = @FILECMD@
+FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
+GCOV = @GCOV@
+GREP = @GREP@
+HAVE_BROTLI = @HAVE_BROTLI@
+HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
+HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
+HAVE_LIBZ = @HAVE_LIBZ@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
+HAVE_PROTO_BSDSOCKET_H = @HAVE_PROTO_BSDSOCKET_H@
+HAVE_ZSTD = @HAVE_ZSTD@
+HTTPD = @HTTPD@
+HTTPD_NGHTTPX = @HTTPD_NGHTTPX@
+IDN_ENABLED = @IDN_ENABLED@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+IPV6_ENABLED = @IPV6_ENABLED@
+LCOV = @LCOV@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBCURL_LIBS = @LIBCURL_LIBS@
+LIBCURL_NO_SHARED = @LIBCURL_NO_SHARED@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MANOPT = @MANOPT@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKGADD_NAME = @PKGADD_NAME@
+PKGADD_PKG = @PKGADD_PKG@
+PKGADD_VENDOR = @PKGADD_VENDOR@
+PKGCONFIG = @PKGCONFIG@
+RANDOM_FILE = @RANDOM_FILE@
+RANLIB = @RANLIB@
+RC = @RC@
+REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SSL_BACKENDS = @SSL_BACKENDS@
+SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
+STRIP = @STRIP@
+SUPPORT_FEATURES = @SUPPORT_FEATURES@
+SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
+TEST_NGHTTPX = @TEST_NGHTTPX@
+USE_ARES = @USE_ARES@
+USE_BEARSSL = @USE_BEARSSL@
+USE_GNUTLS = @USE_GNUTLS@
+USE_HYPER = @USE_HYPER@
+USE_LIBRTMP = @USE_LIBRTMP@
+USE_LIBSSH = @USE_LIBSSH@
+USE_LIBSSH2 = @USE_LIBSSH2@
+USE_MBEDTLS = @USE_MBEDTLS@
+USE_MSH3 = @USE_MSH3@
+USE_NGHTTP2 = @USE_NGHTTP2@
+USE_NGHTTP3 = @USE_NGHTTP3@
+USE_NGTCP2 = @USE_NGTCP2@
+USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
+USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
+USE_NSS = @USE_NSS@
+USE_OPENLDAP = @USE_OPENLDAP@
+USE_QUICHE = @USE_QUICHE@
+USE_RUSTLS = @USE_RUSTLS@
+USE_SCHANNEL = @USE_SCHANNEL@
+USE_SECTRANSP = @USE_SECTRANSP@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
+USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@
+USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@
+USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@
+USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
+USE_WOLFSSH = @USE_WOLFSSH@
+USE_WOLFSSL = @USE_WOLFSSL@
+VERSION = @VERSION@
+VERSIONNUM = @VERSIONNUM@
+ZLIB_LIBS = @ZLIB_LIBS@
+ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+libext = @libext@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = foreign
+ACLOCAL_AMFLAGS = -I m4
+CMAKE_DIST = \
+ CMake/cmake_uninstall.cmake.in \
+ CMake/CMakeConfigurableFile.in \
+ CMake/curl-config.cmake.in \
+ CMake/CurlSymbolHiding.cmake \
+ CMake/CurlTests.c \
+ CMake/FindBearSSL.cmake \
+ CMake/FindBrotli.cmake \
+ CMake/FindCARES.cmake \
+ CMake/FindGSS.cmake \
+ CMake/FindLibPSL.cmake \
+ CMake/FindLibSSH2.cmake \
+ CMake/FindMbedTLS.cmake \
+ CMake/FindMSH3.cmake \
+ CMake/FindNGHTTP2.cmake \
+ CMake/FindNGHTTP3.cmake \
+ CMake/FindNGTCP2.cmake \
+ CMake/FindNSS.cmake \
+ CMake/FindQUICHE.cmake \
+ CMake/FindWolfSSL.cmake \
+ CMake/FindZstd.cmake \
+ CMake/Macros.cmake \
+ CMake/OtherTests.cmake \
+ CMake/PickyWarnings.cmake \
+ CMake/Platforms/WindowsCache.cmake \
+ CMake/Utilities.cmake \
+ CMakeLists.txt
+
+VC10_LIBTMPL = projects/Windows/VC10/lib/libcurl.tmpl
+VC10_LIBVCXPROJ = projects/Windows/VC10/lib/libcurl.vcxproj.dist
+VC10_LIBVCXPROJ_DEPS = $(VC10_LIBTMPL) Makefile.am lib/Makefile.inc
+VC10_SRCTMPL = projects/Windows/VC10/src/curl.tmpl
+VC10_SRCVCXPROJ = projects/Windows/VC10/src/curl.vcxproj.dist
+VC10_SRCVCXPROJ_DEPS = $(VC10_SRCTMPL) Makefile.am src/Makefile.inc
+VC11_LIBTMPL = projects/Windows/VC11/lib/libcurl.tmpl
+VC11_LIBVCXPROJ = projects/Windows/VC11/lib/libcurl.vcxproj.dist
+VC11_LIBVCXPROJ_DEPS = $(VC11_LIBTMPL) Makefile.am lib/Makefile.inc
+VC11_SRCTMPL = projects/Windows/VC11/src/curl.tmpl
+VC11_SRCVCXPROJ = projects/Windows/VC11/src/curl.vcxproj.dist
+VC11_SRCVCXPROJ_DEPS = $(VC11_SRCTMPL) Makefile.am src/Makefile.inc
+VC12_LIBTMPL = projects/Windows/VC12/lib/libcurl.tmpl
+VC12_LIBVCXPROJ = projects/Windows/VC12/lib/libcurl.vcxproj.dist
+VC12_LIBVCXPROJ_DEPS = $(VC12_LIBTMPL) Makefile.am lib/Makefile.inc
+VC12_SRCTMPL = projects/Windows/VC12/src/curl.tmpl
+VC12_SRCVCXPROJ = projects/Windows/VC12/src/curl.vcxproj.dist
+VC12_SRCVCXPROJ_DEPS = $(VC12_SRCTMPL) Makefile.am src/Makefile.inc
+VC14_LIBTMPL = projects/Windows/VC14/lib/libcurl.tmpl
+VC14_LIBVCXPROJ = projects/Windows/VC14/lib/libcurl.vcxproj.dist
+VC14_LIBVCXPROJ_DEPS = $(VC14_LIBTMPL) Makefile.am lib/Makefile.inc
+VC14_SRCTMPL = projects/Windows/VC14/src/curl.tmpl
+VC14_SRCVCXPROJ = projects/Windows/VC14/src/curl.vcxproj.dist
+VC14_SRCVCXPROJ_DEPS = $(VC14_SRCTMPL) Makefile.am src/Makefile.inc
+VC14_10_LIBTMPL = projects/Windows/VC14.10/lib/libcurl.tmpl
+VC14_10_LIBVCXPROJ = projects/Windows/VC14.10/lib/libcurl.vcxproj.dist
+VC14_10_LIBVCXPROJ_DEPS = $(VC14_10_LIBTMPL) Makefile.am lib/Makefile.inc
+VC14_10_SRCTMPL = projects/Windows/VC14.10/src/curl.tmpl
+VC14_10_SRCVCXPROJ = projects/Windows/VC14.10/src/curl.vcxproj.dist
+VC14_10_SRCVCXPROJ_DEPS = $(VC14_10_SRCTMPL) Makefile.am src/Makefile.inc
+VC14_30_LIBTMPL = projects/Windows/VC14.30/lib/libcurl.tmpl
+VC14_30_LIBVCXPROJ = projects/Windows/VC14.30/lib/libcurl.vcxproj.dist
+VC14_30_LIBVCXPROJ_DEPS = $(VC14_30_LIBTMPL) Makefile.am lib/Makefile.inc
+VC14_30_SRCTMPL = projects/Windows/VC14.30/src/curl.tmpl
+VC14_30_SRCVCXPROJ = projects/Windows/VC14.30/src/curl.vcxproj.dist
+VC14_30_SRCVCXPROJ_DEPS = $(VC14_30_SRCTMPL) Makefile.am src/Makefile.inc
+VC_DIST = projects/README.md \
+ projects/build-openssl.bat \
+ projects/build-wolfssl.bat \
+ projects/checksrc.bat \
+ projects/Windows/VC10/curl-all.sln \
+ projects/Windows/VC10/lib/libcurl.sln \
+ projects/Windows/VC10/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC10/src/curl.sln \
+ projects/Windows/VC10/src/curl.vcxproj.filters \
+ projects/Windows/VC11/curl-all.sln \
+ projects/Windows/VC11/lib/libcurl.sln \
+ projects/Windows/VC11/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC11/src/curl.sln \
+ projects/Windows/VC11/src/curl.vcxproj.filters \
+ projects/Windows/VC12/curl-all.sln \
+ projects/Windows/VC12/lib/libcurl.sln \
+ projects/Windows/VC12/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC12/src/curl.sln \
+ projects/Windows/VC12/src/curl.vcxproj.filters \
+ projects/Windows/VC14/curl-all.sln \
+ projects/Windows/VC14/lib/libcurl.sln \
+ projects/Windows/VC14/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC14/src/curl.sln \
+ projects/Windows/VC14/src/curl.vcxproj.filters \
+ projects/Windows/VC14.10/curl-all.sln \
+ projects/Windows/VC14.10/lib/libcurl.sln \
+ projects/Windows/VC14.10/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC14.10/src/curl.sln \
+ projects/Windows/VC14.10/src/curl.vcxproj.filters \
+ projects/Windows/VC14.30/curl-all.sln \
+ projects/Windows/VC14.30/lib/libcurl.sln \
+ projects/Windows/VC14.30/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC14.30/src/curl.sln \
+ projects/Windows/VC14.30/src/curl.vcxproj.filters \
+ projects/generate.bat \
+ projects/wolfssl_options.h \
+ projects/wolfssl_override.props
+
+WINBUILD_DIST = winbuild/README.md winbuild/gen_resp_file.bat \
+ winbuild/MakefileBuild.vc winbuild/Makefile.vc
+
+PLAN9_DIST = plan9/include/mkfile \
+ plan9/include/mkfile \
+ plan9/mkfile.proto \
+ plan9/mkfile \
+ plan9/README \
+ plan9/lib/mkfile.inc \
+ plan9/lib/mkfile \
+ plan9/src/mkfile.inc \
+ plan9/src/mkfile
+
+EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \
+ RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework $(CMAKE_DIST) \
+ $(VC_DIST) $(WINBUILD_DIST) $(PLAN9_DIST) lib/libcurl.vers.in buildconf.bat
+
+CLEANFILES = $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ) $(VC11_LIBVCXPROJ) \
+ $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ) $(VC14_LIBVCXPROJ) \
+ $(VC14_SRCVCXPROJ) $(VC14_10_LIBVCXPROJ) $(VC14_10_SRCVCXPROJ) \
+ $(VC14_30_LIBVCXPROJ) $(VC14_30_SRCVCXPROJ)
+
+bin_SCRIPTS = curl-config
+SUBDIRS = lib src
+DIST_SUBDIRS = $(SUBDIRS) tests packages scripts include docs
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = libcurl.pc
+LIB_VAUTH_CFILES = \
+ vauth/cleartext.c \
+ vauth/cram.c \
+ vauth/digest.c \
+ vauth/digest_sspi.c \
+ vauth/gsasl.c \
+ vauth/krb5_gssapi.c \
+ vauth/krb5_sspi.c \
+ vauth/ntlm.c \
+ vauth/ntlm_sspi.c \
+ vauth/oauth2.c \
+ vauth/spnego_gssapi.c \
+ vauth/spnego_sspi.c \
+ vauth/vauth.c
+
+LIB_VAUTH_HFILES = \
+ vauth/digest.h \
+ vauth/ntlm.h \
+ vauth/vauth.h
+
+LIB_VTLS_CFILES = \
+ vtls/bearssl.c \
+ vtls/gskit.c \
+ vtls/gtls.c \
+ vtls/hostcheck.c \
+ vtls/keylog.c \
+ vtls/mbedtls.c \
+ vtls/mbedtls_threadlock.c \
+ vtls/nss.c \
+ vtls/openssl.c \
+ vtls/rustls.c \
+ vtls/schannel.c \
+ vtls/schannel_verify.c \
+ vtls/sectransp.c \
+ vtls/vtls.c \
+ vtls/wolfssl.c \
+ vtls/x509asn1.c
+
+LIB_VTLS_HFILES = \
+ vtls/bearssl.h \
+ vtls/gskit.h \
+ vtls/gtls.h \
+ vtls/hostcheck.h \
+ vtls/keylog.h \
+ vtls/mbedtls.h \
+ vtls/mbedtls_threadlock.h \
+ vtls/nssg.h \
+ vtls/openssl.h \
+ vtls/rustls.h \
+ vtls/schannel.h \
+ vtls/sectransp.h \
+ vtls/vtls.h \
+ vtls/vtls_int.h \
+ vtls/wolfssl.h \
+ vtls/x509asn1.h
+
+LIB_VQUIC_CFILES = \
+ vquic/curl_msh3.c \
+ vquic/curl_ngtcp2.c \
+ vquic/curl_quiche.c \
+ vquic/vquic.c
+
+LIB_VQUIC_HFILES = \
+ vquic/curl_msh3.h \
+ vquic/curl_ngtcp2.h \
+ vquic/curl_quiche.h \
+ vquic/vquic.h \
+ vquic/vquic_int.h
+
+LIB_VSSH_CFILES = \
+ vssh/libssh.c \
+ vssh/libssh2.c \
+ vssh/wolfssh.c
+
+LIB_VSSH_HFILES = \
+ vssh/ssh.h
+
+LIB_CFILES = \
+ altsvc.c \
+ amigaos.c \
+ asyn-ares.c \
+ asyn-thread.c \
+ base64.c \
+ bufq.c \
+ bufref.c \
+ c-hyper.c \
+ cf-h1-proxy.c \
+ cf-h2-proxy.c \
+ cf-haproxy.c \
+ cf-https-connect.c \
+ cf-socket.c \
+ cfilters.c \
+ conncache.c \
+ connect.c \
+ content_encoding.c \
+ cookie.c \
+ curl_addrinfo.c \
+ curl_des.c \
+ curl_endian.c \
+ curl_fnmatch.c \
+ curl_get_line.c \
+ curl_gethostname.c \
+ curl_gssapi.c \
+ curl_log.c \
+ curl_memrchr.c \
+ curl_multibyte.c \
+ curl_ntlm_core.c \
+ curl_ntlm_wb.c \
+ curl_path.c \
+ curl_range.c \
+ curl_rtmp.c \
+ curl_sasl.c \
+ curl_sspi.c \
+ curl_threads.c \
+ dict.c \
+ doh.c \
+ dynbuf.c \
+ dynhds.c \
+ easy.c \
+ easygetopt.c \
+ easyoptions.c \
+ escape.c \
+ file.c \
+ fileinfo.c \
+ fopen.c \
+ formdata.c \
+ ftp.c \
+ ftplistparser.c \
+ getenv.c \
+ getinfo.c \
+ gopher.c \
+ hash.c \
+ headers.c \
+ hmac.c \
+ hostasyn.c \
+ hostip.c \
+ hostip4.c \
+ hostip6.c \
+ hostsyn.c \
+ hsts.c \
+ http.c \
+ http1.c \
+ http2.c \
+ http_chunks.c \
+ http_digest.c \
+ http_negotiate.c \
+ http_ntlm.c \
+ http_proxy.c \
+ http_aws_sigv4.c \
+ idn.c \
+ if2ip.c \
+ imap.c \
+ inet_ntop.c \
+ inet_pton.c \
+ krb5.c \
+ ldap.c \
+ llist.c \
+ md4.c \
+ md5.c \
+ memdebug.c \
+ mime.c \
+ mprintf.c \
+ mqtt.c \
+ multi.c \
+ netrc.c \
+ nonblock.c \
+ noproxy.c \
+ openldap.c \
+ parsedate.c \
+ pingpong.c \
+ pop3.c \
+ progress.c \
+ psl.c \
+ rand.c \
+ rename.c \
+ rtsp.c \
+ select.c \
+ sendf.c \
+ setopt.c \
+ sha256.c \
+ share.c \
+ slist.c \
+ smb.c \
+ smtp.c \
+ socketpair.c \
+ socks.c \
+ socks_gssapi.c \
+ socks_sspi.c \
+ speedcheck.c \
+ splay.c \
+ strcase.c \
+ strdup.c \
+ strerror.c \
+ strtok.c \
+ strtoofft.c \
+ system_win32.c \
+ telnet.c \
+ tftp.c \
+ timediff.c \
+ timeval.c \
+ transfer.c \
+ url.c \
+ urlapi.c \
+ version.c \
+ version_win32.c \
+ warnless.c \
+ ws.c
+
+LIB_HFILES = \
+ altsvc.h \
+ amigaos.h \
+ arpa_telnet.h \
+ asyn.h \
+ bufq.h \
+ bufref.h \
+ c-hyper.h \
+ cf-h1-proxy.h \
+ cf-h2-proxy.h \
+ cf-haproxy.h \
+ cf-https-connect.h \
+ cf-socket.h \
+ cfilters.h \
+ conncache.h \
+ connect.h \
+ content_encoding.h \
+ cookie.h \
+ curl_addrinfo.h \
+ curl_base64.h \
+ curl_ctype.h \
+ curl_des.h \
+ curl_endian.h \
+ curl_fnmatch.h \
+ curl_get_line.h \
+ curl_gethostname.h \
+ curl_gssapi.h \
+ curl_hmac.h \
+ curl_krb5.h \
+ curl_ldap.h \
+ curl_log.h \
+ curl_md4.h \
+ curl_md5.h \
+ curl_memory.h \
+ curl_memrchr.h \
+ curl_multibyte.h \
+ curl_ntlm_core.h \
+ curl_ntlm_wb.h \
+ curl_path.h \
+ curl_printf.h \
+ curl_range.h \
+ curl_rtmp.h \
+ curl_sasl.h \
+ curl_setup.h \
+ curl_setup_once.h \
+ curl_sha256.h \
+ curl_sspi.h \
+ curl_threads.h \
+ curlx.h \
+ dict.h \
+ doh.h \
+ dynbuf.h \
+ dynhds.h \
+ easy_lock.h \
+ easyif.h \
+ easyoptions.h \
+ escape.h \
+ file.h \
+ fileinfo.h \
+ fopen.h \
+ formdata.h \
+ functypes.h \
+ ftp.h \
+ ftplistparser.h \
+ getinfo.h \
+ gopher.h \
+ hash.h \
+ headers.h \
+ hostip.h \
+ hsts.h \
+ http.h \
+ http1.h \
+ http2.h \
+ http_chunks.h \
+ http_digest.h \
+ http_negotiate.h \
+ http_ntlm.h \
+ http_proxy.h \
+ http_aws_sigv4.h \
+ idn.h \
+ if2ip.h \
+ imap.h \
+ inet_ntop.h \
+ inet_pton.h \
+ llist.h \
+ memdebug.h \
+ mime.h \
+ mqtt.h \
+ multihandle.h \
+ multiif.h \
+ netrc.h \
+ nonblock.h \
+ noproxy.h \
+ parsedate.h \
+ pingpong.h \
+ pop3.h \
+ progress.h \
+ psl.h \
+ rand.h \
+ rename.h \
+ rtsp.h \
+ select.h \
+ sendf.h \
+ setopt.h \
+ setup-vms.h \
+ share.h \
+ sigpipe.h \
+ slist.h \
+ smb.h \
+ smtp.h \
+ sockaddr.h \
+ socketpair.h \
+ socks.h \
+ speedcheck.h \
+ splay.h \
+ strcase.h \
+ strdup.h \
+ strerror.h \
+ strtok.h \
+ strtoofft.h \
+ system_win32.h \
+ telnet.h \
+ tftp.h \
+ timediff.h \
+ timeval.h \
+ transfer.h \
+ url.h \
+ urlapi-int.h \
+ urldata.h \
+ version_win32.h \
+ warnless.h \
+ ws.h
+
+LIB_RCFILES = libcurl.rc
+CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) \
+ $(LIB_VQUIC_CFILES) $(LIB_VSSH_CFILES)
+
+HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) \
+ $(LIB_VQUIC_HFILES) $(LIB_VSSH_HFILES)
+
+
+# libcurl has sources that provide functions named curlx_* that aren't part of
+# the official API, but we re-use the code here to avoid duplication.
+CURLX_CFILES = \
+ ../lib/strtoofft.c \
+ ../lib/timediff.c \
+ ../lib/nonblock.c \
+ ../lib/warnless.c \
+ ../lib/curl_multibyte.c \
+ ../lib/version_win32.c \
+ ../lib/dynbuf.c
+
+CURLX_HFILES = \
+ ../lib/curl_setup.h \
+ ../lib/strtoofft.h \
+ ../lib/timediff.h \
+ ../lib/nonblock.h \
+ ../lib/warnless.h \
+ ../lib/curl_ctype.h \
+ ../lib/curl_multibyte.h \
+ ../lib/version_win32.h \
+ ../lib/dynbuf.h
+
+CURL_CFILES = \
+ slist_wc.c \
+ tool_binmode.c \
+ tool_bname.c \
+ tool_cb_dbg.c \
+ tool_cb_hdr.c \
+ tool_cb_prg.c \
+ tool_cb_rea.c \
+ tool_cb_see.c \
+ tool_cb_wrt.c \
+ tool_cfgable.c \
+ tool_dirhie.c \
+ tool_doswin.c \
+ tool_easysrc.c \
+ tool_filetime.c \
+ tool_findfile.c \
+ tool_formparse.c \
+ tool_getparam.c \
+ tool_getpass.c \
+ tool_help.c \
+ tool_helpers.c \
+ tool_hugehelp.c \
+ tool_libinfo.c \
+ tool_listhelp.c \
+ tool_main.c \
+ tool_msgs.c \
+ tool_operate.c \
+ tool_operhlp.c \
+ tool_paramhlp.c \
+ tool_parsecfg.c \
+ tool_progress.c \
+ tool_stderr.c \
+ tool_strdup.c \
+ tool_setopt.c \
+ tool_sleep.c \
+ tool_urlglob.c \
+ tool_util.c \
+ tool_vms.c \
+ tool_writeout.c \
+ tool_writeout_json.c \
+ tool_xattr.c
+
+CURL_HFILES = \
+ slist_wc.h \
+ tool_binmode.h \
+ tool_bname.h \
+ tool_cb_dbg.h \
+ tool_cb_hdr.h \
+ tool_cb_prg.h \
+ tool_cb_rea.h \
+ tool_cb_see.h \
+ tool_cb_wrt.h \
+ tool_cfgable.h \
+ tool_dirhie.h \
+ tool_doswin.h \
+ tool_easysrc.h \
+ tool_filetime.h \
+ tool_findfile.h \
+ tool_formparse.h \
+ tool_getparam.h \
+ tool_getpass.h \
+ tool_help.h \
+ tool_helpers.h \
+ tool_hugehelp.h \
+ tool_libinfo.h \
+ tool_main.h \
+ tool_msgs.h \
+ tool_operate.h \
+ tool_operhlp.h \
+ tool_paramhlp.h \
+ tool_parsecfg.h \
+ tool_progress.h \
+ tool_sdecls.h \
+ tool_setopt.h \
+ tool_setup.h \
+ tool_sleep.h \
+ tool_stderr.h \
+ tool_strdup.h \
+ tool_urlglob.h \
+ tool_util.h \
+ tool_version.h \
+ tool_vms.h \
+ tool_writeout.h \
+ tool_writeout_json.h \
+ tool_xattr.h
+
+CURL_RCFILES = curl.rc
+
+# curl_SOURCES is special and gets assigned in src/Makefile.am
+CURL_FILES = $(CURL_CFILES) $(CURLX_CFILES) $(CURL_HFILES)
+all: all-recursive
+
+.SUFFIXES:
+am--refresh: Makefile
+ @:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/lib/Makefile.inc $(srcdir)/src/Makefile.inc $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
+ esac;
+$(srcdir)/lib/Makefile.inc $(srcdir)/src/Makefile.inc $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+curl-config: $(top_builddir)/config.status $(srcdir)/curl-config.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+libcurl.pc: $(top_builddir)/config.status $(srcdir)/libcurl.pc.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+install-binSCRIPTS: $(bin_SCRIPTS)
+ @$(NORMAL_INSTALL)
+ @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n' \
+ -e 'h;s|.*|.|' \
+ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+ if (++n[d] == $(am__install_max)) { \
+ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+ else { print "f", d "/" $$4, $$1 } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-binSCRIPTS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 's,.*/,,;$(transform)'`; \
+ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool config.lt
+install-pkgconfigDATA: $(pkgconfig_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
+ done
+
+uninstall-pkgconfigDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+ test ! -s cscope.files \
+ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+ -rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+ -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+ $(am__remove_distdir)
+ test -d "$(distdir)" || mkdir "$(distdir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
+ dist-hook
+ -test -n "$(am__skip_mode_fix)" \
+ || find "$(distdir)" -type d ! -perm -755 \
+ -exec chmod u+rwx,go+rx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
+ $(am__post_remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+ $(am__post_remove_distdir)
+
+dist-lzip: distdir
+ tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+ $(am__post_remove_distdir)
+
+dist-xz: distdir
+ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+ $(am__post_remove_distdir)
+
+dist-zstd: distdir
+ tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst
+ $(am__post_remove_distdir)
+
+dist-tarZ: distdir
+ @echo WARNING: "Support for distribution archives compressed with" \
+ "legacy program 'compress' is deprecated." >&2
+ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__post_remove_distdir)
+
+dist-shar: distdir
+ @echo WARNING: "Support for shar distribution archives is" \
+ "deprecated." >&2
+ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+ shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
+ $(am__post_remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__post_remove_distdir)
+
+dist dist-all:
+ $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+ $(am__post_remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.lz*) \
+ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+ *.tar.xz*) \
+ xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ *.tar.zst*) \
+ zstd -dc $(distdir).tar.zst | $(am__untar) ;;\
+ esac
+ chmod -R a-w $(distdir)
+ chmod u+w $(distdir)
+ mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
+ chmod a-w $(distdir)
+ test -d $(distdir)/_build || exit 0; \
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && am__cwd=`pwd` \
+ && $(am__cd) $(distdir)/_build/sub \
+ && ../../configure \
+ $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ --srcdir=../.. --prefix="$$dc_install_base" \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+ && cd "$$am__cwd" \
+ || exit 1
+ $(am__post_remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+ @test -n '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: trying to run $@ with an empty' \
+ '$$(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ $(am__cd) '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(SCRIPTS) $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgconfigdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-pkgconfigDATA
+ @$(NORMAL_INSTALL)
+ $(MAKE) $(AM_MAKEFLAGS) install-data-hook
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am: install-binSCRIPTS
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-binSCRIPTS uninstall-pkgconfigDATA
+ @$(NORMAL_INSTALL)
+ $(MAKE) $(AM_MAKEFLAGS) uninstall-hook
+.MAKE: $(am__recursive_targets) install-am install-data-am \
+ install-strip uninstall-am
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+ am--refresh check check-am clean clean-cscope clean-generic \
+ clean-libtool cscope cscopelist-am ctags ctags-am dist \
+ dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \
+ dist-tarZ dist-xz dist-zip dist-zstd distcheck distclean \
+ distclean-generic distclean-libtool distclean-tags \
+ distcleancheck distdir distuninstallcheck dvi dvi-am html \
+ html-am info info-am install install-am install-binSCRIPTS \
+ install-data install-data-am install-data-hook install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-pkgconfigDATA install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am uninstall-binSCRIPTS uninstall-hook \
+ uninstall-pkgconfigDATA
+
+.PRECIOUS: Makefile
+
+
+# List of files required to generate VC IDE .dsp, .vcproj and .vcxproj files
+
+dist-hook:
+ rm -rf $(top_builddir)/tests/log
+ find $(distdir) -name "*.dist" -exec rm {} \;
+ (distit=`find $(srcdir) -name "*.dist" | grep -v ./ares/`; \
+ for file in $$distit; do \
+ strip=`echo $$file | sed -e s/^$(srcdir)// -e s/\.dist//`; \
+ cp -p $$file $(distdir)$$strip; \
+ done)
+
+html:
+ cd docs && $(MAKE) html
+
+pdf:
+ cd docs && $(MAKE) pdf
+
+check: test examples check-docs
+
+@CROSSCOMPILING_TRUE@test-full: test
+@CROSSCOMPILING_TRUE@test-torture: test
+
+@CROSSCOMPILING_TRUE@test:
+@CROSSCOMPILING_TRUE@ @echo "NOTICE: we can't run the tests when cross-compiling!"
+
+@CROSSCOMPILING_FALSE@test:
+@CROSSCOMPILING_FALSE@ @(cd tests; $(MAKE) all quiet-test)
+
+@CROSSCOMPILING_FALSE@test-full:
+@CROSSCOMPILING_FALSE@ @(cd tests; $(MAKE) all full-test)
+
+@CROSSCOMPILING_FALSE@test-nonflaky:
+@CROSSCOMPILING_FALSE@ @(cd tests; $(MAKE) all nonflaky-test)
+
+@CROSSCOMPILING_FALSE@test-torture:
+@CROSSCOMPILING_FALSE@ @(cd tests; $(MAKE) all torture-test)
+
+@CROSSCOMPILING_FALSE@test-event:
+@CROSSCOMPILING_FALSE@ @(cd tests; $(MAKE) all event-test)
+
+@CROSSCOMPILING_FALSE@test-am:
+@CROSSCOMPILING_FALSE@ @(cd tests; $(MAKE) all am-test)
+
+@CROSSCOMPILING_FALSE@test-ci:
+@CROSSCOMPILING_FALSE@ @(cd tests; $(MAKE) all ci-test)
+
+examples:
+ @(cd docs/examples; $(MAKE) check)
+
+check-docs:
+ @(cd docs/libcurl; $(MAKE) check)
+
+# Build source and binary rpms. For rpm-3.0 and above, the ~/.rpmmacros
+# must contain the following line:
+# %_topdir /home/loic/local/rpm
+# and that /home/loic/local/rpm contains the directory SOURCES, BUILD etc.
+#
+# cd /home/loic/local/rpm ; mkdir -p SOURCES BUILD RPMS/i386 SPECS SRPMS
+#
+# If additional configure flags are needed to build the package, add the
+# following in ~/.rpmmacros
+# %configure CFLAGS="%{optflags}" ./configure %{_target_platform} --prefix=%{_prefix} ${AM_CONFIGFLAGS}
+# and run make rpm in the following way:
+# AM_CONFIGFLAGS='--with-uri=/home/users/loic/local/RedHat-6.2' make rpm
+#
+
+rpms:
+ $(MAKE) RPMDIST=curl rpm
+ $(MAKE) RPMDIST=curl-ssl rpm
+
+rpm:
+ RPM_TOPDIR=`rpm --showrc | $(PERL) -n -e 'print if(s/.*_topdir\s+(.*)/$$1/)'` ; \
+ cp $(srcdir)/packages/Linux/RPM/$(RPMDIST).spec $$RPM_TOPDIR/SPECS ; \
+ cp $(PACKAGE)-$(VERSION).tar.gz $$RPM_TOPDIR/SOURCES ; \
+ rpm -ba --clean --rmsource $$RPM_TOPDIR/SPECS/$(RPMDIST).spec ; \
+ mv $$RPM_TOPDIR/RPMS/i386/$(RPMDIST)-*.rpm . ; \
+ mv $$RPM_TOPDIR/SRPMS/$(RPMDIST)-*.src.rpm .
+
+#
+# Build a Solaris pkgadd format file
+# run 'make pkgadd' once you've done './configure' and 'make' to make a Solaris pkgadd format
+# file (which ends up back in this directory).
+# The pkgadd file is in 'pkgtrans' format, so to install on Solaris, do
+# pkgadd -d ./HAXXcurl-*
+#
+
+# gak - libtool requires an absolute directory, hence the pwd below...
+pkgadd:
+ umask 022 ; \
+ $(MAKE) install DESTDIR=`/bin/pwd`/packages/Solaris/root ; \
+ cat COPYING > $(srcdir)/packages/Solaris/copyright ; \
+ cd $(srcdir)/packages/Solaris && $(MAKE) package
+
+#
+# Build a cygwin binary tarball installation file
+# resulting .tar.bz2 file will end up at packages/Win32/cygwin
+cygwinbin:
+ $(MAKE) -C packages/Win32/cygwin cygwinbin
+
+# We extend the standard install with a custom hook:
+install-data-hook:
+ (cd include && $(MAKE) install)
+ (cd docs && $(MAKE) install)
+ (cd docs/libcurl && $(MAKE) install)
+
+# We extend the standard uninstall with a custom hook:
+uninstall-hook:
+ (cd include && $(MAKE) uninstall)
+ (cd docs && $(MAKE) uninstall)
+ (cd docs/libcurl && $(MAKE) uninstall)
+
+ca-bundle: $(srcdir)/scripts/mk-ca-bundle.pl
+ @echo "generating a fresh ca-bundle.crt"
+ @perl $(srcdir)/scripts/mk-ca-bundle.pl -b -l -u lib/ca-bundle.crt
+
+ca-firefox: $(srcdir)/scripts/firefox-db2pem.sh
+ @echo "generating a fresh ca-bundle.crt"
+ $(srcdir)/scripts/firefox-db2pem.sh lib/ca-bundle.crt
+
+checksrc:
+ (cd lib && $(MAKE) checksrc)
+ (cd src && $(MAKE) checksrc)
+ (cd tests && $(MAKE) checksrc)
+ (cd include/curl && $(MAKE) checksrc)
+ (cd docs/examples && $(MAKE) checksrc)
+ (cd packages && $(MAKE) checksrc)
+
+.PHONY: vc-ide
+
+vc-ide: $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \
+ $(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS) \
+ $(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS) \
+ $(VC14_10_LIBVCXPROJ_DEPS) $(VC14_10_SRCVCXPROJ_DEPS) \
+ $(VC14_30_LIBVCXPROJ_DEPS) $(VC14_30_SRCVCXPROJ_DEPS)
+ @(win32_lib_srcs='$(LIB_CFILES)'; \
+ win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
+ win32_lib_rc='$(LIB_RCFILES)'; \
+ win32_lib_vauth_srcs='$(LIB_VAUTH_CFILES)'; \
+ win32_lib_vauth_hdrs='$(LIB_VAUTH_HFILES)'; \
+ win32_lib_vquic_srcs='$(LIB_VQUIC_CFILES)'; \
+ win32_lib_vquic_hdrs='$(LIB_VQUIC_HFILES)'; \
+ win32_lib_vssh_srcs='$(LIB_VSSH_CFILES)'; \
+ win32_lib_vssh_hdrs='$(LIB_VSSH_HFILES)'; \
+ win32_lib_vtls_srcs='$(LIB_VTLS_CFILES)'; \
+ win32_lib_vtls_hdrs='$(LIB_VTLS_HFILES)'; \
+ win32_src_srcs='$(CURL_CFILES)'; \
+ win32_src_hdrs='$(CURL_HFILES)'; \
+ win32_src_rc='$(CURL_RCFILES)'; \
+ win32_src_x_srcs='$(CURLX_CFILES)'; \
+ win32_src_x_hdrs='$(CURLX_HFILES) ../lib/config-win32.h'; \
+ \
+ sorted_lib_srcs=`for file in $$win32_lib_srcs; do echo $$file; done | sort`; \
+ sorted_lib_hdrs=`for file in $$win32_lib_hdrs; do echo $$file; done | sort`; \
+ sorted_lib_vauth_srcs=`for file in $$win32_lib_vauth_srcs; do echo $$file; done | sort`; \
+ sorted_lib_vauth_hdrs=`for file in $$win32_lib_vauth_hdrs; do echo $$file; done | sort`; \
+ sorted_lib_vquic_srcs=`for file in $$win32_lib_vquic_srcs; do echo $$file; done | sort`; \
+ sorted_lib_vquic_hdrs=`for file in $$win32_lib_vquic_hdrs; do echo $$file; done | sort`; \
+ sorted_lib_vssh_srcs=`for file in $$win32_lib_vssh_srcs; do echo $$file; done | sort`; \
+ sorted_lib_vssh_hdrs=`for file in $$win32_lib_vssh_hdrs; do echo $$file; done | sort`; \
+ sorted_lib_vtls_srcs=`for file in $$win32_lib_vtls_srcs; do echo $$file; done | sort`; \
+ sorted_lib_vtls_hdrs=`for file in $$win32_lib_vtls_hdrs; do echo $$file; done | sort`; \
+ sorted_src_srcs=`for file in $$win32_src_srcs; do echo $$file; done | sort`; \
+ sorted_src_hdrs=`for file in $$win32_src_hdrs; do echo $$file; done | sort`; \
+ sorted_src_x_srcs=`for file in $$win32_src_x_srcs; do echo $$file; done | sort`; \
+ sorted_src_x_hdrs=`for file in $$win32_src_x_hdrs; do echo $$file; done | sort`; \
+ \
+ awk_code='\
+function gen_element(type, dir, file)\
+{\
+ sub(/vauth\//, "", file);\
+ sub(/vquic\//, "", file);\
+ sub(/vssh\//, "", file);\
+ sub(/vtls\//, "", file);\
+\
+ spaces=" ";\
+ if(dir == "lib\\vauth" ||\
+ dir == "lib\\vquic" ||\
+ dir == "lib\\vssh" ||\
+ dir == "lib\\vtls")\
+ tabs=" ";\
+ else\
+ tabs=" ";\
+\
+ if(type == "dsp") {\
+ printf("# Begin Source File\r\n");\
+ printf("\r\n");\
+ printf("SOURCE=..\\..\\..\\..\\%s\\%s\r\n", dir, file);\
+ printf("# End Source File\r\n");\
+ }\
+ else if(type == "vcproj1") {\
+ printf("%s\r\n",\
+ tabs, dir, file);\
+ printf("%s\r\n", tabs);\
+ }\
+ else if(type == "vcproj2") {\
+ printf("%s\r\n", tabs);\
+ printf("%s\r\n", tabs);\
+ }\
+ else if(type == "vcxproj") {\
+ i = index(file, ".");\
+ ext = substr(file, i == 0 ? 0 : i + 1);\
+\
+ if(ext == "c")\
+ printf("%s\r\n",\
+ spaces, dir, file);\
+ else if(ext == "h")\
+ printf("%s\r\n",\
+ spaces, dir, file);\
+ else if(ext == "rc")\
+ printf("%s\r\n",\
+ spaces, dir, file);\
+ }\
+}\
+\
+{\
+\
+ if($$0 == "CURL_LIB_C_FILES") {\
+ split(lib_srcs, arr);\
+ for(val in arr) gen_element(proj_type, "lib", arr[val]);\
+ }\
+ else if($$0 == "CURL_LIB_H_FILES") {\
+ split(lib_hdrs, arr);\
+ for(val in arr) gen_element(proj_type, "lib", arr[val]);\
+ }\
+ else if($$0 == "CURL_LIB_RC_FILES") {\
+ split(lib_rc, arr);\
+ for(val in arr) gen_element(proj_type, "lib", arr[val]);\
+ }\
+ else if($$0 == "CURL_LIB_VAUTH_C_FILES") {\
+ split(lib_vauth_srcs, arr);\
+ for(val in arr) gen_element(proj_type, "lib\\vauth", arr[val]);\
+ }\
+ else if($$0 == "CURL_LIB_VAUTH_H_FILES") {\
+ split(lib_vauth_hdrs, arr);\
+ for(val in arr) gen_element(proj_type, "lib\\vauth", arr[val]);\
+ }\
+ else if($$0 == "CURL_LIB_VQUIC_C_FILES") {\
+ split(lib_vquic_srcs, arr);\
+ for(val in arr) gen_element(proj_type, "lib\\vquic", arr[val]);\
+ }\
+ else if($$0 == "CURL_LIB_VQUIC_H_FILES") {\
+ split(lib_vquic_hdrs, arr);\
+ for(val in arr) gen_element(proj_type, "lib\\vquic", arr[val]);\
+ }\
+ else if($$0 == "CURL_LIB_VSSH_C_FILES") {\
+ split(lib_vssh_srcs, arr);\
+ for(val in arr) gen_element(proj_type, "lib\\vssh", arr[val]);\
+ }\
+ else if($$0 == "CURL_LIB_VSSH_H_FILES") {\
+ split(lib_vssh_hdrs, arr);\
+ for(val in arr) gen_element(proj_type, "lib\\vssh", arr[val]);\
+ }\
+ else if($$0 == "CURL_LIB_VTLS_C_FILES") {\
+ split(lib_vtls_srcs, arr);\
+ for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\
+ }\
+ else if($$0 == "CURL_LIB_VTLS_H_FILES") {\
+ split(lib_vtls_hdrs, arr);\
+ for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\
+ }\
+ else if($$0 == "CURL_SRC_C_FILES") {\
+ split(src_srcs, arr);\
+ for(val in arr) gen_element(proj_type, "src", arr[val]);\
+ }\
+ else if($$0 == "CURL_SRC_H_FILES") {\
+ split(src_hdrs, arr);\
+ for(val in arr) gen_element(proj_type, "src", arr[val]);\
+ }\
+ else if($$0 == "CURL_SRC_RC_FILES") {\
+ split(src_rc, arr);\
+ for(val in arr) gen_element(proj_type, "src", arr[val]);\
+ }\
+ else if($$0 == "CURL_SRC_X_C_FILES") {\
+ split(src_x_srcs, arr);\
+ for(val in arr) {\
+ sub(/..\/lib\//, "", arr[val]);\
+ gen_element(proj_type, "lib", arr[val]);\
+ }\
+ }\
+ else if($$0 == "CURL_SRC_X_H_FILES") {\
+ split(src_x_hdrs, arr);\
+ for(val in arr) {\
+ sub(/..\/lib\//, "", arr[val]);\
+ gen_element(proj_type, "lib", arr[val]);\
+ }\
+ }\
+ else\
+ printf("%s\r\n", $$0);\
+}';\
+ \
+ echo "generating '$(VC10_LIBVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v lib_srcs="$$sorted_lib_srcs" \
+ -v lib_hdrs="$$sorted_lib_hdrs" \
+ -v lib_rc="$$win32_lib_rc" \
+ -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
+ -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
+ -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
+ -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
+ -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
+ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
+ -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+ -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC10_LIBTMPL) > $(VC10_LIBVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC10_SRCVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v src_srcs="$$sorted_src_srcs" \
+ -v src_hdrs="$$sorted_src_hdrs" \
+ -v src_rc="$$win32_src_rc" \
+ -v src_x_srcs="$$sorted_src_x_srcs" \
+ -v src_x_hdrs="$$sorted_src_x_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC10_SRCTMPL) > $(VC10_SRCVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC11_LIBVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v lib_srcs="$$sorted_lib_srcs" \
+ -v lib_hdrs="$$sorted_lib_hdrs" \
+ -v lib_rc="$$win32_lib_rc" \
+ -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
+ -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
+ -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
+ -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
+ -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
+ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
+ -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+ -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC11_LIBTMPL) > $(VC11_LIBVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC11_SRCVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v src_srcs="$$sorted_src_srcs" \
+ -v src_hdrs="$$sorted_src_hdrs" \
+ -v src_rc="$$win32_src_rc" \
+ -v src_x_srcs="$$sorted_src_x_srcs" \
+ -v src_x_hdrs="$$sorted_src_x_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC11_SRCTMPL) > $(VC11_SRCVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC12_LIBVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v lib_srcs="$$sorted_lib_srcs" \
+ -v lib_hdrs="$$sorted_lib_hdrs" \
+ -v lib_rc="$$win32_lib_rc" \
+ -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
+ -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
+ -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
+ -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
+ -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
+ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
+ -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+ -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC12_LIBTMPL) > $(VC12_LIBVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC12_SRCVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v src_srcs="$$sorted_src_srcs" \
+ -v src_hdrs="$$sorted_src_hdrs" \
+ -v src_rc="$$win32_src_rc" \
+ -v src_x_srcs="$$sorted_src_x_srcs" \
+ -v src_x_hdrs="$$sorted_src_x_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC14_LIBVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v lib_srcs="$$sorted_lib_srcs" \
+ -v lib_hdrs="$$sorted_lib_hdrs" \
+ -v lib_rc="$$win32_lib_rc" \
+ -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
+ -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
+ -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
+ -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
+ -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
+ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
+ -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+ -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC14_SRCVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v src_srcs="$$sorted_src_srcs" \
+ -v src_hdrs="$$sorted_src_hdrs" \
+ -v src_rc="$$win32_src_rc" \
+ -v src_x_srcs="$$sorted_src_x_srcs" \
+ -v src_x_hdrs="$$sorted_src_x_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC14_10_LIBVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v lib_srcs="$$sorted_lib_srcs" \
+ -v lib_hdrs="$$sorted_lib_hdrs" \
+ -v lib_rc="$$win32_lib_rc" \
+ -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
+ -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
+ -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
+ -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
+ -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
+ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
+ -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+ -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC14_10_LIBTMPL) > $(VC14_10_LIBVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC14_10_SRCVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v src_srcs="$$sorted_src_srcs" \
+ -v src_hdrs="$$sorted_src_hdrs" \
+ -v src_rc="$$win32_src_rc" \
+ -v src_x_srcs="$$sorted_src_x_srcs" \
+ -v src_x_hdrs="$$sorted_src_x_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC14_10_SRCTMPL) > $(VC14_10_SRCVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC14_30_LIBVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v lib_srcs="$$sorted_lib_srcs" \
+ -v lib_hdrs="$$sorted_lib_hdrs" \
+ -v lib_rc="$$win32_lib_rc" \
+ -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
+ -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
+ -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
+ -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
+ -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
+ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
+ -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+ -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC14_30_LIBTMPL) > $(VC14_30_LIBVCXPROJ) || { exit 1; }; \
+ \
+ echo "generating '$(VC14_30_SRCVCXPROJ)'"; \
+ awk -v proj_type=vcxproj \
+ -v src_srcs="$$sorted_src_srcs" \
+ -v src_hdrs="$$sorted_src_hdrs" \
+ -v src_rc="$$win32_src_rc" \
+ -v src_x_srcs="$$sorted_src_x_srcs" \
+ -v src_x_hdrs="$$sorted_src_x_hdrs" \
+ "$$awk_code" $(srcdir)/$(VC14_30_SRCTMPL) > $(VC14_30_SRCVCXPROJ) || { exit 1; };)
+
+tidy:
+ (cd src && $(MAKE) tidy)
+ (cd lib && $(MAKE) tidy)
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/fire/curl-8.1.2/README b/src/fire/curl-8.1.2/README
new file mode 100644
index 0000000..f5efbd7
--- /dev/null
+++ b/src/fire/curl-8.1.2/README
@@ -0,0 +1,55 @@
+ _ _ ____ _
+ ___| | | | _ \| |
+ / __| | | | |_) | |
+ | (__| |_| | _ <| |___
+ \___|\___/|_| \_\_____|
+
+README
+
+ Curl is a command line tool for transferring data specified with URL
+ syntax. Find out how to use curl by reading the curl.1 man page or the
+ MANUAL document. Find out how to install Curl by reading the INSTALL
+ document.
+
+ libcurl is the library curl is using to do its job. It is readily
+ available to be used by your software. Read the libcurl.3 man page to
+ learn how.
+
+ You find answers to the most frequent questions we get in the FAQ document.
+
+ Study the COPYING file for distribution terms.
+
+ Those documents and more can be found in the docs/ directory.
+
+CONTACT
+
+ If you have problems, questions, ideas or suggestions, please contact us
+ by posting to a suitable mailing list. See https://curl.se/mail/
+
+ All contributors to the project are listed in the THANKS document.
+
+WEBSITE
+
+ Visit the curl website for the latest news and downloads:
+
+ https://curl.se/
+
+GIT
+
+ To download the latest source code off the GIT server, do this:
+
+ git clone https://github.com/curl/curl.git
+
+ (you will get a directory named curl created, filled with the source code)
+
+SECURITY PROBLEMS
+
+ Report suspected security problems via our HackerOne page and not in public.
+
+ https://hackerone.com/curl
+
+NOTICE
+
+ Curl contains pieces of source code that is Copyright (c) 1998, 1999
+ Kungliga Tekniska Högskolan. This notice is included here to comply with the
+ distribution terms.
diff --git a/src/fire/curl-8.1.2/RELEASE-NOTES b/src/fire/curl-8.1.2/RELEASE-NOTES
new file mode 100644
index 0000000..c091fa8
--- /dev/null
+++ b/src/fire/curl-8.1.2/RELEASE-NOTES
@@ -0,0 +1,61 @@
+curl and libcurl 8.1.2
+
+ Public curl releases: 219
+ Command line options: 251
+ curl_easy_setopt() options: 302
+ Public functions in libcurl: 91
+ Contributors: 2888
+
+This release includes the following bugfixes:
+
+ o configure: quote the assignments for run-compiler [1]
+ o configure: without pkg-config and no custom path, use -lnghttp2 [8]
+ o curl: cache the --trace-time value for a second [9]
+ o http2: fix EOF handling on uploads with auth negotiation [7]
+ o http3: send EOF indicator early as possible [11]
+ o lib1560: verify more scheme guessing [5]
+ o lib: remove unused functions, make single-use static [3]
+ o libcurl.m4: remove trailing 'dnl' that causes this to break autoconf [10]
+ o libssh: when keyboard-interactive auth fails, try password [4]
+ o misc: fix spelling mistakes [2]
+ o page-header: mention curl version and how to figure out current release [13]
+ o page-header: minor wording polish in the URL segment [12]
+ o scripts/singleuse.pl: add more API calls
+ o urlapi: remove superfluous host name check [6]
+
+This release includes the following known bugs:
+
+ o see docs/KNOWN_BUGS (https://curl.se/docs/knownbugs.html)
+
+Planned upcoming removals include:
+
+ o gskit
+ o NSS
+ o support for space-separated NOPROXY patterns
+ o support for the original legacy mingw version 1
+
+ See https://curl.se/dev/deprecate.html for details
+
+This release would not have looked like this without help, code, reports and
+advice from friends like these:
+
+ Aleksander Mazur, Christian Hesse, correctmost on github, Dan Fandrich,
+ Daniel Stenberg, Emanuele Torre, Gisle Vanem, Kev Jackson,
+ musvaage on github, Sergey Fionov, Stefan Eissing, Viktor Szakats, 左潇峰
+ (13 contributors)
+
+References to bug reports and discussions on issues:
+
+ [1] = https://curl.se/bug/?i=11179
+ [2] = https://curl.se/bug/?i=11171
+ [3] = https://curl.se/bug/?i=11174
+ [4] = https://curl.se/bug/?i=11196
+ [5] = https://curl.se/bug/?i=11219
+ [6] = https://curl.se/bug/?i=11195
+ [7] = https://curl.se/bug/?i=11194
+ [8] = https://curl.se/bug/?i=11186
+ [9] = https://curl.se/bug/?i=11211
+ [10] = https://curl.se/bug/?i=11212
+ [11] = https://curl.se/bug/?i=11205
+ [12] = https://curl.se/bug/?i=11217
+ [13] = https://curl.se/bug/?i=11216
diff --git a/src/fire/curl-8.1.2/acinclude.m4 b/src/fire/curl-8.1.2/acinclude.m4
new file mode 100644
index 0000000..b3025af
--- /dev/null
+++ b/src/fire/curl-8.1.2/acinclude.m4
@@ -0,0 +1,1941 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+#***************************************************************************
+
+dnl CURL_CHECK_DEF (SYMBOL, [INCLUDES], [SILENT])
+dnl -------------------------------------------------
+dnl Use the C preprocessor to find out if the given object-style symbol
+dnl is defined and get its expansion. This macro will not use default
+dnl includes even if no INCLUDES argument is given. This macro will run
+dnl silently when invoked with three arguments. If the expansion would
+dnl result in a set of double-quoted strings the returned expansion will
+dnl actually be a single double-quoted string concatenating all them.
+
+AC_DEFUN([CURL_CHECK_DEF], [
+ AC_REQUIRE([CURL_CPP_P])dnl
+ OLDCPPFLAGS=$CPPFLAGS
+ # CPPPFLAG comes from CURL_CPP_P
+ CPPFLAGS="$CPPFLAGS $CPPPFLAG"
+ AS_VAR_PUSHDEF([ac_HaveDef], [curl_cv_have_def_$1])dnl
+ AS_VAR_PUSHDEF([ac_Def], [curl_cv_def_$1])dnl
+ if test -z "$SED"; then
+ AC_MSG_ERROR([SED not set. Cannot continue without SED being set.])
+ fi
+ if test -z "$GREP"; then
+ AC_MSG_ERROR([GREP not set. Cannot continue without GREP being set.])
+ fi
+ ifelse($3,,[AC_MSG_CHECKING([for preprocessor definition of $1])])
+ tmp_exp=""
+ AC_PREPROC_IFELSE([
+ AC_LANG_SOURCE(
+ifelse($2,,,[$2])[[
+#ifdef $1
+CURL_DEF_TOKEN $1
+#endif
+ ]])
+ ],[
+ tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \
+ "$GREP" CURL_DEF_TOKEN 2>/dev/null | \
+ "$SED" 's/.*CURL_DEF_TOKEN[[ ]][[ ]]*//' 2>/dev/null | \
+ "$SED" 's/[["]][[ ]]*[["]]//g' 2>/dev/null`
+ if test -z "$tmp_exp" || test "$tmp_exp" = "$1"; then
+ tmp_exp=""
+ fi
+ ])
+ if test -z "$tmp_exp"; then
+ AS_VAR_SET(ac_HaveDef, no)
+ ifelse($3,,[AC_MSG_RESULT([no])])
+ else
+ AS_VAR_SET(ac_HaveDef, yes)
+ AS_VAR_SET(ac_Def, $tmp_exp)
+ ifelse($3,,[AC_MSG_RESULT([$tmp_exp])])
+ fi
+ AS_VAR_POPDEF([ac_Def])dnl
+ AS_VAR_POPDEF([ac_HaveDef])dnl
+ CPPFLAGS=$OLDCPPFLAGS
+])
+
+
+dnl CURL_CHECK_DEF_CC (SYMBOL, [INCLUDES], [SILENT])
+dnl -------------------------------------------------
+dnl Use the C compiler to find out only if the given symbol is defined
+dnl or not, this can not find out its expansion. This macro will not use
+dnl default includes even if no INCLUDES argument is given. This macro
+dnl will run silently when invoked with three arguments.
+
+AC_DEFUN([CURL_CHECK_DEF_CC], [
+ AS_VAR_PUSHDEF([ac_HaveDef], [curl_cv_have_def_$1])dnl
+ ifelse($3,,[AC_MSG_CHECKING([for compiler definition of $1])])
+ AC_COMPILE_IFELSE([
+ AC_LANG_SOURCE(
+ifelse($2,,,[$2])[[
+int main (void)
+{
+#ifdef $1
+ return 0;
+#else
+ force compilation error
+#endif
+}
+ ]])
+ ],[
+ tst_symbol_defined="yes"
+ ],[
+ tst_symbol_defined="no"
+ ])
+ if test "$tst_symbol_defined" = "yes"; then
+ AS_VAR_SET(ac_HaveDef, yes)
+ ifelse($3,,[AC_MSG_RESULT([yes])])
+ else
+ AS_VAR_SET(ac_HaveDef, no)
+ ifelse($3,,[AC_MSG_RESULT([no])])
+ fi
+ AS_VAR_POPDEF([ac_HaveDef])dnl
+])
+
+
+dnl CURL_CHECK_LIB_XNET
+dnl -------------------------------------------------
+dnl Verify if X/Open network library is required.
+
+AC_DEFUN([CURL_CHECK_LIB_XNET], [
+ AC_MSG_CHECKING([if X/Open network library is required])
+ tst_lib_xnet_required="no"
+ AC_COMPILE_IFELSE([
+ AC_LANG_SOURCE([[
+int main (void)
+{
+#if defined(__hpux) && defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 600)
+ return 0;
+#elif defined(__hpux) && defined(_XOPEN_SOURCE_EXTENDED)
+ return 0;
+#else
+ force compilation error
+#endif
+}
+ ]])
+ ],[
+ tst_lib_xnet_required="yes"
+ LIBS="-lxnet $LIBS"
+ ])
+ AC_MSG_RESULT([$tst_lib_xnet_required])
+])
+
+
+dnl CURL_CHECK_AIX_ALL_SOURCE
+dnl -------------------------------------------------
+dnl Provides a replacement of traditional AC_AIX with
+dnl an uniform behavior across all autoconf versions,
+dnl and with our own placement rules.
+
+AC_DEFUN([CURL_CHECK_AIX_ALL_SOURCE], [
+ AH_VERBATIM([_ALL_SOURCE],
+ [/* Define to 1 if OS is AIX. */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif])
+ AC_BEFORE([$0], [AC_SYS_LARGEFILE])dnl
+ AC_BEFORE([$0], [CURL_CONFIGURE_REENTRANT])dnl
+ AC_BEFORE([$0], [CURL_CONFIGURE_PULL_SYS_POLL])dnl
+ AC_MSG_CHECKING([if OS is AIX (to define _ALL_SOURCE)])
+ AC_EGREP_CPP([yes_this_is_aix],[
+#ifdef _AIX
+ yes_this_is_aix
+#endif
+ ],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(_ALL_SOURCE)
+ ],[
+ AC_MSG_RESULT([no])
+ ])
+])
+
+
+dnl CURL_CHECK_HEADER_WINDOWS
+dnl -------------------------------------------------
+dnl Check for compilable and valid windows.h header
+
+AC_DEFUN([CURL_CHECK_HEADER_WINDOWS], [
+ AC_CACHE_CHECK([for windows.h], [curl_cv_header_windows_h], [
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+#undef inline
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include
+ ]],[[
+#if defined(__CYGWIN__) || defined(__CEGCC__)
+ HAVE_WINDOWS_H shall not be defined.
+#else
+ int dummy=2*WINVER;
+#endif
+ ]])
+ ],[
+ curl_cv_header_windows_h="yes"
+ ],[
+ curl_cv_header_windows_h="no"
+ ])
+ ])
+ case "$curl_cv_header_windows_h" in
+ yes)
+ AC_DEFINE_UNQUOTED(HAVE_WINDOWS_H, 1,
+ [Define to 1 if you have the windows.h header file.])
+ ;;
+ esac
+])
+
+
+dnl CURL_CHECK_NATIVE_WINDOWS
+dnl -------------------------------------------------
+dnl Check if building a native Windows target
+
+AC_DEFUN([CURL_CHECK_NATIVE_WINDOWS], [
+ AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
+ AC_CACHE_CHECK([whether build target is a native Windows one], [curl_cv_native_windows], [
+ if test "$curl_cv_header_windows_h" = "no"; then
+ curl_cv_native_windows="no"
+ else
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+ ]],[[
+#if defined(__MINGW32__) || defined(__MINGW32CE__) || \
+ (defined(_MSC_VER) && (defined(_WIN32) || defined(_WIN64)))
+ int dummy=1;
+#else
+ Not a native Windows build target.
+#endif
+ ]])
+ ],[
+ curl_cv_native_windows="yes"
+ ],[
+ curl_cv_native_windows="no"
+ ])
+ fi
+ ])
+ AM_CONDITIONAL(DOING_NATIVE_WINDOWS, test "x$curl_cv_native_windows" = xyes)
+])
+
+
+dnl CURL_CHECK_HEADER_WINSOCK2
+dnl -------------------------------------------------
+dnl Check for compilable and valid winsock2.h header
+
+AC_DEFUN([CURL_CHECK_HEADER_WINSOCK2], [
+ AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
+ AC_CACHE_CHECK([for winsock2.h], [curl_cv_header_winsock2_h], [
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+#undef inline
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include
+#include
+ ]],[[
+#if defined(__CYGWIN__) || defined(__CEGCC__) || defined(__MINGW32CE__)
+ HAVE_WINSOCK2_H shall not be defined.
+#else
+ int dummy=2*IPPROTO_ESP;
+#endif
+ ]])
+ ],[
+ curl_cv_header_winsock2_h="yes"
+ ],[
+ curl_cv_header_winsock2_h="no"
+ ])
+ ])
+ case "$curl_cv_header_winsock2_h" in
+ yes)
+ AC_DEFINE_UNQUOTED(HAVE_WINSOCK2_H, 1,
+ [Define to 1 if you have the winsock2.h header file.])
+ ;;
+ esac
+])
+
+
+dnl CURL_CHECK_HEADER_WS2TCPIP
+dnl -------------------------------------------------
+dnl Check for compilable and valid ws2tcpip.h header
+
+AC_DEFUN([CURL_CHECK_HEADER_WS2TCPIP], [
+ AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
+ AC_CACHE_CHECK([for ws2tcpip.h], [curl_cv_header_ws2tcpip_h], [
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+#undef inline
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include
+#include
+#include
+ ]],[[
+#if defined(__CYGWIN__) || defined(__CEGCC__) || defined(__MINGW32CE__)
+ HAVE_WS2TCPIP_H shall not be defined.
+#else
+ int dummy=2*IP_PKTINFO;
+#endif
+ ]])
+ ],[
+ curl_cv_header_ws2tcpip_h="yes"
+ ],[
+ curl_cv_header_ws2tcpip_h="no"
+ ])
+ ])
+ case "$curl_cv_header_ws2tcpip_h" in
+ yes)
+ AC_DEFINE_UNQUOTED(HAVE_WS2TCPIP_H, 1,
+ [Define to 1 if you have the ws2tcpip.h header file.])
+ ;;
+ esac
+])
+
+
+dnl CURL_CHECK_HEADER_WINCRYPT
+dnl -------------------------------------------------
+dnl Check for compilable and valid wincrypt.h header
+
+AC_DEFUN([CURL_CHECK_HEADER_WINCRYPT], [
+ AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
+ AC_CACHE_CHECK([for wincrypt.h], [curl_cv_header_wincrypt_h], [
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+#undef inline
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include
+#include
+ ]],[[
+ int dummy=2*PROV_RSA_FULL;
+ ]])
+ ],[
+ curl_cv_header_wincrypt_h="yes"
+ ],[
+ curl_cv_header_wincrypt_h="no"
+ ])
+ ])
+ case "$curl_cv_header_wincrypt_h" in
+ yes)
+ AC_DEFINE_UNQUOTED(HAVE_WINCRYPT_H, 1,
+ [Define to 1 if you have the wincrypt.h header file.])
+ ;;
+ esac
+])
+
+
+dnl CURL_CHECK_HEADER_WINLDAP
+dnl -------------------------------------------------
+dnl Check for compilable and valid winldap.h header
+
+AC_DEFUN([CURL_CHECK_HEADER_WINLDAP], [
+ AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
+ AC_CACHE_CHECK([for winldap.h], [curl_cv_header_winldap_h], [
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+#undef inline
+#ifdef HAVE_WINDOWS_H
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include
+#endif
+#include
+ ]],[[
+#if defined(__CYGWIN__) || defined(__CEGCC__)
+ HAVE_WINLDAP_H shall not be defined.
+#else
+ LDAP *ldp = ldap_init("dummy", LDAP_PORT);
+ ULONG res = ldap_unbind(ldp);
+#endif
+ ]])
+ ],[
+ curl_cv_header_winldap_h="yes"
+ ],[
+ curl_cv_header_winldap_h="no"
+ ])
+ ])
+ case "$curl_cv_header_winldap_h" in
+ yes)
+ AC_DEFINE_UNQUOTED(HAVE_WINLDAP_H, 1,
+ [Define to 1 if you have the winldap.h header file.])
+ ;;
+ esac
+])
+
+
+dnl CURL_CHECK_HEADER_LBER
+dnl -------------------------------------------------
+dnl Check for compilable and valid lber.h header,
+dnl and check if it is needed even with ldap.h
+
+AC_DEFUN([CURL_CHECK_HEADER_LBER], [
+ AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
+ AC_CACHE_CHECK([for lber.h], [curl_cv_header_lber_h], [
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+#undef inline
+#ifdef HAVE_WINDOWS_H
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include
+#else
+#ifdef HAVE_SYS_TYPES_H
+#include
+#endif
+#endif
+#ifndef NULL
+#define NULL (void *)0
+#endif
+#include
+ ]],[[
+ BerValue *bvp = NULL;
+ BerElement *bep = ber_init(bvp);
+ ber_free(bep, 1);
+ ]])
+ ],[
+ curl_cv_header_lber_h="yes"
+ ],[
+ curl_cv_header_lber_h="no"
+ ])
+ ])
+ if test "$curl_cv_header_lber_h" = "yes"; then
+ AC_DEFINE_UNQUOTED(HAVE_LBER_H, 1,
+ [Define to 1 if you have the lber.h header file.])
+ #
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+#undef inline
+#ifdef HAVE_WINDOWS_H
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include
+#else
+#ifdef HAVE_SYS_TYPES_H
+#include
+#endif
+#endif
+#ifndef NULL
+#define NULL (void *)0
+#endif
+#ifndef LDAP_DEPRECATED
+#define LDAP_DEPRECATED 1
+#endif
+#include
+ ]],[[
+ BerValue *bvp = NULL;
+ BerElement *bep = ber_init(bvp);
+ ber_free(bep, 1);
+ ]])
+ ],[
+ curl_cv_need_header_lber_h="no"
+ ],[
+ curl_cv_need_header_lber_h="yes"
+ ])
+ #
+ case "$curl_cv_need_header_lber_h" in
+ yes)
+ AC_DEFINE_UNQUOTED(NEED_LBER_H, 1,
+ [Define to 1 if you need the lber.h header file even with ldap.h])
+ ;;
+ esac
+ fi
+])
+
+
+dnl CURL_CHECK_HEADER_LDAP
+dnl -------------------------------------------------
+dnl Check for compilable and valid ldap.h header
+
+AC_DEFUN([CURL_CHECK_HEADER_LDAP], [
+ AC_REQUIRE([CURL_CHECK_HEADER_LBER])dnl
+ AC_CACHE_CHECK([for ldap.h], [curl_cv_header_ldap_h], [
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+#undef inline
+#ifdef HAVE_WINDOWS_H
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include
+#else
+#ifdef HAVE_SYS_TYPES_H
+#include
+#endif
+#endif
+#ifndef LDAP_DEPRECATED
+#define LDAP_DEPRECATED 1
+#endif
+#ifdef NEED_LBER_H
+#include
+#endif
+#include
+ ]],[[
+ LDAP *ldp = ldap_init("dummy", LDAP_PORT);
+ int res = ldap_unbind(ldp);
+ ]])
+ ],[
+ curl_cv_header_ldap_h="yes"
+ ],[
+ curl_cv_header_ldap_h="no"
+ ])
+ ])
+ case "$curl_cv_header_ldap_h" in
+ yes)
+ AC_DEFINE_UNQUOTED(HAVE_LDAP_H, 1,
+ [Define to 1 if you have the ldap.h header file.])
+ ;;
+ esac
+])
+
+
+dnl CURL_CHECK_HEADER_LDAP_SSL
+dnl -------------------------------------------------
+dnl Check for compilable and valid ldap_ssl.h header
+
+AC_DEFUN([CURL_CHECK_HEADER_LDAP_SSL], [
+ AC_REQUIRE([CURL_CHECK_HEADER_LDAP])dnl
+ AC_CACHE_CHECK([for ldap_ssl.h], [curl_cv_header_ldap_ssl_h], [
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+#undef inline
+#ifdef HAVE_WINDOWS_H
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include
+#else
+#ifdef HAVE_SYS_TYPES_H
+#include
+#endif
+#endif
+#ifndef LDAP_DEPRECATED
+#define LDAP_DEPRECATED 1
+#endif
+#ifdef NEED_LBER_H
+#include
+#endif
+#ifdef HAVE_LDAP_H
+#include
+#endif
+#include
+ ]],[[
+ LDAP *ldp = ldapssl_init("dummy", LDAPS_PORT, 1);
+ ]])
+ ],[
+ curl_cv_header_ldap_ssl_h="yes"
+ ],[
+ curl_cv_header_ldap_ssl_h="no"
+ ])
+ ])
+ case "$curl_cv_header_ldap_ssl_h" in
+ yes)
+ AC_DEFINE_UNQUOTED(HAVE_LDAP_SSL_H, 1,
+ [Define to 1 if you have the ldap_ssl.h header file.])
+ ;;
+ esac
+])
+
+
+dnl CURL_CHECK_LIBS_WINLDAP
+dnl -------------------------------------------------
+dnl Check for libraries needed for WINLDAP support,
+dnl and prepended to LIBS any needed libraries.
+dnl This macro can take an optional parameter with a
+dnl whitespace separated list of libraries to check
+dnl before the WINLDAP default ones.
+
+AC_DEFUN([CURL_CHECK_LIBS_WINLDAP], [
+ AC_REQUIRE([CURL_CHECK_HEADER_WINBER])dnl
+ #
+ AC_MSG_CHECKING([for WINLDAP libraries])
+ #
+ u_libs=""
+ #
+ ifelse($1,,,[
+ for x_lib in $1; do
+ case "$x_lib" in
+ -l*)
+ l_lib="$x_lib"
+ ;;
+ *)
+ l_lib="-l$x_lib"
+ ;;
+ esac
+ if test -z "$u_libs"; then
+ u_libs="$l_lib"
+ else
+ u_libs="$u_libs $l_lib"
+ fi
+ done
+ ])
+ #
+ curl_cv_save_LIBS="$LIBS"
+ curl_cv_ldap_LIBS="unknown"
+ #
+ for x_nlibs in '' "$u_libs" \
+ '-lwldap32' ; do
+ if test "$curl_cv_ldap_LIBS" = "unknown"; then
+ if test -z "$x_nlibs"; then
+ LIBS="$curl_cv_save_LIBS"
+ else
+ LIBS="$x_nlibs $curl_cv_save_LIBS"
+ fi
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+#undef inline
+#ifdef HAVE_WINDOWS_H
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include
+#ifdef HAVE_WINLDAP_H
+#include
+#endif
+#ifdef HAVE_WINBER_H
+#include
+#endif
+#endif
+ ]],[[
+ BERVAL *bvp = NULL;
+ BerElement *bep = ber_init(bvp);
+ LDAP *ldp = ldap_init("dummy", LDAP_PORT);
+ ULONG res = ldap_unbind(ldp);
+ ber_free(bep, 1);
+ ]])
+ ],[
+ curl_cv_ldap_LIBS="$x_nlibs"
+ ])
+ fi
+ done
+ #
+ LIBS="$curl_cv_save_LIBS"
+ #
+ case X-"$curl_cv_ldap_LIBS" in
+ X-unknown)
+ AC_MSG_RESULT([cannot find WINLDAP libraries])
+ ;;
+ X-)
+ AC_MSG_RESULT([no additional lib required])
+ ;;
+ *)
+ if test -z "$curl_cv_save_LIBS"; then
+ LIBS="$curl_cv_ldap_LIBS"
+ else
+ LIBS="$curl_cv_ldap_LIBS $curl_cv_save_LIBS"
+ fi
+ AC_MSG_RESULT([$curl_cv_ldap_LIBS])
+ ;;
+ esac
+ #
+])
+
+
+dnl CURL_CHECK_LIBS_LDAP
+dnl -------------------------------------------------
+dnl Check for libraries needed for LDAP support,
+dnl and prepended to LIBS any needed libraries.
+dnl This macro can take an optional parameter with a
+dnl whitespace separated list of libraries to check
+dnl before the default ones.
+
+AC_DEFUN([CURL_CHECK_LIBS_LDAP], [
+ AC_REQUIRE([CURL_CHECK_HEADER_LDAP])dnl
+ #
+ AC_MSG_CHECKING([for LDAP libraries])
+ #
+ u_libs=""
+ #
+ ifelse($1,,,[
+ for x_lib in $1; do
+ case "$x_lib" in
+ -l*)
+ l_lib="$x_lib"
+ ;;
+ *)
+ l_lib="-l$x_lib"
+ ;;
+ esac
+ if test -z "$u_libs"; then
+ u_libs="$l_lib"
+ else
+ u_libs="$u_libs $l_lib"
+ fi
+ done
+ ])
+ #
+ curl_cv_save_LIBS="$LIBS"
+ curl_cv_ldap_LIBS="unknown"
+ #
+ for x_nlibs in '' "$u_libs" \
+ '-lldap' \
+ '-lldap -llber' \
+ '-llber -lldap' \
+ '-lldapssl -lldapx -lldapsdk' \
+ '-lldapsdk -lldapx -lldapssl' \
+ '-lldap -llber -lssl -lcrypto' ; do
+
+ if test "$curl_cv_ldap_LIBS" = "unknown"; then
+ if test -z "$x_nlibs"; then
+ LIBS="$curl_cv_save_LIBS"
+ else
+ LIBS="$x_nlibs $curl_cv_save_LIBS"
+ fi
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+#undef inline
+#ifdef HAVE_WINDOWS_H
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include
+#else
+#ifdef HAVE_SYS_TYPES_H
+#include
+#endif
+#endif
+#ifndef NULL
+#define NULL (void *)0
+#endif
+#ifndef LDAP_DEPRECATED
+#define LDAP_DEPRECATED 1
+#endif
+#ifdef NEED_LBER_H
+#include
+#endif
+#ifdef HAVE_LDAP_H
+#include
+#endif
+ ]],[[
+ BerValue *bvp = NULL;
+ BerElement *bep = ber_init(bvp);
+ LDAP *ldp = ldap_init("dummy", LDAP_PORT);
+ int res = ldap_unbind(ldp);
+ ber_free(bep, 1);
+ ]])
+ ],[
+ curl_cv_ldap_LIBS="$x_nlibs"
+ ])
+ fi
+ done
+ #
+ LIBS="$curl_cv_save_LIBS"
+ #
+ case X-"$curl_cv_ldap_LIBS" in
+ X-unknown)
+ AC_MSG_RESULT([cannot find LDAP libraries])
+ ;;
+ X-)
+ AC_MSG_RESULT([no additional lib required])
+ ;;
+ *)
+ if test -z "$curl_cv_save_LIBS"; then
+ LIBS="$curl_cv_ldap_LIBS"
+ else
+ LIBS="$curl_cv_ldap_LIBS $curl_cv_save_LIBS"
+ fi
+ AC_MSG_RESULT([$curl_cv_ldap_LIBS])
+ ;;
+ esac
+ #
+])
+
+
+dnl TYPE_SOCKADDR_STORAGE
+dnl -------------------------------------------------
+dnl Check for struct sockaddr_storage. Most IPv6-enabled
+dnl hosts have it, but AIX 4.3 is one known exception.
+
+AC_DEFUN([TYPE_SOCKADDR_STORAGE],
+[
+ AC_CHECK_TYPE([struct sockaddr_storage],
+ AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1,
+ [if struct sockaddr_storage is defined]), ,
+ [
+#undef inline
+#ifdef HAVE_WINDOWS_H
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include
+#ifdef HAVE_WINSOCK2_H
+#include
+#endif
+#else
+#ifdef HAVE_SYS_TYPES_H
+#include
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include
+#endif
+#ifdef HAVE_ARPA_INET_H
+#include
+#endif
+#endif
+ ])
+])
+
+dnl CURL_CHECK_FUNC_RECV
+dnl -------------------------------------------------
+dnl Test if the socket recv() function is available,
+
+AC_DEFUN([CURL_CHECK_FUNC_RECV], [
+ AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
+ AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
+ AC_CHECK_HEADERS(sys/types.h sys/socket.h)
+ #
+ AC_MSG_CHECKING([for recv])
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+#undef inline
+#ifdef HAVE_WINDOWS_H
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include
+#ifdef HAVE_WINSOCK2_H
+#include
+#endif
+#else
+$curl_includes_bsdsocket
+#ifdef HAVE_SYS_TYPES_H
+#include
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include
+#endif
+#endif
+ ]],[[
+ recv(0, 0, 0, 0);
+ ]])
+ ],[
+ AC_MSG_RESULT([yes])
+ curl_cv_recv="yes"
+ ],[
+ AC_MSG_RESULT([no])
+ curl_cv_recv="no"
+ ])
+ #
+ if test "$curl_cv_recv" = "yes"; then
+ AC_DEFINE_UNQUOTED(HAVE_RECV, 1,
+ [Define to 1 if you have the recv function.])
+ curl_cv_func_recv="yes"
+ else
+ AC_MSG_ERROR([Unable to link function recv])
+ fi
+])
+
+
+dnl CURL_CHECK_FUNC_SEND
+dnl -------------------------------------------------
+dnl Test if the socket send() function is available,
+
+AC_DEFUN([CURL_CHECK_FUNC_SEND], [
+ AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
+ AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
+ AC_CHECK_HEADERS(sys/types.h sys/socket.h)
+ #
+ AC_MSG_CHECKING([for send])
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+#undef inline
+#ifdef HAVE_WINDOWS_H
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include
+#ifdef HAVE_WINSOCK2_H
+#include
+#endif
+#else
+$curl_includes_bsdsocket
+#ifdef HAVE_SYS_TYPES_H
+#include
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include
+#endif
+#endif
+ ]],[[
+ send(0, 0, 0, 0);
+ ]])
+ ],[
+ AC_MSG_RESULT([yes])
+ curl_cv_send="yes"
+ ],[
+ AC_MSG_RESULT([no])
+ curl_cv_send="no"
+ ])
+ #
+ if test "$curl_cv_send" = "yes"; then
+ AC_DEFINE_UNQUOTED(HAVE_SEND, 1,
+ [Define to 1 if you have the send function.])
+ curl_cv_func_send="yes"
+ else
+ AC_MSG_ERROR([Unable to link function send])
+ fi
+])
+
+dnl CURL_CHECK_MSG_NOSIGNAL
+dnl -------------------------------------------------
+dnl Check for MSG_NOSIGNAL
+
+AC_DEFUN([CURL_CHECK_MSG_NOSIGNAL], [
+ AC_CHECK_HEADERS(sys/types.h sys/socket.h)
+ AC_CACHE_CHECK([for MSG_NOSIGNAL], [curl_cv_msg_nosignal], [
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+#undef inline
+#ifdef HAVE_WINDOWS_H
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include
+#ifdef HAVE_WINSOCK2_H
+#include
+#endif
+#else
+#ifdef HAVE_SYS_TYPES_H
+#include
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include
+#endif
+#endif
+ ]],[[
+ int flag=MSG_NOSIGNAL;
+ ]])
+ ],[
+ curl_cv_msg_nosignal="yes"
+ ],[
+ curl_cv_msg_nosignal="no"
+ ])
+ ])
+ case "$curl_cv_msg_nosignal" in
+ yes)
+ AC_DEFINE_UNQUOTED(HAVE_MSG_NOSIGNAL, 1,
+ [Define to 1 if you have the MSG_NOSIGNAL flag.])
+ ;;
+ esac
+])
+
+
+dnl CURL_CHECK_STRUCT_TIMEVAL
+dnl -------------------------------------------------
+dnl Check for timeval struct
+
+AC_DEFUN([CURL_CHECK_STRUCT_TIMEVAL], [
+ AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
+ AC_CHECK_HEADERS(sys/types.h sys/time.h sys/socket.h)
+ AC_CACHE_CHECK([for struct timeval], [curl_cv_struct_timeval], [
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+#undef inline
+#ifdef HAVE_WINDOWS_H
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include
+#ifdef HAVE_WINSOCK2_H
+#include
+#endif
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include
+#endif
+#include
+#ifdef HAVE_SYS_SOCKET_H
+#include
+#endif
+ ]],[[
+ struct timeval ts;
+ ts.tv_sec = 0;
+ ts.tv_usec = 0;
+ ]])
+ ],[
+ curl_cv_struct_timeval="yes"
+ ],[
+ curl_cv_struct_timeval="no"
+ ])
+ ])
+ case "$curl_cv_struct_timeval" in
+ yes)
+ AC_DEFINE_UNQUOTED(HAVE_STRUCT_TIMEVAL, 1,
+ [Define to 1 if you have the timeval struct.])
+ ;;
+ esac
+])
+
+
+dnl TYPE_IN_ADDR_T
+dnl -------------------------------------------------
+dnl Check for in_addr_t: it is used to receive the return code of inet_addr()
+dnl and a few other things.
+
+AC_DEFUN([TYPE_IN_ADDR_T], [
+ AC_CHECK_TYPE([in_addr_t], ,[
+ dnl in_addr_t not available
+ AC_CACHE_CHECK([for in_addr_t equivalent],
+ [curl_cv_in_addr_t_equiv], [
+ curl_cv_in_addr_t_equiv="unknown"
+ for t in "unsigned long" int size_t unsigned long; do
+ if test "$curl_cv_in_addr_t_equiv" = "unknown"; then
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+#undef inline
+#ifdef HAVE_WINDOWS_H
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include
+#ifdef HAVE_WINSOCK2_H
+#include
+#endif
+#else
+#ifdef HAVE_SYS_TYPES_H
+#include
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include
+#endif
+#ifdef HAVE_ARPA_INET_H
+#include
+#endif
+#endif
+ ]],[[
+ $t data = inet_addr ("1.2.3.4");
+ ]])
+ ],[
+ curl_cv_in_addr_t_equiv="$t"
+ ])
+ fi
+ done
+ ])
+ case "$curl_cv_in_addr_t_equiv" in
+ unknown)
+ AC_MSG_ERROR([Cannot find a type to use in place of in_addr_t])
+ ;;
+ *)
+ AC_DEFINE_UNQUOTED(in_addr_t, $curl_cv_in_addr_t_equiv,
+ [Type to use in place of in_addr_t when system does not provide it.])
+ ;;
+ esac
+ ],[
+#undef inline
+#ifdef HAVE_WINDOWS_H
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include
+#ifdef HAVE_WINSOCK2_H
+#include
+#endif
+#else
+#ifdef HAVE_SYS_TYPES_H
+#include
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include
+#endif
+#ifdef HAVE_ARPA_INET_H
+#include
+#endif
+#endif
+ ])
+])
+
+
+dnl CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC
+dnl -------------------------------------------------
+dnl Check if monotonic clock_gettime is available.
+
+AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC], [
+ AC_CHECK_HEADERS(sys/types.h sys/time.h)
+ AC_MSG_CHECKING([for monotonic clock_gettime])
+ #
+ if test "x$dontwant_rt" = "xno" ; then
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+#ifdef HAVE_SYS_TYPES_H
+#include
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include
+#endif
+#include
+ ]],[[
+ struct timespec ts;
+ (void)clock_gettime(CLOCK_MONOTONIC, &ts);
+ ]])
+ ],[
+ AC_MSG_RESULT([yes])
+ curl_func_clock_gettime="yes"
+ ],[
+ AC_MSG_RESULT([no])
+ curl_func_clock_gettime="no"
+ ])
+ fi
+ dnl Definition of HAVE_CLOCK_GETTIME_MONOTONIC is intentionally postponed
+ dnl until library linking and run-time checks for clock_gettime succeed.
+])
+
+
+dnl CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
+dnl -------------------------------------------------
+dnl If monotonic clock_gettime is available then,
+dnl check and prepended to LIBS any needed libraries.
+
+AC_DEFUN([CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC], [
+ AC_REQUIRE([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC])dnl
+ #
+ if test "$curl_func_clock_gettime" = "yes"; then
+ #
+ AC_MSG_CHECKING([for clock_gettime in libraries])
+ #
+ curl_cv_save_LIBS="$LIBS"
+ curl_cv_gclk_LIBS="unknown"
+ #
+ for x_xlibs in '' '-lrt' '-lposix4' ; do
+ if test "$curl_cv_gclk_LIBS" = "unknown"; then
+ if test -z "$x_xlibs"; then
+ LIBS="$curl_cv_save_LIBS"
+ else
+ LIBS="$x_xlibs $curl_cv_save_LIBS"
+ fi
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+#ifdef HAVE_SYS_TYPES_H
+#include
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include
+#endif
+#include
+ ]],[[
+ struct timespec ts;
+ (void)clock_gettime(CLOCK_MONOTONIC, &ts);
+ ]])
+ ],[
+ curl_cv_gclk_LIBS="$x_xlibs"
+ ])
+ fi
+ done
+ #
+ LIBS="$curl_cv_save_LIBS"
+ #
+ case X-"$curl_cv_gclk_LIBS" in
+ X-unknown)
+ AC_MSG_RESULT([cannot find clock_gettime])
+ AC_MSG_WARN([HAVE_CLOCK_GETTIME_MONOTONIC will not be defined])
+ curl_func_clock_gettime="no"
+ ;;
+ X-)
+ AC_MSG_RESULT([no additional lib required])
+ curl_func_clock_gettime="yes"
+ ;;
+ *)
+ if test -z "$curl_cv_save_LIBS"; then
+ LIBS="$curl_cv_gclk_LIBS"
+ else
+ LIBS="$curl_cv_gclk_LIBS $curl_cv_save_LIBS"
+ fi
+ AC_MSG_RESULT([$curl_cv_gclk_LIBS])
+ curl_func_clock_gettime="yes"
+ ;;
+ esac
+ #
+ dnl only do runtime verification when not cross-compiling
+ if test "x$cross_compiling" != "xyes" &&
+ test "$curl_func_clock_gettime" = "yes"; then
+ AC_MSG_CHECKING([if monotonic clock_gettime works])
+ CURL_RUN_IFELSE([
+ AC_LANG_PROGRAM([[
+#ifdef HAVE_STDLIB_H
+#include
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include
+#endif
+#include
+ ]],[[
+ struct timespec ts;
+ if (0 == clock_gettime(CLOCK_MONOTONIC, &ts))
+ exit(0);
+ else
+ exit(1);
+ ]])
+ ],[
+ AC_MSG_RESULT([yes])
+ ],[
+ AC_MSG_RESULT([no])
+ AC_MSG_WARN([HAVE_CLOCK_GETTIME_MONOTONIC will not be defined])
+ curl_func_clock_gettime="no"
+ LIBS="$curl_cv_save_LIBS"
+ ])
+ fi
+ #
+ case "$curl_func_clock_gettime" in
+ yes)
+ AC_DEFINE_UNQUOTED(HAVE_CLOCK_GETTIME_MONOTONIC, 1,
+ [Define to 1 if you have the clock_gettime function and monotonic timer.])
+ ;;
+ esac
+ #
+ fi
+ #
+])
+
+
+dnl CURL_CHECK_LIBS_CONNECT
+dnl -------------------------------------------------
+dnl Verify if network connect function is already available
+dnl using current libraries or if another one is required.
+
+AC_DEFUN([CURL_CHECK_LIBS_CONNECT], [
+ AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
+ AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
+ AC_MSG_CHECKING([for connect in libraries])
+ tst_connect_save_LIBS="$LIBS"
+ tst_connect_need_LIBS="unknown"
+ for tst_lib in '' '-lsocket' ; do
+ if test "$tst_connect_need_LIBS" = "unknown"; then
+ LIBS="$tst_lib $tst_connect_save_LIBS"
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+ $curl_includes_winsock2
+ $curl_includes_bsdsocket
+ #if !defined(HAVE_WINDOWS_H) && !defined(HAVE_PROTO_BSDSOCKET_H)
+ int connect(int, void*, int);
+ #endif
+ ]],[[
+ if(0 != connect(0, 0, 0))
+ return 1;
+ ]])
+ ],[
+ tst_connect_need_LIBS="$tst_lib"
+ ])
+ fi
+ done
+ LIBS="$tst_connect_save_LIBS"
+ #
+ case X-"$tst_connect_need_LIBS" in
+ X-unknown)
+ AC_MSG_RESULT([cannot find connect])
+ AC_MSG_ERROR([cannot find connect function in libraries.])
+ ;;
+ X-)
+ AC_MSG_RESULT([yes])
+ ;;
+ *)
+ AC_MSG_RESULT([$tst_connect_need_LIBS])
+ LIBS="$tst_connect_need_LIBS $tst_connect_save_LIBS"
+ ;;
+ esac
+])
+
+
+dnl CURL_DEFINE_UNQUOTED (VARIABLE, [VALUE])
+dnl -------------------------------------------------
+dnl Like AC_DEFINE_UNQUOTED this macro will define a C preprocessor
+dnl symbol that can be further used in custom template configuration
+dnl files. This macro, unlike AC_DEFINE_UNQUOTED, does not use a third
+dnl argument for the description. Symbol definitions done with this
+dnl macro are intended to be exclusively used in handcrafted *.h.in
+dnl template files. Contrary to what AC_DEFINE_UNQUOTED does, this one
+dnl prevents autoheader generation and insertion of symbol template
+dnl stub and definition into the first configuration header file. Do
+dnl not use this macro as a replacement for AC_DEFINE_UNQUOTED, each
+dnl one serves different functional needs.
+
+AC_DEFUN([CURL_DEFINE_UNQUOTED], [
+cat >>confdefs.h <<_EOF
+[@%:@define] $1 ifelse($#, 2, [$2], 1)
+_EOF
+])
+
+dnl CURL_CONFIGURE_PULL_SYS_POLL
+dnl -------------------------------------------------
+dnl The need for the sys/poll.h inclusion arises mainly to properly
+dnl interface AIX systems which define macros 'events' and 'revents'.
+
+AC_DEFUN([CURL_CONFIGURE_PULL_SYS_POLL], [
+ AC_REQUIRE([CURL_INCLUDES_POLL])dnl
+ #
+ tst_poll_events_macro_defined="unknown"
+ #
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+ $curl_includes_poll
+ ]],[[
+#if defined(events) || defined(revents)
+ return 0;
+#else
+ force compilation error
+#endif
+ ]])
+ ],[
+ tst_poll_events_macro_defined="yes"
+ ],[
+ tst_poll_events_macro_defined="no"
+ ])
+ #
+ if test "$tst_poll_events_macro_defined" = "yes"; then
+ if test "x$ac_cv_header_sys_poll_h" = "xyes"; then
+ CURL_DEFINE_UNQUOTED([CURL_PULL_SYS_POLL_H])
+ fi
+ fi
+ #
+])
+
+
+dnl CURL_CHECK_FUNC_SELECT
+dnl -------------------------------------------------
+dnl Test if the socket select() function is available.
+
+AC_DEFUN([CURL_CHECK_FUNC_SELECT], [
+ AC_REQUIRE([CURL_CHECK_STRUCT_TIMEVAL])dnl
+ AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
+ AC_CHECK_HEADERS(sys/select.h sys/socket.h)
+ #
+ AC_MSG_CHECKING([for select])
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+#undef inline
+#ifdef HAVE_WINDOWS_H
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include
+#ifdef HAVE_WINSOCK2_H
+#include
+#endif
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include
+#endif
+#include
+#ifndef HAVE_WINDOWS_H
+#ifdef HAVE_SYS_SELECT_H
+#include
+#elif defined(HAVE_UNISTD_H)
+#include
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include
+#endif
+$curl_includes_bsdsocket
+#endif
+ ]],[[
+ select(0, 0, 0, 0, 0);
+ ]])
+ ],[
+ AC_MSG_RESULT([yes])
+ curl_cv_select="yes"
+ ],[
+ AC_MSG_RESULT([no])
+ curl_cv_select="no"
+ ])
+ #
+ if test "$curl_cv_select" = "yes"; then
+ AC_DEFINE_UNQUOTED(HAVE_SELECT, 1,
+ [Define to 1 if you have the select function.])
+ curl_cv_func_select="yes"
+ fi
+])
+
+
+dnl CURL_VERIFY_RUNTIMELIBS
+dnl -------------------------------------------------
+dnl Verify that the shared libs found so far can be used when running
+dnl programs, since otherwise the situation will create odd configure errors
+dnl that are misleading people.
+dnl
+dnl Make sure this test is run BEFORE the first test in the script that
+dnl runs anything, which at the time of this writing is the AC_CHECK_SIZEOF
+dnl macro. It must also run AFTER all lib-checking macros are complete.
+
+AC_DEFUN([CURL_VERIFY_RUNTIMELIBS], [
+
+ dnl this test is of course not sensible if we are cross-compiling!
+ if test "x$cross_compiling" != xyes; then
+
+ dnl just run a program to verify that the libs checked for previous to this
+ dnl point also is available run-time!
+ AC_MSG_CHECKING([run-time libs availability])
+ CURL_RUN_IFELSE([
+int main()
+{
+ return 0;
+}
+],
+ AC_MSG_RESULT([fine]),
+ AC_MSG_RESULT([failed])
+ AC_MSG_ERROR([one or more libs available at link-time are not available run-time. Libs used at link-time: $LIBS])
+ )
+
+ dnl if this test fails, configure has already stopped
+ fi
+])
+
+
+dnl CURL_CHECK_VARIADIC_MACROS
+dnl -------------------------------------------------
+dnl Check compiler support of variadic macros
+
+AC_DEFUN([CURL_CHECK_VARIADIC_MACROS], [
+ AC_CACHE_CHECK([for compiler support of C99 variadic macro style],
+ [curl_cv_variadic_macros_c99], [
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+#define c99_vmacro3(first, ...) fun3(first, __VA_ARGS__)
+#define c99_vmacro2(first, ...) fun2(first, __VA_ARGS__)
+ int fun3(int arg1, int arg2, int arg3);
+ int fun2(int arg1, int arg2);
+ int fun3(int arg1, int arg2, int arg3)
+ { return arg1 + arg2 + arg3; }
+ int fun2(int arg1, int arg2)
+ { return arg1 + arg2; }
+ ]],[[
+ int res3 = c99_vmacro3(1, 2, 3);
+ int res2 = c99_vmacro2(1, 2);
+ ]])
+ ],[
+ curl_cv_variadic_macros_c99="yes"
+ ],[
+ curl_cv_variadic_macros_c99="no"
+ ])
+ ])
+ case "$curl_cv_variadic_macros_c99" in
+ yes)
+ AC_DEFINE_UNQUOTED(HAVE_VARIADIC_MACROS_C99, 1,
+ [Define to 1 if compiler supports C99 variadic macro style.])
+ ;;
+ esac
+ AC_CACHE_CHECK([for compiler support of old gcc variadic macro style],
+ [curl_cv_variadic_macros_gcc], [
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+#define gcc_vmacro3(first, args...) fun3(first, args)
+#define gcc_vmacro2(first, args...) fun2(first, args)
+ int fun3(int arg1, int arg2, int arg3);
+ int fun2(int arg1, int arg2);
+ int fun3(int arg1, int arg2, int arg3)
+ { return arg1 + arg2 + arg3; }
+ int fun2(int arg1, int arg2)
+ { return arg1 + arg2; }
+ ]],[[
+ int res3 = gcc_vmacro3(1, 2, 3);
+ int res2 = gcc_vmacro2(1, 2);
+ ]])
+ ],[
+ curl_cv_variadic_macros_gcc="yes"
+ ],[
+ curl_cv_variadic_macros_gcc="no"
+ ])
+ ])
+ case "$curl_cv_variadic_macros_gcc" in
+ yes)
+ AC_DEFINE_UNQUOTED(HAVE_VARIADIC_MACROS_GCC, 1,
+ [Define to 1 if compiler supports old gcc variadic macro style.])
+ ;;
+ esac
+])
+
+
+dnl CURL_CHECK_CA_BUNDLE
+dnl -------------------------------------------------
+dnl Check if a default ca-bundle should be used
+dnl
+dnl regarding the paths this will scan:
+dnl /etc/ssl/certs/ca-certificates.crt Debian systems
+dnl /etc/pki/tls/certs/ca-bundle.crt Redhat and Mandriva
+dnl /usr/share/ssl/certs/ca-bundle.crt old(er) Redhat
+dnl /usr/local/share/certs/ca-root-nss.crt FreeBSD, MidnightBSD
+dnl /etc/ssl/cert.pem OpenBSD, FreeBSD, MidnightBSD (symlink)
+dnl /etc/ssl/certs/ (ca path) SUSE
+
+AC_DEFUN([CURL_CHECK_CA_BUNDLE], [
+
+ AC_MSG_CHECKING([default CA cert bundle/path])
+
+ AC_ARG_WITH(ca-bundle,
+AS_HELP_STRING([--with-ca-bundle=FILE],
+[Path to a file containing CA certificates (example: /etc/ca-bundle.crt)])
+AS_HELP_STRING([--without-ca-bundle], [Don't use a default CA bundle]),
+ [
+ want_ca="$withval"
+ if test "x$want_ca" = "xyes"; then
+ AC_MSG_ERROR([--with-ca-bundle=FILE requires a path to the CA bundle])
+ fi
+ ],
+ [ want_ca="unset" ])
+ AC_ARG_WITH(ca-path,
+AS_HELP_STRING([--with-ca-path=DIRECTORY],
+[Path to a directory containing CA certificates stored individually, with \
+their filenames in a hash format. This option can be used with the OpenSSL, \
+GnuTLS and mbedTLS backends. Refer to OpenSSL c_rehash for details. \
+(example: /etc/certificates)])
+AS_HELP_STRING([--without-ca-path], [Don't use a default CA path]),
+ [
+ want_capath="$withval"
+ if test "x$want_capath" = "xyes"; then
+ AC_MSG_ERROR([--with-ca-path=DIRECTORY requires a path to the CA path directory])
+ fi
+ ],
+ [ want_capath="unset"])
+
+ ca_warning=" (warning: certs not found)"
+ capath_warning=" (warning: certs not found)"
+ check_capath=""
+
+ if test "x$want_ca" != "xno" -a "x$want_ca" != "xunset" -a \
+ "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then
+ dnl both given
+ ca="$want_ca"
+ capath="$want_capath"
+ elif test "x$want_ca" != "xno" -a "x$want_ca" != "xunset"; then
+ dnl --with-ca-bundle given
+ ca="$want_ca"
+ capath="no"
+ elif test "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then
+ dnl --with-ca-path given
+ if test "x$OPENSSL_ENABLED" != "x1" -a "x$GNUTLS_ENABLED" != "x1" -a "x$MBEDTLS_ENABLED" != "x1"; then
+ AC_MSG_ERROR([--with-ca-path only works with OpenSSL, GnuTLS or mbedTLS])
+ fi
+ capath="$want_capath"
+ ca="no"
+ else
+ dnl first try autodetecting a CA bundle , then a CA path
+ dnl both autodetections can be skipped by --without-ca-*
+ ca="no"
+ capath="no"
+ if test "x$cross_compiling" != "xyes"; then
+ dnl NOT cross-compiling and...
+ dnl neither of the --with-ca-* options are provided
+ if test "x$want_ca" = "xunset"; then
+ dnl the path we previously would have installed the curl ca bundle
+ dnl to, and thus we now check for an already existing cert in that
+ dnl place in case we find no other
+ if test "x$prefix" != xNONE; then
+ cac="${prefix}/share/curl/curl-ca-bundle.crt"
+ else
+ cac="$ac_default_prefix/share/curl/curl-ca-bundle.crt"
+ fi
+
+ for a in /etc/ssl/certs/ca-certificates.crt \
+ /etc/pki/tls/certs/ca-bundle.crt \
+ /usr/share/ssl/certs/ca-bundle.crt \
+ /usr/local/share/certs/ca-root-nss.crt \
+ /etc/ssl/cert.pem \
+ "$cac"; do
+ if test -f "$a"; then
+ ca="$a"
+ break
+ fi
+ done
+ fi
+ if test "x$want_capath" = "xunset" -a "x$ca" = "xno" -a \
+ "x$OPENSSL_ENABLED" = "x1"; then
+ check_capath="/etc/ssl/certs/"
+ fi
+ else
+ dnl no option given and cross-compiling
+ AC_MSG_WARN([skipped the ca-cert path detection when cross-compiling])
+ fi
+ fi
+
+ if test "x$ca" = "xno" || test -f "$ca"; then
+ ca_warning=""
+ fi
+
+ if test "x$capath" != "xno"; then
+ check_capath="$capath"
+ fi
+
+ if test ! -z "$check_capath"; then
+ for a in "$check_capath"; do
+ if test -d "$a" && ls "$a"/[[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]].0 >/dev/null 2>/dev/null; then
+ if test "x$capath" = "xno"; then
+ capath="$a"
+ fi
+ capath_warning=""
+ break
+ fi
+ done
+ fi
+
+ if test "x$capath" = "xno"; then
+ capath_warning=""
+ fi
+
+ if test "x$ca" != "xno"; then
+ CURL_CA_BUNDLE='"'$ca'"'
+ AC_DEFINE_UNQUOTED(CURL_CA_BUNDLE, "$ca", [Location of default ca bundle])
+ AC_SUBST(CURL_CA_BUNDLE)
+ AC_MSG_RESULT([$ca])
+ fi
+ if test "x$capath" != "xno"; then
+ CURL_CA_PATH="\"$capath\""
+ AC_DEFINE_UNQUOTED(CURL_CA_PATH, "$capath", [Location of default ca path])
+ AC_MSG_RESULT([$capath (capath)])
+ fi
+ if test "x$ca" = "xno" && test "x$capath" = "xno"; then
+ AC_MSG_RESULT([no])
+ fi
+
+ AC_MSG_CHECKING([whether to use builtin CA store of SSL library])
+ AC_ARG_WITH(ca-fallback,
+AS_HELP_STRING([--with-ca-fallback], [Use the built in CA store of the SSL library])
+AS_HELP_STRING([--without-ca-fallback], [Don't use the built in CA store of the SSL library]),
+ [
+ if test "x$with_ca_fallback" != "xyes" -a "x$with_ca_fallback" != "xno"; then
+ AC_MSG_ERROR([--with-ca-fallback only allows yes or no as parameter])
+ fi
+ ],
+ [ with_ca_fallback="no"])
+ AC_MSG_RESULT([$with_ca_fallback])
+ if test "x$with_ca_fallback" = "xyes"; then
+ if test "x$OPENSSL_ENABLED" != "x1" -a "x$GNUTLS_ENABLED" != "x1"; then
+ AC_MSG_ERROR([--with-ca-fallback only works with OpenSSL or GnuTLS])
+ fi
+ AC_DEFINE_UNQUOTED(CURL_CA_FALLBACK, 1, [define "1" to use built in CA store of SSL library ])
+ fi
+])
+
+dnl CURL_CHECK_WIN32_LARGEFILE
+dnl -------------------------------------------------
+dnl Check if curl's WIN32 large file will be used
+
+AC_DEFUN([CURL_CHECK_WIN32_LARGEFILE], [
+ AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
+ AC_MSG_CHECKING([whether build target supports WIN32 file API])
+ curl_win32_file_api="no"
+ if test "$curl_cv_header_windows_h" = "yes"; then
+ if test x"$enable_largefile" != "xno"; then
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+ ]],[[
+#if !defined(_WIN32_WCE) && \
+ (defined(__MINGW32__) || \
+ (defined(_MSC_VER) && (defined(_WIN32) || defined(_WIN64))))
+ int dummy=1;
+#else
+ WIN32 large file API not supported.
+#endif
+ ]])
+ ],[
+ curl_win32_file_api="win32_large_files"
+ ])
+ fi
+ if test "$curl_win32_file_api" = "no"; then
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+ ]],[[
+#if defined(_WIN32_WCE) || defined(__MINGW32__) || defined(_MSC_VER)
+ int dummy=1;
+#else
+ WIN32 small file API not supported.
+#endif
+ ]])
+ ],[
+ curl_win32_file_api="win32_small_files"
+ ])
+ fi
+ fi
+ case "$curl_win32_file_api" in
+ win32_large_files)
+ AC_MSG_RESULT([yes (large file enabled)])
+ AC_DEFINE_UNQUOTED(USE_WIN32_LARGE_FILES, 1,
+ [Define to 1 if you are building a Windows target with large file support.])
+ AC_SUBST(USE_WIN32_LARGE_FILES, [1])
+ ;;
+ win32_small_files)
+ AC_MSG_RESULT([yes (large file disabled)])
+ AC_DEFINE_UNQUOTED(USE_WIN32_SMALL_FILES, 1,
+ [Define to 1 if you are building a Windows target without large file support.])
+ AC_SUBST(USE_WIN32_SMALL_FILES, [1])
+ ;;
+ *)
+ AC_MSG_RESULT([no])
+ ;;
+ esac
+])
+
+dnl CURL_CHECK_WIN32_CRYPTO
+dnl -------------------------------------------------
+dnl Check if curl's WIN32 crypto lib can be used
+
+AC_DEFUN([CURL_CHECK_WIN32_CRYPTO], [
+ AC_REQUIRE([CURL_CHECK_HEADER_WINCRYPT])dnl
+ AC_MSG_CHECKING([whether build target supports WIN32 crypto API])
+ curl_win32_crypto_api="no"
+ if test "$curl_cv_header_wincrypt_h" = "yes"; then
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+#undef inline
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include
+#include
+ ]],[[
+ HCRYPTPROV hCryptProv;
+ if(CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL,
+ CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) {
+ CryptReleaseContext(hCryptProv, 0);
+ }
+ ]])
+ ],[
+ curl_win32_crypto_api="yes"
+ ])
+ fi
+ case "$curl_win32_crypto_api" in
+ yes)
+ AC_MSG_RESULT([yes])
+ AC_DEFINE_UNQUOTED(USE_WIN32_CRYPTO, 1,
+ [Define to 1 if you are building a Windows target with crypto API support.])
+ AC_SUBST(USE_WIN32_CRYPTO, [1])
+ ;;
+ *)
+ AC_MSG_RESULT([no])
+ ;;
+ esac
+])
+
+dnl CURL_EXPORT_PCDIR ($pcdir)
+dnl ------------------------
+dnl if $pcdir is not empty, set PKG_CONFIG_LIBDIR to $pcdir and export
+dnl
+dnl we need this macro since pkg-config distinguishes among empty and unset
+dnl variable while checking PKG_CONFIG_LIBDIR
+dnl
+
+AC_DEFUN([CURL_EXPORT_PCDIR], [
+ if test -n "$1"; then
+ PKG_CONFIG_LIBDIR="$1"
+ export PKG_CONFIG_LIBDIR
+ fi
+])
+
+dnl CURL_CHECK_PKGCONFIG ($module, [$pcdir])
+dnl ------------------------
+dnl search for the pkg-config tool. Set the PKGCONFIG variable to hold the
+dnl path to it, or 'no' if not found/present.
+dnl
+dnl If pkg-config is present, check that it has info about the $module or
+dnl return "no" anyway!
+dnl
+dnl Optionally PKG_CONFIG_LIBDIR may be given as $pcdir.
+dnl
+
+AC_DEFUN([CURL_CHECK_PKGCONFIG], [
+ if test -n "$PKG_CONFIG"; then
+ PKGCONFIG="$PKG_CONFIG"
+ else
+ AC_PATH_TOOL([PKGCONFIG], [pkg-config], [no],
+ [$PATH:/usr/bin:/usr/local/bin])
+ fi
+
+ if test "x$PKGCONFIG" != "xno"; then
+ AC_MSG_CHECKING([for $1 options with pkg-config])
+ dnl ask pkg-config about $1
+ itexists=`CURL_EXPORT_PCDIR([$2]) dnl
+ $PKGCONFIG --exists $1 >/dev/null 2>&1 && echo 1`
+
+ if test -z "$itexists"; then
+ dnl pkg-config does not have info about the given module! set the
+ dnl variable to 'no'
+ PKGCONFIG="no"
+ AC_MSG_RESULT([no])
+ else
+ AC_MSG_RESULT([found])
+ fi
+ fi
+])
+
+
+dnl CURL_GENERATE_CONFIGUREHELP_PM
+dnl -------------------------------------------------
+dnl Generate test harness configurehelp.pm module, defining and
+dnl initializing some perl variables with values which are known
+dnl when the configure script runs. For portability reasons, test
+dnl harness needs information on how to run the C preprocessor.
+
+AC_DEFUN([CURL_GENERATE_CONFIGUREHELP_PM], [
+ AC_REQUIRE([AC_PROG_CPP])dnl
+ tmp_cpp=`eval echo "$ac_cpp" 2>/dev/null`
+ if test -z "$tmp_cpp"; then
+ tmp_cpp='cpp'
+ fi
+ cat >./tests/configurehelp.pm <<_EOF
+[@%:@] This is a generated file. Do not edit.
+
+package configurehelp;
+
+use strict;
+use warnings;
+use Exporter;
+
+use vars qw(
+ @ISA
+ @EXPORT_OK
+ \$Cpreprocessor
+ );
+
+@ISA = qw(Exporter);
+
+@EXPORT_OK = qw(
+ \$Cpreprocessor
+ );
+
+\$Cpreprocessor = '$tmp_cpp';
+
+1;
+_EOF
+])
+
+dnl CURL_CPP_P
+dnl
+dnl Check if $cpp -P should be used for extract define values due to gcc 5
+dnl splitting up strings and defines between line outputs. gcc by default
+dnl (without -P) will show TEST EINVAL TEST as
+dnl
+dnl # 13 "conftest.c"
+dnl TEST
+dnl # 13 "conftest.c" 3 4
+dnl 22
+dnl # 13 "conftest.c"
+dnl TEST
+
+AC_DEFUN([CURL_CPP_P], [
+ AC_MSG_CHECKING([if cpp -P is needed])
+ AC_EGREP_CPP([TEST.*TEST], [
+ #include
+TEST EINVAL TEST
+ ], [cpp=no], [cpp=yes])
+ AC_MSG_RESULT([$cpp])
+
+ dnl we need cpp -P so check if it works then
+ if test "x$cpp" = "xyes"; then
+ AC_MSG_CHECKING([if cpp -P works])
+ OLDCPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS -P"
+ AC_EGREP_CPP([TEST.*TEST], [
+ #include
+TEST EINVAL TEST
+ ], [cpp_p=yes], [cpp_p=no])
+ AC_MSG_RESULT([$cpp_p])
+
+ if test "x$cpp_p" = "xno"; then
+ AC_MSG_WARN([failed to figure out cpp -P alternative])
+ # without -P
+ CPPPFLAG=""
+ else
+ # with -P
+ CPPPFLAG="-P"
+ fi
+ dnl restore CPPFLAGS
+ CPPFLAGS=$OLDCPPFLAGS
+ else
+ # without -P
+ CPPPFLAG=""
+ fi
+])
+
+
+dnl CURL_DARWIN_CFLAGS
+dnl
+dnl Set -Werror=partial-availability to detect possible breaking code
+dnl with very low deployment targets.
+dnl
+
+AC_DEFUN([CURL_DARWIN_CFLAGS], [
+
+ tst_cflags="no"
+ case $host_os in
+ darwin*)
+ tst_cflags="yes"
+ ;;
+ esac
+
+ AC_MSG_CHECKING([for good-to-use Darwin CFLAGS])
+ AC_MSG_RESULT([$tst_cflags]);
+
+ if test "$tst_cflags" = "yes"; then
+ old_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS -Werror=partial-availability"
+ AC_MSG_CHECKING([whether $CC accepts -Werror=partial-availability])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
+ [AC_MSG_RESULT([yes])],
+ [AC_MSG_RESULT([no])
+ CFLAGS=$old_CFLAGS])
+ fi
+
+])
+
+
+dnl CURL_SUPPORTS_BUILTIN_AVAILABLE
+dnl
+dnl Check to see if the compiler supports __builtin_available. This built-in
+dnl compiler function first appeared in Apple LLVM 9.0.0. It's so new that, at
+dnl the time this macro was written, the function was not yet documented. Its
+dnl purpose is to return true if the code is running under a certain OS version
+dnl or later.
+
+AC_DEFUN([CURL_SUPPORTS_BUILTIN_AVAILABLE], [
+ AC_MSG_CHECKING([to see if the compiler supports __builtin_available()])
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+#include
+ ]],[[
+ if (__builtin_available(macOS 10.8, iOS 5.0, *)) {}
+ ]])
+ ],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE_UNQUOTED(HAVE_BUILTIN_AVAILABLE, 1,
+ [Define to 1 if you have the __builtin_available function.])
+ ],[
+ AC_MSG_RESULT([no])
+ ])
+])
diff --git a/src/fire/curl-8.1.2/aclocal.m4 b/src/fire/curl-8.1.2/aclocal.m4
new file mode 100644
index 0000000..5f0cb3d
--- /dev/null
+++ b/src/fire/curl-8.1.2/aclocal.m4
@@ -0,0 +1,1253 @@
+# generated automatically by aclocal 1.16.5 -*- Autoconf -*-
+
+# Copyright (C) 1996-2021 Free Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.71],,
+[m4_warning([this file was generated for autoconf 2.71.
+You have another version of autoconf. It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
+
+# Copyright (C) 2002-2021 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.16'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.16.5], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.16.5])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is '.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+])
+
+# AM_COND_IF -*- Autoconf -*-
+
+# Copyright (C) 2008-2021 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_COND_IF
+# _AM_COND_ELSE
+# _AM_COND_ENDIF
+# --------------
+# These macros are only used for tracing.
+m4_define([_AM_COND_IF])
+m4_define([_AM_COND_ELSE])
+m4_define([_AM_COND_ENDIF])
+
+# AM_COND_IF(COND, [IF-TRUE], [IF-FALSE])
+# ---------------------------------------
+# If the shell condition COND is true, execute IF-TRUE, otherwise execute
+# IF-FALSE. Allow automake to learn about conditional instantiating macros
+# (the AC_CONFIG_FOOS).
+AC_DEFUN([AM_COND_IF],
+[m4_ifndef([_AM_COND_VALUE_$1],
+ [m4_fatal([$0: no such condition "$1"])])dnl
+_AM_COND_IF([$1])dnl
+if test -z "$$1_TRUE"; then :
+ m4_n([$2])[]dnl
+m4_ifval([$3],
+[_AM_COND_ELSE([$1])dnl
+else
+ $3
+])dnl
+_AM_COND_ENDIF([$1])dnl
+fi[]dnl
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999-2021 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery. Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+m4_if([$1], [CC], [depcc="$CC" am_compiler_list=],
+ [$1], [CXX], [depcc="$CXX" am_compiler_list=],
+ [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+ [$1], [UPC], [depcc="$UPC" am_compiler_list=],
+ [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ am__universal=false
+ m4_case([$1], [CC],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac],
+ [CXX],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac])
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+ [--enable-dependency-tracking],
+ [do not reject slow dependency extractors])
+AS_HELP_STRING(
+ [--disable-dependency-tracking],
+ [speeds up one-time build])])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+ am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999-2021 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+ # Older Autoconf quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ # TODO: see whether this extra hack can be removed once we start
+ # requiring Autoconf 2.70 or later.
+ AS_CASE([$CONFIG_FILES],
+ [*\'*], [eval set x "$CONFIG_FILES"],
+ [*], [set x $CONFIG_FILES])
+ shift
+ # Used to flag and report bootstrapping failures.
+ am_rc=0
+ for am_mf
+ do
+ # Strip MF so we end up with the name of the file.
+ am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile which includes
+ # dependency-tracking related rules and includes.
+ # Grep'ing the whole file directly is not great: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
+ || continue
+ am_dirpart=`AS_DIRNAME(["$am_mf"])`
+ am_filepart=`AS_BASENAME(["$am_mf"])`
+ AM_RUN_LOG([cd "$am_dirpart" \
+ && sed -e '/# am--include-marker/d' "$am_filepart" \
+ | $MAKE -f - am--depfiles]) || am_rc=$?
+ done
+ if test $am_rc -ne 0; then
+ AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments
+ for automatic dependency tracking. If GNU make was not used, consider
+ re-running the configure script with MAKE="gmake" (or whatever is
+ necessary). You can also try re-running configure with the
+ '--disable-dependency-tracking' option to at least be able to build
+ the package (albeit without support for automatic dependency tracking).])
+ fi
+ AS_UNSET([am_dirpart])
+ AS_UNSET([am_filepart])
+ AS_UNSET([am_mf])
+ AS_UNSET([am_rc])
+ rm -f conftest-deps.mk
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking is enabled.
+# This creates each '.Po' and '.Plo' makefile fragment that we'll need in
+# order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996-2021 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.65])dnl
+m4_ifdef([_$0_ALREADY_INIT],
+ [m4_fatal([$0 expanded multiple times
+]m4_defn([_$0_ALREADY_INIT]))],
+ [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[AC_DIAGNOSE([obsolete],
+ [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(
+ m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]),
+ [ok:ok],,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility. To be removed once Automake 1.9.x
+# dies out for good. For more background, see:
+#
+#
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+# We need awk for the "check" target (and possibly the TAP driver). The
+# system "awk" is bad on some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES([CC])],
+ [m4_define([AC_PROG_CC],
+ m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES([CXX])],
+ [m4_define([AC_PROG_CXX],
+ m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES([OBJC])],
+ [m4_define([AC_PROG_OBJC],
+ m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+ [_AM_DEPENDENCIES([OBJCXX])],
+ [m4_define([AC_PROG_OBJCXX],
+ m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+# Variables for tags utilities; see am/tags.am
+if test -z "$CTAGS"; then
+ CTAGS=ctags
+fi
+AC_SUBST([CTAGS])
+if test -z "$ETAGS"; then
+ ETAGS=etags
+fi
+AC_SUBST([ETAGS])
+if test -z "$CSCOPE"; then
+ CSCOPE=cscope
+fi
+AC_SUBST([CSCOPE])
+
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes. So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+ cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present. This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard:
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message. This
+can help us improve future automake versions.
+
+END
+ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+ echo 'Configuration will proceed anyway, since you have set the' >&2
+ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+ echo >&2
+ else
+ cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: .
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+ AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+ fi
+fi
+dnl The trailing newline in this macro's definition is deliberate, for
+dnl backward compatibility and to allow trailing 'dnl'-style comments
+dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
+])
+
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+AC_SUBST([install_sh])])
+
+# Copyright (C) 2003-2021 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996-2021 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless 'enable' is passed literally.
+# For symmetry, 'disable' may be passed as well. Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+ [enable], [m4_define([am_maintainer_other], [disable])],
+ [disable], [m4_define([am_maintainer_other], [enable])],
+ [m4_define([am_maintainer_other], [enable])
+ m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+ dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+ AC_ARG_ENABLE([maintainer-mode],
+ [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+ am_maintainer_other[ make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer])],
+ [USE_MAINTAINER_MODE=$enableval],
+ [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+ AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+ AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+ MAINT=$MAINTAINER_MODE_TRUE
+ AC_SUBST([MAINT])dnl
+]
+)
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check whether make has an 'include' directive that can support all
+# the idioms we need for our automatic dependency tracking code.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive])
+cat > confinc.mk << 'END'
+am__doit:
+ @echo this is the am__doit target >confinc.out
+.PHONY: am__doit
+END
+am__include="#"
+am__quote=
+# BSD make does it like this.
+echo '.include "confinc.mk" # ignored' > confmf.BSD
+# Other make implementations (GNU, Solaris 10, AIX) do it like this.
+echo 'include confinc.mk # ignored' > confmf.GNU
+_am_result=no
+for s in GNU BSD; do
+ AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out])
+ AS_CASE([$?:`cat confinc.out 2>/dev/null`],
+ ['0:this is the am__doit target'],
+ [AS_CASE([$s],
+ [BSD], [am__include='.include' am__quote='"'],
+ [am__include='include' am__quote=''])])
+ if test "$am__include" != "#"; then
+ _am_result="yes ($s style)"
+ break
+ fi
+done
+rm -f confinc.* confmf.*
+AC_MSG_RESULT([${_am_result}])
+AC_SUBST([am__include])])
+AC_SUBST([am__quote])])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+ MISSING="\${SHELL} '$am_aux_dir/missing'"
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+ am_missing_run="$MISSING "
+else
+ am_missing_run=
+ AC_MSG_WARN(['missing' script is too old or missing])
+fi
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# --------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Copyright (C) 1999-2021 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+ [whether $CC understands -c and -o together],
+ [am_cv_prog_cc_c_o],
+ [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+ # Make sure it works both with $CC and with simple cc.
+ # Following AC_PROG_CC_C_O, we do the test twice because some
+ # compilers refuse to overwrite an existing .o file with -o,
+ # though they will create one.
+ am_cv_prog_cc_c_o=yes
+ for am_i in 1 2; do
+ if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+ && test -f conftest2.$ac_objext; then
+ : OK
+ else
+ am_cv_prog_cc_c_o=no
+ break
+ fi
+ done
+ rm -f core conftest*
+ unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+ ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ (exit $ac_status); }])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996-2021 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[[\\\"\#\$\&\'\`$am_lf]]*)
+ AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
+ AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ am_has_slept=no
+ for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+ alias in your environment])
+ fi
+ if test "$[2]" = conftest.file || test $am_try -eq 2; then
+ break
+ fi
+ # Just in case.
+ sleep 1
+ am_has_slept=yes
+ done
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+ ( sleep 1 ) &
+ am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+ [AC_MSG_CHECKING([that generated files are newer than configure])
+ if test -n "$am_sleep_pid"; then
+ # Hide warnings about reused PIDs.
+ wait $am_sleep_pid 2>/dev/null
+ fi
+ AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
+
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# ("yes" being less verbose, "no" or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+ [--enable-silent-rules],
+ [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+ [--disable-silent-rules],
+ [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+ *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+ [am_cv_make_support_nested_variables],
+ [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+ dnl Using '$V' instead of '$(V)' breaks IRIX make.
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor 'install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in "make install-strip", and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip". However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006-2021 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004-2021 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+#
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+
+m4_if([$1], [v7],
+ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+ [m4_case([$1],
+ [ustar],
+ [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+ # There is notably a 21 bits limit for the UID and the GID. In fact,
+ # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+ # and bug#13588).
+ am_max_uid=2097151 # 2^21 - 1
+ am_max_gid=$am_max_uid
+ # The $UID and $GID variables are not portable, so we need to resort
+ # to the POSIX-mandated id(1) utility. Errors in the 'id' calls
+ # below are definitely unexpected, so allow the users to see them
+ # (that is, avoid stderr redirection).
+ am_uid=`id -u || echo unknown`
+ am_gid=`id -g || echo unknown`
+ AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+ if test $am_uid -le $am_max_uid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi
+ AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+ if test $am_gid -le $am_max_gid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi],
+
+ [pax],
+ [],
+
+ [m4_fatal([Unknown tar format])])
+
+ AC_MSG_CHECKING([how to create a $1 tar archive])
+
+ # Go ahead even if we have the value already cached. We do so because we
+ # need to set the values for the 'am__tar' and 'am__untar' variables.
+ _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+ for _am_tool in $_am_tools; do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar; do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works.
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar /dev/null 2>&1 && break
+ fi
+ done
+ rm -rf conftest.dir
+
+ AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+ AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([m4/curl-amissl.m4])
+m4_include([m4/curl-bearssl.m4])
+m4_include([m4/curl-compilers.m4])
+m4_include([m4/curl-confopts.m4])
+m4_include([m4/curl-functions.m4])
+m4_include([m4/curl-gnutls.m4])
+m4_include([m4/curl-mbedtls.m4])
+m4_include([m4/curl-nss.m4])
+m4_include([m4/curl-openssl.m4])
+m4_include([m4/curl-override.m4])
+m4_include([m4/curl-reentrant.m4])
+m4_include([m4/curl-rustls.m4])
+m4_include([m4/curl-schannel.m4])
+m4_include([m4/curl-sectransp.m4])
+m4_include([m4/curl-sysconfig.m4])
+m4_include([m4/curl-wolfssl.m4])
+m4_include([m4/libtool.m4])
+m4_include([m4/ltoptions.m4])
+m4_include([m4/ltsugar.m4])
+m4_include([m4/ltversion.m4])
+m4_include([m4/lt~obsolete.m4])
+m4_include([m4/xc-am-iface.m4])
+m4_include([m4/xc-cc-check.m4])
+m4_include([m4/xc-lt-iface.m4])
+m4_include([m4/xc-translit.m4])
+m4_include([m4/xc-val-flgs.m4])
+m4_include([m4/zz40-xc-ovr.m4])
+m4_include([m4/zz50-xc-ovr.m4])
+m4_include([m4/zz60-xc-ovr.m4])
+m4_include([acinclude.m4])
diff --git a/src/fire/curl-8.1.2/buildconf b/src/fire/curl-8.1.2/buildconf
new file mode 100644
index 0000000..ee6a280
--- /dev/null
+++ b/src/fire/curl-8.1.2/buildconf
@@ -0,0 +1,8 @@
+#!/bin/sh
+#
+# Copyright (C) Daniel Stenberg, , et al.
+#
+# SPDX-License-Identifier: curl
+
+echo "*** Do not use buildconf. Instead, just use: autoreconf -fi" >&2
+exec ${AUTORECONF:-autoreconf} -fi "${@}"
diff --git a/src/fire/curl-8.1.2/buildconf.bat b/src/fire/curl-8.1.2/buildconf.bat
new file mode 100644
index 0000000..6153661
--- /dev/null
+++ b/src/fire/curl-8.1.2/buildconf.bat
@@ -0,0 +1,319 @@
+@echo off
+rem ***************************************************************************
+rem * _ _ ____ _
+rem * Project ___| | | | _ \| |
+rem * / __| | | | |_) | |
+rem * | (__| |_| | _ <| |___
+rem * \___|\___/|_| \_\_____|
+rem *
+rem * Copyright (C) Daniel Stenberg, , et al.
+rem *
+rem * This software is licensed as described in the file COPYING, which
+rem * you should have received as part of this distribution. The terms
+rem * are also available at https://curl.se/docs/copyright.html.
+rem *
+rem * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+rem * copies of the Software, and permit persons to whom the Software is
+rem * furnished to do so, under the terms of the COPYING file.
+rem *
+rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+rem * KIND, either express or implied.
+rem *
+rem * SPDX-License-Identifier: curl
+rem *
+rem ***************************************************************************
+
+rem NOTES
+rem
+rem This batch file must be used to set up a git tree to build on systems where
+rem there is no autotools support (i.e. DOS and Windows).
+rem
+
+:begin
+ rem Set our variables
+ if "%OS%" == "Windows_NT" setlocal
+ set MODE=GENERATE
+
+ rem Switch to this batch file's directory
+ cd /d "%~0\.." 1>NUL 2>&1
+
+ rem Check we are running from a curl git repository
+ if not exist GIT-INFO goto norepo
+
+ rem Detect programs. HAVE_
+ rem When not found the variable is set undefined. The undefined pattern
+ rem allows for statements like "if not defined HAVE_PERL (command)"
+ groff --version NUL 2>&1
+ if errorlevel 1 (set HAVE_GROFF=) else (set HAVE_GROFF=Y)
+ nroff --version NUL 2>&1
+ if errorlevel 1 (set HAVE_NROFF=) else (set HAVE_NROFF=Y)
+ perl --version NUL 2>&1
+ if errorlevel 1 (set HAVE_PERL=) else (set HAVE_PERL=Y)
+ gzip --version NUL 2>&1
+ if errorlevel 1 (set HAVE_GZIP=) else (set HAVE_GZIP=Y)
+
+:parseArgs
+ if "%~1" == "" goto start
+
+ if /i "%~1" == "-clean" (
+ set MODE=CLEAN
+ ) else if /i "%~1" == "-?" (
+ goto syntax
+ ) else if /i "%~1" == "-h" (
+ goto syntax
+ ) else if /i "%~1" == "-help" (
+ goto syntax
+ ) else (
+ goto unknown
+ )
+
+ shift & goto parseArgs
+
+:start
+ if "%MODE%" == "GENERATE" (
+ echo.
+ echo Generating prerequisite files
+
+ call :generate
+ if errorlevel 3 goto nogenhugehelp
+ if errorlevel 2 goto nogenmakefile
+ if errorlevel 1 goto warning
+
+ ) else (
+ echo.
+ echo Removing prerequisite files
+
+ call :clean
+ if errorlevel 2 goto nocleanhugehelp
+ if errorlevel 1 goto nocleanmakefile
+ )
+
+ goto success
+
+rem Main generate function.
+rem
+rem Returns:
+rem
+rem 0 - success
+rem 1 - success with simplified tool_hugehelp.c
+rem 2 - failed to generate Makefile
+rem 3 - failed to generate tool_hugehelp.c
+rem
+:generate
+ if "%OS%" == "Windows_NT" setlocal
+ set BASIC_HUGEHELP=0
+
+ rem Create Makefile
+ echo * %CD%\Makefile
+ if exist Makefile.dist (
+ copy /Y Makefile.dist Makefile 1>NUL 2>&1
+ if errorlevel 1 (
+ if "%OS%" == "Windows_NT" endlocal
+ exit /B 2
+ )
+ )
+
+ rem Create tool_hugehelp.c
+ echo * %CD%\src\tool_hugehelp.c
+ call :genHugeHelp
+ if errorlevel 2 (
+ if "%OS%" == "Windows_NT" endlocal
+ exit /B 3
+ )
+ if errorlevel 1 (
+ set BASIC_HUGEHELP=1
+ )
+ cmd /c exit 0
+
+ rem Setup c-ares git tree
+ if exist ares\buildconf.bat (
+ echo.
+ echo Configuring c-ares build environment
+ cd ares
+ call buildconf.bat
+ cd ..
+ )
+
+ if "%BASIC_HUGEHELP%" == "1" (
+ if "%OS%" == "Windows_NT" endlocal
+ exit /B 1
+ )
+
+ if "%OS%" == "Windows_NT" endlocal
+ exit /B 0
+
+rem Main clean function.
+rem
+rem Returns:
+rem
+rem 0 - success
+rem 1 - failed to clean Makefile
+rem 2 - failed to clean tool_hugehelp.c
+rem
+:clean
+ rem Remove Makefile
+ echo * %CD%\Makefile
+ if exist Makefile (
+ del Makefile 2>NUL
+ if exist Makefile (
+ exit /B 1
+ )
+ )
+
+ rem Remove tool_hugehelp.c
+ echo * %CD%\src\tool_hugehelp.c
+ if exist src\tool_hugehelp.c (
+ del src\tool_hugehelp.c 2>NUL
+ if exist src\tool_hugehelp.c (
+ exit /B 2
+ )
+ )
+
+ exit /B
+
+rem Function to generate src\tool_hugehelp.c
+rem
+rem Returns:
+rem
+rem 0 - full tool_hugehelp.c generated
+rem 1 - simplified tool_hugehelp.c
+rem 2 - failure
+rem
+:genHugeHelp
+ if "%OS%" == "Windows_NT" setlocal
+ set LC_ALL=C
+ set ROFFCMD=
+ set BASIC=1
+
+ if defined HAVE_PERL (
+ if defined HAVE_GROFF (
+ set ROFFCMD=groff -mtty-char -Tascii -P-c -man
+ ) else if defined HAVE_NROFF (
+ set ROFFCMD=nroff -c -Tascii -man
+ )
+ )
+
+ if defined ROFFCMD (
+ echo #include "tool_setup.h"> src\tool_hugehelp.c
+ echo #include "tool_hugehelp.h">> src\tool_hugehelp.c
+
+ if defined HAVE_GZIP (
+ echo #ifndef HAVE_LIBZ>> src\tool_hugehelp.c
+ )
+
+ %ROFFCMD% docs\curl.1 2>NUL | perl src\mkhelp.pl docs\MANUAL >> src\tool_hugehelp.c
+ if defined HAVE_GZIP (
+ echo #else>> src\tool_hugehelp.c
+ %ROFFCMD% docs\curl.1 2>NUL | perl src\mkhelp.pl -c docs\MANUAL >> src\tool_hugehelp.c
+ echo #endif /^* HAVE_LIBZ ^*/>> src\tool_hugehelp.c
+ )
+
+ set BASIC=0
+ ) else (
+ if exist src\tool_hugehelp.c.cvs (
+ copy /Y src\tool_hugehelp.c.cvs src\tool_hugehelp.c 1>NUL 2>&1
+ ) else (
+ echo #include "tool_setup.h"> src\tool_hugehelp.c
+ echo #include "tool_hugehelp.h">> src\tool_hugehelp.c
+ echo.>> src\tool_hugehelp.c
+ echo void hugehelp(void^)>> src\tool_hugehelp.c
+ echo {>> src\tool_hugehelp.c
+ echo #ifdef USE_MANUAL>> src\tool_hugehelp.c
+ echo fputs("Built-in manual not included\n", stdout^);>> src\tool_hugehelp.c
+ echo #endif>> src\tool_hugehelp.c
+ echo }>> src\tool_hugehelp.c
+ )
+ )
+
+ findstr "/C:void hugehelp(void)" src\tool_hugehelp.c 1>NUL 2>&1
+ if errorlevel 1 (
+ if "%OS%" == "Windows_NT" endlocal
+ exit /B 2
+ )
+
+ if "%BASIC%" == "1" (
+ if "%OS%" == "Windows_NT" endlocal
+ exit /B 1
+ )
+
+ if "%OS%" == "Windows_NT" endlocal
+ exit /B 0
+
+rem Function to clean-up local variables under DOS, Windows 3.x and
+rem Windows 9x as setlocal isn't available until Windows NT
+rem
+:dosCleanup
+ set MODE=
+ set HAVE_GROFF=
+ set HAVE_NROFF=
+ set HAVE_PERL=
+ set HAVE_GZIP=
+ set BASIC_HUGEHELP=
+ set LC_ALL
+ set ROFFCMD=
+ set BASIC=
+
+ exit /B
+
+:syntax
+ rem Display the help
+ echo.
+ echo Usage: buildconf [-clean]
+ echo.
+ echo -clean - Removes the files
+ goto error
+
+:unknown
+ echo.
+ echo Error: Unknown argument '%1'
+ goto error
+
+:norepo
+ echo.
+ echo Error: This batch file should only be used with a curl git repository
+ goto error
+
+:nogenmakefile
+ echo.
+ echo Error: Unable to generate Makefile
+ goto error
+
+:nogenhugehelp
+ echo.
+ echo Error: Unable to generate src\tool_hugehelp.c
+ goto error
+
+:nocleanmakefile
+ echo.
+ echo Error: Unable to clean Makefile
+ goto error
+
+:nocleanhugehelp
+ echo.
+ echo Error: Unable to clean src\tool_hugehelp.c
+ goto error
+
+:warning
+ echo.
+ echo Warning: The curl manual could not be integrated in the source. This means when
+ echo you build curl the manual will not be available (curl --man^). Integration of
+ echo the manual is not required and a summary of the options will still be available
+ echo (curl --help^). To integrate the manual your PATH is required to have
+ echo groff/nroff, perl and optionally gzip for compression.
+ goto success
+
+:error
+ if "%OS%" == "Windows_NT" (
+ endlocal
+ ) else (
+ call :dosCleanup
+ )
+ exit /B 1
+
+:success
+ if "%OS%" == "Windows_NT" (
+ endlocal
+ ) else (
+ call :dosCleanup
+ )
+ exit /B 0
diff --git a/src/fire/curl-8.1.2/compile b/src/fire/curl-8.1.2/compile
new file mode 100644
index 0000000..df363c8
--- /dev/null
+++ b/src/fire/curl-8.1.2/compile
@@ -0,0 +1,348 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2018-03-07.03; # UTC
+
+# Copyright (C) 1999-2021 Free Software Foundation, Inc.
+# Written by Tom Tromey .
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to or send patches to
+# .
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" "" $nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+ file=$1
+ case $file in
+ / | /[!/]*) # absolute file, and not a UNC file
+ if test -z "$file_conv"; then
+ # lazily determine how to convert abs files
+ case `uname -s` in
+ MINGW*)
+ file_conv=mingw
+ ;;
+ CYGWIN* | MSYS*)
+ file_conv=cygwin
+ ;;
+ *)
+ file_conv=wine
+ ;;
+ esac
+ fi
+ case $file_conv/,$2, in
+ *,$file_conv,*)
+ ;;
+ mingw/*)
+ file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+ ;;
+ cygwin/* | msys/*)
+ file=`cygpath -m "$file" || echo "$file"`
+ ;;
+ wine/*)
+ file=`winepath -w "$file" || echo "$file"`
+ ;;
+ esac
+ ;;
+ esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+ func_file_conv "$1"
+ if test -z "$lib_path"; then
+ lib_path=$file
+ else
+ lib_path="$lib_path;$file"
+ fi
+ linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+ lib=$1
+ found=no
+ save_IFS=$IFS
+ IFS=';'
+ for dir in $lib_path $LIB
+ do
+ IFS=$save_IFS
+ if $shared && test -f "$dir/$lib.dll.lib"; then
+ found=yes
+ lib=$dir/$lib.dll.lib
+ break
+ fi
+ if test -f "$dir/$lib.lib"; then
+ found=yes
+ lib=$dir/$lib.lib
+ break
+ fi
+ if test -f "$dir/lib$lib.a"; then
+ found=yes
+ lib=$dir/lib$lib.a
+ break
+ fi
+ done
+ IFS=$save_IFS
+
+ if test "$found" != yes; then
+ lib=$lib.lib
+ fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+ # Assume a capable shell
+ lib_path=
+ shared=:
+ linker_opts=
+ for arg
+ do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
+ eat=1
+ case $2 in
+ *.o | *.[oO][bB][jJ])
+ func_file_conv "$2"
+ set x "$@" -Fo"$file"
+ shift
+ ;;
+ *)
+ func_file_conv "$2"
+ set x "$@" -Fe"$file"
+ shift
+ ;;
+ esac
+ ;;
+ -I)
+ eat=1
+ func_file_conv "$2" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
+ -I*)
+ func_file_conv "${1#-I}" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
+ -l)
+ eat=1
+ func_cl_dashl "$2"
+ set x "$@" "$lib"
+ shift
+ ;;
+ -l*)
+ func_cl_dashl "${1#-l}"
+ set x "$@" "$lib"
+ shift
+ ;;
+ -L)
+ eat=1
+ func_cl_dashL "$2"
+ ;;
+ -L*)
+ func_cl_dashL "${1#-L}"
+ ;;
+ -static)
+ shared=false
+ ;;
+ -Wl,*)
+ arg=${1#-Wl,}
+ save_ifs="$IFS"; IFS=','
+ for flag in $arg; do
+ IFS="$save_ifs"
+ linker_opts="$linker_opts $flag"
+ done
+ IFS="$save_ifs"
+ ;;
+ -Xlinker)
+ eat=1
+ linker_opts="$linker_opts $2"
+ ;;
+ -*)
+ set x "$@" "$1"
+ shift
+ ;;
+ *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+ func_file_conv "$1"
+ set x "$@" -Tp"$file"
+ shift
+ ;;
+ *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+ func_file_conv "$1" mingw
+ set x "$@" "$file"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+ done
+ if test -n "$linker_opts"; then
+ linker_opts="-link$linker_opts"
+ fi
+ exec "$@" $linker_opts
+ exit 1
+}
+
+eat=
+
+case $1 in
+ '')
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to .
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "compile $scriptversion"
+ exit $?
+ ;;
+ cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
+ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
+ func_cl_wrapper "$@" # Doesn't return...
+ ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
+ # So we strip '-o arg' only if arg is an object.
+ eat=1
+ case $2 in
+ *.o | *.obj)
+ ofile=$2
+ ;;
+ *)
+ set x "$@" -o "$2"
+ shift
+ ;;
+ esac
+ ;;
+ *.c)
+ cfile=$1
+ set x "$@" "$1"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+ # If no '-o' option was seen then we might have been invoked from a
+ # pattern rule where we don't need one. That is ok -- this is a
+ # normal compilation that the losing compiler can handle. If no
+ # '.c' file was seen then we are probably linking. That is also
+ # ok.
+ exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file. Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+ if mkdir "$lockdir" >/dev/null 2>&1; then
+ break
+ fi
+ sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+ test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+ test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC0"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/src/fire/curl-8.1.2/config.guess b/src/fire/curl-8.1.2/config.guess
new file mode 100644
index 0000000..7f76b62
--- /dev/null
+++ b/src/fire/curl-8.1.2/config.guess
@@ -0,0 +1,1754 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+# Copyright 1992-2022 Free Software Foundation, Inc.
+
+# shellcheck disable=SC2006,SC2268 # see below for rationale
+
+timestamp='2022-01-09'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see .
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+#
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
+#
+# You can get the latest version of this script from:
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
+#
+# Please send patches to .
+
+
+# The "shellcheck disable" line above the timestamp inhibits complaints
+# about features and limitations of the classic Bourne shell that were
+# superseded or lifted in POSIX. However, this script identifies a wide
+# variety of pre-POSIX systems that do not have POSIX shells at all, and
+# even some reasonably current systems (Solaris 10 as case-in-point) still
+# have a pre-POSIX /bin/sh.
+
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Options:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to ."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright 1992-2022 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
+# Just in case it came from the environment.
+GUESS=
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+tmp=
+# shellcheck disable=SC2172
+trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
+
+set_cc_for_build() {
+ # prevent multiple calls if $tmp is already set
+ test "$tmp" && return 0
+ : "${TMPDIR=/tmp}"
+ # shellcheck disable=SC2039,SC3028
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
+ dummy=$tmp/dummy
+ case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
+ ,,) echo "int x;" > "$dummy.c"
+ for driver in cc gcc c89 c99 ; do
+ if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
+ CC_FOR_BUILD=$driver
+ break
+ fi
+ done
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+ esac
+}
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if test -f /.attbin/uname ; then
+ PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+case $UNAME_SYSTEM in
+Linux|GNU|GNU/*)
+ LIBC=unknown
+
+ set_cc_for_build
+ cat <<-EOF > "$dummy.c"
+ #include
+ #if defined(__UCLIBC__)
+ LIBC=uclibc
+ #elif defined(__dietlibc__)
+ LIBC=dietlibc
+ #elif defined(__GLIBC__)
+ LIBC=gnu
+ #else
+ #include
+ /* First heuristic to detect musl libc. */
+ #ifdef __DEFINED_va_list
+ LIBC=musl
+ #endif
+ #endif
+ EOF
+ cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+ eval "$cc_set_libc"
+
+ # Second heuristic to detect musl libc.
+ if [ "$LIBC" = unknown ] &&
+ command -v ldd >/dev/null &&
+ ldd --version 2>&1 | grep -q ^musl; then
+ LIBC=musl
+ fi
+
+ # If the system lacks a compiler, then just pick glibc.
+ # We could probably try harder.
+ if [ "$LIBC" = unknown ]; then
+ LIBC=gnu
+ fi
+ ;;
+esac
+
+# Note: order is significant - the case branches are not exclusive.
+
+case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in
+ *:NetBSD:*:*)
+ # NetBSD (nbsd) targets should (where applicable) match one or
+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
+ # switched to ELF, *-*-netbsd* would select the old
+ # object file format. This provides both forward
+ # compatibility and a consistent mechanism for selecting the
+ # object file format.
+ #
+ # Note: NetBSD doesn't particularly care about the vendor
+ # portion of the name. We always set it to "unknown".
+ UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+ /sbin/sysctl -n hw.machine_arch 2>/dev/null || \
+ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \
+ echo unknown)`
+ case $UNAME_MACHINE_ARCH in
+ aarch64eb) machine=aarch64_be-unknown ;;
+ armeb) machine=armeb-unknown ;;
+ arm*) machine=arm-unknown ;;
+ sh3el) machine=shl-unknown ;;
+ sh3eb) machine=sh-unknown ;;
+ sh5el) machine=sh5le-unknown ;;
+ earmv*)
+ arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
+ endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
+ machine=${arch}${endian}-unknown
+ ;;
+ *) machine=$UNAME_MACHINE_ARCH-unknown ;;
+ esac
+ # The Operating System including object format, if it has switched
+ # to ELF recently (or will in the future) and ABI.
+ case $UNAME_MACHINE_ARCH in
+ earm*)
+ os=netbsdelf
+ ;;
+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ set_cc_for_build
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ELF__
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ ;;
+ *)
+ os=netbsd
+ ;;
+ esac
+ # Determine ABI tags.
+ case $UNAME_MACHINE_ARCH in
+ earm*)
+ expr='s/^earmv[0-9]/-eabi/;s/eb$//'
+ abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
+ ;;
+ esac
+ # The OS release
+ # Debian GNU/NetBSD machines have a different userland, and
+ # thus, need a distinct triplet. However, they do not need
+ # kernel version information, so it can be replaced with a
+ # suitable tag, in the style of linux-gnu.
+ case $UNAME_VERSION in
+ Debian*)
+ release='-gnu'
+ ;;
+ *)
+ release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
+ ;;
+ esac
+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ GUESS=$machine-${os}${release}${abi-}
+ ;;
+ *:Bitrig:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+ GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE
+ ;;
+ *:OpenBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE
+ ;;
+ *:SecBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'`
+ GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE
+ ;;
+ *:LibertyBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
+ GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE
+ ;;
+ *:MidnightBSD:*:*)
+ GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE
+ ;;
+ *:ekkoBSD:*:*)
+ GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE
+ ;;
+ *:SolidBSD:*:*)
+ GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE
+ ;;
+ *:OS108:*:*)
+ GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE
+ ;;
+ macppc:MirBSD:*:*)
+ GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE
+ ;;
+ *:MirBSD:*:*)
+ GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE
+ ;;
+ *:Sortix:*:*)
+ GUESS=$UNAME_MACHINE-unknown-sortix
+ ;;
+ *:Twizzler:*:*)
+ GUESS=$UNAME_MACHINE-unknown-twizzler
+ ;;
+ *:Redox:*:*)
+ GUESS=$UNAME_MACHINE-unknown-redox
+ ;;
+ mips:OSF1:*.*)
+ GUESS=mips-dec-osf1
+ ;;
+ alpha:OSF1:*:*)
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ trap '' 0
+ case $UNAME_RELEASE in
+ *4.0)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ ;;
+ *5.*)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ ;;
+ esac
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+ # types through head -n 1, so we only detect the type of CPU 0.
+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ case $ALPHA_CPU_TYPE in
+ "EV4 (21064)")
+ UNAME_MACHINE=alpha ;;
+ "EV4.5 (21064)")
+ UNAME_MACHINE=alpha ;;
+ "LCA4 (21066/21068)")
+ UNAME_MACHINE=alpha ;;
+ "EV5 (21164)")
+ UNAME_MACHINE=alphaev5 ;;
+ "EV5.6 (21164A)")
+ UNAME_MACHINE=alphaev56 ;;
+ "EV5.6 (21164PC)")
+ UNAME_MACHINE=alphapca56 ;;
+ "EV5.7 (21164PC)")
+ UNAME_MACHINE=alphapca57 ;;
+ "EV6 (21264)")
+ UNAME_MACHINE=alphaev6 ;;
+ "EV6.7 (21264A)")
+ UNAME_MACHINE=alphaev67 ;;
+ "EV6.8CB (21264C)")
+ UNAME_MACHINE=alphaev68 ;;
+ "EV6.8AL (21264B)")
+ UNAME_MACHINE=alphaev68 ;;
+ "EV6.8CX (21264D)")
+ UNAME_MACHINE=alphaev68 ;;
+ "EV6.9A (21264/EV69A)")
+ UNAME_MACHINE=alphaev69 ;;
+ "EV7 (21364)")
+ UNAME_MACHINE=alphaev7 ;;
+ "EV7.9 (21364A)")
+ UNAME_MACHINE=alphaev79 ;;
+ esac
+ # A Pn.n version is a patched version.
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+ OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+ GUESS=$UNAME_MACHINE-dec-osf$OSF_REL
+ ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ GUESS=m68k-unknown-sysv4
+ ;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ GUESS=$UNAME_MACHINE-unknown-amigaos
+ ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ GUESS=$UNAME_MACHINE-unknown-morphos
+ ;;
+ *:OS/390:*:*)
+ GUESS=i370-ibm-openedition
+ ;;
+ *:z/VM:*:*)
+ GUESS=s390-ibm-zvmoe
+ ;;
+ *:OS400:*:*)
+ GUESS=powerpc-ibm-os400
+ ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ GUESS=arm-acorn-riscix$UNAME_RELEASE
+ ;;
+ arm*:riscos:*:*|arm*:RISCOS:*:*)
+ GUESS=arm-unknown-riscos
+ ;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ GUESS=hppa1.1-hitachi-hiuxmpp
+ ;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ case `(/bin/universe) 2>/dev/null` in
+ att) GUESS=pyramid-pyramid-sysv3 ;;
+ *) GUESS=pyramid-pyramid-bsd ;;
+ esac
+ ;;
+ NILE*:*:*:dcosx)
+ GUESS=pyramid-pyramid-svr4
+ ;;
+ DRS?6000:unix:4.0:6*)
+ GUESS=sparc-icl-nx6
+ ;;
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) GUESS=sparc-icl-nx7 ;;
+ esac
+ ;;
+ s390x:SunOS:*:*)
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL
+ ;;
+ sun4H:SunOS:5.*:*)
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=sparc-hal-solaris2$SUN_REL
+ ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=sparc-sun-solaris2$SUN_REL
+ ;;
+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+ GUESS=i386-pc-auroraux$UNAME_RELEASE
+ ;;
+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+ set_cc_for_build
+ SUN_ARCH=i386
+ # If there is a compiler, see if it is configured for 64-bit objects.
+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+ # This test works for both compilers.
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ SUN_ARCH=x86_64
+ fi
+ fi
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=$SUN_ARCH-pc-solaris2$SUN_REL
+ ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=sparc-sun-solaris3$SUN_REL
+ ;;
+ sun4*:SunOS:*:*)
+ case `/usr/bin/arch -k` in
+ Series*|S4*)
+ UNAME_RELEASE=`uname -v`
+ ;;
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
+ GUESS=sparc-sun-sunos$SUN_REL
+ ;;
+ sun3*:SunOS:*:*)
+ GUESS=m68k-sun-sunos$UNAME_RELEASE
+ ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
+ case `/bin/arch` in
+ sun3)
+ GUESS=m68k-sun-sunos$UNAME_RELEASE
+ ;;
+ sun4)
+ GUESS=sparc-sun-sunos$UNAME_RELEASE
+ ;;
+ esac
+ ;;
+ aushp:SunOS:*:*)
+ GUESS=sparc-auspex-sunos$UNAME_RELEASE
+ ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
+ # to the lowercase version "mint" (or "freemint"). Finally
+ # the system name "TOS" denotes a system which is actually not
+ # MiNT. But MiNT is downward compatible to TOS, so this should
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ GUESS=m68k-atari-mint$UNAME_RELEASE
+ ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ GUESS=m68k-atari-mint$UNAME_RELEASE
+ ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ GUESS=m68k-atari-mint$UNAME_RELEASE
+ ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ GUESS=m68k-milan-mint$UNAME_RELEASE
+ ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ GUESS=m68k-hades-mint$UNAME_RELEASE
+ ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ GUESS=m68k-unknown-mint$UNAME_RELEASE
+ ;;
+ m68k:machten:*:*)
+ GUESS=m68k-apple-machten$UNAME_RELEASE
+ ;;
+ powerpc:machten:*:*)
+ GUESS=powerpc-apple-machten$UNAME_RELEASE
+ ;;
+ RISC*:Mach:*:*)
+ GUESS=mips-dec-mach_bsd4.3
+ ;;
+ RISC*:ULTRIX:*:*)
+ GUESS=mips-dec-ultrix$UNAME_RELEASE
+ ;;
+ VAX*:ULTRIX*:*:*)
+ GUESS=vax-dec-ultrix$UNAME_RELEASE
+ ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ GUESS=clipper-intergraph-clix$UNAME_RELEASE
+ ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
+#ifdef __cplusplus
+#include /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
+ #if defined (host_mips) && defined (MIPSEB)
+ #if defined (SYSTYPE_SYSV)
+ printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_SVR4)
+ printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+ printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
+ #endif
+ #endif
+ exit (-1);
+ }
+EOF
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
+ dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ GUESS=mips-mips-riscos$UNAME_RELEASE
+ ;;
+ Motorola:PowerMAX_OS:*:*)
+ GUESS=powerpc-motorola-powermax
+ ;;
+ Motorola:*:4.3:PL8-*)
+ GUESS=powerpc-harris-powermax
+ ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ GUESS=powerpc-harris-powermax
+ ;;
+ Night_Hawk:Power_UNIX:*:*)
+ GUESS=powerpc-harris-powerunix
+ ;;
+ m88k:CX/UX:7*:*)
+ GUESS=m88k-harris-cxux7
+ ;;
+ m88k:*:4*:R4*)
+ GUESS=m88k-motorola-sysv4
+ ;;
+ m88k:*:3*:R3*)
+ GUESS=m88k-motorola-sysv3
+ ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
+ then
+ if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
+ test "$TARGET_BINARY_INTERFACE"x = x
+ then
+ GUESS=m88k-dg-dgux$UNAME_RELEASE
+ else
+ GUESS=m88k-dg-dguxbcs$UNAME_RELEASE
+ fi
+ else
+ GUESS=i586-dg-dgux$UNAME_RELEASE
+ fi
+ ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ GUESS=m88k-dolphin-sysv3
+ ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ GUESS=m88k-motorola-sysv3
+ ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ GUESS=m88k-tektronix-sysv3
+ ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ GUESS=m68k-tektronix-bsd
+ ;;
+ *:IRIX*:*:*)
+ IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'`
+ GUESS=mips-sgi-irix$IRIX_REL
+ ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+ GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ GUESS=i386-ibm-aix
+ ;;
+ ia64:AIX:*:*)
+ if test -x /usr/bin/oslevel ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
+ fi
+ GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV
+ ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
+ #include
+
+ main()
+ {
+ if (!__power_pc())
+ exit(1);
+ puts("powerpc-ibm-aix3.2.5");
+ exit(0);
+ }
+EOF
+ if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
+ then
+ GUESS=$SYSTEM_NAME
+ else
+ GUESS=rs6000-ibm-aix3.2.5
+ fi
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ GUESS=rs6000-ibm-aix3.2.4
+ else
+ GUESS=rs6000-ibm-aix3.2
+ fi
+ ;;
+ *:AIX:*:[4567])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+ else
+ IBM_ARCH=powerpc
+ fi
+ if test -x /usr/bin/lslpp ; then
+ IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \
+ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
+ else
+ IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
+ fi
+ GUESS=$IBM_ARCH-ibm-aix$IBM_REV
+ ;;
+ *:AIX:*:*)
+ GUESS=rs6000-ibm-aix
+ ;;
+ ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
+ GUESS=romp-ibm-bsd4.4
+ ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to
+ ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ GUESS=rs6000-bull-bosx
+ ;;
+ DPX/2?00:B.O.S.:*:*)
+ GUESS=m68k-bull-sysv3
+ ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ GUESS=m68k-hp-bsd
+ ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ GUESS=m68k-hp-bsd4.4
+ ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
+ case $UNAME_MACHINE in
+ 9000/31?) HP_ARCH=m68000 ;;
+ 9000/[34]??) HP_ARCH=m68k ;;
+ 9000/[678][0-9][0-9])
+ if test -x /usr/bin/getconf; then
+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case $sc_cpu_version in
+ 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case $sc_kernel_bits in
+ 32) HP_ARCH=hppa2.0n ;;
+ 64) HP_ARCH=hppa2.0w ;;
+ '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20
+ esac ;;
+ esac
+ fi
+ if test "$HP_ARCH" = ""; then
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
+
+ #define _HPUX_SOURCE
+ #include
+ #include
+
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
+
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
+EOF
+ (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
+ test -z "$HP_ARCH" && HP_ARCH=hppa
+ fi ;;
+ esac
+ if test "$HP_ARCH" = hppa2.0w
+ then
+ set_cc_for_build
+
+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+ # generating 64-bit code. GNU and HP use different nomenclature:
+ #
+ # $ CC_FOR_BUILD=cc ./config.guess
+ # => hppa2.0w-hp-hpux11.23
+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+ # => hppa64-hp-hpux11.23
+
+ if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
+ grep -q __LP64__
+ then
+ HP_ARCH=hppa2.0w
+ else
+ HP_ARCH=hppa64
+ fi
+ fi
+ GUESS=$HP_ARCH-hp-hpux$HPUX_REV
+ ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
+ GUESS=ia64-hp-hpux$HPUX_REV
+ ;;
+ 3050*:HI-UX:*:*)
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
+ #include
+ int
+ main ()
+ {
+ long cpu = sysconf (_SC_CPU_VERSION);
+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
+ results, however. */
+ if (CPU_IS_PA_RISC (cpu))
+ {
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+ default: puts ("hppa-hitachi-hiuxwe2"); break;
+ }
+ }
+ else if (CPU_IS_HP_MC68K (cpu))
+ puts ("m68k-hitachi-hiuxwe2");
+ else puts ("unknown-hitachi-hiuxwe2");
+ exit (0);
+ }
+EOF
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ GUESS=unknown-hitachi-hiuxwe2
+ ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
+ GUESS=hppa1.1-hp-bsd
+ ;;
+ 9000/8??:4.3bsd:*:*)
+ GUESS=hppa1.0-hp-bsd
+ ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ GUESS=hppa1.0-hp-mpeix
+ ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
+ GUESS=hppa1.1-hp-osf
+ ;;
+ hp8??:OSF1:*:*)
+ GUESS=hppa1.0-hp-osf
+ ;;
+ i*86:OSF1:*:*)
+ if test -x /usr/sbin/sysversion ; then
+ GUESS=$UNAME_MACHINE-unknown-osf1mk
+ else
+ GUESS=$UNAME_MACHINE-unknown-osf1
+ fi
+ ;;
+ parisc*:Lites*:*:*)
+ GUESS=hppa1.1-hp-lites
+ ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ GUESS=c1-convex-bsd
+ ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ GUESS=c34-convex-bsd
+ ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ GUESS=c38-convex-bsd
+ ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ GUESS=c4-convex-bsd
+ ;;
+ CRAY*Y-MP:*:*:*)
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=ymp-cray-unicos$CRAY_REL
+ ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*TS:*:*:*)
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=t90-cray-unicos$CRAY_REL
+ ;;
+ CRAY*T3E:*:*:*)
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=alphaev5-cray-unicosmk$CRAY_REL
+ ;;
+ CRAY*SV1:*:*:*)
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=sv1-cray-unicos$CRAY_REL
+ ;;
+ *:UNICOS/mp:*:*)
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=craynv-cray-unicosmp$CRAY_REL
+ ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+ FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+ FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
+ GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
+ ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+ FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
+ GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
+ ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE
+ ;;
+ sparc*:BSD/OS:*:*)
+ GUESS=sparc-unknown-bsdi$UNAME_RELEASE
+ ;;
+ *:BSD/OS:*:*)
+ GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE
+ ;;
+ arm:FreeBSD:*:*)
+ UNAME_PROCESSOR=`uname -p`
+ set_cc_for_build
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi
+ else
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf
+ fi
+ ;;
+ *:FreeBSD:*:*)
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ case $UNAME_PROCESSOR in
+ amd64)
+ UNAME_PROCESSOR=x86_64 ;;
+ i386)
+ UNAME_PROCESSOR=i586 ;;
+ esac
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL
+ ;;
+ i*:CYGWIN*:*)
+ GUESS=$UNAME_MACHINE-pc-cygwin
+ ;;
+ *:MINGW64*:*)
+ GUESS=$UNAME_MACHINE-pc-mingw64
+ ;;
+ *:MINGW*:*)
+ GUESS=$UNAME_MACHINE-pc-mingw32
+ ;;
+ *:MSYS*:*)
+ GUESS=$UNAME_MACHINE-pc-msys
+ ;;
+ i*:PW*:*)
+ GUESS=$UNAME_MACHINE-pc-pw32
+ ;;
+ *:SerenityOS:*:*)
+ GUESS=$UNAME_MACHINE-pc-serenity
+ ;;
+ *:Interix*:*)
+ case $UNAME_MACHINE in
+ x86)
+ GUESS=i586-pc-interix$UNAME_RELEASE
+ ;;
+ authenticamd | genuineintel | EM64T)
+ GUESS=x86_64-unknown-interix$UNAME_RELEASE
+ ;;
+ IA64)
+ GUESS=ia64-unknown-interix$UNAME_RELEASE
+ ;;
+ esac ;;
+ i*:UWIN*:*)
+ GUESS=$UNAME_MACHINE-pc-uwin
+ ;;
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+ GUESS=x86_64-pc-cygwin
+ ;;
+ prep*:SunOS:5.*:*)
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=powerpcle-unknown-solaris2$SUN_REL
+ ;;
+ *:GNU:*:*)
+ # the GNU system
+ GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'`
+ GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'`
+ GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL
+ ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"`
+ GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC
+ ;;
+ *:Minix:*:*)
+ GUESS=$UNAME_MACHINE-unknown-minix
+ ;;
+ aarch64:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ aarch64_be:Linux:*:*)
+ UNAME_MACHINE=aarch64_be
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep -q ld.so.1
+ if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ arm*:Linux:*:*)
+ set_cc_for_build
+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_EABI__
+ then
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ else
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi
+ else
+ GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf
+ fi
+ fi
+ ;;
+ avr32*:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ cris:Linux:*:*)
+ GUESS=$UNAME_MACHINE-axis-linux-$LIBC
+ ;;
+ crisv32:Linux:*:*)
+ GUESS=$UNAME_MACHINE-axis-linux-$LIBC
+ ;;
+ e2k:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ frv:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ hexagon:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ i*86:Linux:*:*)
+ GUESS=$UNAME_MACHINE-pc-linux-$LIBC
+ ;;
+ ia64:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ k1om:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ m32r*:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ m68*:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ mips:Linux:*:* | mips64:Linux:*:*)
+ set_cc_for_build
+ IS_GLIBC=0
+ test x"${LIBC}" = xgnu && IS_GLIBC=1
+ sed 's/^ //' << EOF > "$dummy.c"
+ #undef CPU
+ #undef mips
+ #undef mipsel
+ #undef mips64
+ #undef mips64el
+ #if ${IS_GLIBC} && defined(_ABI64)
+ LIBCABI=gnuabi64
+ #else
+ #if ${IS_GLIBC} && defined(_ABIN32)
+ LIBCABI=gnuabin32
+ #else
+ LIBCABI=${LIBC}
+ #endif
+ #endif
+
+ #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa64r6
+ #else
+ #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa32r6
+ #else
+ #if defined(__mips64)
+ CPU=mips64
+ #else
+ CPU=mips
+ #endif
+ #endif
+ #endif
+
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ MIPS_ENDIAN=el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ MIPS_ENDIAN=
+ #else
+ MIPS_ENDIAN=
+ #endif
+ #endif
+EOF
+ cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`
+ eval "$cc_set_vars"
+ test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
+ ;;
+ mips64el:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ openrisc*:Linux:*:*)
+ GUESS=or1k-unknown-linux-$LIBC
+ ;;
+ or32:Linux:*:* | or1k*:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ padre:Linux:*:*)
+ GUESS=sparc-unknown-linux-$LIBC
+ ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ GUESS=hppa64-unknown-linux-$LIBC
+ ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;;
+ PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;;
+ *) GUESS=hppa-unknown-linux-$LIBC ;;
+ esac
+ ;;
+ ppc64:Linux:*:*)
+ GUESS=powerpc64-unknown-linux-$LIBC
+ ;;
+ ppc:Linux:*:*)
+ GUESS=powerpc-unknown-linux-$LIBC
+ ;;
+ ppc64le:Linux:*:*)
+ GUESS=powerpc64le-unknown-linux-$LIBC
+ ;;
+ ppcle:Linux:*:*)
+ GUESS=powerpcle-unknown-linux-$LIBC
+ ;;
+ riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ GUESS=$UNAME_MACHINE-ibm-linux-$LIBC
+ ;;
+ sh64*:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ sh*:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ tile*:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ vax:Linux:*:*)
+ GUESS=$UNAME_MACHINE-dec-linux-$LIBC
+ ;;
+ x86_64:Linux:*:*)
+ set_cc_for_build
+ LIBCABI=$LIBC
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_X32 >/dev/null
+ then
+ LIBCABI=${LIBC}x32
+ fi
+ fi
+ GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI
+ ;;
+ xtensa*:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ GUESS=i386-sequent-sysv4
+ ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
+ ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ GUESS=$UNAME_MACHINE-pc-os2-emx
+ ;;
+ i*86:XTS-300:*:STOP)
+ GUESS=$UNAME_MACHINE-unknown-stop
+ ;;
+ i*86:atheos:*:*)
+ GUESS=$UNAME_MACHINE-unknown-atheos
+ ;;
+ i*86:syllable:*:*)
+ GUESS=$UNAME_MACHINE-pc-syllable
+ ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+ GUESS=i386-unknown-lynxos$UNAME_RELEASE
+ ;;
+ i*86:*DOS:*:*)
+ GUESS=$UNAME_MACHINE-pc-msdosdjgpp
+ ;;
+ i*86:*:4.*:*)
+ UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+ GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL
+ else
+ GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL
+ fi
+ ;;
+ i*86:*:5:[678]*)
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ case `/bin/uname -X | grep "^Machine"` in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then
+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+ && UNAME_MACHINE=i586
+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
+ GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL
+ else
+ GUESS=$UNAME_MACHINE-pc-sysv32
+ fi
+ ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i586.
+ # Note: whatever this is, it MUST be the same as what config.sub
+ # prints for the "djgpp" host, or else GDB configure will decide that
+ # this is a cross-build.
+ GUESS=i586-pc-msdosdjgpp
+ ;;
+ Intel:Mach:3*:*)
+ GUESS=i386-pc-mach3
+ ;;
+ paragon:*:*:*)
+ GUESS=i860-intel-osf1
+ ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4
+ fi
+ ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ GUESS=m68010-convergent-sysv
+ ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ GUESS=m68k-convergent-sysv
+ ;;
+ M680?0:D-NIX:5.3:*)
+ GUESS=m68k-diab-dnix
+ ;;
+ M68*:*:R3V[5678]*:*)
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
+ NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+ OS_REL='.3'
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ GUESS=m68k-unknown-lynxos$UNAME_RELEASE
+ ;;
+ mc68030:UNIX_System_V:4.*:*)
+ GUESS=m68k-atari-sysv4
+ ;;
+ TSUNAMI:LynxOS:2.*:*)
+ GUESS=sparc-unknown-lynxos$UNAME_RELEASE
+ ;;
+ rs6000:LynxOS:2.*:*)
+ GUESS=rs6000-unknown-lynxos$UNAME_RELEASE
+ ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+ GUESS=powerpc-unknown-lynxos$UNAME_RELEASE
+ ;;
+ SM[BE]S:UNIX_SV:*:*)
+ GUESS=mips-dde-sysv$UNAME_RELEASE
+ ;;
+ RM*:ReliantUNIX-*:*:*)
+ GUESS=mips-sni-sysv4
+ ;;
+ RM*:SINIX-*:*:*)
+ GUESS=mips-sni-sysv4
+ ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ GUESS=$UNAME_MACHINE-sni-sysv4
+ else
+ GUESS=ns32k-sni-sysv
+ fi
+ ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says
+ GUESS=i586-unisys-sysv4
+ ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes .
+ # How about differentiating between stratus architectures? -djm
+ GUESS=hppa1.1-stratus-sysv4
+ ;;
+ *:*:*:FTX*)
+ # From seanf@swdc.stratus.com.
+ GUESS=i860-stratus-sysv4
+ ;;
+ i*86:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ GUESS=$UNAME_MACHINE-stratus-vos
+ ;;
+ *:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ GUESS=hppa1.1-stratus-vos
+ ;;
+ mc68*:A/UX:*:*)
+ GUESS=m68k-apple-aux$UNAME_RELEASE
+ ;;
+ news*:NEWS-OS:6*:*)
+ GUESS=mips-sony-newsos6
+ ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if test -d /usr/nec; then
+ GUESS=mips-nec-sysv$UNAME_RELEASE
+ else
+ GUESS=mips-unknown-sysv$UNAME_RELEASE
+ fi
+ ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ GUESS=powerpc-be-beos
+ ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ GUESS=powerpc-apple-beos
+ ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ GUESS=i586-pc-beos
+ ;;
+ BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
+ GUESS=i586-pc-haiku
+ ;;
+ x86_64:Haiku:*:*)
+ GUESS=x86_64-unknown-haiku
+ ;;
+ SX-4:SUPER-UX:*:*)
+ GUESS=sx4-nec-superux$UNAME_RELEASE
+ ;;
+ SX-5:SUPER-UX:*:*)
+ GUESS=sx5-nec-superux$UNAME_RELEASE
+ ;;
+ SX-6:SUPER-UX:*:*)
+ GUESS=sx6-nec-superux$UNAME_RELEASE
+ ;;
+ SX-7:SUPER-UX:*:*)
+ GUESS=sx7-nec-superux$UNAME_RELEASE
+ ;;
+ SX-8:SUPER-UX:*:*)
+ GUESS=sx8-nec-superux$UNAME_RELEASE
+ ;;
+ SX-8R:SUPER-UX:*:*)
+ GUESS=sx8r-nec-superux$UNAME_RELEASE
+ ;;
+ SX-ACE:SUPER-UX:*:*)
+ GUESS=sxace-nec-superux$UNAME_RELEASE
+ ;;
+ Power*:Rhapsody:*:*)
+ GUESS=powerpc-apple-rhapsody$UNAME_RELEASE
+ ;;
+ *:Rhapsody:*:*)
+ GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE
+ ;;
+ arm64:Darwin:*:*)
+ GUESS=aarch64-apple-darwin$UNAME_RELEASE
+ ;;
+ *:Darwin:*:*)
+ UNAME_PROCESSOR=`uname -p`
+ case $UNAME_PROCESSOR in
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ if command -v xcode-select > /dev/null 2> /dev/null && \
+ ! xcode-select --print-path > /dev/null 2> /dev/null ; then
+ # Avoid executing cc if there is no toolchain installed as
+ # cc will be a stub that puts up a graphical alert
+ # prompting the user to install developer tools.
+ CC_FOR_BUILD=no_compiler_found
+ else
+ set_cc_for_build
+ fi
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ case $UNAME_PROCESSOR in
+ i386) UNAME_PROCESSOR=x86_64 ;;
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
+ esac
+ fi
+ # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+ if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_PPC >/dev/null
+ then
+ UNAME_PROCESSOR=powerpc
+ fi
+ elif test "$UNAME_PROCESSOR" = i386 ; then
+ # uname -m returns i386 or x86_64
+ UNAME_PROCESSOR=$UNAME_MACHINE
+ fi
+ GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE
+ ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=`uname -p`
+ if test "$UNAME_PROCESSOR" = x86; then
+ UNAME_PROCESSOR=i386
+ UNAME_MACHINE=pc
+ fi
+ GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE
+ ;;
+ *:QNX:*:4*)
+ GUESS=i386-pc-qnx
+ ;;
+ NEO-*:NONSTOP_KERNEL:*:*)
+ GUESS=neo-tandem-nsk$UNAME_RELEASE
+ ;;
+ NSE-*:NONSTOP_KERNEL:*:*)
+ GUESS=nse-tandem-nsk$UNAME_RELEASE
+ ;;
+ NSR-*:NONSTOP_KERNEL:*:*)
+ GUESS=nsr-tandem-nsk$UNAME_RELEASE
+ ;;
+ NSV-*:NONSTOP_KERNEL:*:*)
+ GUESS=nsv-tandem-nsk$UNAME_RELEASE
+ ;;
+ NSX-*:NONSTOP_KERNEL:*:*)
+ GUESS=nsx-tandem-nsk$UNAME_RELEASE
+ ;;
+ *:NonStop-UX:*:*)
+ GUESS=mips-compaq-nonstopux
+ ;;
+ BS2000:POSIX*:*:*)
+ GUESS=bs2000-siemens-sysv
+ ;;
+ DS/*:UNIX_System_V:*:*)
+ GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE
+ ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+ # operating systems.
+ if test "${cputype-}" = 386; then
+ UNAME_MACHINE=i386
+ elif test "x${cputype-}" != x; then
+ UNAME_MACHINE=$cputype
+ fi
+ GUESS=$UNAME_MACHINE-unknown-plan9
+ ;;
+ *:TOPS-10:*:*)
+ GUESS=pdp10-unknown-tops10
+ ;;
+ *:TENEX:*:*)
+ GUESS=pdp10-unknown-tenex
+ ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ GUESS=pdp10-dec-tops20
+ ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ GUESS=pdp10-xkl-tops20
+ ;;
+ *:TOPS-20:*:*)
+ GUESS=pdp10-unknown-tops20
+ ;;
+ *:ITS:*:*)
+ GUESS=pdp10-unknown-its
+ ;;
+ SEI:*:*:SEIUX)
+ GUESS=mips-sei-seiux$UNAME_RELEASE
+ ;;
+ *:DragonFly:*:*)
+ DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL
+ ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case $UNAME_MACHINE in
+ A*) GUESS=alpha-dec-vms ;;
+ I*) GUESS=ia64-dec-vms ;;
+ V*) GUESS=vax-dec-vms ;;
+ esac ;;
+ *:XENIX:*:SysV)
+ GUESS=i386-pc-xenix
+ ;;
+ i*86:skyos:*:*)
+ SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`
+ GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL
+ ;;
+ i*86:rdos:*:*)
+ GUESS=$UNAME_MACHINE-pc-rdos
+ ;;
+ i*86:Fiwix:*:*)
+ GUESS=$UNAME_MACHINE-pc-fiwix
+ ;;
+ *:AROS:*:*)
+ GUESS=$UNAME_MACHINE-unknown-aros
+ ;;
+ x86_64:VMkernel:*:*)
+ GUESS=$UNAME_MACHINE-unknown-esx
+ ;;
+ amd64:Isilon\ OneFS:*:*)
+ GUESS=x86_64-unknown-onefs
+ ;;
+ *:Unleashed:*:*)
+ GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE
+ ;;
+esac
+
+# Do we have a guess based on uname results?
+if test "x$GUESS" != x; then
+ echo "$GUESS"
+ exit
+fi
+
+# No uname command or uname output not recognized.
+set_cc_for_build
+cat > "$dummy.c" <
+#include
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#include
+#if defined(_SIZE_T_) || defined(SIGLOST)
+#include
+#endif
+#endif
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+#endif
+
+#if defined (vax)
+#if !defined (ultrix)
+#include
+#if defined (BSD)
+#if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+#else
+#if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#else
+ printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#endif
+#else
+ printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#else
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname un;
+ uname (&un);
+ printf ("vax-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("vax-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname *un;
+ uname (&un);
+ printf ("mips-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("mips-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` &&
+ { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
+
+echo "$0: unable to guess system type" >&2
+
+case $UNAME_MACHINE:$UNAME_SYSTEM in
+ mips:Linux | mips64:Linux)
+ # If we got here on MIPS GNU/Linux, output extra information.
+ cat >&2 <&2 <&2 </dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo = `(hostinfo) 2>/dev/null`
+/bin/universe = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = "$UNAME_MACHINE"
+UNAME_RELEASE = "$UNAME_RELEASE"
+UNAME_SYSTEM = "$UNAME_SYSTEM"
+UNAME_VERSION = "$UNAME_VERSION"
+EOF
+fi
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/src/fire/curl-8.1.2/config.sub b/src/fire/curl-8.1.2/config.sub
new file mode 100644
index 0000000..dba16e8
--- /dev/null
+++ b/src/fire/curl-8.1.2/config.sub
@@ -0,0 +1,1890 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+# Copyright 1992-2022 Free Software Foundation, Inc.
+
+# shellcheck disable=SC2006,SC2268 # see below for rationale
+
+timestamp='2022-01-03'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see