build: drop the winbuild build system
No binary (build failed)
—
(log yok)
| @@ -75,7 +75,6 @@ build: | |
| packages/**,\ | |
| plan9/**,\ | |
| projects/**,\ | |
| - | winbuild/**,\ |
| lib/libcurl.def,\ | |
| tests/cmake/**\ | |
| }" | |
| @@ -520,6 +519,5 @@ Windows: | |
| m4/curl-schannel.m4,\ | |
| projects/**,\ | |
| src/tool_doswin.c,\ | |
| - | winbuild/**,\ |
| lib/libcurl.def\ | |
| }" | |
| @@ -14,7 +14,6 @@ codespell \ | |
| --skip 'docs/THANKS' \ | |
| --skip 'packages/*' \ | |
| --skip 'scripts/wcurl' \ | |
| - | --skip 'winbuild/*' \ |
| --ignore-regex '.*spellchecker:disable-line' \ | |
| --ignore-words '.github/scripts/codespell-ignore.txt' \ | |
| $(git ls-files) | |
| @@ -30,7 +30,7 @@ my @tabs = ( | |
| "^m4/zz40-xc-ovr.m4", | |
| "Makefile\\.(am|example)\$", | |
| "/mkfile", | |
| - | "\\.(sln|vc)\$", |
| + | "\\.sln\$", |
| "^tests/data/test", | |
| ); | |
| @@ -40,7 +40,6 @@ my @mixed_eol = ( | |
| my @need_crlf = ( | |
| "\\.(bat|sln)\$", | |
| - | "^winbuild/.+\\.md\$", |
| ); | |
| my @space_at_eol = ( | |
| @@ -25,5 +25,4 @@ extend-exclude = [ | |
| "docs/THANKS", | |
| "packages/*", | |
| "scripts/wcurl", | |
| - | "winbuild/*", |
| ] | |
| @@ -18,7 +18,6 @@ name: 'Source' | |
| - 'Dockerfile' | |
| - 'plan9/**' | |
| - 'tests/data/**' | |
| - | - 'winbuild/**' |
| pull_request: | |
| branches: | |
| - master | |
| @@ -29,7 +28,6 @@ name: 'Source' | |
| - 'Dockerfile' | |
| - 'plan9/**' | |
| - 'tests/data/**' | |
| - | - 'winbuild/**' |
| permissions: {} | |
| @@ -17,7 +17,6 @@ name: 'curl-for-win' | |
| - 'packages/**' | |
| - 'plan9/**' | |
| - 'projects/**' | |
| - | - 'winbuild/**' |
| pull_request: | |
| branches: | |
| - master | |
| @@ -29,7 +28,6 @@ name: 'curl-for-win' | |
| - 'packages/**' | |
| - 'plan9/**' | |
| - 'projects/**' | |
| - | - 'winbuild/**' |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} | |
| @@ -20,7 +20,6 @@ name: 'Fuzzer' | |
| - 'plan9/**' | |
| - 'projects/**' | |
| - 'tests/data/**' | |
| - | - 'winbuild/**' |
| pull_request: | |
| branches: | |
| - master | |
| @@ -35,7 +34,6 @@ name: 'Fuzzer' | |
| - 'plan9/**' | |
| - 'projects/**' | |
| - 'tests/data/**' | |
| - | - 'winbuild/**' |
| permissions: {} | |
| @@ -17,7 +17,6 @@ name: 'Linux HTTP/3' | |
| - 'packages/**' | |
| - 'plan9/**' | |
| - 'projects/**' | |
| - | - 'winbuild/**' |
| pull_request: | |
| branches: | |
| - master | |
| @@ -29,7 +28,6 @@ name: 'Linux HTTP/3' | |
| - 'packages/**' | |
| - 'plan9/**' | |
| - 'projects/**' | |
| - | - 'winbuild/**' |
| concurrency: | |
| # Hardcoded workflow filename as workflow name above is just Linux again | |
| @@ -31,7 +31,6 @@ name: 'Old Linux' | |
| - 'packages/**' | |
| - 'plan9/**' | |
| - 'projects/**' | |
| - | - 'winbuild/**' |
| pull_request: | |
| branches: | |
| - master | |
| @@ -43,7 +42,6 @@ name: 'Old Linux' | |
| - 'packages/**' | |
| - 'plan9/**' | |
| - 'projects/**' | |
| - | - 'winbuild/**' |
| permissions: {} | |
| @@ -16,7 +16,6 @@ name: 'Linux' | |
| - 'packages/**' | |
| - 'plan9/**' | |
| - 'projects/**' | |
| - | - 'winbuild/**' |
| pull_request: | |
| branches: | |
| - master | |
| @@ -27,7 +26,6 @@ name: 'Linux' | |
| - 'packages/**' | |
| - 'plan9/**' | |
| - 'projects/**' | |
| - | - 'winbuild/**' |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} | |
| @@ -17,7 +17,6 @@ name: 'macOS' | |
| - 'packages/**' | |
| - 'plan9/**' | |
| - 'projects/**' | |
| - | - 'winbuild/**' |
| pull_request: | |
| branches: | |
| - master | |
| @@ -29,7 +28,6 @@ name: 'macOS' | |
| - 'packages/**' | |
| - 'plan9/**' | |
| - 'projects/**' | |
| - | - 'winbuild/**' |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} | |
| @@ -17,7 +17,6 @@ name: 'non-native' | |
| - 'packages/**' | |
| - 'plan9/**' | |
| - 'projects/**' | |
| - | - 'winbuild/**' |
| pull_request: | |
| branches: | |
| - master | |
| @@ -29,7 +28,6 @@ name: 'non-native' | |
| - 'packages/**' | |
| - 'plan9/**' | |
| - 'projects/**' | |
| - | - 'winbuild/**' |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} | |
| @@ -17,7 +17,6 @@ name: 'Windows' | |
| - 'packages/**' | |
| - 'plan9/**' | |
| - 'projects/**' | |
| - | - 'winbuild/**' |
| pull_request: | |
| branches: | |
| - master | |
| @@ -29,7 +28,6 @@ name: 'Windows' | |
| - 'packages/**' | |
| - 'plan9/**' | |
| - 'projects/**' | |
| - | - 'winbuild/**' |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} | |
| @@ -28,7 +28,6 @@ | |
| /.vs | |
| /bld/ | |
| /build/ | |
| - | /builds/ |
| /stats/ | |
| __pycache__ | |
| Debug | |
| @@ -66,9 +66,6 @@ CMAKE_DIST = \ | |
| VC_DIST = projects/README.md projects/generate.bat | |
| - | WINBUILD_DIST = winbuild/README.md \ |
| - | winbuild/MakefileBuild.vc winbuild/Makefile.vc winbuild/makedebug.bat |
| - | |
| PLAN9_DIST = plan9/include/mkfile \ | |
| plan9/include/mkfile \ | |
| plan9/mkfile.proto \ | |
| @@ -80,7 +77,7 @@ PLAN9_DIST = plan9/include/mkfile \ | |
| plan9/src/mkfile | |
| EXTRA_DIST = CHANGES.md COPYING RELEASE-NOTES Dockerfile .editorconfig \ | |
| - | $(CMAKE_DIST) $(VC_DIST) $(WINBUILD_DIST) $(PLAN9_DIST) |
| + | $(CMAKE_DIST) $(VC_DIST) $(PLAN9_DIST) |
| DISTCLEANFILES = buildinfo.txt | |
| @@ -96,29 +96,6 @@ elif [ "${BUILD_SYSTEM}" = 'VisualStudioSolution' ]; then | |
| msbuild.exe -maxcpucount "-property:Configuration=${PRJ_CFG}" "Windows/${VC_VERSION}/curl-all.sln" | |
| ) | |
| curl="build/Win32/${VC_VERSION}/${PRJ_CFG}/curld.exe" | |
| - | elif [ "${BUILD_SYSTEM}" = 'winbuild_vs2015' ]; then |
| - | ( |
| - | cd winbuild |
| - | cat << EOF > _make.bat |
| - | call "C:/Program Files/Microsoft SDKs/Windows/v7.1/Bin/SetEnv.cmd" /x64 |
| - | call "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/vcvarsall.bat" x86_amd64 |
| - | nmake -f Makefile.vc mode=dll VC=14 "SSL_PATH=${openssl_root_win}" WITH_SSL=dll MACHINE=x64 DEBUG=${DEBUG} ENABLE_UNICODE=${ENABLE_UNICODE} WINBUILD_ACKNOWLEDGE_DEPRECATED=yes |
| - | EOF |
| - | ./_make.bat |
| - | rm _make.bat |
| - | ) |
| - | curl="builds/libcurl-vc14-x64-${PATHPART}-dll-ssl-dll-ipv6-sspi/bin/curl.exe" |
| - | elif [ "${BUILD_SYSTEM}" = 'winbuild_vs2017' ]; then |
| - | ( |
| - | cd winbuild |
| - | cat << EOF > _make.bat |
| - | call "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Auxiliary/Build/vcvars64.bat" |
| - | nmake -f Makefile.vc mode=dll VC=14.10 "SSL_PATH=${openssl_root_win}" WITH_SSL=dll MACHINE=x64 DEBUG=${DEBUG} ENABLE_UNICODE=${ENABLE_UNICODE} WINBUILD_ACKNOWLEDGE_DEPRECATED=yes |
| - | EOF |
| - | ./_make.bat |
| - | rm _make.bat |
| - | ) |
| - | curl="builds/libcurl-vc14.10-x64-${PATHPART}-dll-ssl-dll-ipv6-sspi/bin/curl.exe" |
| fi | |
| find . \( -name '*.exe' -o -name '*.dll' -o -name '*.lib' -o -name '*.pdb' \) -exec file '{}' \; | |
| @@ -147,57 +147,6 @@ environment: | |
| PRJ_CFG: Debug | |
| HTTP_ONLY: 'ON' | |
| - | # winbuild-based builds |
| - | |
| - | - job_name: 'winbuild, VS2015, Debug, x64, OpenSSL 1.1.1, Build-only' |
| - | APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' |
| - | BUILD_SYSTEM: winbuild_vs2015 |
| - | DEBUG: 'yes' |
| - | PATHPART: debug |
| - | ENABLE_UNICODE: 'no' |
| - | - job_name: 'winbuild, VS2015, Release, x64, OpenSSL 1.1.1, Build-only' |
| - | APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' |
| - | BUILD_SYSTEM: winbuild_vs2015 |
| - | DEBUG: 'no' |
| - | PATHPART: release |
| - | ENABLE_UNICODE: 'no' |
| - | - job_name: 'winbuild, VS2017, Debug, x64, OpenSSL 1.1.1, Build-only' |
| - | APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' |
| - | BUILD_SYSTEM: winbuild_vs2017 |
| - | DEBUG: 'yes' |
| - | PATHPART: debug |
| - | ENABLE_UNICODE: 'no' |
| - | - job_name: 'winbuild, VS2017, Release, x64, OpenSSL 1.1.1, Build-only' |
| - | APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' |
| - | BUILD_SYSTEM: winbuild_vs2017 |
| - | DEBUG: 'no' |
| - | PATHPART: release |
| - | ENABLE_UNICODE: 'no' |
| - | - job_name: 'winbuild, VS2015, Debug, x64, OpenSSL 1.1.1, Unicode, Build-only' |
| - | APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' |
| - | BUILD_SYSTEM: winbuild_vs2015 |
| - | DEBUG: 'yes' |
| - | PATHPART: debug |
| - | ENABLE_UNICODE: 'yes' |
| - | - job_name: 'winbuild, VS2015, Release, x64, OpenSSL 1.1.1, Unicode, Build-only' |
| - | APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' |
| - | BUILD_SYSTEM: winbuild_vs2015 |
| - | DEBUG: 'no' |
| - | PATHPART: release |
| - | ENABLE_UNICODE: 'yes' |
| - | - job_name: 'winbuild, VS2017, Debug, x64, OpenSSL 1.1.1, Unicode, Build-only' |
| - | APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' |
| - | BUILD_SYSTEM: winbuild_vs2017 |
| - | DEBUG: 'yes' |
| - | PATHPART: debug |
| - | ENABLE_UNICODE: 'yes' |
| - | - job_name: 'winbuild, VS2017, Release, x64, OpenSSL 1.1.1, Unicode, Build-only' |
| - | APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' |
| - | BUILD_SYSTEM: winbuild_vs2017 |
| - | DEBUG: 'no' |
| - | PATHPART: release |
| - | ENABLE_UNICODE: 'yes' |
| - | |
| # generated VisualStudioSolution-based builds | |
| - job_name: 'VisualStudioSolution, VS2013, Debug, x86, Schannel, Build-only' | |
| @@ -12,13 +12,6 @@ email the | |
| as soon as possible and explain to us why this is a problem for you and | |
| how your use case cannot be satisfied properly using a workaround. | |
| - | ## winbuild build system |
| - | |
| - | curl drops support for the winbuild build method after September 2025. |
| - | |
| - | We recommend migrating to CMake. See the migration guide in |
| - | `docs/INSTALL-CMAKE.md`. |
| - | |
| ## Windows CE | |
| Windows CE "mainstream support" ended on October 9, 2018, and "Extended | |
| @@ -79,3 +72,4 @@ We remove support for this OpenSSL version from curl in June 2026. | |
| - Secure Transport (removed in 8.15.0) | |
| - BearSSL (removed in 8.15.0) | |
| - msh3 (removed in 8.16.0) | |
| + | - winbuild build system (removed in 8.17.0) |
| @@ -23,9 +23,7 @@ It consists of the following steps after you have unpacked the source. | |
| We recommend building with CMake on Windows. For instructions on migrating | |
| from the `projects/Windows` Visual Studio solution files, see | |
| - | [this section](#migrating-from-visual-studio-ide-project-files). For |
| - | instructions on migrating from the winbuild builds, see |
| - | [the following section](#migrating-from-winbuild-builds). |
| + | [this section](#migrating-from-visual-studio-ide-project-files). |
| ## Using `cmake` | |
| @@ -546,59 +544,3 @@ We do *not* specify `-DCMAKE_BUILD_TYPE=Debug` here as we might do for the | |
| `"NMake Makefiles"` generator because the Visual Studio generators are | |
| [multi-config generators](https://cmake.org/cmake/help/latest/prop_gbl/GENERATOR_IS_MULTI_CONFIG.html) | |
| and therefore ignore the value of `CMAKE_BUILD_TYPE`. | |
| - | |
| - | # Migrating from winbuild builds |
| - | |
| - | We recommend CMake to build curl with MSVC. The winbuild build system is |
| - | deprecated and is going to be removed in September 2025 in favor of the CMake |
| - | build system. |
| - | |
| - | In CMake you can customize the path of dependencies by passing the absolute |
| - | header path and the full path of the library via `*_INCLUDE_DIR` and |
| - | `*_LIBRARY` options (see the complete list in the option listing above). |
| - | The full path to the library can point to a static library or an import |
| - | library, which defines if the dependency is linked as a dll or statically. |
| - | For OpenSSL this works |
| - | [differently](https://cmake.org/cmake/help/latest/module/FindOpenSSL.html): |
| - | You can pass the root directory of the OpenSSL installation via |
| - | `OPENSSL_ROOT_DIR`, then pass `OPENSSL_USE_STATIC_LIBS=ON` to select static |
| - | libs. |
| - | |
| - | winbuild options | Equivalent CMake options |
| - | :-------------------------------- | :-------------------------------- |
| - | `DEBUG` | `CMAKE_BUILD_TYPE=Debug` |
| - | `GEN_PDB` | `CMAKE_EXE_LINKER_FLAGS=/Fd<path>`, `CMAKE_SHARED_LINKER_FLAGS=/Fd<path>` |
| - | `LIB_NAME_DLL`, `LIB_NAME_STATIC` | `IMPORT_LIB_SUFFIX`, `LIBCURL_OUTPUT_NAME`, `STATIC_LIB_SUFFIX` |
| - | `VC`: `<N>` | see the CMake [Visual Studio generators](https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html#visual-studio-generators) |
| - | `MACHINE`: `x64`, `x86` | `-A x64`, `-A Win32` |
| - | `MODE`: `dll`, `static` | `BUILD_SHARED_LIBS=ON/OFF`, `BUILD_STATIC_LIBS=ON/OFF`, `BUILD_STATIC_CURL=ON/OFF` (default: dll) |
| - | `RTLIBCFG`: `static` | `CURL_STATIC_CRT=ON` |
| - | `ENABLE_IDN` | `USE_WIN32_IDN=ON` |
| - | `ENABLE_IPV6` | `ENABLE_IPV6=ON` |
| - | `ENABLE_NGHTTP2` | `USE_NGHTTP2=ON` |
| - | `ENABLE_OPENSSL_AUTO_LOAD_CONFIG` | `CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG=OFF` (default) |
| - | `ENABLE_SCHANNEL` | `CURL_USE_SCHANNEL=ON` |
| - | `ENABLE_SSPI` | `CURL_WINDOWS_SSPI=ON` (default with Schannel) |
| - | `ENABLE_UNICODE` | `ENABLE_UNICODE=ON` |
| - | `WITH_PREFIX` | `CMAKE_INSTALL_PREFIX=<path>` |
| - | `WITH_DEVEL` | see individual `*_INCLUDE_DIR` and `*_LIBRARY` options and `OPENSSL_ROOT_DIR` |
| - | `WITH_CARES`, `CARES_PATH` | `ENABLE_ARES=ON`, optional: `CARES_INCLUDE_DIR`, `CARES_LIBRARY` |
| - | `WITH_MBEDTLS`, `MBEDTLS_PATH` | `CURL_USE_MBEDTLS=ON`, optional: `MBEDTLS_INCLUDE_DIR`, `MBEDTLS_LIBRARY`, `MBEDX509_LIBRARY`, `MBEDCRYPTO_LIBRARY` |
| - | `WITH_NGHTTP2`, `NGHTTP2_PATH` | `USE_NGHTTP2=ON`, optional: `NGHTTP2_INCLUDE_DIR`, `NGHTTP2_LIBRARY` |
| - | `WITH_SSH`, `SSH_PATH` | `CURL_USE_LIBSSH=ON`, optional: `LIBSSH_INCLUDE_DIR`, `LIBSSH_LIBRARY` |
| - | `WITH_SSH2`, `SSH2_PATH` | `CURL_USE_LIBSSH2=ON`, optional: `LIBSSH2_INCLUDE_DIR`, `LIBSSH2_LIBRARY` |
| - | `WITH_SSL`, `SSL_PATH` | `CURL_USE_OPENSSL=ON`, optional: `OPENSSL_ROOT_DIR`, `OPENSSL_USE_STATIC_LIBS=ON` |
| - | `WITH_WOLFSSL`, `WOLFSSL_PATH` | `CURL_USE_WOLFSSL=ON`, optional: `WOLFSSL_INCLUDE_DIR`, `WOLFSSL_LIBRARY` |
| - | `WITH_ZLIB`, `ZLIB_PATH` | `CURL_ZLIB=ON`, optional: `ZLIB_INCLUDE_DIR`, `ZLIB_LIBRARY` |
| - | |
| - | For example this command-line: |
| - | |
| - | > nmake -f Makefile.vc VC=17 MACHINE=x64 DEBUG=ON mode=dll SSL_PATH=C:\OpenSSL WITH_SSL=dll ENABLE_UNICODE=ON |
| - | |
| - | translates to: |
| - | |
| - | > cmake . -G "Visual Studio 17 2022" -A x64 -DBUILD_SHARED_LIBS=ON -DOPENSSL_ROOT_DIR=C:\OpenSSL -DCURL_USE_OPENSSL=ON -DENABLE_UNICODE=ON -DCURL_USE_LIBPSL=OFF |
| - | > cmake --build . --config Debug |
| - | |
| - | We use `--config` with `cmake --build` because the Visual Studio CMake |
| - | generators are multi-config and therefore ignore `CMAKE_BUILD_TYPE`. |
| @@ -347,7 +347,6 @@ If you want to set any of these defines you have the following options: | |
| - Modify `lib/config-win32.h` | |
| - Modify `lib/curl_setup.h` | |
| - | - Modify `winbuild/Makefile.vc` |
| - Modify the "Preprocessor Definitions" in the libcurl project | |
| Note: The pre-processor settings can be found using the Visual Studio IDE | |
| @@ -362,7 +361,6 @@ visible to libcurl and curl compilation processes. To set this definition you | |
| have the following alternatives: | |
| - Modify `lib/config-win32.h` | |
| - | - Modify `winbuild/Makefile.vc` |
| - Modify the "Preprocessor Definitions" in the libcurl project | |
| Note: The pre-processor settings can be found using the Visual Studio IDE | |
| @@ -16,9 +16,6 @@ You need to generate the project files before using them. Please run "generate | |
| To generate project files for recent versions of Visual Studio instead, use | |
| cmake. Refer to INSTALL-CMAKE.md in the docs directory. | |
| - | Another way to build curl using Visual Studio is without project files. Refer |
| - | to README in the winbuild directory. |
| - | |
| ## Directory Structure | |
| The following directory structure is used for the legacy project files: | |
| @@ -1,6 +0,0 @@ | |
| - | # Copyright (C) Daniel Stenberg, <[email protected]>, et al. |
| - | # |
| - | # SPDX-License-Identifier: curl |
| - | |
| - | *.idb |
| - | *.inc |
| @@ -1,308 +0,0 @@ | |
| - | #*************************************************************************** |
| - | # _ _ ____ _ |
| - | # Project ___| | | | _ \| | |
| - | # / __| | | | |_) | | |
| - | # | (__| |_| | _ <| |___ |
| - | # \___|\___/|_| \_\_____| |
| - | # |
| - | # Copyright (C) Daniel Stenberg, <[email protected]>, 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 |
| - | # |
| - | #*************************************************************************** |
| - | |
| - | !MESSAGE |
| - | !MESSAGE WARNING: |
| - | !MESSAGE |
| - | !MESSAGE The winbuild build system is deprecated and will be removed in |
| - | !MESSAGE September 2025 in favor of the CMake build system. |
| - | !MESSAGE |
| - | !MESSAGE Please see docs/INSTALL-CMAKE.md : "Migrating from winbuild builds" |
| - | !MESSAGE |
| - | !MESSAGE To use the winbuild build system you must acknowledge this warning by |
| - | !MESSAGE setting command line option WINBUILD_ACKNOWLEDGE_DEPRECATED=yes |
| - | !MESSAGE |
| - | !IF "$(WINBUILD_ACKNOWLEDGE_DEPRECATED)"!="yes" |
| - | !ERROR The user must acknowledge the deprecation warning to continue. |
| - | !ENDIF |
| - | |
| - | !IF "$(MODE)"=="static" |
| - | TARGET = $(LIB_NAME_STATIC) |
| - | AS_DLL = false |
| - | CFGSET=true |
| - | !ELSEIF "$(MODE)"=="dll" |
| - | TARGET = $(LIB_NAME_DLL) |
| - | AS_DLL = true |
| - | CFGSET=true |
| - | !ELSE |
| - | !MESSAGE Invalid mode: $(MODE) |
| - | |
| - | ####################### |
| - | # Usage |
| - | # |
| - | |
| - | !MESSAGE See winbuild/README.md for usage |
| - | !ERROR please choose a valid mode |
| - | |
| - | !ENDIF |
| - | |
| - | !INCLUDE "../lib/Makefile.inc" |
| - | CSOURCES=$(CSOURCES: = ) |
| - | LIBCURL_OBJS=$(CSOURCES:.c=.obj) |
| - | |
| - | !INCLUDE "../src/Makefile.inc" |
| - | CURL_CFILES=$(CURL_CFILES: = ) |
| - | CURL_OBJS=$(CURL_CFILES:.c=.obj) |
| - | |
| - | |
| - | # backwards compatible check for USE_SSPI |
| - | !IFDEF USE_SSPI |
| - | ENABLE_SSPI = $(USE_SSPI) |
| - | !ENDIF |
| - | |
| - | # default options |
| - | |
| - | !IFNDEF MACHINE |
| - | # Note: nmake magically changes the value of PROCESSOR_ARCHITECTURE from "AMD64" |
| - | # to "x86" when building in a 32 bit build environment on a 64 bit machine. |
| - | !IF "$(PROCESSOR_ARCHITECTURE)"=="AMD64" |
| - | MACHINE = x64 |
| - | !ELSE |
| - | MACHINE = x86 |
| - | !ENDIF |
| - | !ENDIF |
| - | |
| - | !IFNDEF ENABLE_IDN |
| - | USE_IDN = true |
| - | !ELSEIF "$(ENABLE_IDN)"=="yes" |
| - | USE_IDN = true |
| - | !ELSEIF "$(ENABLE_IDN)"=="no" |
| - | USE_IDN = false |
| - | !ENDIF |
| - | |
| - | !IFNDEF ENABLE_IPV6 |
| - | USE_IPV6 = true |
| - | !ELSEIF "$(ENABLE_IPV6)"=="yes" |
| - | USE_IPV6 = true |
| - | !ELSEIF "$(ENABLE_IPV6)"=="no" |
| - | USE_IPV6 = false |
| - | !ENDIF |
| - | |
| - | !IFNDEF ENABLE_SSPI |
| - | USE_SSPI = true |
| - | !ELSEIF "$(ENABLE_SSPI)"=="yes" |
| - | USE_SSPI = true |
| - | !ELSEIF "$(ENABLE_SSPI)"=="no" |
| - | USE_SSPI = false |
| - | !ENDIF |
| - | |
| - | !IFNDEF ENABLE_SCHANNEL |
| - | !IF DEFINED(WITH_SSL) || DEFINED(WITH_MBEDTLS) || DEFINED(WITH_WOLFSSL) |
| - | USE_SCHANNEL = false |
| - | !ELSE |
| - | USE_SCHANNEL = $(USE_SSPI) |
| - | !ENDIF |
| - | !ELSEIF "$(ENABLE_SCHANNEL)"=="yes" |
| - | USE_SCHANNEL = true |
| - | !ELSEIF "$(ENABLE_SCHANNEL)"=="no" |
| - | USE_SCHANNEL = false |
| - | !ENDIF |
| - | |
| - | !IFNDEF ENABLE_OPENSSL_AUTO_LOAD_CONFIG |
| - | ENABLE_OPENSSL_AUTO_LOAD_CONFIG = true |
| - | !ELSEIF "$(ENABLE_OPENSSL_AUTO_LOAD_CONFIG)"=="yes" |
| - | !UNDEF ENABLE_OPENSSL_AUTO_LOAD_CONFIG |
| - | ENABLE_OPENSSL_AUTO_LOAD_CONFIG = true |
| - | !ELSEIF "$(ENABLE_OPENSSL_AUTO_LOAD_CONFIG)"=="no" |
| - | !UNDEF ENABLE_OPENSSL_AUTO_LOAD_CONFIG |
| - | ENABLE_OPENSSL_AUTO_LOAD_CONFIG = false |
| - | !ENDIF |
| - | |
| - | !IFNDEF ENABLE_UNICODE |
| - | USE_UNICODE = false |
| - | !ELSEIF "$(ENABLE_UNICODE)"=="yes" |
| - | USE_UNICODE = true |
| - | !ELSEIF "$(ENABLE_UNICODE)"=="no" |
| - | USE_UNICODE = false |
| - | !ENDIF |
| - | |
| - | CONFIG_NAME_LIB = libcurl |
| - | |
| - | !IF "$(WITH_SSL)"=="dll" |
| - | USE_SSL = true |
| - | SSL = dll |
| - | !ELSEIF "$(WITH_SSL)"=="static" |
| - | USE_SSL = true |
| - | SSL = static |
| - | !ENDIF |
| - | |
| - | !IF "$(ENABLE_NGHTTP2)"=="yes" |
| - | # compatibility bit, WITH_NGHTTP2 is the correct flag |
| - | WITH_NGHTTP2 = dll |
| - | USE_NGHTTP2 = true |
| - | NGHTTP2 = dll |
| - | !ELSEIF "$(WITH_NGHTTP2)"=="dll" |
| - | USE_NGHTTP2 = true |
| - | NGHTTP2 = dll |
| - | !ELSEIF "$(WITH_NGHTTP2)"=="static" |
| - | USE_NGHTTP2 = true |
| - | NGHTTP2 = static |
| - | !ENDIF |
| - | |
| - | !IFNDEF USE_NGHTTP2 |
| - | USE_NGHTTP2 = false |
| - | !ENDIF |
| - | |
| - | !IF "$(WITH_MBEDTLS)"=="dll" || "$(WITH_MBEDTLS)"=="static" |
| - | USE_MBEDTLS = true |
| - | MBEDTLS = $(WITH_MBEDTLS) |
| - | !ENDIF |
| - | |
| - | !IF "$(WITH_WOLFSSL)"=="dll" || "$(WITH_WOLFSSL)"=="static" |
| - | USE_WOLFSSL = true |
| - | WOLFSSL = $(WITH_WOLFSSL) |
| - | !ENDIF |
| - | |
| - | !IF "$(WITH_CARES)"=="dll" |
| - | USE_CARES = true |
| - | CARES = dll |
| - | !ELSEIF "$(WITH_CARES)"=="static" |
| - | USE_CARES = true |
| - | CARES = static |
| - | !ENDIF |
| - | |
| - | !IF "$(WITH_ZLIB)"=="dll" |
| - | USE_ZLIB = true |
| - | ZLIB = dll |
| - | !ELSEIF "$(WITH_ZLIB)"=="static" |
| - | USE_ZLIB = true |
| - | ZLIB = static |
| - | !ENDIF |
| - | |
| - | !IF "$(WITH_SSH2)"=="dll" |
| - | USE_SSH2 = true |
| - | SSH2 = dll |
| - | !ELSEIF "$(WITH_SSH2)"=="static" |
| - | USE_SSH2 = true |
| - | SSH2 = static |
| - | !ENDIF |
| - | |
| - | !IF "$(WITH_SSH)"=="dll" |
| - | USE_SSH = true |
| - | SSH = dll |
| - | !ELSEIF "$(WITH_SSH)"=="static" |
| - | USE_SSH = true |
| - | SSH = static |
| - | !ENDIF |
| - | |
| - | CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-vc$(VC)-$(MACHINE) |
| - | |
| - | !IF "$(DEBUG)"=="yes" |
| - | CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-debug |
| - | !ELSE |
| - | CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-release |
| - | !ENDIF |
| - | |
| - | !IF "$(AS_DLL)"=="true" |
| - | CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-dll |
| - | !ELSE |
| - | CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-static |
| - | !ENDIF |
| - | |
| - | !IF "$(USE_SSL)"=="true" |
| - | CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ssl-$(SSL) |
| - | !ENDIF |
| - | |
| - | !IF "$(USE_MBEDTLS)"=="true" |
| - | CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-mbedtls-$(MBEDTLS) |
| - | !ENDIF |
| - | |
| - | !IF "$(USE_WOLFSSL)"=="true" |
| - | CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-wolfssl-$(WOLFSSL) |
| - | !ENDIF |
| - | |
| - | !IF "$(USE_CARES)"=="true" |
| - | CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-cares-$(CARES) |
| - | !ENDIF |
| - | |
| - | !IF "$(USE_ZLIB)"=="true" |
| - | CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-zlib-$(ZLIB) |
| - | !ENDIF |
| - | |
| - | !IF "$(USE_SSH2)"=="true" |
| - | CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ssh2-$(SSH2) |
| - | !ENDIF |
| - | |
| - | !IF "$(USE_SSH)"=="true" |
| - | CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ssh-$(SSH) |
| - | !ENDIF |
| - | |
| - | !IF "$(USE_IPV6)"=="true" |
| - | CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ipv6 |
| - | !ENDIF |
| - | |
| - | !IF "$(USE_SSPI)"=="true" |
| - | CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-sspi |
| - | !ENDIF |
| - | |
| - | !IF "$(USE_SCHANNEL)"=="true" |
| - | CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-schannel |
| - | !ENDIF |
| - | |
| - | !IF "$(USE_NGHTTP2)"=="true" |
| - | CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-nghttp2-$(NGHTTP2) |
| - | !ENDIF |
| - | |
| - | !MESSAGE configuration name: $(CONFIG_NAME_LIB) |
| - | |
| - | # Note these directories are removed by this makefile's 'clean' so they should |
| - | # not be changed to point to user-specified directories that may contain other |
| - | # data. MakefileBuild.vc uses the same variable names but allows some user |
| - | # changes and therefore does not remove the directories. |
| - | BUILD_DIR=../builds/$(CONFIG_NAME_LIB) |
| - | LIBCURL_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-lib |
| - | CURL_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-curl |
| - | DIRDIST = ..\builds\$(CONFIG_NAME_LIB)\ |
| - | |
| - | $(MODE): |
| - | @echo LIBCURL_OBJS = \> LIBCURL_OBJS.inc |
| - | @for %%i in ($(LIBCURL_OBJS)) do @echo $(LIBCURL_DIROBJ)/%%i \>> LIBCURL_OBJS.inc |
| - | @echo. >> LIBCURL_OBJS.inc |
| - | |
| - | @echo CURL_OBJS = \> CURL_OBJS.inc |
| - | @for %%i in ($(CURL_OBJS)) do @echo $(CURL_DIROBJ)/%%i \>> CURL_OBJS.inc |
| - | @echo. >> CURL_OBJS.inc |
| - | |
| - | @SET CONFIG_NAME_LIB=$(CONFIG_NAME_LIB) |
| - | @SET MACHINE=$(MACHINE) |
| - | @SET USE_NGHTTP2=$(USE_NGHTTP2) |
| - | @SET USE_IDN=$(USE_IDN) |
| - | @SET USE_IPV6=$(USE_IPV6) |
| - | @SET USE_SSPI=$(USE_SSPI) |
| - | @SET USE_SCHANNEL=$(USE_SCHANNEL) |
| - | @SET USE_UNICODE=$(USE_UNICODE) |
| - | # compatibility bit |
| - | @SET WITH_NGHTTP2=$(WITH_NGHTTP2) |
| - | |
| - | @$(MAKE) /NOLOGO /F MakefileBuild.vc |
| - | |
| - | copy_from_lib: |
| - | echo copying .c... |
| - | FOR %%i IN ($(CURLX_CFILES:/=\)) DO copy %%i ..\src\ |
| - | |
| - | clean: |
| - | @if exist $(LIBCURL_DIROBJ) rd /s /q $(LIBCURL_DIROBJ) |
| - | @if exist $(CURL_DIROBJ) rd /s /q $(CURL_DIROBJ) |
| - | @if exist $(DIRDIST) rd /s /q $(DIRDIST) |
| - | $(MAKE) /NOLOGO /F MakefileBuild.vc $@ |
| @@ -1,732 +0,0 @@ | |
| - | #*************************************************************************** |
| - | # _ _ ____ _ |
| - | # Project ___| | | | _ \| | |
| - | # / __| | | | |_) | | |
| - | # | (__| |_| | _ <| |___ |
| - | # \___|\___/|_| \_\_____| |
| - | # |
| - | # Copyright (C) Daniel Stenberg, <[email protected]>, 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 secur32.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../lib/curlx /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 |
| - | |
| - | !IF EXISTS($(CURL_SRC_DIR)\tool_hugehelp.c) |
| - | USE_MANUAL = true |
| - | CFLAGS = $(CFLAGS) /DUSE_MANUAL |
| - | !ENDIF |
| - | |
| - | !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 "$(DISABLE_WEBSOCKETS)"=="true" |
| - | CFLAGS = $(CFLAGS) /DCURL_DISABLE_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 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 WOLFSSL_PATH |
| - | WOLFSSL_INC_DIR = $(WOLFSSL_PATH)\include |
| - | WOLFSSL_LIB_DIR = $(WOLFSSL_PATH)\lib |
| - | WOLFSSL_LFLAGS = $(WOLFSSL_LFLAGS) "/LIBPATH:$(WOLFSSL_LIB_DIR)" |
| - | !ELSE |
| - | WOLFSSL_INC_DIR = $(DEVEL_INCLUDE) |
| - | WOLFSSL_LIB_DIR = $(DEVEL_LIB) |
| - | !ENDIF |
| - | |
| - | !IF "$(WITH_WOLFSSL)"=="dll" || "$(WITH_WOLFSSL)"=="static" |
| - | USE_WOLFSSL = true |
| - | WOLFSSL = $(WITH_WOLFSSL) |
| - | WOLFSSL_CFLAGS = /DUSE_WOLFSSL /I"$(WOLFSSL_INC_DIR)" |
| - | WOLFSSL_LIBS = wolfssl.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 |
| - | !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_WOLFSSL)"=="true" |
| - | CFLAGS = $(CFLAGS) $(WOLFSSL_CFLAGS) |
| - | LFLAGS = $(LFLAGS) $(WOLFSSL_LFLAGS) $(WOLFSSL_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 "$(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_SSL)"=="true" && "$(USE_WOLFSSL)"=="true" ) \ |
| - | || ( "$(USE_MBEDTLS)"=="true" && "$(USE_WOLFSSL)"=="true" ) \ |
| - | || ( "$(USE_MBEDTLS)"=="true" && "$(USE_SCHANNEL)"=="true" ) \ |
| - | || ( "$(USE_WOLFSSL)"=="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 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 |
| - | @if not exist "$(LIB_DIROBJ)\curlx" mkdir $(LIB_DIROBJ)\curlx |
| - | |
| - | $(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\\" $< |
| - | |
| - | {$(LIBCURL_SRC_DIR)\curlx\}.c{$(LIB_DIROBJ)\curlx\}.obj:: |
| - | $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\curlx\\" $< |
| - | |
| - | $(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)\nonblock.obj \ |
| - | $(CURL_DIROBJ)\strparse.obj \ |
| - | $(CURL_DIROBJ)\strcase.obj \ |
| - | $(CURL_DIROBJ)\timeval.obj \ |
| - | $(CURL_DIROBJ)\wait.obj \ |
| - | $(CURL_DIROBJ)\warnless.obj \ |
| - | $(CURL_DIROBJ)\multibyte.obj \ |
| - | $(CURL_DIROBJ)\version_win32.obj \ |
| - | $(CURL_DIROBJ)\dynbuf.obj \ |
| - | $(CURL_DIROBJ)\base64.obj |
| - | |
| - | !IFDEF USE_MANUAL |
| - | CURL_FROM_LIBCURL = $(CURL_FROM_LIBCURL) $(CURL_DIROBJ)\tool_hugehelp.obj |
| - | !ENDIF |
| - | |
| - | $(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)\\" $< |
| - | |
| - | !IFDEF USE_MANUAL |
| - | $(CURL_DIROBJ)\tool_hugehelp.obj: $(CURL_SRC_DIR)\tool_hugehelp.c |
| - | $(CURL_CC) $(CURL_CFLAGS) /Zm200 /Fo"$@" $(CURL_SRC_DIR)\tool_hugehelp.c |
| - | !ENDIF |
| - | $(CURL_DIROBJ)\nonblock.obj: ../lib/curlx/nonblock.c |
| - | $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/nonblock.c |
| - | $(CURL_DIROBJ)\strparse.obj: ../lib/curlx/strparse.c |
| - | $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/strparse.c |
| - | $(CURL_DIROBJ)\strcase.obj: ../lib/strcase.c |
| - | $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/strcase.c |
| - | $(CURL_DIROBJ)\timeval.obj: ../lib/curlx/timeval.c |
| - | $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/timeval.c |
| - | $(CURL_DIROBJ)\multibyte.obj: ../lib/curlx/multibyte.c |
| - | $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/multibyte.c |
| - | $(CURL_DIROBJ)\version_win32.obj: ../lib/curlx/version_win32.c |
| - | $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/version_win32.c |
| - | $(CURL_DIROBJ)\wait.obj: ../lib/curlx/wait.c |
| - | $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/wait.c |
| - | $(CURL_DIROBJ)\warnless.obj: ../lib/curlx/warnless.c |
| - | $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/warnless.c |
| - | $(CURL_DIROBJ)\dynbuf.obj: ../lib/curlx/dynbuf.c |
| - | $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/dynbuf.c |
| - | $(CURL_DIROBJ)\base64.obj: ../lib/curlx/base64.c |
| - | $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/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 |
| @@ -1,207 +0,0 @@ | |
| - | <!-- |
| - | Copyright (C) Daniel Stenberg, <[email protected]>, et al. |
| - | |
| - | SPDX-License-Identifier: curl |
| - | --> |
| - | |
| - | # Deprecation warning |
| - | |
| - | This winbuild build system is deprecated and is going to be removed in |
| - | September 2025 in favor of the CMake build system. |
| - | |
| - | Please see docs/INSTALL-CMAKE.md : "Migrating from winbuild builds" |
| - | |
| - | # Building curl with Visual C++ |
| - | |
| - | This document describes how to compile, build and install curl and libcurl |
| - | from sources using the Visual C++ build tool. To build with VC++, you have to |
| - | first install VC++. The minimum required version of VC is 9 (part of Visual |
| - | Studio 2008). However using a more recent version is strongly recommended. |
| - | |
| - | VC++ is also part of the Windows Platform SDK. You do not have to install the |
| - | full Visual Studio or Visual C++ if all you want is to build curl. |
| - | |
| - | The latest Platform SDK can be downloaded freely from [Windows SDK and |
| - | emulator |
| - | archive](https://developer.microsoft.com/en-us/windows/downloads/sdk-archive) |
| - | |
| - | ## Prerequisites |
| - | |
| - | If you wish to support zlib, OpenSSL, c-ares, ssh2, you have to download them |
| - | separately and copy them to the `deps` directory as shown below: |
| - | |
| - | somedirectory\ |
| - | |_curl-src |
| - | | |_winbuild |
| - | | |
| - | |_deps |
| - | |_ lib |
| - | |_ include |
| - | |_ bin |
| - | |
| - | It is also possible to create the `deps` directory in some other random places |
| - | and tell the `Makefile` its location using the `WITH_DEVEL` option. |
| - | |
| - | ## Open a command prompt |
| - | |
| - | Open a Visual Studio Command prompt: |
| - | |
| - | Using the **'VS [version] [platform] [type] Command Prompt'** menu entry: |
| - | where [version] is the Visual Studio version, [platform] is e.g. x64 and |
| - | [type] Native or Cross platform build. This type of command prompt may not |
| - | exist in all Visual Studio versions. For example, to build a 64-bit curl open |
| - | the x64 Native Tools prompt. |
| - | |
| - | See also: |
| - | |
| - | [How to: Enable a 64-Bit, x64 hosted MSVC toolset on the command line](https://docs.microsoft.com/en-us/cpp/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line) |
| - | |
| - | [Set the Path and Environment Variables for Command-Line Builds](https://docs.microsoft.com/en-us/cpp/build/building-on-the-command-line) |
| - | |
| - | [Developer Command Prompt for Visual Studio](https://docs.microsoft.com/en-us/dotnet/framework/tools/developer-command-prompt-for-vs) |
| - | |
| - | ## Build in the console |
| - | |
| - | Once you are in the console, go to the winbuild directory in the curl |
| - | sources: |
| - | |
| - | cd curl-src\winbuild |
| - | |
| - | Then you can call `nmake /f Makefile.vc` with the desired options (see |
| - | below). The builds are in the top src directory, `builds\` directory, in a |
| - | directory named using the options given to the nmake call. |
| - | |
| - | nmake /f Makefile.vc mode=<static or dll> <options> |
| - | |
| - | where `<options>` is one or many of: |
| - | |
| - | - `VC=<num>` - VC version. 6 or later. |
| - | - `WITH_DEVEL=<path>` - Paths for the development files (SSL, zlib, etc.) |
| - | Defaults to sibling directory: `../deps` |
| - | - `WITH_SSL=<dll/static>` - Enable OpenSSL support, DLL or static |
| - | - `WITH_NGHTTP2=<dll/static>` - Enable HTTP/2 support, DLL or static |
| - | - `WITH_MBEDTLS=<dll/static>` - Enable mbedTLS support, DLL or static |
| - | - `WITH_WOLFSSL=<dll/static>` - Enable wolfSSL support, DLL or static |
| - | - `WITH_CARES=<dll/static>` - Enable c-ares support, DLL or static |
| - | - `WITH_ZLIB=<dll/static>` - Enable zlib support, DLL or static |
| - | - `WITH_SSH=<dll/static>` - Enable libssh support, DLL or static |
| - | - `WITH_SSH2=<dll/static>` - Enable libssh2 support, DLL or static |
| - | - `WITH_PREFIX=<dir>` - Where to install the build |
| - | - `ENABLE_SSPI=<yes/no>` - Enable SSPI support, defaults to yes |
| - | - `ENABLE_IPV6=<yes/no>` - Enable IPv6, defaults to yes |
| - | - `ENABLE_IDN=<yes or no>` - Enable use of Windows IDN APIs, defaults to yes |
| - | Requires Windows Vista or later |
| - | - `ENABLE_SCHANNEL=<yes/no>` - Enable native Windows SSL support, defaults |
| - | to yes if SSPI and no other SSL library |
| - | - `ENABLE_OPENSSL_AUTO_LOAD_CONFIG=<yes/no>` |
| - | - Enable loading OpenSSL configuration |
| - | automatically, defaults to yes |
| - | - `ENABLE_UNICODE=<yes/no>` - Enable Unicode support, defaults to no |
| - | - `GEN_PDB=<yes/no>` - Generate External Program Database |
| - | (debug symbols for release build) |
| - | - `DEBUG=<yes/no>` - Debug builds |
| - | - `MACHINE=<x86/x64/arm64>` - Target architecture (default is x86) |
| - | - `CARES_PATH=<path>` - Custom path for c-ares |
| - | - `MBEDTLS_PATH=<path>` - Custom path for mbedTLS |
| - | - `WOLFSSL_PATH=<path>` - Custom path for wolfSSL |
| - | - `NGHTTP2_PATH=<path>` - Custom path for nghttp2 |
| - | - `SSH_PATH=<path>` - Custom path for libssh |
| - | - `SSH2_PATH=<path>` - Custom path for libssh2 |
| - | - `SSL_PATH=<path>` - Custom path for OpenSSL |
| - | - `ZLIB_PATH=<path>` - Custom path for zlib |
| - | |
| - | ## Cleaning a build |
| - | |
| - | For most build configurations you can remove a bad build by using the same |
| - | options with the added keyword "clean". For example: |
| - | |
| - | nmake /f Makefile.vc mode=static clean |
| - | |
| - | Build errors due to switching Visual Studio platform tools or mistakenly |
| - | specifying the wrong machine platform for the tools can usually be solved by |
| - | first cleaning the bad build. |
| - | |
| - | ## Static linking of Microsoft's C runtime (CRT): |
| - | |
| - | If you are using mode=static, nmake creates and links to the static build of |
| - | libcurl but *not* the static CRT. If you must you can force nmake to link in |
| - | the static CRT by passing `RTLIBCFG=static`. Typically you shouldn't use that |
| - | option, and nmake defaults to the DLL CRT. `RTLIBCFG` is rarely used and |
| - | therefore rarely tested. When passing `RTLIBCFG` for a configuration that was |
| - | already built but not with that option, or if the option was specified |
| - | differently, you must destroy the build directory containing the |
| - | configuration so that nmake can build it from scratch. |
| - | |
| - | This option is not recommended unless you have enough development experience |
| - | to know how to match the runtime library for linking (that is, the CRT). If |
| - | `RTLIBCFG=static` then release builds use `/MT` and debug builds use `/MTd`. |
| - | |
| - | ## Building your own application with libcurl (Visual Studio example) |
| - | |
| - | When you build curl and libcurl, nmake shows the relative path where the |
| - | output directory is. The output directory is named from the options nmake |
| - | used when building. You may also see temp directories of the same name but |
| - | with suffixes -obj-curl and -obj-lib. |
| - | |
| - | For example let's say you have built curl.exe and libcurl.dll from the Visual |
| - | Studio 2010 x64 Win64 Command Prompt: |
| - | |
| - | nmake /f Makefile.vc mode=dll VC=10 |
| - | |
| - | The output directory has a name similar to |
| - | `..\builds\libcurl-vc10-x64-release-dll-ipv6-sspi-schannel`. |
| - | |
| - | The output directory contains subdirectories bin, lib and include. Those are |
| - | the directories to set in your Visual Studio project. You can either copy the |
| - | output directory to your project or leave it in place. Following the example, |
| - | let's assume you leave it in place and your curl top source directory is |
| - | `C:\curl-7.82.0`. You would set these options for configurations using the |
| - | x64 platform: |
| - | |
| - | ~~~ |
| - | - Configuration Properties > Debugging > Environment |
| - | PATH=C:\curl-7.82.0\builds\libcurl-vc10-x64-release-dll-ipv6-sspi-schannel\bin;%PATH% |
| - | |
| - | - C/C++ > General > Additional Include Directories |
| - | C:\curl-7.82.0\builds\libcurl-vc10-x64-release-dll-ipv6-sspi-schannel\include; |
| - | |
| - | - Linker > General > Additional Library Directories |
| - | C:\curl-7.82.0\builds\libcurl-vc10-x64-release-dll-ipv6-sspi-schannel\lib; |
| - | |
| - | - Linker > Input > Additional Dependencies |
| - | libcurl.lib; |
| - | ~~~ |
| - | |
| - | For configurations using the x86 platform (aka Win32 platform) you would |
| - | need to make a separate x86 build of libcurl. |
| - | |
| - | If you build libcurl static (`mode=static`) or debug (`DEBUG=yes`) then the |
| - | library name varies and separate builds may be necessary for separate |
| - | configurations of your project within the same platform. This is discussed in |
| - | the next section. |
| - | |
| - | ## Building your own application with a static libcurl |
| - | |
| - | When building an application that uses the static libcurl library on Windows, |
| - | you must define `CURL_STATICLIB`. Otherwise the linker looks for dynamic |
| - | import symbols. |
| - | |
| - | The static library name has an `_a` suffix in the basename and the debug |
| - | library name has a `_debug` suffix in the basename. For example, |
| - | `libcurl_a_debug.lib` is a static debug build of libcurl. |
| - | |
| - | You may need a separate build of libcurl for each VC configuration combination |
| - | (for example: Debug|Win32, Debug|x64, Release|Win32, Release|x64). |
| - | |
| - | You must specify any additional dependencies needed by your build of static |
| - | libcurl (for example: |
| - | `advapi32.lib;crypt32.lib;normaliz.lib;ws2_32.lib;wldap32.lib`). |
| - | |
| - | ## Legacy Windows and SSL |
| - | |
| - | When you build curl using the build files in this directory the default SSL |
| - | backend is Schannel (Windows SSPI), the native SSL library that comes with |
| - | the Windows OS. Schannel in Windows 8 and earlier is not able to connect to |
| - | servers that no longer support the legacy handshakes and algorithms used by |
| - | those versions. If you are using curl in one of those earlier versions of |
| - | Windows you should choose another SSL backend like OpenSSL. |
| @@ -1,33 +0,0 @@ | |
| - | @echo off |
| - | rem *************************************************************************** |
| - | rem * _ _ ____ _ |
| - | rem * Project ___| | | | _ \| | |
| - | rem * / __| | | | |_) | | |
| - | rem * | (__| |_| | _ <| |___ |
| - | rem * \___|\___/|_| \_\_____| |
| - | rem * |
| - | rem * Copyright (C) Daniel Stenberg, <[email protected]>, 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 *************************************************************************** |
| - | |
| - | where.exe nmake.exe >nul 2>&1 |
| - | |
| - | if %ERRORLEVEL% EQU 1 ( |
| - | echo Error: Cannot find nmake.exe - be sure to run this script from within a Developer Command-Prompt |
| - | ) else ( |
| - | nmake.exe /f Makefile.vc MODE=static DEBUG=yes GEN_PDB=yes |
| - | if %ERRORLEVEL% NEQ 0 echo Error: Build Failed |
| - | ) |