]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
CI: add whitespace checker
authorViktor Szakats <commit@vsz.me>
Thu, 27 Jun 2024 00:38:38 +0000 (02:38 +0200)
committerViktor Szakats <commit@vsz.me>
Thu, 27 Jun 2024 11:33:30 +0000 (13:33 +0200)
Fix issues detected.

Also:

- One of the `.vc` files used LF EOLs, while the other didn't.
  Make that one also use LF EOLs, as this is apparently supported by
  `nmake`.

- Drop `.dsw` and `.btn` types from `.gitattributes`.
  The repository doesn't use them.

- Sync section order with the rest of files in
  `tests/certs/EdelCurlRoot-ca.prm`.

- Indent/align `.prm` and `.pem` files.

- Delete dummy `[something]` section from `.prm` and `.pem` files.

Mental note:
MSVC `.sln` files seem to accept spaces for indentation and also support
LF line-endings. I cannot test this and I don't know what's more
convenient when updating them, so left them as-is, with specific
exclusions.

Closes #14031

42 files changed:
.gitattributes
.github/CODEOWNERS
.github/scripts/spacecheck.pl [new file with mode: 0755]
.github/workflows/spacecheck.yml [new file with mode: 0644]
docs/CLIENT-READERS.md
docs/CONNECTION-FILTERS.md
docs/ECH.md
docs/HTTP3.md
docs/ROADMAP.md
docs/libcurl/libcurl-env-dbg.md
projects/Windows/VC10/lib/libcurl.tmpl
projects/Windows/VC10/lib/libcurl.vcxproj.filters
projects/Windows/VC10/src/curl.tmpl
projects/Windows/VC10/src/curl.vcxproj.filters
projects/Windows/VC11/lib/libcurl.tmpl
projects/Windows/VC11/lib/libcurl.vcxproj.filters
projects/Windows/VC11/src/curl.tmpl
projects/Windows/VC11/src/curl.vcxproj.filters
projects/Windows/VC12/lib/libcurl.tmpl
projects/Windows/VC12/lib/libcurl.vcxproj.filters
projects/Windows/VC12/src/curl.tmpl
projects/Windows/VC12/src/curl.vcxproj.filters
tests/certs/EdelCurlRoot-ca.prm
tests/certs/Server-localhost-firstSAN-sv.pem
tests/certs/Server-localhost-firstSAN-sv.prm
tests/certs/Server-localhost-lastSAN-sv.pem
tests/certs/Server-localhost-lastSAN-sv.prm
tests/certs/Server-localhost-sv.pem
tests/certs/Server-localhost-sv.prm
tests/certs/Server-localhost.nn-sv.pem
tests/certs/Server-localhost.nn-sv.prm
tests/certs/Server-localhost0h-sv.pem
tests/certs/Server-localhost0h-sv.prm
tests/certs/stunnel-sv.pem
tests/certs/stunnel-sv.prm
tests/data/test1296
tests/data/test1459
tests/data/test3029
tests/data/test3030
tests/http/test_19_shutdown.py
tests/stunnel.pem
winbuild/MakefileBuild.vc

index 481fd5cff66f430c00f2df94e30d018e129c4ae1..d4f08a9e589b47458d67ea3f6e93659af416585f 100644 (file)
@@ -2,7 +2,6 @@
 #
 # SPDX-License-Identifier: curl
 
-*.dsw -crlf
 buildconf eol=lf
 configure.ac eol=lf
 *.m4 eol=lf
@@ -11,8 +10,7 @@ configure.ac eol=lf
 *.sh eol=lf
 *.[ch] whitespace=tab-in-indent
 
-# Batch files (bat,btm,cmd) must be run with CRLF line endings.
+# Batch files (bat,cmd) must be run with CRLF line endings.
 # Refer to https://github.com/curl/curl/pull/6442
 *.bat text eol=crlf
-*.btm text eol=crlf
 *.cmd text eol=crlf
index 9e7b6e391a0f10153d25084e4c10ab3b993abe3b..7e1eea50ffa63ab366c97d3f8bb43433262e5043 100644 (file)
@@ -1,3 +1,3 @@
-# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.\r
-#\r
-# SPDX-License-Identifier: curl\r
+# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# SPDX-License-Identifier: curl
diff --git a/.github/scripts/spacecheck.pl b/.github/scripts/spacecheck.pl
new file mode 100755 (executable)
index 0000000..3684773
--- /dev/null
@@ -0,0 +1,153 @@
+#!/usr/bin/env perl
+#***************************************************************************
+#                                  _   _ ____  _
+#  Project                     ___| | | |  _ \| |
+#                             / __| | | | |_) | |
+#                            | (__| |_| |  _ <| |___
+#                             \___|\___/|_| \_\_____|
+#
+# Copyright (C) Viktor Szakats
+#
+# 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
+#
+###########################################################################
+
+use strict;
+use warnings;
+
+my @tabs = (
+    "^m4/zz40-xc-ovr.m4",
+    "Makefile\\.[a-z]+\$",
+    "/mkfile",
+    "\\.(bat|cmd|sln|vc)\$",
+    "^tests/certs/.+\\.der\$",
+    "^tests/data/test",
+);
+
+my @mixed_eol = (
+    "^tests/certs/.+\\.(crt|der)\$",
+    "^tests/certs/Server-localhost0h-sv.pem",
+    "^tests/data/test",
+);
+
+my @need_crlf = (
+    "\\.(bat|sln)\$",
+    "^winbuild/.+\\.(cmd|md)\$",
+);
+
+my @space_at_eol = (
+    "^tests/.+\\.(cacert|crt|pem)\$",
+    "^tests/data/test",
+);
+
+my @eol_at_eof = (
+    "^tests/certs/.+\\.der\$",
+);
+
+sub fn_match {
+    my ($filename, @masklist) = @_;
+
+    foreach my $mask (@masklist) {
+        if ($filename =~ $mask) {
+            return 1;
+        }
+    }
+    return 0;
+}
+
+sub eol_detect {
+    my ($content) = @_;
+
+    my $cr = () = $content =~ /\r/g;
+    my $lf = () = $content =~ /\n/g;
+
+    if ($cr > 0 && $lf == 0) {
+        return "cr"
+    }
+    elsif ($cr == 0 && $lf > 0) {
+        return "lf"
+    }
+    elsif ($cr == 0 && $lf == 0) {
+        return "bin"
+    }
+    elsif ($cr == $lf) {
+        return "crlf"
+    }
+
+    return ""
+}
+
+my $issues = 0;
+
+open my $git_ls_files, '-|', 'git ls-files' or die "Failed running git ls-files: $!";
+while (my $filename = <$git_ls_files>) {
+    chomp $filename;
+
+    open my $fh, '<', $filename or die "Cannot open '$filename': $!";
+    my $content = do { local $/; <$fh> };
+    close $fh;
+
+    my @err = ();
+
+    if (!fn_match($filename, @tabs) &&
+        $content =~ /\t/) {
+        push @err, "content: has tab";
+    }
+
+    my $eol = eol_detect($content);
+
+    if ($eol eq "" &&
+        !fn_match($filename, @mixed_eol)) {
+        push @err, "content: has mixed EOL types";
+    }
+
+    if ($eol ne "crlf" &&
+        fn_match($filename, @need_crlf)) {
+        push @err, "content: must use CRLF EOL for this file type";
+    }
+
+    if ($eol ne "lf" && $content ne "" &&
+        !fn_match($filename, @need_crlf) &&
+        !fn_match($filename, @mixed_eol)) {
+        push @err, "content: must use LF EOL for this file type";
+    }
+
+    if (!fn_match($filename, @space_at_eol) &&
+        $content =~ /[ \t]\n/) {
+        push @err, "content: has line-ending whitespace";
+    }
+
+    if ($content ne "" &&
+        !fn_match($filename, @eol_at_eof) &&
+        $content !~ /\n\z/) {
+        push @err, "content: has no EOL at EOF";
+    }
+
+    if ($content =~ /\n\n\z/ ||
+        $content =~ /\r\n\r\n\z/) {
+        push @err, "content: has multiple EOL at EOF";
+    }
+
+    if (@err) {
+        $issues++;
+        foreach my $err (@err) {
+            print "$filename: $err\n";
+        }
+    }
+}
+close $git_ls_files;
+
+if ($issues) {
+    exit 1;
+}
diff --git a/.github/workflows/spacecheck.yml b/.github/workflows/spacecheck.yml
new file mode 100644 (file)
index 0000000..1a68185
--- /dev/null
@@ -0,0 +1,28 @@
+# Copyright (C) Viktor Szakats
+#
+# SPDX-License-Identifier: curl
+
+name: spacecheck
+
+on:
+  push:
+    branches:
+      - master
+  pull_request:
+    branches:
+      - master
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
+  cancel-in-progress: true
+
+permissions: {}
+
+jobs:
+  spacecheck:
+    runs-on: ubuntu-latest
+    timeout-minutes: 2
+    steps:
+      - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
+      - name: 'spacecheck'
+        run: .github/scripts/spacecheck.pl
index 30a4725b19e1e4bbec9b217f62e2ee2bb1abb5fd..073063845afdad063a968c84063dc20621508d38 100644 (file)
@@ -123,7 +123,7 @@ Readers operating on callbacks to the application need to "rewind" the underlyin
 
 ## Summary and Outlook
 
-By adding the client reader interface, any protocol can control how/if it wants the curl transfer to send bytes for a request. The transfer loop becomes then blissfully ignorant of the specifics. 
+By adding the client reader interface, any protocol can control how/if it wants the curl transfer to send bytes for a request. The transfer loop becomes then blissfully ignorant of the specifics.
 
 The protocols on the other hand no longer have to care to package data most efficiently. At any time, should more data be needed, it can be read from the client. This is used when sending HTTP requests headers to add as much request body data to the initial sending as there is room for.
 
index 6b20f93de18e2d2f3d99dba15c7e1cbbe0449680..629e769b90c2e0268740afe1b20315d9c589e955 100644 (file)
@@ -271,7 +271,7 @@ conn[curl.se] --> SETUP[TCP] --> HAPPY-EYEBALLS --> TCP[2a04:4e42:c00::347]:443
 * transfer
 ```
 
-The modular design of connection filters and that we can plug them into each other is used to control the parallel attempts. When a `TCP` filter does not connect (in time), it is torn down and another one is created for the next address. This keeps the `TCP` filter simple. 
+The modular design of connection filters and that we can plug them into each other is used to control the parallel attempts. When a `TCP` filter does not connect (in time), it is torn down and another one is created for the next address. This keeps the `TCP` filter simple.
 
 The `HAPPY-EYEBALLS` on the other hand stays focused on its side of the problem. We can use it also to make other type of connection by just giving it another filter type to try to have happy eyeballing for QUIC:
 
index 9080cce4efdd906a3bd3749c7d69cd36fa0ff733..3d353932373e806011df2fdf6df14bb41b643814 100644 (file)
@@ -337,7 +337,7 @@ Then:
 The boringssl APIs are fairly similar to those in our ECH-enabled OpenSSL
 fork, so code changes are also in ``lib/vtls/openssl.c``, protected
 via ``#ifdef OPENSSL_IS_BORINGSSL`` and are mostly obvious API variations.
+
 The boringssl APIs however do not support the ``--ech pn:`` command line
 variant as of now.
 
@@ -377,7 +377,7 @@ There are some known issues with the ECH implementation in WolfSSL:
   [this ECH test web site](https://tls-ech.dev) and any other similarly configured
   sites.
 - There is also an issue related to so-called middlebox compatibility mode.
-  [middlebox compatibility issue](https://github.com/wolfSSL/wolfssl/issues/6774) 
+  [middlebox compatibility issue](https://github.com/wolfSSL/wolfssl/issues/6774)
 
 ### Code changes to support WolfSSL
 
@@ -445,7 +445,7 @@ LD_LIBRARY_PATH=$HOME/code/openssl:./lib/.libs gdb ./src/.libs/curl
 ### Localhost testing
 
 It can be useful to be able to run against a localhost OpenSSL ``s_server``
-for testing. We have published instructions for such 
+for testing. We have published instructions for such
 [localhost tests](https://github.com/defo-project/ech-dev-utils/blob/main/howtos/localhost-tests.md)
 in another repository. Once you have that set up, you can start a server
 and then run curl against that:
index 2a6ebaa8a1f94c965a05fc4726f852d3acc15129..2661a55ef3bcf9de5d5b559b8f74eb4c308e3138 100644 (file)
@@ -235,7 +235,7 @@ Build curl:
      % git clone https://github.com/curl/curl
      % cd curl
      % autoreconf -fi
-     % LDFLAGS="-Wl,-rpath,<somewhere>/lib" ./configure --with-openssl=<somewhere> --with-openssl-quic --with-nghttp3=<somewhere2> 
+     % LDFLAGS="-Wl,-rpath,<somewhere>/lib" ./configure --with-openssl=<somewhere> --with-openssl-quic --with-nghttp3=<somewhere2>
      % make
      % make install
 
index 03cc4c7072229d4b6f40643f323668e2196d9dc9..abf306b3350b9ff313145c94f8423459f1a59026 100644 (file)
@@ -14,4 +14,4 @@ participation.
 
 Agree that it is a good enough API and remove the EXPERIMENTAL label.
 
-## 
+##
index 9effd41651fcc86f41532d3e1727b598e07d26b9..81c165a006f91221d529eec725301032809d26d0 100644 (file)
@@ -135,4 +135,4 @@ does not matter.
 Make a blocking, graceful shutdown of all remaining connections when
 a multi handle is destroyed. This implicitly triggers for easy handles
 that are run via easy_perform. The value of the environment variable
-gives the shutdown timeout in milliseconds.
\ No newline at end of file
+gives the shutdown timeout in milliseconds.
index 7a37c270f12b66e36cd2e3af9125d8eed3b50a6d..6e8c539181a16c992e2251c97cebbcbc5abab976 100644 (file)
@@ -2350,4 +2350,4 @@ CURL_LIB_RC_FILES
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
index 4d6341d74952c64351a21d98253182cee7dcc4fd..d2b9907aae9f3e500751a8ceee0063a0c564b46e 100644 (file)
@@ -14,4 +14,4 @@
       <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
     </Filter>
   </ItemGroup>
-</Project>
\ No newline at end of file
+</Project>
index 5e24977a4e0939373f3e4d2971e15eff5bc76581..71a0b3ff0baac7c629bb6a0dbfca039cc5bbf243 100644 (file)
@@ -2640,4 +2640,4 @@ CURL_SRC_RC_FILES
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
index 4d6341d74952c64351a21d98253182cee7dcc4fd..d2b9907aae9f3e500751a8ceee0063a0c564b46e 100644 (file)
@@ -14,4 +14,4 @@
       <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
     </Filter>
   </ItemGroup>
-</Project>
\ No newline at end of file
+</Project>
index 95cc9f6ca5274e26cc89ecb47329033a0a5302d1..11b0ac487bbb6f137cddcc9851fa18c47aaa1106 100644 (file)
@@ -2406,4 +2406,4 @@ CURL_LIB_RC_FILES
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
index 4d6341d74952c64351a21d98253182cee7dcc4fd..d2b9907aae9f3e500751a8ceee0063a0c564b46e 100644 (file)
@@ -14,4 +14,4 @@
       <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
     </Filter>
   </ItemGroup>
-</Project>
\ No newline at end of file
+</Project>
index 31df7d640fc5cc89477ecfddb699ceee9f3a1b13..b604a788c78a0d177ce00abde7748a40d8d93e61 100644 (file)
@@ -2696,4 +2696,4 @@ CURL_SRC_RC_FILES
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
index 4d6341d74952c64351a21d98253182cee7dcc4fd..d2b9907aae9f3e500751a8ceee0063a0c564b46e 100644 (file)
@@ -14,4 +14,4 @@
       <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
     </Filter>
   </ItemGroup>
-</Project>
\ No newline at end of file
+</Project>
index a2d666c2558319d295968984f798a8bc2c0dbf3c..fed693ee1cd3068765326cccb2763a53d5604756 100644 (file)
@@ -2406,4 +2406,4 @@ CURL_LIB_RC_FILES
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
index 4d6341d74952c64351a21d98253182cee7dcc4fd..d2b9907aae9f3e500751a8ceee0063a0c564b46e 100644 (file)
@@ -14,4 +14,4 @@
       <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
     </Filter>
   </ItemGroup>
-</Project>
\ No newline at end of file
+</Project>
index 77c244e40cf43d5548ad5c1d9afaac16a26cde86..3c98b676e8c03d734fd4b70ecb027f664600e91c 100644 (file)
@@ -2696,4 +2696,4 @@ CURL_SRC_RC_FILES
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
index 4d6341d74952c64351a21d98253182cee7dcc4fd..d2b9907aae9f3e500751a8ceee0063a0c564b46e 100644 (file)
@@ -14,4 +14,4 @@
       <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
     </Filter>
   </ItemGroup>
-</Project>
\ No newline at end of file
+</Project>
index c8e248b3e832ef7f77323cbae666d46dd10ab3cc..cf1b30d23902cbd5efca1090278f124f93642d41 100644 (file)
@@ -1,20 +1,9 @@
 extensions = x509v3
-[ req ]
-default_bits                    = 2048
-distinguished_name              = req_DN
-default_md                     = sha256
-string_mask                    = utf8only
-[ req_DN ]
-countryName                     = "Country Name"
-countryName_value            = NN
-organizationName              = "Organization Name"
-organizationName_value     = Edel Curl Arctic Illudium Research Cloud
-commonName                      = "Common Name"
-commonName_value              = Northern Nowhere Trust Anchor
+
 [ x509v3 ]
-basicConstraints = critical,CA:true
-keyUsage        = critical,keyCertSign,cRLSign
-subjectKeyIdentifier = hash
+basicConstraints        = critical,CA:true
+keyUsage                = critical,keyCertSign,cRLSign
+subjectKeyIdentifier    = hash
 authorityKeyIdentifier  = keyid:always
 authorityInfoAccess     = @issuer_info
 crlDistributionPoints   = @crl_info
@@ -27,4 +16,18 @@ authorityInfoAccess     = @issuer_info
 caIssuers;URI.0         = http://test.curl.se/ca/EdelCurlRoot.cer
 
 [ crl_info ]
-URI.0                   = http://test.curl.se/ca/EdelCurlRoot.crl
\ No newline at end of file
+URI.0                   = http://test.curl.se/ca/EdelCurlRoot.crl
+
+[ req ]
+default_bits            = 2048
+distinguished_name      = req_DN
+default_md              = sha256
+string_mask             = utf8only
+
+[ req_DN ]
+countryName             = "Country Name"
+countryName_value       = NN
+organizationName        = "Organization Name"
+organizationName_value  = Edel Curl Arctic Illudium Research Cloud
+commonName              = "Common Name"
+commonName_value        = Northern Nowhere Trust Anchor
index 3751e7b60104b97dcfef1c5cd8607f4d869dfb16..e06863227f9e7c4a160a649a8335ae25534ce2ce 100644 (file)
@@ -1,11 +1,12 @@
 extensions = x509v3
+
 [ x509v3 ]
-subjectAltName = DNS:localhost,DNS:localhost1,DNS:localhost2
-keyUsage       = keyEncipherment,digitalSignature,keyAgreement
-extendedKeyUsage = serverAuth
-subjectKeyIdentifier = hash
-authorityKeyIdentifier = keyid
-basicConstraints = CA:false
+subjectAltName          = DNS:localhost,DNS:localhost1,DNS:localhost2
+keyUsage                = keyEncipherment,digitalSignature,keyAgreement
+extendedKeyUsage        = serverAuth
+subjectKeyIdentifier    = hash
+authorityKeyIdentifier  = keyid
+basicConstraints        = CA:false
 authorityInfoAccess     = @issuer_info
 crlDistributionPoints   = @crl_info
 
@@ -20,23 +21,18 @@ caIssuers;URI.0         = http://test.curl.se/ca/EdelCurlRoot.cer
 URI.0                   = http://test.curl.se/ca/EdelCurlRoot.crl
 
 [ req ]
-default_bits                    = 1024
-distinguished_name              = req_DN
-default_md                     = sha256
-string_mask                    = utf8only
+default_bits            = 1024
+distinguished_name      = req_DN
+default_md              = sha256
+string_mask             = utf8only
 
 [ req_DN ]
-countryName                     = "Country Name is Northern Nowhere"
-countryName_value            = NN
-organizationName              = "Organization Name"
-organizationName_value     = Edel Curl Arctic Illudium Research Cloud
-commonName                      = "Common Name"
-commonName_value              = localhost.nn
-
-[something]
-# The key
-# the certificate
-# some dhparam
+countryName             = "Country Name is Northern Nowhere"
+countryName_value       = NN
+organizationName        = "Organization Name"
+organizationName_value  = Edel Curl Arctic Illudium Research Cloud
+commonName              = "Common Name"
+commonName_value        = localhost.nn
 -----BEGIN PRIVATE KEY-----
 MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqFG49ghwozY+A
 r1DtF5dt5qhhPqyorBPOmespLElz+RJANcR5hA2esCjEn2TjwW0tcRFdSxRhIEsY
index 911f4ce540fdcb860e569a180eb3bc4b222db6f4..1a388993572d9d408521d330421e00f978c38121 100644 (file)
@@ -1,11 +1,12 @@
 extensions = x509v3
+
 [ x509v3 ]
-subjectAltName = DNS:localhost,DNS:localhost1,DNS:localhost2
-keyUsage       = keyEncipherment,digitalSignature,keyAgreement
-extendedKeyUsage = serverAuth
-subjectKeyIdentifier = hash
-authorityKeyIdentifier = keyid
-basicConstraints = CA:false
+subjectAltName          = DNS:localhost,DNS:localhost1,DNS:localhost2
+keyUsage                = keyEncipherment,digitalSignature,keyAgreement
+extendedKeyUsage        = serverAuth
+subjectKeyIdentifier    = hash
+authorityKeyIdentifier  = keyid
+basicConstraints        = CA:false
 authorityInfoAccess     = @issuer_info
 crlDistributionPoints   = @crl_info
 
@@ -20,20 +21,15 @@ caIssuers;URI.0         = http://test.curl.se/ca/EdelCurlRoot.cer
 URI.0                   = http://test.curl.se/ca/EdelCurlRoot.crl
 
 [ req ]
-default_bits                    = 1024
-distinguished_name              = req_DN
-default_md                     = sha256
-string_mask                    = utf8only
+default_bits            = 1024
+distinguished_name      = req_DN
+default_md              = sha256
+string_mask             = utf8only
 
 [ req_DN ]
-countryName                     = "Country Name is Northern Nowhere"
-countryName_value            = NN
-organizationName              = "Organization Name"
-organizationName_value     = Edel Curl Arctic Illudium Research Cloud
-commonName                      = "Common Name"
-commonName_value              = localhost.nn
-
-[something]
-# The key
-# the certificate
-# some dhparam
+countryName             = "Country Name is Northern Nowhere"
+countryName_value       = NN
+organizationName        = "Organization Name"
+organizationName_value  = Edel Curl Arctic Illudium Research Cloud
+commonName              = "Common Name"
+commonName_value        = localhost.nn
index b1cbd4b6b25452ced6e7f00905cb9e497a18d236..c3124ff1ca1c2baa2426614e18a2d7cca8d2aa5e 100644 (file)
@@ -1,11 +1,12 @@
 extensions = x509v3
+
 [ x509v3 ]
-subjectAltName = DNS:localhost1,DNS:localhost2,DNS:localhost
-keyUsage       = keyEncipherment,digitalSignature,keyAgreement
-extendedKeyUsage = serverAuth
-subjectKeyIdentifier = hash
-authorityKeyIdentifier = keyid
-basicConstraints = CA:false
+subjectAltName          = DNS:localhost1,DNS:localhost2,DNS:localhost
+keyUsage                = keyEncipherment,digitalSignature,keyAgreement
+extendedKeyUsage        = serverAuth
+subjectKeyIdentifier    = hash
+authorityKeyIdentifier  = keyid
+basicConstraints        = CA:false
 authorityInfoAccess     = @issuer_info
 crlDistributionPoints   = @crl_info
 
@@ -20,22 +21,18 @@ caIssuers;URI.0         = http://test.curl.se/ca/EdelCurlRoot.cer
 URI.0                   = http://test.curl.se/ca/EdelCurlRoot.crl
 
 [ req ]
-default_bits                    = 1024
-distinguished_name              = req_DN
-default_md                     = sha256
-string_mask                    = utf8only
-[ req_DN ]
-countryName                     = "Country Name is Northern Nowhere"
-countryName_value            = NN
-organizationName              = "Organization Name"
-organizationName_value     = Edel Curl Arctic Illudium Research Cloud
-commonName                      = "Common Name"
-commonName_value              = localhost.nn
+default_bits            = 1024
+distinguished_name      = req_DN
+default_md              = sha256
+string_mask             = utf8only
 
-[something]
-# The key
-# the certificate
-# some dhparam
+[ req_DN ]
+countryName             = "Country Name is Northern Nowhere"
+countryName_value       = NN
+organizationName        = "Organization Name"
+organizationName_value  = Edel Curl Arctic Illudium Research Cloud
+commonName              = "Common Name"
+commonName_value        = localhost.nn
 -----BEGIN PRIVATE KEY-----
 MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDIhP5pZDPD3LV0
 iseyu9lp4qmVbV+3JeaCACv1UyHnKK5mtjj9FbGRiFIxKbtz4uCZYpVENVHXVMjS
index c5e72f4542afee9da949b0971dae1ca35c3b119a..fd2507323e1c5b0c33864e13ea8f8920d1b134e9 100644 (file)
@@ -1,11 +1,12 @@
 extensions = x509v3
+
 [ x509v3 ]
-subjectAltName = DNS:localhost1,DNS:localhost2,DNS:localhost
-keyUsage       = keyEncipherment,digitalSignature,keyAgreement
-extendedKeyUsage = serverAuth
-subjectKeyIdentifier = hash
-authorityKeyIdentifier = keyid
-basicConstraints = CA:false
+subjectAltName          = DNS:localhost1,DNS:localhost2,DNS:localhost
+keyUsage                = keyEncipherment,digitalSignature,keyAgreement
+extendedKeyUsage        = serverAuth
+subjectKeyIdentifier    = hash
+authorityKeyIdentifier  = keyid
+basicConstraints        = CA:false
 authorityInfoAccess     = @issuer_info
 crlDistributionPoints   = @crl_info
 
@@ -20,19 +21,15 @@ caIssuers;URI.0         = http://test.curl.se/ca/EdelCurlRoot.cer
 URI.0                   = http://test.curl.se/ca/EdelCurlRoot.crl
 
 [ req ]
-default_bits                    = 1024
-distinguished_name              = req_DN
-default_md                     = sha256
-string_mask                    = utf8only
-[ req_DN ]
-countryName                     = "Country Name is Northern Nowhere"
-countryName_value            = NN
-organizationName              = "Organization Name"
-organizationName_value     = Edel Curl Arctic Illudium Research Cloud
-commonName                      = "Common Name"
-commonName_value              = localhost.nn
+default_bits            = 1024
+distinguished_name      = req_DN
+default_md              = sha256
+string_mask             = utf8only
 
-[something]
-# The key
-# the certificate
-# some dhparam
+[ req_DN ]
+countryName             = "Country Name is Northern Nowhere"
+countryName_value       = NN
+organizationName        = "Organization Name"
+organizationName_value  = Edel Curl Arctic Illudium Research Cloud
+commonName              = "Common Name"
+commonName_value        = localhost.nn
index 583831f8f9ae978e998f881835e0b80a6f88218e..2761de438370278e8932fcf46b5c1f5e26a5d372 100644 (file)
@@ -1,11 +1,12 @@
 extensions = x509v3
+
 [ x509v3 ]
-subjectAltName = DNS:localhost
-keyUsage       = keyEncipherment,digitalSignature,keyAgreement
-extendedKeyUsage = serverAuth
-subjectKeyIdentifier = hash
-authorityKeyIdentifier = keyid
-basicConstraints = CA:false
+subjectAltName          = DNS:localhost
+keyUsage                = keyEncipherment,digitalSignature,keyAgreement
+extendedKeyUsage        = serverAuth
+subjectKeyIdentifier    = hash
+authorityKeyIdentifier  = keyid
+basicConstraints        = CA:false
 authorityInfoAccess     = @issuer_info
 crlDistributionPoints   = @crl_info
 
@@ -20,22 +21,18 @@ caIssuers;URI.0         = http://test.curl.se/ca/EdelCurlRoot.cer
 URI.0                   = http://test.curl.se/ca/EdelCurlRoot.crl
 
 [ req ]
-default_bits                    = 1024
-distinguished_name              = req_DN
-default_md                     = sha256
-string_mask                    = utf8only
-[ req_DN ]
-countryName                     = "Country Name is Northern Nowhere"
-countryName_value            = NN
-organizationName              = "Organization Name"
-organizationName_value     = Edel Curl Arctic Illudium Research Cloud
-commonName                      = "Common Name"
-commonName_value              = localhost 
+default_bits            = 1024
+distinguished_name      = req_DN
+default_md              = sha256
+string_mask             = utf8only
 
-[something]
-# The key
-# the certificate
-# some dhparam
+[ req_DN ]
+countryName             = "Country Name is Northern Nowhere"
+countryName_value       = NN
+organizationName        = "Organization Name"
+organizationName_value  = Edel Curl Arctic Illudium Research Cloud
+commonName              = "Common Name"
+commonName_value        = localhost
 -----BEGIN PRIVATE KEY-----
 MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDGuAQ91voxoNf3
 6YhLWl5vb9v0yUt+bCrPNHsquhpxrX94bPceygfQKQNJ5GOGTPZnP70yacu4FecO
index f58710406a30887b63b95443bcfb195927d7282b..54a07e3f3e496ae4c15d3eb7fc9874ae7ca1a0ab 100644 (file)
@@ -1,11 +1,12 @@
 extensions = x509v3
+
 [ x509v3 ]
-subjectAltName = DNS:localhost
-keyUsage       = keyEncipherment,digitalSignature,keyAgreement
-extendedKeyUsage = serverAuth
-subjectKeyIdentifier = hash
-authorityKeyIdentifier = keyid
-basicConstraints = CA:false
+subjectAltName          = DNS:localhost
+keyUsage                = keyEncipherment,digitalSignature,keyAgreement
+extendedKeyUsage        = serverAuth
+subjectKeyIdentifier    = hash
+authorityKeyIdentifier  = keyid
+basicConstraints        = CA:false
 authorityInfoAccess     = @issuer_info
 crlDistributionPoints   = @crl_info
 
@@ -20,19 +21,15 @@ caIssuers;URI.0         = http://test.curl.se/ca/EdelCurlRoot.cer
 URI.0                   = http://test.curl.se/ca/EdelCurlRoot.crl
 
 [ req ]
-default_bits                    = 1024
-distinguished_name              = req_DN
-default_md                     = sha256
-string_mask                    = utf8only
-[ req_DN ]
-countryName                     = "Country Name is Northern Nowhere"
-countryName_value            = NN
-organizationName              = "Organization Name"
-organizationName_value     = Edel Curl Arctic Illudium Research Cloud
-commonName                      = "Common Name"
-commonName_value              = localhost 
+default_bits            = 1024
+distinguished_name      = req_DN
+default_md              = sha256
+string_mask             = utf8only
 
-[something]
-# The key
-# the certificate
-# some dhparam
+[ req_DN ]
+countryName             = "Country Name is Northern Nowhere"
+countryName_value       = NN
+organizationName        = "Organization Name"
+organizationName_value  = Edel Curl Arctic Illudium Research Cloud
+commonName              = "Common Name"
+commonName_value        = localhost
index 29dc52ce038bfa3e1a5161e85ee2ca2fc3192281..4ce5c1e6bc1c50ffa5fcea08363124727433f48e 100644 (file)
@@ -1,11 +1,12 @@
 extensions = x509v3
+
 [ x509v3 ]
-subjectAltName = DNS:localhost.nn
-keyUsage       = keyEncipherment,digitalSignature,keyAgreement
-extendedKeyUsage = serverAuth
-subjectKeyIdentifier = hash
-authorityKeyIdentifier = keyid
-basicConstraints = CA:false
+subjectAltName          = DNS:localhost.nn
+keyUsage                = keyEncipherment,digitalSignature,keyAgreement
+extendedKeyUsage        = serverAuth
+subjectKeyIdentifier    = hash
+authorityKeyIdentifier  = keyid
+basicConstraints        = CA:false
 authorityInfoAccess     = @issuer_info
 crlDistributionPoints   = @crl_info
 
@@ -20,22 +21,18 @@ caIssuers;URI.0         = http://test.curl.se/ca/EdelCurlRoot.cer
 URI.0                   = http://test.curl.se/ca/EdelCurlRoot.crl
 
 [ req ]
-default_bits                    = 1024
-distinguished_name              = req_DN
-default_md                     = sha256
-string_mask                    = utf8only
-[ req_DN ]
-countryName                     = "Country Name is Northern Nowhere"
-countryName_value            = NN
-organizationName              = "Organization Name"
-organizationName_value     = Edel Curl Arctic Illudium Research Cloud
-commonName                      = "Common Name"
-commonName_value              = localhost.nn 
+default_bits            = 1024
+distinguished_name      = req_DN
+default_md              = sha256
+string_mask             = utf8only
 
-[something]
-# The key
-# the certificate
-# some dhparam
+[ req_DN ]
+countryName             = "Country Name is Northern Nowhere"
+countryName_value       = NN
+organizationName        = "Organization Name"
+organizationName_value  = Edel Curl Arctic Illudium Research Cloud
+commonName              = "Common Name"
+commonName_value        = localhost.nn
 -----BEGIN PRIVATE KEY-----
 MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCjmuQP4L2TqVqn
 Xq2FXtbgmLTpIuBikMPZVzcWXVc9aMrizy9GZxoMrw6JhgEG39bJgBUKQ4VAP9ru
index 5e93bf8b7ecff4541249d920eef7e7854600d32d..376fc3a11574f09af99c067840f77a4b49a14526 100644 (file)
@@ -1,11 +1,12 @@
 extensions = x509v3
+
 [ x509v3 ]
-subjectAltName = DNS:localhost.nn
-keyUsage       = keyEncipherment,digitalSignature,keyAgreement
-extendedKeyUsage = serverAuth
-subjectKeyIdentifier = hash
-authorityKeyIdentifier = keyid
-basicConstraints = CA:false
+subjectAltName          = DNS:localhost.nn
+keyUsage                = keyEncipherment,digitalSignature,keyAgreement
+extendedKeyUsage        = serverAuth
+subjectKeyIdentifier    = hash
+authorityKeyIdentifier  = keyid
+basicConstraints        = CA:false
 authorityInfoAccess     = @issuer_info
 crlDistributionPoints   = @crl_info
 
@@ -20,19 +21,15 @@ caIssuers;URI.0         = http://test.curl.se/ca/EdelCurlRoot.cer
 URI.0                   = http://test.curl.se/ca/EdelCurlRoot.crl
 
 [ req ]
-default_bits                    = 1024
-distinguished_name              = req_DN
-default_md                     = sha256
-string_mask                    = utf8only
-[ req_DN ]
-countryName                     = "Country Name is Northern Nowhere"
-countryName_value            = NN
-organizationName              = "Organization Name"
-organizationName_value     = Edel Curl Arctic Illudium Research Cloud
-commonName                      = "Common Name"
-commonName_value              = localhost.nn 
+default_bits            = 1024
+distinguished_name      = req_DN
+default_md              = sha256
+string_mask             = utf8only
 
-[something]
-# The key
-# the certificate
-# some dhparam
+[ req_DN ]
+countryName             = "Country Name is Northern Nowhere"
+countryName_value       = NN
+organizationName        = "Organization Name"
+organizationName_value  = Edel Curl Arctic Illudium Research Cloud
+commonName              = "Common Name"
+commonName_value        = localhost.nn
index 72f326dfba6516b8ec88cdd96cc15650cf1a69c6..9c4c9632adac6e3ff1879a47adc153c6cfe1da1b 100644 (file)
@@ -1,12 +1,13 @@
 extensions = x509v3
+
 [ x509v3 ]
-#subjectAltName = DNS:localhost\0h
-subjectAltName = DER:30:0d:82:0b:6c:6f:63:61:6c:68:6f:73:74:00:68
-keyUsage       = keyEncipherment,digitalSignature,keyAgreement
-extendedKeyUsage = serverAuth
-subjectKeyIdentifier = hash
-authorityKeyIdentifier = keyid
-basicConstraints = CA:false
+#subjectAltName         = DNS:localhost\0h
+subjectAltName          = DER:30:0d:82:0b:6c:6f:63:61:6c:68:6f:73:74:00:68
+keyUsage                = keyEncipherment,digitalSignature,keyAgreement
+extendedKeyUsage        = serverAuth
+subjectKeyIdentifier    = hash
+authorityKeyIdentifier  = keyid
+basicConstraints        = CA:false
 authorityInfoAccess     = @issuer_info
 crlDistributionPoints   = @crl_info
 
@@ -21,22 +22,18 @@ caIssuers;URI.0         = http://test.curl.se/ca/EdelCurlRoot.cer
 URI.0                   = http://test.curl.se/ca/EdelCurlRoot.crl
 
 [ req ]
-default_bits                    = 1024
-distinguished_name              = req_DN
-default_md                     = sha256
-string_mask                    = utf8only
-[ req_DN ]
-countryName                     = "Country Name is Northern Nowhere"
-countryName_value            = NN
-organizationName              = "Organization Name"
-organizationName_value     = Edel Curl Arctic Illudium Research Cloud
-commonName                      = "Common Name"
-commonName_value              = localhost 
+default_bits            = 1024
+distinguished_name      = req_DN
+default_md              = sha256
+string_mask             = utf8only
 
-[something]
-# The key
-# the certificate
-# some dhparam
+[ req_DN ]
+countryName             = "Country Name is Northern Nowhere"
+countryName_value       = NN
+organizationName        = "Organization Name"
+organizationName_value  = Edel Curl Arctic Illudium Research Cloud
+commonName              = "Common Name"
+commonName_value        = localhost
 -----BEGIN PRIVATE KEY-----
 MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDfKZNYgh2iuAcq
 so+TDt8VSXIGkxlKLcW9VpJa2vTTmgEc7kdXDp7Y1w3Ezkui8PwH7JHplQj06V3y
index 439aefb9e7fc87a08b5fea35c0508ab27cd046a2..4285341763166bbc4832aaa3f19f5ba8e12f5beb 100644 (file)
@@ -1,12 +1,13 @@
 extensions = x509v3
+
 [ x509v3 ]
-#subjectAltName = DNS:localhost\0h
-subjectAltName = DER:30:0d:82:0b:6c:6f:63:61:6c:68:6f:73:74:00:68
-keyUsage       = keyEncipherment,digitalSignature,keyAgreement
-extendedKeyUsage = serverAuth
-subjectKeyIdentifier = hash
-authorityKeyIdentifier = keyid
-basicConstraints = CA:false
+#subjectAltName         = DNS:localhost\0h
+subjectAltName          = DER:30:0d:82:0b:6c:6f:63:61:6c:68:6f:73:74:00:68
+keyUsage                = keyEncipherment,digitalSignature,keyAgreement
+extendedKeyUsage        = serverAuth
+subjectKeyIdentifier    = hash
+authorityKeyIdentifier  = keyid
+basicConstraints        = CA:false
 authorityInfoAccess     = @issuer_info
 crlDistributionPoints   = @crl_info
 
@@ -21,19 +22,15 @@ caIssuers;URI.0         = http://test.curl.se/ca/EdelCurlRoot.cer
 URI.0                   = http://test.curl.se/ca/EdelCurlRoot.crl
 
 [ req ]
-default_bits                    = 1024
-distinguished_name              = req_DN
-default_md                     = sha256
-string_mask                    = utf8only
-[ req_DN ]
-countryName                     = "Country Name is Northern Nowhere"
-countryName_value            = NN
-organizationName              = "Organization Name"
-organizationName_value     = Edel Curl Arctic Illudium Research Cloud
-commonName                      = "Common Name"
-commonName_value              = localhost 
+default_bits            = 1024
+distinguished_name      = req_DN
+default_md              = sha256
+string_mask             = utf8only
 
-[something]
-# The key
-# the certificate
-# some dhparam
+[ req_DN ]
+countryName             = "Country Name is Northern Nowhere"
+countryName_value       = NN
+organizationName        = "Organization Name"
+organizationName_value  = Edel Curl Arctic Illudium Research Cloud
+commonName              = "Common Name"
+commonName_value        = localhost
index b7dd1e879f03d3db1b5497af35c805c06ad62630..b273ff76173edc28b3372ab46303d0907bbf50ad 100644 (file)
@@ -1,11 +1,12 @@
 extensions = x509v3
+
 [ x509v3 ]
-subjectAltName = DNS:localhost
-keyUsage       = keyEncipherment,digitalSignature,keyAgreement
-extendedKeyUsage = serverAuth
-subjectKeyIdentifier = hash
-authorityKeyIdentifier = keyid
-basicConstraints = CA:false
+subjectAltName          = DNS:localhost
+keyUsage                = keyEncipherment,digitalSignature,keyAgreement
+extendedKeyUsage        = serverAuth
+subjectKeyIdentifier    = hash
+authorityKeyIdentifier  = keyid
+basicConstraints        = CA:false
 authorityInfoAccess     = @issuer_info
 crlDistributionPoints   = @crl_info
 
@@ -20,22 +21,18 @@ caIssuers;URI.0         = http://test.curl.se/ca/EdelCurlRoot.cer
 URI.0                   = http://test.curl.se/ca/EdelCurlRoot.crl
 
 [ req ]
-default_bits                    = 12048
-distinguished_name              = req_DN
-default_md                     = sha256
-string_mask                    = utf8only
-[ req_DN ]
-countryName                     = "Country Name is Northern Nowhere"
-countryName_value            = NN
-organizationName              = "Organization Name"
-organizationName_value     = Edel Curl Arctic Illudium Research Cloud
-commonName                      = "Common Name"
-commonName_value              = localhost
+default_bits            = 12048
+distinguished_name      = req_DN
+default_md              = sha256
+string_mask             = utf8only
 
-[something]
-# The key
-# the certificate
-# some dhparam
+[ req_DN ]
+countryName             = "Country Name is Northern Nowhere"
+countryName_value       = NN
+organizationName        = "Organization Name"
+organizationName_value  = Edel Curl Arctic Illudium Research Cloud
+commonName              = "Common Name"
+commonName_value        = localhost
 -----BEGIN PRIVATE KEY-----
 MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCrCrAD0Hb+Xs4V
 3mHV45FvfNa7yiaOeL4mNdGmWfHVPFU+CSzsoNSvDjxaorWweFGVYoCAcchOn1lZ
index 3803da37569d49f998c421468c1b5f2a387e3a50..8fd080bd8b0d2164b25584a87cd952a126730732 100644 (file)
@@ -1,11 +1,12 @@
 extensions = x509v3
+
 [ x509v3 ]
-subjectAltName = DNS:localhost
-keyUsage       = keyEncipherment,digitalSignature,keyAgreement
-extendedKeyUsage = serverAuth
-subjectKeyIdentifier = hash
-authorityKeyIdentifier = keyid
-basicConstraints = CA:false
+subjectAltName          = DNS:localhost
+keyUsage                = keyEncipherment,digitalSignature,keyAgreement
+extendedKeyUsage        = serverAuth
+subjectKeyIdentifier    = hash
+authorityKeyIdentifier  = keyid
+basicConstraints        = CA:false
 authorityInfoAccess     = @issuer_info
 crlDistributionPoints   = @crl_info
 
@@ -20,19 +21,15 @@ caIssuers;URI.0         = http://test.curl.se/ca/EdelCurlRoot.cer
 URI.0                   = http://test.curl.se/ca/EdelCurlRoot.crl
 
 [ req ]
-default_bits                    = 12048
-distinguished_name              = req_DN
-default_md                     = sha256
-string_mask                    = utf8only
-[ req_DN ]
-countryName                     = "Country Name is Northern Nowhere"
-countryName_value            = NN
-organizationName              = "Organization Name"
-organizationName_value     = Edel Curl Arctic Illudium Research Cloud
-commonName                      = "Common Name"
-commonName_value              = localhost
+default_bits            = 12048
+distinguished_name      = req_DN
+default_md              = sha256
+string_mask             = utf8only
 
-[something]
-# The key
-# the certificate
-# some dhparam
+[ req_DN ]
+countryName             = "Country Name is Northern Nowhere"
+countryName_value       = NN
+organizationName        = "Organization Name"
+organizationName_value  = Edel Curl Arctic Illudium Research Cloud
+commonName              = "Common Name"
+commonName_value        = localhost
index 20dc265701c0fcda93f5f34af68034d5cc124892..65fbdb2dbb51a734baf94db8f361ff45428072a0 100644 (file)
@@ -51,4 +51,3 @@ Accept: */*
 </protocol>
 </verify>
 </testcase>
-
index c05da3cb585e9ccb52d8daaf86a949259473ad41..6aab5000387b353b6de4ede956faf88d9d1c57a4 100644 (file)
@@ -45,4 +45,3 @@ disable
 </valgrind>
 </verify>
 </testcase>
-
index 2e51bbeaf40b3b5265519de5b6d71e581a57807a..1436602093a15eb6923b4414e2b40261f150ab5b 100644 (file)
@@ -36,4 +36,4 @@ Content-Length: 6
 </file>
 </verify>
 
-</testcase>
\ No newline at end of file
+</testcase>
index 7e169cf43a63ba1cbf7ab693a6ff4fd532e3ae66..56da81c7cb1dd841b0d94860d4fd1081ad22de2b 100644 (file)
@@ -40,4 +40,4 @@ Content-Length: 6
 </file>
 </verify>
 
-</testcase>
\ No newline at end of file
+</testcase>
index 8a515a51bea738dc4c4d793d887327f4e8032f72..21ddc1ad200a621bf3f2c7d8bcd8ba2b147ff23e 100644 (file)
@@ -172,5 +172,3 @@ class TestShutdown:
         # check connection cache closings
         shutdowns = [l for l in r.trace_lines if re.match(r'.*CCACHE\] shutdown #\d+, done=1', l)]
         assert len(shutdowns) == 1, f'{shutdowns}'
-
-
index b7dd1e879f03d3db1b5497af35c805c06ad62630..b273ff76173edc28b3372ab46303d0907bbf50ad 100644 (file)
@@ -1,11 +1,12 @@
 extensions = x509v3
+
 [ x509v3 ]
-subjectAltName = DNS:localhost
-keyUsage       = keyEncipherment,digitalSignature,keyAgreement
-extendedKeyUsage = serverAuth
-subjectKeyIdentifier = hash
-authorityKeyIdentifier = keyid
-basicConstraints = CA:false
+subjectAltName          = DNS:localhost
+keyUsage                = keyEncipherment,digitalSignature,keyAgreement
+extendedKeyUsage        = serverAuth
+subjectKeyIdentifier    = hash
+authorityKeyIdentifier  = keyid
+basicConstraints        = CA:false
 authorityInfoAccess     = @issuer_info
 crlDistributionPoints   = @crl_info
 
@@ -20,22 +21,18 @@ caIssuers;URI.0         = http://test.curl.se/ca/EdelCurlRoot.cer
 URI.0                   = http://test.curl.se/ca/EdelCurlRoot.crl
 
 [ req ]
-default_bits                    = 12048
-distinguished_name              = req_DN
-default_md                     = sha256
-string_mask                    = utf8only
-[ req_DN ]
-countryName                     = "Country Name is Northern Nowhere"
-countryName_value            = NN
-organizationName              = "Organization Name"
-organizationName_value     = Edel Curl Arctic Illudium Research Cloud
-commonName                      = "Common Name"
-commonName_value              = localhost
+default_bits            = 12048
+distinguished_name      = req_DN
+default_md              = sha256
+string_mask             = utf8only
 
-[something]
-# The key
-# the certificate
-# some dhparam
+[ req_DN ]
+countryName             = "Country Name is Northern Nowhere"
+countryName_value       = NN
+organizationName        = "Organization Name"
+organizationName_value  = Edel Curl Arctic Illudium Research Cloud
+commonName              = "Common Name"
+commonName_value        = localhost
 -----BEGIN PRIVATE KEY-----
 MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCrCrAD0Hb+Xs4V
 3mHV45FvfNa7yiaOeL4mNdGmWfHVPFU+CSzsoNSvDjxaorWweFGVYoCAcchOn1lZ
index 6b8c6ceb10b95b2e15e3095b7adeab26012a1754..38f77184bbace55d27331595cd1c510aff047acd 100644 (file)
-#***************************************************************************\r
-#                                  _   _ ____  _\r
-#  Project                     ___| | | |  _ \| |\r
-#                             / __| | | | |_) | |\r
-#                            | (__| |_| |  _ <| |___\r
-#                             \___|\___/|_| \_\_____|\r
-#\r
-# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.\r
-#\r
-# This software is licensed as described in the file COPYING, which\r
-# you should have received as part of this distribution. The terms\r
-# are also available at https://curl.se/docs/copyright.html.\r
-#\r
-# You may opt to use, copy, modify, merge, publish, distribute and/or sell\r
-# copies of the Software, and permit persons to whom the Software is\r
-# furnished to do so, under the terms of the COPYING file.\r
-#\r
-# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY\r
-# KIND, either express or implied.\r
-#\r
-# SPDX-License-Identifier: curl\r
-#\r
-#***************************************************************************\r
-\r
-###########################################################################\r
-#\r
-# Makefile for building libcurl with MSVC\r
-#\r
-# Usage: see README.md\r
-#\r
-##############################################################\r
-\r
-CFGSET=FALSE\r
-WINBUILD_DIR=`cd`\r
-\r
-# Utilities.\r
-# If a path is required that contains characters such as space, quote the path.\r
-MT         = mt.exe\r
-RC         = rc.exe\r
-ZIP        = zip.exe\r
-\r
-# Allow changing C compiler via environment variable CC (default cl.exe)\r
-# This command macro is not set by default: https://msdn.microsoft.com/en-us/library/ms933742.aspx\r
-!If "$(CC)" == ""\r
-CC = cl.exe\r
-!Endif\r
-\r
-!IF "$(VC)"=="6"\r
-CC_NODEBUG  = $(CC) /O2 /DNDEBUG\r
-CC_DEBUG    = $(CC) /Od /Gm /Zi /D_DEBUG /GZ\r
-CFLAGS      = /I. /I../lib /I../include /nologo /W4 /GX /YX /FD /c /DBUILDING_LIBCURL\r
-!ELSE\r
-CC_NODEBUG  = $(CC) /O2 /DNDEBUG\r
-CC_DEBUG    = $(CC) /Od /D_DEBUG /RTC1 /Z7 /LDd\r
-CFLAGS      = /I. /I ../lib /I../include /nologo /W4 /EHsc /FD /c /DBUILDING_LIBCURL\r
-!ENDIF\r
-\r
-LFLAGS     = /nologo /machine:$(MACHINE)\r
-LNKDLL     = link.exe /DLL\r
-# Use lib.exe instead of link.exe as link.exe /lib has the following bad habits:\r
-# - optimizing options like /opt:ref raises warnings (at least in Visual Studio 2015)\r
-# - all (including Windows) dependencies are aggregated (as static parts)\r
-# - link.exe /lib is not documented (anymore) at MSDN\r
-# Instead of id: just create an archive, that contains all objects\r
-LNKLIB     = lib.exe\r
-\r
-CFLAGS_PDB = /Zi\r
-LFLAGS_PDB = /incremental:no /opt:ref,icf /DEBUG\r
-\r
-CFLAGS_LIBCURL_STATIC  = /DCURL_STATICLIB\r
-\r
-WIN_LIBS    = ws2_32.lib wldap32.lib advapi32.lib crypt32.lib\r
-\r
-BASE_NAME              = libcurl\r
-BASE_NAME_DEBUG        = $(BASE_NAME)_debug\r
-BASE_NAME_STATIC       = $(BASE_NAME)_a\r
-BASE_NAME_STATIC_DEBUG = $(BASE_NAME_STATIC)_debug\r
-\r
-LIB_NAME_STATIC        = $(BASE_NAME_STATIC).lib\r
-LIB_NAME_STATIC_DEBUG  = $(BASE_NAME_STATIC_DEBUG).lib\r
-LIB_NAME_DLL           = $(BASE_NAME).dll\r
-LIB_NAME_IMP           = $(BASE_NAME).lib\r
-LIB_NAME_DLL_DEBUG     = $(BASE_NAME_DEBUG).dll\r
-LIB_NAME_IMP_DEBUG     = $(BASE_NAME_DEBUG).lib\r
-\r
-PDB_NAME_STATIC        = $(BASE_NAME_STATIC).pdb\r
-PDB_NAME_STATIC_DEBUG  = $(BASE_NAME_STATIC_DEBUG).pdb\r
-PDB_NAME_DLL           = $(BASE_NAME).pdb\r
-PDB_NAME_DLL_DEBUG     = $(BASE_NAME_DEBUG).pdb\r
-\r
-# CURL Command section\r
-PROGRAM_NAME  = curl.exe\r
-CURL_CFLAGS   = /I../lib /I../include /nologo /W4 /EHsc /FD /c\r
-CURL_LFLAGS   = /out:$(DIRDIST)\bin\$(PROGRAM_NAME) /subsystem:console $(LFLAGS)\r
-CURL_RESFLAGS = /i../include\r
-\r
-#############################################################\r
-## Nothing more to do below this line!\r
-LIBCURL_SRC_DIR = ..\lib\r
-CURL_SRC_DIR = ..\src\r
-\r
-!IFNDEF WITH_DEVEL\r
-WITH_DEVEL   = ../../deps\r
-!ENDIF\r
-DEVEL_INCLUDE= $(WITH_DEVEL)/include\r
-DEVEL_LIB    = $(WITH_DEVEL)/lib\r
-\r
-!IF EXISTS("$(DEVEL_INCLUDE)")\r
-CFLAGS       = $(CFLAGS) /I"$(DEVEL_INCLUDE)"\r
-!ENDIF\r
-!IF EXISTS("$(DEVEL_LIB)")\r
-LFLAGS       = $(LFLAGS) "/LIBPATH:$(DEVEL_LIB)"\r
-!ENDIF\r
-\r
-!IFDEF SSL_PATH\r
-SSL_INC_DIR  = $(SSL_PATH)\include\r
-SSL_LIB_DIR  = $(SSL_PATH)\lib\r
-SSL_LFLAGS   = $(SSL_LFLAGS) "/LIBPATH:$(SSL_LIB_DIR)"\r
-!ELSE\r
-SSL_INC_DIR=$(DEVEL_INCLUDE)\openssl\r
-SSL_LIB_DIR=$(DEVEL_LIB)\r
-!ENDIF\r
-\r
-!IF "$(WITH_SSL)"=="dll" || "$(WITH_SSL)"=="static"\r
-!IF EXISTS("$(SSL_LIB_DIR)\libssl.lib")\r
-SSL_LIBS     = libssl.lib libcrypto.lib\r
-!ELSE\r
-SSL_LIBS     = libeay32.lib ssleay32.lib\r
-!ENDIF\r
-USE_SSL      = true\r
-SSL          = $(WITH_SSL)\r
-!IF "$(WITH_SSL)"=="static"\r
-WIN_LIBS     = $(WIN_LIBS) gdi32.lib user32.lib crypt32.lib\r
-!ENDIF\r
-!ENDIF\r
-\r
-!IFDEF USE_SSL\r
-SSL_CFLAGS   = /DUSE_OPENSSL /I"$(SSL_INC_DIR)"\r
-!IF "$(ENABLE_OPENSSL_AUTO_LOAD_CONFIG)"=="false"\r
-SSL_CFLAGS   = $(SSL_CFLAGS) /DCURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG\r
-!ENDIF\r
-!ENDIF\r
-\r
-!IF "$(ENABLE_WEBSOCKETS)"=="true"\r
-CFLAGS  = $(CFLAGS) /DUSE_WEBSOCKETS=1\r
-!ENDIF\r
-\r
-!IFDEF NGHTTP2_PATH\r
-NGHTTP2_INC_DIR  = $(NGHTTP2_PATH)\include\r
-NGHTTP2_LIB_DIR  = $(NGHTTP2_PATH)\lib\r
-NGHTTP2_LFLAGS   = $(NGHTTP2_LFLAGS) "/LIBPATH:$(NGHTTP2_LIB_DIR)"\r
-!ELSE\r
-NGHTTP2_INC_DIR  = $(DEVEL_INCLUDE)\r
-NGHTTP2_LIB_DIR  = $(DEVEL_LIB)\r
-!ENDIF\r
-\r
-!IF "$(WITH_NGHTTP2)"=="dll"\r
-NGHTTP2_CFLAGS   = /DUSE_NGHTTP2 /I"$(NGHTTP2_INC_DIR)"\r
-NGHTTP2_LIBS     = nghttp2.lib\r
-!ELSEIF "$(WITH_NGHTTP2)"=="static"\r
-NGHTTP2_CFLAGS   = /DUSE_NGHTTP2 /DNGHTTP2_STATICLIB /I"$(NGHTTP2_INC_DIR)"\r
-!IF EXISTS("$(NGHTTP2_LIB_DIR)\nghttp2_static.lib")\r
-NGHTTP2_LIBS     = nghttp2_static.lib\r
-!ELSE\r
-NGHTTP2_LIBS     = nghttp2.lib\r
-!ENDIF\r
-!ENDIF\r
-\r
-!IFDEF MSH3_PATH\r
-MSH3_INC_DIR     = $(MSH3_PATH)\include\r
-MSH3_LIB_DIR     = $(MSH3_PATH)\lib\r
-MSH3_LFLAGS      = $(MSH3_LFLAGS) "/LIBPATH:$(MSH3_LIB_DIR)"\r
-!ELSE\r
-MSH3_INC_DIR     = $(DEVEL_INCLUDE)\r
-MSH3_LIB_DIR     = $(DEVEL_LIB)\r
-!ENDIF\r
-\r
-!IF "$(WITH_MSH3)"=="dll"\r
-MSH3_CFLAGS      = /DUSE_MSH3 /I"$(MSH3_INC_DIR)"\r
-MSH3_LIBS        = msh3.lib\r
-!ELSEIF "$(WITH_MSH3)"=="static"\r
-MSH3_CFLAGS      = /DUSE_MSH3 /DMSH3_STATICLIB /I"$(MSH3_INC_DIR)"\r
-!IF EXISTS("$(NGHTTP2_LIB_DIR)\msh3_static.lib")\r
-MSH3_LIBS        = msh3_static.lib\r
-!ELSE\r
-MSH3_LIBS        = msh3.lib\r
-!ENDIF\r
-!ENDIF\r
-\r
-!IFDEF MBEDTLS_PATH\r
-MBEDTLS_INC_DIR  = $(MBEDTLS_PATH)\include\r
-MBEDTLS_LIB_DIR  = $(MBEDTLS_PATH)\lib\r
-MBEDTLS_LFLAGS   = $(MBEDTLS_LFLAGS) "/LIBPATH:$(MBEDTLS_LIB_DIR)"\r
-!ELSE\r
-MBEDTLS_INC_DIR  = $(DEVEL_INCLUDE)\r
-MBEDTLS_LIB_DIR  = $(DEVEL_LIB)\r
-!ENDIF\r
-\r
-!IF "$(WITH_MBEDTLS)"=="dll" || "$(WITH_MBEDTLS)"=="static"\r
-USE_MBEDTLS    = true\r
-MBEDTLS        = $(WITH_MBEDTLS)\r
-MBEDTLS_CFLAGS = /DUSE_MBEDTLS /I"$(MBEDTLS_INC_DIR)"\r
-MBEDTLS_LIBS   = mbedtls.lib mbedcrypto.lib mbedx509.lib\r
-!ENDIF\r
-\r
-\r
-!IFDEF CARES_PATH\r
-CARES_INC_DIR  = $(CARES_PATH)\include\r
-CARES_LIB_DIR  = $(CARES_PATH)\lib\r
-CARES_LFLAGS   = $(CARES_LFLAGS) "/LIBPATH:$(CARES_LIB_DIR)"\r
-!ELSE\r
-CARES_INC_DIR  = $(DEVEL_INCLUDE)/cares\r
-CARES_LIB_DIR  = $(DEVEL_LIB)\r
-!ENDIF\r
-\r
-!IF "$(WITH_CARES)"=="dll"\r
-!IF "$(DEBUG)"=="yes"\r
-CARES_LIBS     = caresd.lib\r
-!ELSE\r
-CARES_LIBS     = cares.lib\r
-!ENDIF\r
-USE_CARES      = true\r
-CARES          = dll\r
-!ELSEIF "$(WITH_CARES)"=="static"\r
-!IF "$(DEBUG)"=="yes"\r
-CARES_LIBS     = libcaresd.lib\r
-!ELSE\r
-CARES_LIBS     = libcares.lib\r
-!ENDIF\r
-USE_CARES      = true\r
-CARES          = static\r
-!ENDIF\r
-\r
-!IFDEF USE_CARES\r
-CARES_CFLAGS   = /DUSE_ARES /I"$(CARES_INC_DIR)"\r
-!IF "$(CARES)"=="static"\r
-CARES_CFLAGS   = $(CARES_CFLAGS) /DCARES_STATICLIB\r
-!ENDIF\r
-!ENDIF\r
-\r
-\r
-!IFDEF ZLIB_PATH\r
-ZLIB_INC_DIR = $(ZLIB_PATH)\include\r
-ZLIB_LIB_DIR = $(ZLIB_PATH)\lib\r
-ZLIB_LFLAGS  = $(ZLIB_LFLAGS) "/LIBPATH:$(ZLIB_LIB_DIR)"\r
-!ELSE\r
-ZLIB_INC_DIR = $(DEVEL_INCLUDE)\r
-ZLIB_LIB_DIR = $(DEVEL_LIB)\r
-!ENDIF\r
-\r
-# Depending on how zlib is built the libraries have different names, we\r
-# try to handle them all.\r
-!IF "$(WITH_ZLIB)"=="dll"\r
-!IF EXISTS("$(ZLIB_LIB_DIR)\zlibwapi.lib")\r
-ZLIB_LIBS = zlibwapi.lib\r
-ADDITIONAL_ZLIB_CFLAGS = /DZLIB_WINAPI\r
-!ELSEIF EXISTS("$(ZLIB_LIB_DIR)\zdll.lib")\r
-ZLIB_LIBS   = zdll.lib\r
-!ELSE\r
-ZLIB_LIBS   = zlib.lib\r
-!ENDIF\r
-USE_ZLIB    = true\r
-ZLIB        = dll\r
-!ELSEIF "$(WITH_ZLIB)"=="static"\r
-!IF EXISTS("$(ZLIB_LIB_DIR)\zlibstat.lib")\r
-ZLIB_LIBS   = zlibstat.lib\r
-ADDITIONAL_ZLIB_CFLAGS = /DZLIB_WINAPI\r
-!ELSEIF EXISTS("$(ZLIB_LIB_DIR)\zlibstatic.lib")\r
-ZLIB_LIBS   = zlibstatic.lib\r
-!ELSEIF EXISTS("$(ZLIB_LIB_DIR)\zlib.lib")\r
-ZLIB_LIBS   = zlib.lib\r
-!ELSE\r
-ZLIB_LIBS   = zlib_a.lib\r
-!ENDIF\r
-USE_ZLIB    = true\r
-ZLIB        = static\r
-!ENDIF\r
-\r
-!IFDEF USE_ZLIB\r
-ZLIB_CFLAGS = /DHAVE_LIBZ $(ADDITIONAL_ZLIB_CFLAGS) /I"$(ZLIB_INC_DIR)"\r
-!ENDIF\r
-\r
-\r
-!IFDEF SSH2_PATH\r
-SSH2_INC_DIR= $(SSH2_PATH)\include\r
-SSH2_LIB_DIR= $(SSH2_PATH)\lib\r
-SSH2_LFLAGS = $(SSH2_LFLAGS) "/LIBPATH:$(SSH2_LIB_DIR)"\r
-!ELSE\r
-SSH2_LIB_DIR= $(DEVEL_LIB)\r
-SSH2_INC_DIR= $(DEVEL_INCLUDE)/libssh2\r
-!ENDIF\r
-\r
-!IF "$(WITH_SSH2)"=="dll"\r
-SSH2_LIBS   = libssh2.lib\r
-USE_SSH2    = true\r
-SSH2        = dll\r
-!ELSEIF "$(WITH_SSH2)"=="static"\r
-# libssh2 NMakefile on Windows at default creates a static library without _a suffix\r
-!IF EXISTS("$(SSH2_LIB_DIR)\libssh2.lib")\r
-SSH2_LIBS   = libssh2.lib\r
-!ELSE\r
-SSH2_LIBS   = libssh2_a.lib\r
-!ENDIF\r
-WIN_LIBS     = $(WIN_LIBS) user32.lib\r
-USE_SSH2    = true\r
-SSH2        = static\r
-!ENDIF\r
-\r
-!IFDEF USE_SSH2\r
-SSH2_CFLAGS = /DUSE_LIBSSH2\r
-SSH2_CFLAGS = $(SSH2_CFLAGS) /I"$(SSH2_INC_DIR)"\r
-!ENDIF\r
-\r
-\r
-!IFDEF SSH_PATH\r
-SSH_INC_DIR= $(SSH_PATH)\include\r
-SSH_LIB_DIR= $(SSH_PATH)\lib\r
-SSH_LFLAGS = $(SSH_LFLAGS) "/LIBPATH:$(SSH_LIB_DIR)"\r
-!ELSE\r
-SSH_LIB_DIR= $(DEVEL_LIB)\r
-SSH_INC_DIR= $(DEVEL_INCLUDE)\r
-!ENDIF\r
-\r
-!IF "$(WITH_SSH)"=="dll" || "$(WITH_SSH)"=="static"\r
-SSH_LIBS   = ssh.lib\r
-USE_SSH    = true\r
-SSH        = $(WITH_SSH)\r
-!ENDIF\r
-\r
-!IFDEF USE_SSH\r
-SSH_CFLAGS = /DUSE_LIBSSH\r
-SSH_CFLAGS = $(SSH_CFLAGS) /I"$(SSH_INC_DIR)"\r
-!ENDIF\r
-\r
-\r
-!IFNDEF USE_IDN\r
-USE_IDN   = true\r
-!ELSEIF "$(USE_IDN)"=="yes"\r
-USE_IDN   = true\r
-!ENDIF\r
-\r
-!IF "$(USE_IDN)"=="true"\r
-IDN_CFLAGS = $(IDN_CFLAGS) /DUSE_WIN32_IDN\r
-WIN_LIBS   = $(WIN_LIBS) Normaliz.lib\r
-!ENDIF\r
-\r
-\r
-!IFNDEF USE_IPV6\r
-USE_IPV6  = true\r
-!ELSEIF "$(USE_IPV6)"=="yes"\r
-USE_IPV6  = true\r
-!ENDIF\r
-\r
-!IF "$(USE_IPV6)"=="true"\r
-IPV6_CFLAGS = $(IPV6_CFLAGS) /DUSE_IPV6\r
-!ENDIF\r
-\r
-\r
-!IFNDEF USE_SSPI\r
-USE_SSPI  = true\r
-!ELSEIF "$(USE_SSPI)"=="yes"\r
-USE_SSPI  = true\r
-!ENDIF\r
-\r
-!IF "$(USE_SSPI)"=="true"\r
-SSPI_CFLAGS = $(SSPI_CFLAGS) /DUSE_WINDOWS_SSPI\r
-!ENDIF\r
-\r
-\r
-!IFNDEF USE_SCHANNEL\r
-!IF "$(USE_SSL)"=="true"\r
-USE_SCHANNEL  = false\r
-!ELSE\r
-USE_SCHANNEL  = $(USE_SSPI)\r
-!ENDIF\r
-!ELSEIF "$(USE_SCHANNEL)"=="yes"\r
-USE_SCHANNEL  = true\r
-!ENDIF\r
-\r
-\r
-!IF "$(USE_SCHANNEL)"=="true"\r
-!IF "$(USE_SSPI)"!="true"\r
-!ERROR cannot build with Schannel without SSPI\r
-!ENDIF\r
-SSPI_CFLAGS = $(SSPI_CFLAGS) /DUSE_SCHANNEL\r
-WIN_LIBS    = $(WIN_LIBS) Crypt32.lib\r
-!ENDIF\r
-\r
-\r
-!IF "$(GEN_PDB)"=="yes"\r
-GEN_PDB = true\r
-!ENDIF\r
-\r
-\r
-!IFDEF EMBED_MANIFEST\r
-MANIFESTTOOL = $(MT) -manifest $(DIRDIST)\bin\$(PROGRAM_NAME).manifest -outputresource:$(DIRDIST)\bin\$(PROGRAM_NAME);1\r
-!ELSE\r
-CURL_RC_FLAGS = $(CURL_RC_FLAGS) /dCURL_EMBED_MANIFEST\r
-!ENDIF\r
-\r
-# Runtime library configuration\r
-!IF "$(RTLIBCFG)"=="static"\r
-RTLIB = /MT\r
-RTLIB_DEBUG = /MTd\r
-!ELSE\r
-RTLIB = /MD\r
-RTLIB_DEBUG  = /MDd\r
-!ENDIF\r
-\r
-!IF "$(MODE)"=="static"\r
-TARGET = $(LIB_NAME_STATIC)\r
-CURL_LIBCURL_LIBNAME=$(LIB_NAME_STATIC)\r
-AS_DLL = false\r
-CFGSET = true\r
-!ELSEIF "$(MODE)"=="dll"\r
-TARGET = $(LIB_NAME_DLL)\r
-CURL_LIBCURL_LIBNAME=$(LIB_NAME_IMP)\r
-AS_DLL = true\r
-CFGSET = true\r
-!ENDIF\r
-\r
-!IF "$(CFGSET)" == "FALSE"\r
-!ERROR please choose a valid mode\r
-!ENDIF\r
-\r
-\r
-\r
-# CURL_XX macros are for the curl.exe command\r
-\r
-!IF "$(DEBUG)"=="yes"\r
-RC_FLAGS = /d_DEBUG /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc\r
-CURL_CC       = $(CC_DEBUG) $(RTLIB_DEBUG)\r
-CURL_RC_FLAGS = $(CURL_RC_FLAGS) /i../include /d_DEBUG /Fo $@ $(CURL_SRC_DIR)\curl.rc\r
-!ELSE\r
-RC_FLAGS = /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc\r
-CURL_CC       = $(CC_NODEBUG) $(RTLIB)\r
-CURL_RC_FLAGS = $(CURL_RC_FLAGS) /i../include /Fo $@ $(CURL_SRC_DIR)\curl.rc\r
-!ENDIF\r
-\r
-!IF "$(AS_DLL)" == "true"\r
-\r
-LNK       = $(LNKDLL) $(LFLAGS) $(WIN_LIBS) /out:$(LIB_DIROBJ)\$(TARGET)\r
-!IF "$(DEBUG)"=="yes"\r
-TARGET    = $(LIB_NAME_DLL_DEBUG)\r
-LNK       = $(LNK) /DEBUG /IMPLIB:$(LIB_DIROBJ)\$(LIB_NAME_IMP_DEBUG)\r
-PDB       = $(PDB_NAME_DLL_DEBUG)\r
-CURL_LIBS = /IMPLIB:$(LIB_DIROBJ)\$(LIB_NAME_IMP_DEBUG)\r
-!ELSE\r
-TARGET    = $(LIB_NAME_DLL)\r
-LNK       = $(LNK)  /IMPLIB:$(LIB_DIROBJ)\$(LIB_NAME_IMP)\r
-PDB       = $(PDB_NAME_DLL)\r
-CURL_LIBS = /IMPLIB:$(LIB_DIROBJ)\$(LIB_NAME_IMP)\r
-!ENDIF\r
-RESOURCE  = $(LIB_DIROBJ)\libcurl.res\r
-\r
-# AS_DLL\r
-!ELSE\r
-\r
-!IF "$(DEBUG)"=="yes"\r
-TARGET   = $(LIB_NAME_STATIC_DEBUG)\r
-PDB      = $(PDB_NAME_STATIC_DEBUG)\r
-!ELSE\r
-TARGET   = $(LIB_NAME_STATIC)\r
-PDB      = $(PDB_NAME_STATIC)\r
-!ENDIF\r
-LNK      = $(LNKLIB) /out:$(LIB_DIROBJ)\$(TARGET)\r
-CURL_CC  = $(CURL_CC) $(CFLAGS_LIBCURL_STATIC)\r
-\r
-# AS_DLL\r
-!ENDIF\r
-\r
-!IF "$(USE_SSL)"=="true"\r
-CFLAGS = $(CFLAGS) $(SSL_CFLAGS)\r
-LFLAGS = $(LFLAGS) $(SSL_LFLAGS) $(SSL_LIBS)\r
-!ENDIF\r
-\r
-!IF "$(USE_MBEDTLS)"=="true"\r
-CFLAGS = $(CFLAGS) $(MBEDTLS_CFLAGS)\r
-LFLAGS = $(LFLAGS) $(MBEDTLS_LFLAGS) $(MBEDTLS_LIBS)\r
-!ENDIF\r
-\r
-!IF "$(USE_CARES)"=="true"\r
-CFLAGS = $(CFLAGS) $(CARES_CFLAGS)\r
-LFLAGS = $(LFLAGS) $(CARES_LFLAGS) $(CARES_LIBS)\r
-!ENDIF\r
-\r
-!IF "$(USE_ZLIB)"=="true"\r
-CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS)\r
-LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS) $(ZLIB_LIBS)\r
-!ENDIF\r
-\r
-!IF "$(USE_SSH2)"=="true"\r
-CFLAGS = $(CFLAGS) $(SSH2_CFLAGS)\r
-LFLAGS = $(LFLAGS) $(SSH2_LFLAGS) $(SSH2_LIBS)\r
-!ENDIF\r
-\r
-!IF "$(USE_SSH)"=="true"\r
-CFLAGS = $(CFLAGS) $(SSH_CFLAGS)\r
-LFLAGS = $(LFLAGS) $(SSH_LFLAGS) $(SSH_LIBS)\r
-!ENDIF\r
-\r
-!IF "$(USE_IDN)"=="true"\r
-CFLAGS = $(CFLAGS) $(IDN_CFLAGS)\r
-!ENDIF\r
-\r
-!IF "$(USE_IPV6)"=="true"\r
-CFLAGS = $(CFLAGS) $(IPV6_CFLAGS)\r
-!ENDIF\r
-\r
-!IF "$(USE_SSPI)"=="true"\r
-CFLAGS = $(CFLAGS) $(SSPI_CFLAGS)\r
-!ENDIF\r
-\r
-!IF "$(USE_NGHTTP2)"=="true"\r
-CFLAGS = $(CFLAGS) $(NGHTTP2_CFLAGS)\r
-LFLAGS = $(LFLAGS) $(NGHTTP2_LFLAGS) $(NGHTTP2_LIBS)\r
-!ENDIF\r
-\r
-!IF "$(USE_MSH3)"=="true"\r
-CFLAGS = $(CFLAGS) $(MSH3_CFLAGS)\r
-LFLAGS = $(LFLAGS) $(MSH3_LFLAGS) $(MSH3_LIBS)\r
-!ENDIF\r
-\r
-!IF "$(GEN_PDB)"=="true"\r
-CFLAGS = $(CFLAGS) $(CFLAGS_PDB) /Fd"$(LIB_DIROBJ)\$(PDB)"\r
-LFLAGS = $(LFLAGS) $(LFLAGS_PDB)\r
-!ENDIF\r
-\r
-!IF ( "$(USE_SSL)"=="true" && "$(USE_SCHANNEL)"=="true" ) \\r
- || ( "$(USE_SSL)"=="true" && "$(USE_MBEDTLS)"=="true" ) \\r
- || ( "$(USE_MBEDTLS)"=="true" && "$(USE_SCHANNEL)"=="true" )\r
-CFLAGS = $(CFLAGS) /DCURL_WITH_MULTI_SSL\r
-!ENDIF\r
-\r
-!IF "$(USE_UNICODE)"=="true"\r
-CFLAGS = $(CFLAGS) /DUNICODE /D_UNICODE\r
-!ENDIF\r
-\r
-LIB_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-lib\r
-CURL_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-curl\r
-\r
-!IFDEF WITH_PREFIX\r
-DIRDIST = $(WITH_PREFIX)\r
-!ELSE\r
-DIRDIST = ..\builds\$(CONFIG_NAME_LIB)\\r
-!ENDIF\r
-\r
-#\r
-# curl.exe\r
-#\r
-CURL_LINK = link.exe /incremental:no /libpath:"$(DIRDIST)\lib"\r
-\r
-!IF "$(CFGSET)" != "FALSE"\r
-# A mode was provided, so the library can be built.\r
-#\r
-!include CURL_OBJS.inc\r
-!include LIBCURL_OBJS.inc\r
-\r
-!IF "$(AS_DLL)" == "true"\r
-LIB_OBJS = $(LIBCURL_OBJS) $(RESOURCE)\r
-!ELSE\r
-LIB_OBJS = $(LIBCURL_OBJS)\r
-!ENDIF\r
-\r
-EXE_OBJS = $(CURL_OBJS) $(CURL_DIROBJ)\curl.res\r
-\r
-all : $(TARGET) $(PROGRAM_NAME)\r
-\r
-package: $(TARGET)\r
-       @cd $(DIRDIST)\r
-       @-$(ZIP) -9 -q -r ..\$(CONFIG_NAME_LIB).zip .>nul 2<&1\r
-       @cd $(MAKEDIR)\r
-\r
-$(TARGET): $(LIB_OBJS) $(LIB_DIROBJ) $(DIRDIST)\r
-       @echo Using SSL: $(USE_SSL)\r
-       @echo Using NGHTTP2: $(USE_NGHTTP2)\r
-       @echo Using MSH3: $(USE_MSH3)\r
-       @echo Using c-ares: $(USE_CARES)\r
-       @echo Using SSH2: $(USE_SSH2)\r
-       @echo Using SSH: $(USE_SSH)\r
-       @echo Using ZLIB: $(USE_ZLIB)\r
-       @echo Using IDN:  $(USE_IDN)\r
-       @echo Using IPv6: $(USE_IPV6)\r
-       @echo Using SSPI: $(USE_SSPI)\r
-       @echo Using Schannel: $(USE_SCHANNEL)\r
-       @echo CFLAGS:     $(CFLAGS)\r
-       @echo LFLAGS:     $(LFLAGS)\r
-       @echo GenPDB:     $(GEN_PDB)\r
-       @echo Debug:      $(DEBUG)\r
-       @echo Machine:    $(MACHINE)\r
-       $(LNK) $(LIB_OBJS)\r
-       @echo Copying libs...\r
-       @if exist $(LIB_DIROBJ)\$(LIB_NAME_DLL) copy $(LIB_DIROBJ)\$(LIB_NAME_DLL)       $(DIRDIST)\bin\ /y >nul 2<&1\r
-       @if exist $(LIB_DIROBJ)\$(LIB_NAME_STATIC) copy $(LIB_DIROBJ)\$(LIB_NAME_STATIC)    $(DIRDIST)\lib\ /y >nul 2<&1\r
-       @if exist $(LIB_DIROBJ)\$(LIB_NAME_DLL_DEBUG) copy $(LIB_DIROBJ)\$(LIB_NAME_DLL_DEBUG) $(DIRDIST)\bin\ /y >nul 2<&1\r
-       @if exist $(LIB_DIROBJ)\$(LIB_NAME_STATIC_DEBUG) copy $(LIB_DIROBJ)\$(LIB_NAME_STATIC_DEBUG) $(DIRDIST)\lib\ /y >nul 2<&1\r
-       @if exist $(LIB_DIROBJ)\$(LIB_NAME_IMP) copy $(LIB_DIROBJ)\$(LIB_NAME_IMP)       $(DIRDIST)\lib\ /y >nul 2<&1\r
-       @if exist $(LIB_DIROBJ)\$(LIB_NAME_IMP_DEBUG) copy $(LIB_DIROBJ)\$(LIB_NAME_IMP_DEBUG) $(DIRDIST)\lib >nul 2<&1\r
-       @-copy $(LIB_DIROBJ)\*.exp                 $(DIRDIST)\lib /y >nul 2<&1\r
-       @-copy $(LIB_DIROBJ)\*.pdb                 $(DIRDIST)\lib /y >nul 2<&1\r
-       @-copy ..\include\curl\*.h   $(DIRDIST)\include\curl\ /y  >nul 2<&1\r
-\r
-$(LIB_OBJS): $(LIB_DIROBJ) $(DIRDIST)\r
-\r
-$(DIRDIST):\r
-       @if not exist "$(DIRDIST)\bin" mkdir $(DIRDIST)\bin\r
-       @if not exist "$(DIRDIST)\include" mkdir $(DIRDIST)\include\r
-       @if not exist "$(DIRDIST)\include\curl" mkdir $(DIRDIST)\include\curl\r
-       @if not exist "$(DIRDIST)\lib" mkdir $(DIRDIST)\lib\r
-\r
-$(LIB_DIROBJ):\r
-       @if not exist "$(LIB_DIROBJ)" mkdir $(LIB_DIROBJ)\r
-       @if not exist "$(LIB_DIROBJ)\vauth" mkdir $(LIB_DIROBJ)\vauth\r
-       @if not exist "$(LIB_DIROBJ)\vtls" mkdir $(LIB_DIROBJ)\vtls\r
-       @if not exist "$(LIB_DIROBJ)\vssh" mkdir $(LIB_DIROBJ)\vssh\r
-       @if not exist "$(LIB_DIROBJ)\vquic" mkdir $(LIB_DIROBJ)\vquic\r
-\r
-$(CURL_DIROBJ):\r
-       @if not exist "$(CURL_DIROBJ)" mkdir $(CURL_DIROBJ)\r
-# we need a lib dir for the portability functions from libcurl\r
-# we use the .c directly here\r
-       @if not exist "$(CURL_DIROBJ)" mkdir $(CURL_DIROBJ)\lib\r
-\r
-.SUFFIXES: .c .obj .res\r
-\r
-{$(LIBCURL_SRC_DIR)\}.c{$(LIB_DIROBJ)\}.obj::\r
-       $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\\"  $<\r
-\r
-{$(LIBCURL_SRC_DIR)\vauth\}.c{$(LIB_DIROBJ)\vauth\}.obj::\r
-       $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vauth\\"  $<\r
-\r
-{$(LIBCURL_SRC_DIR)\vtls\}.c{$(LIB_DIROBJ)\vtls\}.obj::\r
-       $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vtls\\"  $<\r
-\r
-{$(LIBCURL_SRC_DIR)\vssh\}.c{$(LIB_DIROBJ)\vssh\}.obj::\r
-       $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vssh\\"  $<\r
-\r
-{$(LIBCURL_SRC_DIR)\vquic\}.c{$(LIB_DIROBJ)\vquic\}.obj::\r
-       $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vquic\\"  $<\r
-\r
-$(LIB_DIROBJ)\libcurl.res: $(LIBCURL_SRC_DIR)\libcurl.rc\r
-       $(RC) $(RC_FLAGS)\r
-\r
-#\r
-# curl.exe\r
-#\r
-\r
-\r
-!IF "$(MODE)"=="static"\r
-!IF "$(DEBUG)"=="yes"\r
-CURL_LIBCURL_LIBNAME=$(LIB_NAME_STATIC_DEBUG)\r
-!ELSE\r
-CURL_LIBCURL_LIBNAME=$(LIB_NAME_STATIC)\r
-!ENDIF\r
-!ELSEIF "$(MODE)"=="dll"\r
-!IF "$(DEBUG)"=="yes"\r
-CURL_LIBCURL_LIBNAME=$(LIB_NAME_IMP_DEBUG)\r
-!ELSE\r
-CURL_LIBCURL_LIBNAME=$(LIB_NAME_IMP)\r
-!ENDIF\r
-!ENDIF\r
-\r
-CURL_FROM_LIBCURL=$(CURL_DIROBJ)\tool_hugehelp.obj \\r
- $(CURL_DIROBJ)\nonblock.obj \\r
- $(CURL_DIROBJ)\strtoofft.obj \\r
- $(CURL_DIROBJ)\warnless.obj \\r
- $(CURL_DIROBJ)\curl_multibyte.obj \\r
- $(CURL_DIROBJ)\version_win32.obj \\r
- $(CURL_DIROBJ)\dynbuf.obj \\r
- $(CURL_DIROBJ)\base64.obj\r
-\r
-$(PROGRAM_NAME): $(CURL_DIROBJ) $(CURL_FROM_LIBCURL) $(EXE_OBJS)\r
-       $(CURL_LINK) $(CURL_LFLAGS) $(CURL_LIBCURL_LIBNAME) $(WIN_LIBS) $(CURL_FROM_LIBCURL) $(EXE_OBJS)\r
-       $(MANIFESTTOOL)\r
-\r
-{$(CURL_SRC_DIR)\}.c{$(CURL_DIROBJ)\}.obj::\r
-       $(CURL_CC) $(CURL_CFLAGS) /Fo"$(CURL_DIROBJ)\\"  $<\r
-\r
-$(CURL_DIROBJ)\tool_hugehelp.obj: $(CURL_SRC_DIR)\tool_hugehelp.c\r
-       $(CURL_CC) $(CURL_CFLAGS) /Zm200 /Fo"$@" $(CURL_SRC_DIR)\tool_hugehelp.c\r
-$(CURL_DIROBJ)\nonblock.obj: ../lib/nonblock.c\r
-       $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/nonblock.c\r
-$(CURL_DIROBJ)\strtoofft.obj: ../lib/strtoofft.c\r
-       $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
-$(CURL_DIROBJ)\warnless.obj: ../lib/warnless.c\r
-       $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/warnless.c\r
-$(CURL_DIROBJ)\curl_multibyte.obj: ../lib/curl_multibyte.c\r
-       $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curl_multibyte.c\r
-$(CURL_DIROBJ)\version_win32.obj: ../lib/version_win32.c\r
-       $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/version_win32.c\r
-$(CURL_DIROBJ)\dynbuf.obj: ../lib/dynbuf.c\r
-       $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/dynbuf.c\r
-$(CURL_DIROBJ)\base64.obj: ../lib/base64.c\r
-       $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/base64.c\r
-$(CURL_DIROBJ)\curl.res: $(CURL_SRC_DIR)\curl.rc\r
-       $(RC) $(CURL_RC_FLAGS)\r
-\r
-!ENDIF  # End of case where a config was provided.\r
-\r
-# Makefile.vc's clean removes (LIB)CURL_DIROBJ and DIRDIST dirs then calls\r
-# this clean. Note those are the original directories we control and not the\r
-# directories possibly modified by this makefile to point to user-specified\r
-# directories.\r
-# For example, don't remove DIRDIST here since it may contain user files if it\r
-# has been changed by WITH_PREFIX to a different output dir (eg C:\usr\local).\r
-clean:\r
-       @-erase /s *.dll 2> NUL\r
-       @-erase /s *.exp 2> NUL\r
-       @-erase /s *.idb 2> NUL\r
-       @-erase /s *.lib 2> NUL\r
-       @-erase /s *.obj 2> NUL\r
-       @-erase /s *.pch 2> NUL\r
-       @-erase /s *.pdb 2> NUL\r
-       @-erase /s *.res 2> NUL\r
+#***************************************************************************
+#                                  _   _ ____  _
+#  Project                     ___| | | |  _ \| |
+#                             / __| | | | |_) | |
+#                            | (__| |_| |  _ <| |___
+#                             \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, 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
+#
+#***************************************************************************
+
+###########################################################################
+#
+# Makefile for building libcurl with MSVC
+#
+# Usage: see README.md
+#
+##############################################################
+
+CFGSET=FALSE
+WINBUILD_DIR=`cd`
+
+# Utilities.
+# If a path is required that contains characters such as space, quote the path.
+MT         = mt.exe
+RC         = rc.exe
+ZIP        = zip.exe
+
+# Allow changing C compiler via environment variable CC (default cl.exe)
+# This command macro is not set by default: https://msdn.microsoft.com/en-us/library/ms933742.aspx
+!If "$(CC)" == ""
+CC = cl.exe
+!Endif
+
+!IF "$(VC)"=="6"
+CC_NODEBUG  = $(CC) /O2 /DNDEBUG
+CC_DEBUG    = $(CC) /Od /Gm /Zi /D_DEBUG /GZ
+CFLAGS      = /I. /I../lib /I../include /nologo /W4 /GX /YX /FD /c /DBUILDING_LIBCURL
+!ELSE
+CC_NODEBUG  = $(CC) /O2 /DNDEBUG
+CC_DEBUG    = $(CC) /Od /D_DEBUG /RTC1 /Z7 /LDd
+CFLAGS      = /I. /I ../lib /I../include /nologo /W4 /EHsc /FD /c /DBUILDING_LIBCURL
+!ENDIF
+
+LFLAGS     = /nologo /machine:$(MACHINE)
+LNKDLL     = link.exe /DLL
+# Use lib.exe instead of link.exe as link.exe /lib has the following bad habits:
+# - optimizing options like /opt:ref raises warnings (at least in Visual Studio 2015)
+# - all (including Windows) dependencies are aggregated (as static parts)
+# - link.exe /lib is not documented (anymore) at MSDN
+# Instead of id: just create an archive, that contains all objects
+LNKLIB     = lib.exe
+
+CFLAGS_PDB = /Zi
+LFLAGS_PDB = /incremental:no /opt:ref,icf /DEBUG
+
+CFLAGS_LIBCURL_STATIC  = /DCURL_STATICLIB
+
+WIN_LIBS    = ws2_32.lib wldap32.lib advapi32.lib crypt32.lib
+
+BASE_NAME              = libcurl
+BASE_NAME_DEBUG        = $(BASE_NAME)_debug
+BASE_NAME_STATIC       = $(BASE_NAME)_a
+BASE_NAME_STATIC_DEBUG = $(BASE_NAME_STATIC)_debug
+
+LIB_NAME_STATIC        = $(BASE_NAME_STATIC).lib
+LIB_NAME_STATIC_DEBUG  = $(BASE_NAME_STATIC_DEBUG).lib
+LIB_NAME_DLL           = $(BASE_NAME).dll
+LIB_NAME_IMP           = $(BASE_NAME).lib
+LIB_NAME_DLL_DEBUG     = $(BASE_NAME_DEBUG).dll
+LIB_NAME_IMP_DEBUG     = $(BASE_NAME_DEBUG).lib
+
+PDB_NAME_STATIC        = $(BASE_NAME_STATIC).pdb
+PDB_NAME_STATIC_DEBUG  = $(BASE_NAME_STATIC_DEBUG).pdb
+PDB_NAME_DLL           = $(BASE_NAME).pdb
+PDB_NAME_DLL_DEBUG     = $(BASE_NAME_DEBUG).pdb
+
+# CURL Command section
+PROGRAM_NAME  = curl.exe
+CURL_CFLAGS   = /I../lib /I../include /nologo /W4 /EHsc /FD /c
+CURL_LFLAGS   = /out:$(DIRDIST)\bin\$(PROGRAM_NAME) /subsystem:console $(LFLAGS)
+CURL_RESFLAGS = /i../include
+
+#############################################################
+## Nothing more to do below this line!
+LIBCURL_SRC_DIR = ..\lib
+CURL_SRC_DIR = ..\src
+
+!IFNDEF WITH_DEVEL
+WITH_DEVEL   = ../../deps
+!ENDIF
+DEVEL_INCLUDE= $(WITH_DEVEL)/include
+DEVEL_LIB    = $(WITH_DEVEL)/lib
+
+!IF EXISTS("$(DEVEL_INCLUDE)")
+CFLAGS       = $(CFLAGS) /I"$(DEVEL_INCLUDE)"
+!ENDIF
+!IF EXISTS("$(DEVEL_LIB)")
+LFLAGS       = $(LFLAGS) "/LIBPATH:$(DEVEL_LIB)"
+!ENDIF
+
+!IFDEF SSL_PATH
+SSL_INC_DIR  = $(SSL_PATH)\include
+SSL_LIB_DIR  = $(SSL_PATH)\lib
+SSL_LFLAGS   = $(SSL_LFLAGS) "/LIBPATH:$(SSL_LIB_DIR)"
+!ELSE
+SSL_INC_DIR=$(DEVEL_INCLUDE)\openssl
+SSL_LIB_DIR=$(DEVEL_LIB)
+!ENDIF
+
+!IF "$(WITH_SSL)"=="dll" || "$(WITH_SSL)"=="static"
+!IF EXISTS("$(SSL_LIB_DIR)\libssl.lib")
+SSL_LIBS     = libssl.lib libcrypto.lib
+!ELSE
+SSL_LIBS     = libeay32.lib ssleay32.lib
+!ENDIF
+USE_SSL      = true
+SSL          = $(WITH_SSL)
+!IF "$(WITH_SSL)"=="static"
+WIN_LIBS     = $(WIN_LIBS) gdi32.lib user32.lib crypt32.lib
+!ENDIF
+!ENDIF
+
+!IFDEF USE_SSL
+SSL_CFLAGS   = /DUSE_OPENSSL /I"$(SSL_INC_DIR)"
+!IF "$(ENABLE_OPENSSL_AUTO_LOAD_CONFIG)"=="false"
+SSL_CFLAGS   = $(SSL_CFLAGS) /DCURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG
+!ENDIF
+!ENDIF
+
+!IF "$(ENABLE_WEBSOCKETS)"=="true"
+CFLAGS  = $(CFLAGS) /DUSE_WEBSOCKETS=1
+!ENDIF
+
+!IFDEF NGHTTP2_PATH
+NGHTTP2_INC_DIR  = $(NGHTTP2_PATH)\include
+NGHTTP2_LIB_DIR  = $(NGHTTP2_PATH)\lib
+NGHTTP2_LFLAGS   = $(NGHTTP2_LFLAGS) "/LIBPATH:$(NGHTTP2_LIB_DIR)"
+!ELSE
+NGHTTP2_INC_DIR  = $(DEVEL_INCLUDE)
+NGHTTP2_LIB_DIR  = $(DEVEL_LIB)
+!ENDIF
+
+!IF "$(WITH_NGHTTP2)"=="dll"
+NGHTTP2_CFLAGS   = /DUSE_NGHTTP2 /I"$(NGHTTP2_INC_DIR)"
+NGHTTP2_LIBS     = nghttp2.lib
+!ELSEIF "$(WITH_NGHTTP2)"=="static"
+NGHTTP2_CFLAGS   = /DUSE_NGHTTP2 /DNGHTTP2_STATICLIB /I"$(NGHTTP2_INC_DIR)"
+!IF EXISTS("$(NGHTTP2_LIB_DIR)\nghttp2_static.lib")
+NGHTTP2_LIBS     = nghttp2_static.lib
+!ELSE
+NGHTTP2_LIBS     = nghttp2.lib
+!ENDIF
+!ENDIF
+
+!IFDEF MSH3_PATH
+MSH3_INC_DIR     = $(MSH3_PATH)\include
+MSH3_LIB_DIR     = $(MSH3_PATH)\lib
+MSH3_LFLAGS      = $(MSH3_LFLAGS) "/LIBPATH:$(MSH3_LIB_DIR)"
+!ELSE
+MSH3_INC_DIR     = $(DEVEL_INCLUDE)
+MSH3_LIB_DIR     = $(DEVEL_LIB)
+!ENDIF
+
+!IF "$(WITH_MSH3)"=="dll"
+MSH3_CFLAGS      = /DUSE_MSH3 /I"$(MSH3_INC_DIR)"
+MSH3_LIBS        = msh3.lib
+!ELSEIF "$(WITH_MSH3)"=="static"
+MSH3_CFLAGS      = /DUSE_MSH3 /DMSH3_STATICLIB /I"$(MSH3_INC_DIR)"
+!IF EXISTS("$(NGHTTP2_LIB_DIR)\msh3_static.lib")
+MSH3_LIBS        = msh3_static.lib
+!ELSE
+MSH3_LIBS        = msh3.lib
+!ENDIF
+!ENDIF
+
+!IFDEF MBEDTLS_PATH
+MBEDTLS_INC_DIR  = $(MBEDTLS_PATH)\include
+MBEDTLS_LIB_DIR  = $(MBEDTLS_PATH)\lib
+MBEDTLS_LFLAGS   = $(MBEDTLS_LFLAGS) "/LIBPATH:$(MBEDTLS_LIB_DIR)"
+!ELSE
+MBEDTLS_INC_DIR  = $(DEVEL_INCLUDE)
+MBEDTLS_LIB_DIR  = $(DEVEL_LIB)
+!ENDIF
+
+!IF "$(WITH_MBEDTLS)"=="dll" || "$(WITH_MBEDTLS)"=="static"
+USE_MBEDTLS    = true
+MBEDTLS        = $(WITH_MBEDTLS)
+MBEDTLS_CFLAGS = /DUSE_MBEDTLS /I"$(MBEDTLS_INC_DIR)"
+MBEDTLS_LIBS   = mbedtls.lib mbedcrypto.lib mbedx509.lib
+!ENDIF
+
+
+!IFDEF CARES_PATH
+CARES_INC_DIR  = $(CARES_PATH)\include
+CARES_LIB_DIR  = $(CARES_PATH)\lib
+CARES_LFLAGS   = $(CARES_LFLAGS) "/LIBPATH:$(CARES_LIB_DIR)"
+!ELSE
+CARES_INC_DIR  = $(DEVEL_INCLUDE)/cares
+CARES_LIB_DIR  = $(DEVEL_LIB)
+!ENDIF
+
+!IF "$(WITH_CARES)"=="dll"
+!IF "$(DEBUG)"=="yes"
+CARES_LIBS     = caresd.lib
+!ELSE
+CARES_LIBS     = cares.lib
+!ENDIF
+USE_CARES      = true
+CARES          = dll
+!ELSEIF "$(WITH_CARES)"=="static"
+!IF "$(DEBUG)"=="yes"
+CARES_LIBS     = libcaresd.lib
+!ELSE
+CARES_LIBS     = libcares.lib
+!ENDIF
+USE_CARES      = true
+CARES          = static
+!ENDIF
+
+!IFDEF USE_CARES
+CARES_CFLAGS   = /DUSE_ARES /I"$(CARES_INC_DIR)"
+!IF "$(CARES)"=="static"
+CARES_CFLAGS   = $(CARES_CFLAGS) /DCARES_STATICLIB
+!ENDIF
+!ENDIF
+
+
+!IFDEF ZLIB_PATH
+ZLIB_INC_DIR = $(ZLIB_PATH)\include
+ZLIB_LIB_DIR = $(ZLIB_PATH)\lib
+ZLIB_LFLAGS  = $(ZLIB_LFLAGS) "/LIBPATH:$(ZLIB_LIB_DIR)"
+!ELSE
+ZLIB_INC_DIR = $(DEVEL_INCLUDE)
+ZLIB_LIB_DIR = $(DEVEL_LIB)
+!ENDIF
+
+# Depending on how zlib is built the libraries have different names, we
+# try to handle them all.
+!IF "$(WITH_ZLIB)"=="dll"
+!IF EXISTS("$(ZLIB_LIB_DIR)\zlibwapi.lib")
+ZLIB_LIBS = zlibwapi.lib
+ADDITIONAL_ZLIB_CFLAGS = /DZLIB_WINAPI
+!ELSEIF EXISTS("$(ZLIB_LIB_DIR)\zdll.lib")
+ZLIB_LIBS   = zdll.lib
+!ELSE
+ZLIB_LIBS   = zlib.lib
+!ENDIF
+USE_ZLIB    = true
+ZLIB        = dll
+!ELSEIF "$(WITH_ZLIB)"=="static"
+!IF EXISTS("$(ZLIB_LIB_DIR)\zlibstat.lib")
+ZLIB_LIBS   = zlibstat.lib
+ADDITIONAL_ZLIB_CFLAGS = /DZLIB_WINAPI
+!ELSEIF EXISTS("$(ZLIB_LIB_DIR)\zlibstatic.lib")
+ZLIB_LIBS   = zlibstatic.lib
+!ELSEIF EXISTS("$(ZLIB_LIB_DIR)\zlib.lib")
+ZLIB_LIBS   = zlib.lib
+!ELSE
+ZLIB_LIBS   = zlib_a.lib
+!ENDIF
+USE_ZLIB    = true
+ZLIB        = static
+!ENDIF
+
+!IFDEF USE_ZLIB
+ZLIB_CFLAGS = /DHAVE_LIBZ $(ADDITIONAL_ZLIB_CFLAGS) /I"$(ZLIB_INC_DIR)"
+!ENDIF
+
+
+!IFDEF SSH2_PATH
+SSH2_INC_DIR= $(SSH2_PATH)\include
+SSH2_LIB_DIR= $(SSH2_PATH)\lib
+SSH2_LFLAGS = $(SSH2_LFLAGS) "/LIBPATH:$(SSH2_LIB_DIR)"
+!ELSE
+SSH2_LIB_DIR= $(DEVEL_LIB)
+SSH2_INC_DIR= $(DEVEL_INCLUDE)/libssh2
+!ENDIF
+
+!IF "$(WITH_SSH2)"=="dll"
+SSH2_LIBS   = libssh2.lib
+USE_SSH2    = true
+SSH2        = dll
+!ELSEIF "$(WITH_SSH2)"=="static"
+# libssh2 NMakefile on Windows at default creates a static library without _a suffix
+!IF EXISTS("$(SSH2_LIB_DIR)\libssh2.lib")
+SSH2_LIBS   = libssh2.lib
+!ELSE
+SSH2_LIBS   = libssh2_a.lib
+!ENDIF
+WIN_LIBS     = $(WIN_LIBS) user32.lib
+USE_SSH2    = true
+SSH2        = static
+!ENDIF
+
+!IFDEF USE_SSH2
+SSH2_CFLAGS = /DUSE_LIBSSH2
+SSH2_CFLAGS = $(SSH2_CFLAGS) /I"$(SSH2_INC_DIR)"
+!ENDIF
+
+
+!IFDEF SSH_PATH
+SSH_INC_DIR= $(SSH_PATH)\include
+SSH_LIB_DIR= $(SSH_PATH)\lib
+SSH_LFLAGS = $(SSH_LFLAGS) "/LIBPATH:$(SSH_LIB_DIR)"
+!ELSE
+SSH_LIB_DIR= $(DEVEL_LIB)
+SSH_INC_DIR= $(DEVEL_INCLUDE)
+!ENDIF
+
+!IF "$(WITH_SSH)"=="dll" || "$(WITH_SSH)"=="static"
+SSH_LIBS   = ssh.lib
+USE_SSH    = true
+SSH        = $(WITH_SSH)
+!ENDIF
+
+!IFDEF USE_SSH
+SSH_CFLAGS = /DUSE_LIBSSH
+SSH_CFLAGS = $(SSH_CFLAGS) /I"$(SSH_INC_DIR)"
+!ENDIF
+
+
+!IFNDEF USE_IDN
+USE_IDN   = true
+!ELSEIF "$(USE_IDN)"=="yes"
+USE_IDN   = true
+!ENDIF
+
+!IF "$(USE_IDN)"=="true"
+IDN_CFLAGS = $(IDN_CFLAGS) /DUSE_WIN32_IDN
+WIN_LIBS   = $(WIN_LIBS) Normaliz.lib
+!ENDIF
+
+
+!IFNDEF USE_IPV6
+USE_IPV6  = true
+!ELSEIF "$(USE_IPV6)"=="yes"
+USE_IPV6  = true
+!ENDIF
+
+!IF "$(USE_IPV6)"=="true"
+IPV6_CFLAGS = $(IPV6_CFLAGS) /DUSE_IPV6
+!ENDIF
+
+
+!IFNDEF USE_SSPI
+USE_SSPI  = true
+!ELSEIF "$(USE_SSPI)"=="yes"
+USE_SSPI  = true
+!ENDIF
+
+!IF "$(USE_SSPI)"=="true"
+SSPI_CFLAGS = $(SSPI_CFLAGS) /DUSE_WINDOWS_SSPI
+!ENDIF
+
+
+!IFNDEF USE_SCHANNEL
+!IF "$(USE_SSL)"=="true"
+USE_SCHANNEL  = false
+!ELSE
+USE_SCHANNEL  = $(USE_SSPI)
+!ENDIF
+!ELSEIF "$(USE_SCHANNEL)"=="yes"
+USE_SCHANNEL  = true
+!ENDIF
+
+
+!IF "$(USE_SCHANNEL)"=="true"
+!IF "$(USE_SSPI)"!="true"
+!ERROR cannot build with Schannel without SSPI
+!ENDIF
+SSPI_CFLAGS = $(SSPI_CFLAGS) /DUSE_SCHANNEL
+WIN_LIBS    = $(WIN_LIBS) Crypt32.lib
+!ENDIF
+
+
+!IF "$(GEN_PDB)"=="yes"
+GEN_PDB = true
+!ENDIF
+
+
+!IFDEF EMBED_MANIFEST
+MANIFESTTOOL = $(MT) -manifest $(DIRDIST)\bin\$(PROGRAM_NAME).manifest -outputresource:$(DIRDIST)\bin\$(PROGRAM_NAME);1
+!ELSE
+CURL_RC_FLAGS = $(CURL_RC_FLAGS) /dCURL_EMBED_MANIFEST
+!ENDIF
+
+# Runtime library configuration
+!IF "$(RTLIBCFG)"=="static"
+RTLIB = /MT
+RTLIB_DEBUG = /MTd
+!ELSE
+RTLIB = /MD
+RTLIB_DEBUG  = /MDd
+!ENDIF
+
+!IF "$(MODE)"=="static"
+TARGET = $(LIB_NAME_STATIC)
+CURL_LIBCURL_LIBNAME=$(LIB_NAME_STATIC)
+AS_DLL = false
+CFGSET = true
+!ELSEIF "$(MODE)"=="dll"
+TARGET = $(LIB_NAME_DLL)
+CURL_LIBCURL_LIBNAME=$(LIB_NAME_IMP)
+AS_DLL = true
+CFGSET = true
+!ENDIF
+
+!IF "$(CFGSET)" == "FALSE"
+!ERROR please choose a valid mode
+!ENDIF
+
+
+
+# CURL_XX macros are for the curl.exe command
+
+!IF "$(DEBUG)"=="yes"
+RC_FLAGS = /d_DEBUG /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc
+CURL_CC       = $(CC_DEBUG) $(RTLIB_DEBUG)
+CURL_RC_FLAGS = $(CURL_RC_FLAGS) /i../include /d_DEBUG /Fo $@ $(CURL_SRC_DIR)\curl.rc
+!ELSE
+RC_FLAGS = /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc
+CURL_CC       = $(CC_NODEBUG) $(RTLIB)
+CURL_RC_FLAGS = $(CURL_RC_FLAGS) /i../include /Fo $@ $(CURL_SRC_DIR)\curl.rc
+!ENDIF
+
+!IF "$(AS_DLL)" == "true"
+
+LNK       = $(LNKDLL) $(LFLAGS) $(WIN_LIBS) /out:$(LIB_DIROBJ)\$(TARGET)
+!IF "$(DEBUG)"=="yes"
+TARGET    = $(LIB_NAME_DLL_DEBUG)
+LNK       = $(LNK) /DEBUG /IMPLIB:$(LIB_DIROBJ)\$(LIB_NAME_IMP_DEBUG)
+PDB       = $(PDB_NAME_DLL_DEBUG)
+CURL_LIBS = /IMPLIB:$(LIB_DIROBJ)\$(LIB_NAME_IMP_DEBUG)
+!ELSE
+TARGET    = $(LIB_NAME_DLL)
+LNK       = $(LNK)  /IMPLIB:$(LIB_DIROBJ)\$(LIB_NAME_IMP)
+PDB       = $(PDB_NAME_DLL)
+CURL_LIBS = /IMPLIB:$(LIB_DIROBJ)\$(LIB_NAME_IMP)
+!ENDIF
+RESOURCE  = $(LIB_DIROBJ)\libcurl.res
+
+# AS_DLL
+!ELSE
+
+!IF "$(DEBUG)"=="yes"
+TARGET   = $(LIB_NAME_STATIC_DEBUG)
+PDB      = $(PDB_NAME_STATIC_DEBUG)
+!ELSE
+TARGET   = $(LIB_NAME_STATIC)
+PDB      = $(PDB_NAME_STATIC)
+!ENDIF
+LNK      = $(LNKLIB) /out:$(LIB_DIROBJ)\$(TARGET)
+CURL_CC  = $(CURL_CC) $(CFLAGS_LIBCURL_STATIC)
+
+# AS_DLL
+!ENDIF
+
+!IF "$(USE_SSL)"=="true"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS)
+LFLAGS = $(LFLAGS) $(SSL_LFLAGS) $(SSL_LIBS)
+!ENDIF
+
+!IF "$(USE_MBEDTLS)"=="true"
+CFLAGS = $(CFLAGS) $(MBEDTLS_CFLAGS)
+LFLAGS = $(LFLAGS) $(MBEDTLS_LFLAGS) $(MBEDTLS_LIBS)
+!ENDIF
+
+!IF "$(USE_CARES)"=="true"
+CFLAGS = $(CFLAGS) $(CARES_CFLAGS)
+LFLAGS = $(LFLAGS) $(CARES_LFLAGS) $(CARES_LIBS)
+!ENDIF
+
+!IF "$(USE_ZLIB)"=="true"
+CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS)
+LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS) $(ZLIB_LIBS)
+!ENDIF
+
+!IF "$(USE_SSH2)"=="true"
+CFLAGS = $(CFLAGS) $(SSH2_CFLAGS)
+LFLAGS = $(LFLAGS) $(SSH2_LFLAGS) $(SSH2_LIBS)
+!ENDIF
+
+!IF "$(USE_SSH)"=="true"
+CFLAGS = $(CFLAGS) $(SSH_CFLAGS)
+LFLAGS = $(LFLAGS) $(SSH_LFLAGS) $(SSH_LIBS)
+!ENDIF
+
+!IF "$(USE_IDN)"=="true"
+CFLAGS = $(CFLAGS) $(IDN_CFLAGS)
+!ENDIF
+
+!IF "$(USE_IPV6)"=="true"
+CFLAGS = $(CFLAGS) $(IPV6_CFLAGS)
+!ENDIF
+
+!IF "$(USE_SSPI)"=="true"
+CFLAGS = $(CFLAGS) $(SSPI_CFLAGS)
+!ENDIF
+
+!IF "$(USE_NGHTTP2)"=="true"
+CFLAGS = $(CFLAGS) $(NGHTTP2_CFLAGS)
+LFLAGS = $(LFLAGS) $(NGHTTP2_LFLAGS) $(NGHTTP2_LIBS)
+!ENDIF
+
+!IF "$(USE_MSH3)"=="true"
+CFLAGS = $(CFLAGS) $(MSH3_CFLAGS)
+LFLAGS = $(LFLAGS) $(MSH3_LFLAGS) $(MSH3_LIBS)
+!ENDIF
+
+!IF "$(GEN_PDB)"=="true"
+CFLAGS = $(CFLAGS) $(CFLAGS_PDB) /Fd"$(LIB_DIROBJ)\$(PDB)"
+LFLAGS = $(LFLAGS) $(LFLAGS_PDB)
+!ENDIF
+
+!IF ( "$(USE_SSL)"=="true" && "$(USE_SCHANNEL)"=="true" ) \
+ || ( "$(USE_SSL)"=="true" && "$(USE_MBEDTLS)"=="true" ) \
+ || ( "$(USE_MBEDTLS)"=="true" && "$(USE_SCHANNEL)"=="true" )
+CFLAGS = $(CFLAGS) /DCURL_WITH_MULTI_SSL
+!ENDIF
+
+!IF "$(USE_UNICODE)"=="true"
+CFLAGS = $(CFLAGS) /DUNICODE /D_UNICODE
+!ENDIF
+
+LIB_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-lib
+CURL_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-curl
+
+!IFDEF WITH_PREFIX
+DIRDIST = $(WITH_PREFIX)
+!ELSE
+DIRDIST = ..\builds\$(CONFIG_NAME_LIB)\
+!ENDIF
+
+#
+# curl.exe
+#
+CURL_LINK = link.exe /incremental:no /libpath:"$(DIRDIST)\lib"
+
+!IF "$(CFGSET)" != "FALSE"
+# A mode was provided, so the library can be built.
+#
+!include CURL_OBJS.inc
+!include LIBCURL_OBJS.inc
+
+!IF "$(AS_DLL)" == "true"
+LIB_OBJS = $(LIBCURL_OBJS) $(RESOURCE)
+!ELSE
+LIB_OBJS = $(LIBCURL_OBJS)
+!ENDIF
+
+EXE_OBJS = $(CURL_OBJS) $(CURL_DIROBJ)\curl.res
+
+all : $(TARGET) $(PROGRAM_NAME)
+
+package: $(TARGET)
+       @cd $(DIRDIST)
+       @-$(ZIP) -9 -q -r ..\$(CONFIG_NAME_LIB).zip .>nul 2<&1
+       @cd $(MAKEDIR)
+
+$(TARGET): $(LIB_OBJS) $(LIB_DIROBJ) $(DIRDIST)
+       @echo Using SSL: $(USE_SSL)
+       @echo Using NGHTTP2: $(USE_NGHTTP2)
+       @echo Using MSH3: $(USE_MSH3)
+       @echo Using c-ares: $(USE_CARES)
+       @echo Using SSH2: $(USE_SSH2)
+       @echo Using SSH: $(USE_SSH)
+       @echo Using ZLIB: $(USE_ZLIB)
+       @echo Using IDN:  $(USE_IDN)
+       @echo Using IPv6: $(USE_IPV6)
+       @echo Using SSPI: $(USE_SSPI)
+       @echo Using Schannel: $(USE_SCHANNEL)
+       @echo CFLAGS:     $(CFLAGS)
+       @echo LFLAGS:     $(LFLAGS)
+       @echo GenPDB:     $(GEN_PDB)
+       @echo Debug:      $(DEBUG)
+       @echo Machine:    $(MACHINE)
+       $(LNK) $(LIB_OBJS)
+       @echo Copying libs...
+       @if exist $(LIB_DIROBJ)\$(LIB_NAME_DLL) copy $(LIB_DIROBJ)\$(LIB_NAME_DLL)       $(DIRDIST)\bin\ /y >nul 2<&1
+       @if exist $(LIB_DIROBJ)\$(LIB_NAME_STATIC) copy $(LIB_DIROBJ)\$(LIB_NAME_STATIC)    $(DIRDIST)\lib\ /y >nul 2<&1
+       @if exist $(LIB_DIROBJ)\$(LIB_NAME_DLL_DEBUG) copy $(LIB_DIROBJ)\$(LIB_NAME_DLL_DEBUG) $(DIRDIST)\bin\ /y >nul 2<&1
+       @if exist $(LIB_DIROBJ)\$(LIB_NAME_STATIC_DEBUG) copy $(LIB_DIROBJ)\$(LIB_NAME_STATIC_DEBUG) $(DIRDIST)\lib\ /y >nul 2<&1
+       @if exist $(LIB_DIROBJ)\$(LIB_NAME_IMP) copy $(LIB_DIROBJ)\$(LIB_NAME_IMP)       $(DIRDIST)\lib\ /y >nul 2<&1
+       @if exist $(LIB_DIROBJ)\$(LIB_NAME_IMP_DEBUG) copy $(LIB_DIROBJ)\$(LIB_NAME_IMP_DEBUG) $(DIRDIST)\lib >nul 2<&1
+       @-copy $(LIB_DIROBJ)\*.exp                 $(DIRDIST)\lib /y >nul 2<&1
+       @-copy $(LIB_DIROBJ)\*.pdb                 $(DIRDIST)\lib /y >nul 2<&1
+       @-copy ..\include\curl\*.h   $(DIRDIST)\include\curl\ /y  >nul 2<&1
+
+$(LIB_OBJS): $(LIB_DIROBJ) $(DIRDIST)
+
+$(DIRDIST):
+       @if not exist "$(DIRDIST)\bin" mkdir $(DIRDIST)\bin
+       @if not exist "$(DIRDIST)\include" mkdir $(DIRDIST)\include
+       @if not exist "$(DIRDIST)\include\curl" mkdir $(DIRDIST)\include\curl
+       @if not exist "$(DIRDIST)\lib" mkdir $(DIRDIST)\lib
+
+$(LIB_DIROBJ):
+       @if not exist "$(LIB_DIROBJ)" mkdir $(LIB_DIROBJ)
+       @if not exist "$(LIB_DIROBJ)\vauth" mkdir $(LIB_DIROBJ)\vauth
+       @if not exist "$(LIB_DIROBJ)\vtls" mkdir $(LIB_DIROBJ)\vtls
+       @if not exist "$(LIB_DIROBJ)\vssh" mkdir $(LIB_DIROBJ)\vssh
+       @if not exist "$(LIB_DIROBJ)\vquic" mkdir $(LIB_DIROBJ)\vquic
+
+$(CURL_DIROBJ):
+       @if not exist "$(CURL_DIROBJ)" mkdir $(CURL_DIROBJ)
+# we need a lib dir for the portability functions from libcurl
+# we use the .c directly here
+       @if not exist "$(CURL_DIROBJ)" mkdir $(CURL_DIROBJ)\lib
+
+.SUFFIXES: .c .obj .res
+
+{$(LIBCURL_SRC_DIR)\}.c{$(LIB_DIROBJ)\}.obj::
+       $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\\"  $<
+
+{$(LIBCURL_SRC_DIR)\vauth\}.c{$(LIB_DIROBJ)\vauth\}.obj::
+       $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vauth\\"  $<
+
+{$(LIBCURL_SRC_DIR)\vtls\}.c{$(LIB_DIROBJ)\vtls\}.obj::
+       $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vtls\\"  $<
+
+{$(LIBCURL_SRC_DIR)\vssh\}.c{$(LIB_DIROBJ)\vssh\}.obj::
+       $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vssh\\"  $<
+
+{$(LIBCURL_SRC_DIR)\vquic\}.c{$(LIB_DIROBJ)\vquic\}.obj::
+       $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vquic\\"  $<
+
+$(LIB_DIROBJ)\libcurl.res: $(LIBCURL_SRC_DIR)\libcurl.rc
+       $(RC) $(RC_FLAGS)
+
+#
+# curl.exe
+#
+
+
+!IF "$(MODE)"=="static"
+!IF "$(DEBUG)"=="yes"
+CURL_LIBCURL_LIBNAME=$(LIB_NAME_STATIC_DEBUG)
+!ELSE
+CURL_LIBCURL_LIBNAME=$(LIB_NAME_STATIC)
+!ENDIF
+!ELSEIF "$(MODE)"=="dll"
+!IF "$(DEBUG)"=="yes"
+CURL_LIBCURL_LIBNAME=$(LIB_NAME_IMP_DEBUG)
+!ELSE
+CURL_LIBCURL_LIBNAME=$(LIB_NAME_IMP)
+!ENDIF
+!ENDIF
+
+CURL_FROM_LIBCURL=$(CURL_DIROBJ)\tool_hugehelp.obj \
+ $(CURL_DIROBJ)\nonblock.obj \
+ $(CURL_DIROBJ)\strtoofft.obj \
+ $(CURL_DIROBJ)\warnless.obj \
+ $(CURL_DIROBJ)\curl_multibyte.obj \
+ $(CURL_DIROBJ)\version_win32.obj \
+ $(CURL_DIROBJ)\dynbuf.obj \
+ $(CURL_DIROBJ)\base64.obj
+
+$(PROGRAM_NAME): $(CURL_DIROBJ) $(CURL_FROM_LIBCURL) $(EXE_OBJS)
+       $(CURL_LINK) $(CURL_LFLAGS) $(CURL_LIBCURL_LIBNAME) $(WIN_LIBS) $(CURL_FROM_LIBCURL) $(EXE_OBJS)
+       $(MANIFESTTOOL)
+
+{$(CURL_SRC_DIR)\}.c{$(CURL_DIROBJ)\}.obj::
+       $(CURL_CC) $(CURL_CFLAGS) /Fo"$(CURL_DIROBJ)\\"  $<
+
+$(CURL_DIROBJ)\tool_hugehelp.obj: $(CURL_SRC_DIR)\tool_hugehelp.c
+       $(CURL_CC) $(CURL_CFLAGS) /Zm200 /Fo"$@" $(CURL_SRC_DIR)\tool_hugehelp.c
+$(CURL_DIROBJ)\nonblock.obj: ../lib/nonblock.c
+       $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/nonblock.c
+$(CURL_DIROBJ)\strtoofft.obj: ../lib/strtoofft.c
+       $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/strtoofft.c
+$(CURL_DIROBJ)\warnless.obj: ../lib/warnless.c
+       $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/warnless.c
+$(CURL_DIROBJ)\curl_multibyte.obj: ../lib/curl_multibyte.c
+       $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curl_multibyte.c
+$(CURL_DIROBJ)\version_win32.obj: ../lib/version_win32.c
+       $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/version_win32.c
+$(CURL_DIROBJ)\dynbuf.obj: ../lib/dynbuf.c
+       $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/dynbuf.c
+$(CURL_DIROBJ)\base64.obj: ../lib/base64.c
+       $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/base64.c
+$(CURL_DIROBJ)\curl.res: $(CURL_SRC_DIR)\curl.rc
+       $(RC) $(CURL_RC_FLAGS)
+
+!ENDIF  # End of case where a config was provided.
+
+# Makefile.vc's clean removes (LIB)CURL_DIROBJ and DIRDIST dirs then calls
+# this clean. Note those are the original directories we control and not the
+# directories possibly modified by this makefile to point to user-specified
+# directories.
+# For example, don't remove DIRDIST here since it may contain user files if it
+# has been changed by WITH_PREFIX to a different output dir (eg C:\usr\local).
+clean:
+       @-erase /s *.dll 2> NUL
+       @-erase /s *.exp 2> NUL
+       @-erase /s *.idb 2> NUL
+       @-erase /s *.lib 2> NUL
+       @-erase /s *.obj 2> NUL
+       @-erase /s *.pch 2> NUL
+       @-erase /s *.pdb 2> NUL
+       @-erase /s *.res 2> NUL