mirror of
https://github.com/curl/curl.git
synced 2024-12-27 06:59:43 +08:00
2100d9fde2
The goal of this patch is to avoid unnecessary feature detection work
when doing Windows builds with CMake. Do this by pre-filling well-known
detection results for Windows and specifically for mingw-w64 and MSVC
compilers. Also limit feature checks to platforms where the results are
actually used. Drop a few redundant ones. And some tidying up.
- pre-fill remaining detection values in Windows CMake builds.
Based on actual detection results observed in CI runs, preceding
similar work over libssh2 and matching up values with
`lib/config-win32.h`.
This brings down CMake configuration time from 58 to 14 seconds on the
same local machine.
On AppVeyor CI this translates to:
- 128 seconds -> 50 seconds VS2022 MSVC with OpenSSL (per CMake job):
https://ci.appveyor.com/project/curlorg/curl/builds/48208419/job/4gw66ecrjpy7necb#L296
https://ci.appveyor.com/project/curlorg/curl/builds/48217440/job/8m4fwrr2fe249uo8#L186
- 62 seconds -> 16 seconds VS2017 MINGW (per CMake job):
https://ci.appveyor.com/project/curlorg/curl/builds/48208419/job/s1y8q5ivlcs7ub29?fullLog=true#L290
https://ci.appveyor.com/project/curlorg/curl/builds/48217440/job/pchpxyjsyc9kl13a?fullLog=true#L194
The formula is about 1-3 seconds delay for each detection. Almost all
of these trigger a full compile-link cycle behind the scenes, slow
even today, both cross and native, mingw-w64 and apparently MSVC too.
Enabling .map files or other custom build features slows it down
further. (Similar is expected for autotools configure.)
- stop detecting `idn2.h` if idn2 was deselected.
autotools does this.
- stop detecting `idn2.h` if idn2 was not found.
This deviates from autotools. Source code requires both header and
lib, so this is still correct, but faster.
- limit `ADDRESS_FAMILY` detection to Windows.
- normalize `HAVE_WIN32_WINNT` value to lowercase `0x0a12` format.
- pre-fill `HAVE_WIN32_WINNT`-dependent detection results.
Saving 4 (slow) feature-detections in most builds: `getaddrinfo`,
`freeaddrinfo`, `inet_ntop`, `inet_pton`
- fix pre-filled `HAVE_SYS_TIME_H`, `HAVE_SYS_PARAM_H`,
`HAVE_GETTIMEOFDAY` for mingw-w64.
Luckily this do not change build results, as `WIN32` took
priority over `HAVE_GETTIMEOFDAY` with the current source
code.
- limit `HAVE_CLOCK_GETTIME_MONOTONIC_RAW` and
`HAVE_CLOCK_GETTIME_MONOTONIC` detections to non-Windows.
We're not using these in the source code for Windows.
- reduce compiler warning noise in CMake internal logs:
- fix to include `winsock2.h` before `windows.h`.
Apply it to autotools test snippets too.
- delete previous `-D_WINSOCKAPI_=` hack that aimed to fix the above.
- cleanup `CMake/CurlTests.c` to emit less warnings.
- delete redundant `HAVE_MACRO_SIGSETJMP` feature check.
It was the same check as `HAVE_SIGSETJMP`.
- delete 'experimental' marking from `CURL_USE_OPENSSL`.
- show CMake version via `CMakeLists.txt`.
Credit to the `zlib-ng` project for the idea:
61e181c8ae/CMakeLists.txt (L7)
- make `CMake/CurlTests.c` pass `checksrc`.
- `CMake/WindowsCache.cmake` tidy-ups.
- replace `WIN32` guard with `_WIN32` in `CMake/CurlTests.c`.
Closes #12044
433 lines
16 KiB
YAML
433 lines
16 KiB
YAML
#***************************************************************************
|
|
# _ _ ____ _
|
|
# 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
|
|
#
|
|
###########################################################################
|
|
# https://ci.appveyor.com/project/curlorg/curl/history
|
|
# Appveyor configuration
|
|
# https://www.appveyor.com/docs/appveyor-yml/
|
|
|
|
version: 7.50.0.{build}
|
|
|
|
environment:
|
|
UNITY: 'OFF'
|
|
OPENSSL: 'OFF'
|
|
DEBUG: 'ON'
|
|
SHARED: 'OFF'
|
|
matrix:
|
|
# generated CMake-based Visual Studio Release builds
|
|
- job_name: 'CMake, VS2008, Release x86, Schannel, Build-only'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
|
BUILD_SYSTEM: CMake
|
|
PRJ_GEN: 'Visual Studio 9 2008'
|
|
PRJ_CFG: Release
|
|
SCHANNEL: 'ON'
|
|
ENABLE_UNICODE: 'OFF'
|
|
HTTP_ONLY: 'OFF'
|
|
SHARED: 'ON'
|
|
TESTING: 'OFF'
|
|
DISABLED_TESTS: ''
|
|
SKIP_RUN: 'Needs missing MSVCR90.dll'
|
|
- job_name: 'CMake, VS2022, Release x64, OpenSSL, WebSockets, Unity, Build-only'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
|
BUILD_SYSTEM: CMake
|
|
PRJ_GEN: 'Visual Studio 17 2022'
|
|
TARGET: '-A x64'
|
|
PRJ_CFG: Release
|
|
OPENSSL: 'ON'
|
|
SCHANNEL: 'OFF'
|
|
ENABLE_UNICODE: 'OFF'
|
|
HTTP_ONLY: 'OFF'
|
|
SHARED: 'ON'
|
|
TESTING: 'OFF'
|
|
DISABLED_TESTS: ''
|
|
WEBSOCKETS: 'ON'
|
|
UNITY: 'ON'
|
|
- job_name: 'CMake, VS2022, Release arm64, Schannel, Static, Build-only'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
|
BUILD_SYSTEM: CMake
|
|
PRJ_GEN: 'Visual Studio 17 2022'
|
|
TARGET: '-A ARM64'
|
|
PRJ_CFG: Release
|
|
SCHANNEL: 'ON'
|
|
ENABLE_UNICODE: 'OFF'
|
|
HTTP_ONLY: 'OFF'
|
|
TESTING: 'OFF'
|
|
DISABLED_TESTS: ''
|
|
# generated CMake-based Visual Studio Debug builds
|
|
- job_name: 'CMake, VS2010, Debug x64, no SSL, Static'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
|
BUILD_SYSTEM: CMake
|
|
PRJ_GEN: 'Visual Studio 10 2010 Win64'
|
|
PRJ_CFG: Debug
|
|
SCHANNEL: 'OFF'
|
|
ENABLE_UNICODE: 'OFF'
|
|
HTTP_ONLY: 'OFF'
|
|
TESTING: 'ON'
|
|
DISABLED_TESTS: '!1139 !1501'
|
|
ADD_PATH: 'C:\msys64\usr\bin'
|
|
- job_name: 'CMake, VS2022, Debug x64, Schannel, Static, Unicode'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
|
BUILD_SYSTEM: CMake
|
|
PRJ_GEN: 'Visual Studio 17 2022'
|
|
TARGET: '-A x64'
|
|
PRJ_CFG: Debug
|
|
SCHANNEL: 'ON'
|
|
ENABLE_UNICODE: 'ON'
|
|
HTTP_ONLY: 'OFF'
|
|
TESTING: 'ON'
|
|
DISABLED_TESTS: '!1139 !1501'
|
|
ADD_PATH: 'C:\msys64\usr\bin'
|
|
- job_name: 'CMake, VS2022, Debug x64, no SSL, Static'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
|
BUILD_SYSTEM: CMake
|
|
PRJ_GEN: 'Visual Studio 17 2022'
|
|
TARGET: '-A x64'
|
|
PRJ_CFG: Debug
|
|
SCHANNEL: 'OFF'
|
|
ENABLE_UNICODE: 'OFF'
|
|
HTTP_ONLY: 'OFF'
|
|
TESTING: 'ON'
|
|
DISABLED_TESTS: '!1139 !1501'
|
|
ADD_PATH: 'C:\msys64\usr\bin'
|
|
- job_name: 'CMake, VS2022, Debug x64, no SSL, Static, HTTP only'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
|
BUILD_SYSTEM: CMake
|
|
PRJ_GEN: 'Visual Studio 17 2022'
|
|
TARGET: '-A x64'
|
|
PRJ_CFG: Debug
|
|
SCHANNEL: 'OFF'
|
|
ENABLE_UNICODE: 'OFF'
|
|
HTTP_ONLY: 'ON'
|
|
TESTING: 'ON'
|
|
DISABLED_TESTS: '!1139 !1501'
|
|
ADD_PATH: 'C:\msys64\usr\bin'
|
|
# generated CMake-based MSYS Makefiles builds (mingw cross-compiling)
|
|
- job_name: 'CMake, mingw-w64, gcc 13, Debug x64, Schannel, Static, Unicode, Unity'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
|
BUILD_SYSTEM: CMake
|
|
PRJ_GEN: 'MSYS Makefiles'
|
|
PRJ_CFG: Debug
|
|
SCHANNEL: 'ON'
|
|
ENABLE_UNICODE: 'ON'
|
|
HTTP_ONLY: 'OFF'
|
|
TESTING: 'ON'
|
|
DISABLED_TESTS: '!1086 !1139 !1451 !1501'
|
|
ADD_PATH: 'C:\msys64\mingw64\bin;C:\msys64\usr\bin'
|
|
MSYS2_ARG_CONV_EXCL: '/*'
|
|
BUILD_OPT: -k
|
|
UNITY: 'ON'
|
|
- job_name: 'CMake, mingw-w64, gcc 7, Debug x64, Schannel, Static, Unicode'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017'
|
|
BUILD_SYSTEM: CMake
|
|
PRJ_GEN: 'MSYS Makefiles'
|
|
PRJ_CFG: Debug
|
|
SCHANNEL: 'ON'
|
|
ENABLE_UNICODE: 'ON'
|
|
HTTP_ONLY: 'OFF'
|
|
TESTING: 'ON'
|
|
DISABLED_TESTS: '!1086 !1139 !1451 !1501'
|
|
ADD_PATH: 'C:\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64\bin;C:\msys64\usr\bin'
|
|
MSYS2_ARG_CONV_EXCL: '/*'
|
|
BUILD_OPT: -k
|
|
- job_name: 'CMake, mingw-w64, gcc 9, Debug x64, Schannel, Static, Unity'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017'
|
|
BUILD_SYSTEM: CMake
|
|
PRJ_GEN: 'MSYS Makefiles'
|
|
PRJ_CFG: Debug
|
|
SCHANNEL: 'ON'
|
|
ENABLE_UNICODE: 'OFF'
|
|
HTTP_ONLY: 'OFF'
|
|
TESTING: 'ON'
|
|
# test 286 disabled due to https://github.com/curl/curl/issues/12040
|
|
DISABLED_TESTS: '~286 !1086 !1139 !1451 !1501'
|
|
ADD_PATH: 'C:\msys64\mingw64\bin;C:\msys64\usr\bin'
|
|
MSYS2_ARG_CONV_EXCL: '/*'
|
|
BUILD_OPT: -k
|
|
UNITY: 'ON'
|
|
- job_name: 'CMake, mingw-w64, gcc 6, Debug x86, Schannel, Static'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
|
BUILD_SYSTEM: CMake
|
|
PRJ_GEN: 'MSYS Makefiles'
|
|
PRJ_CFG: Debug
|
|
SCHANNEL: 'ON'
|
|
ENABLE_UNICODE: 'OFF'
|
|
HTTP_ONLY: 'OFF'
|
|
TESTING: 'ON'
|
|
DISABLED_TESTS: '!1086 !1139 !1451 !1501'
|
|
ADD_PATH: 'C:\mingw-w64\i686-6.3.0-posix-dwarf-rt_v5-rev1\mingw32\bin;C:\msys64\usr\bin'
|
|
MSYS2_ARG_CONV_EXCL: '/*'
|
|
BUILD_OPT: -k
|
|
# winbuild-based builds
|
|
- job_name: 'winbuild, VS2015, Debug, x64, Build-only'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
|
BUILD_SYSTEM: winbuild_vs2015
|
|
DEBUG: 'yes'
|
|
PATHPART: debug
|
|
TESTING: 'OFF'
|
|
ENABLE_UNICODE: 'no'
|
|
- job_name: 'winbuild, VS2015, Release, x64, Build-only'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
|
BUILD_SYSTEM: winbuild_vs2015
|
|
DEBUG: 'no'
|
|
PATHPART: release
|
|
TESTING: 'OFF'
|
|
ENABLE_UNICODE: 'no'
|
|
- job_name: 'winbuild, VS2017, Debug, x64, Build-only'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017'
|
|
BUILD_SYSTEM: winbuild_vs2017
|
|
DEBUG: 'yes'
|
|
PATHPART: debug
|
|
TESTING: 'OFF'
|
|
ENABLE_UNICODE: 'no'
|
|
- job_name: 'winbuild, VS2017, Release, x64, Build-only'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017'
|
|
BUILD_SYSTEM: winbuild_vs2017
|
|
DEBUG: 'no'
|
|
PATHPART: release
|
|
TESTING: 'OFF'
|
|
ENABLE_UNICODE: 'no'
|
|
- job_name: 'winbuild, VS2015, Debug, x64, Unicode, Build-only'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
|
BUILD_SYSTEM: winbuild_vs2015
|
|
DEBUG: 'yes'
|
|
PATHPART: debug
|
|
TESTING: 'OFF'
|
|
ENABLE_UNICODE: 'yes'
|
|
- job_name: 'winbuild, VS2015, Release, x64, Unicode, Build-only'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
|
BUILD_SYSTEM: winbuild_vs2015
|
|
DEBUG: 'no'
|
|
PATHPART: release
|
|
TESTING: 'OFF'
|
|
ENABLE_UNICODE: 'yes'
|
|
- job_name: 'winbuild, VS2017, Debug, x64, Unicode, Build-only'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017'
|
|
BUILD_SYSTEM: winbuild_vs2017
|
|
DEBUG: 'yes'
|
|
PATHPART: debug
|
|
TESTING: 'OFF'
|
|
ENABLE_UNICODE: 'yes'
|
|
- job_name: 'winbuild, VS2017, Release, x64, Unicode, Build-only'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017'
|
|
BUILD_SYSTEM: winbuild_vs2017
|
|
DEBUG: 'no'
|
|
PATHPART: release
|
|
TESTING: 'OFF'
|
|
ENABLE_UNICODE: 'yes'
|
|
# generated VisualStudioSolution-based builds
|
|
- job_name: 'VisualStudioSolution, VS2017, Debug, x86, Build-only'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017'
|
|
BUILD_SYSTEM: VisualStudioSolution
|
|
PRJ_CFG: 'DLL Debug - DLL Windows SSPI - DLL WinIDN'
|
|
TESTING: 'OFF'
|
|
VC_VERSION: VC14.10
|
|
# autotools-based builds (NOT mingw cross-compiling, but msys2 native)
|
|
- job_name: 'autotools, msys2, Debug, x86_64, no Proxy, no SSL'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017'
|
|
BUILD_SYSTEM: autotools
|
|
TESTING: 'ON'
|
|
DISABLED_TESTS: '!19 !1233'
|
|
ADD_PATH: 'C:\msys64\usr\bin'
|
|
CONFIG_ARGS: '--enable-debug --enable-werror --disable-threaded-resolver --disable-proxy --without-ssl --enable-websockets'
|
|
- job_name: 'autotools, msys2, Debug, x86_64, no SSL'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017'
|
|
BUILD_SYSTEM: autotools
|
|
TESTING: 'ON'
|
|
DISABLED_TESTS: '!19 !504 !704 !705 !1233'
|
|
ADD_PATH: 'C:\msys64\usr\bin'
|
|
CONFIG_ARGS: '--enable-debug --enable-werror --disable-threaded-resolver --without-ssl --enable-websockets'
|
|
- job_name: 'autotools, msys2, Release, x86_64, no SSL'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017'
|
|
BUILD_SYSTEM: autotools
|
|
TESTING: 'ON'
|
|
DISABLED_TESTS: '!19 !504 !704 !705 !1233'
|
|
ADD_PATH: 'C:\msys64\usr\bin'
|
|
CONFIG_ARGS: '--enable-warnings --enable-werror --without-ssl --enable-websockets'
|
|
# autotools-based Cygwin build
|
|
- job_name: 'autotools, cygwin, Debug, x86_64, no SSL'
|
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
|
BUILD_SYSTEM: autotools
|
|
TESTING: 'ON'
|
|
DISABLED_TESTS: ''
|
|
ADD_PATH: 'C:\cygwin64\bin'
|
|
CONFIG_ARGS: '--enable-debug --enable-werror --disable-threaded-resolver --without-ssl --enable-websockets'
|
|
POSIX_PATH_PREFIX: '/cygdrive'
|
|
|
|
install:
|
|
- ps: |
|
|
if($env:ADD_PATH -ne $null) {
|
|
$env:PATH = "$env:ADD_PATH;$env:PATH"
|
|
}
|
|
|
|
build_script:
|
|
- ps: |
|
|
function Pull-BatchFile-Env {
|
|
param([string]$Path, [string]$Parameters)
|
|
$tempFile = [IO.Path]::GetTempFileName()
|
|
cmd.exe /c " `"$Path`" $Parameters && set " > $tempFile
|
|
Get-Content $tempFile | ForEach-Object { if($_ -match '^(.*?)=(.*)$') { Set-Content "env:\$($matches[1])" $matches[2] } }
|
|
Remove-Item $tempFile
|
|
}
|
|
|
|
$ErrorActionPreference = 'Stop'
|
|
|
|
$openssl_root = 'C:\OpenSSL-v111-Win64'
|
|
|
|
if($env:BUILD_SYSTEM -eq 'CMake') {
|
|
|
|
$options = @('-DCURL_WERROR=ON')
|
|
$options += "-G$env:PRJ_GEN"
|
|
if($env:TARGET -ne $null) {
|
|
$options += "$env:TARGET"
|
|
if($env:TARGET.Contains('ARM64')) {
|
|
$env:SKIP_RUN = 'ARM64 architecture'
|
|
}
|
|
}
|
|
$options += "-DCURL_USE_OPENSSL=$env:OPENSSL"
|
|
if($env:OPENSSL -eq 'ON') {
|
|
$options += "-DOPENSSL_ROOT_DIR=$openssl_root"
|
|
}
|
|
$options += "-DCURL_USE_SCHANNEL=$env:SCHANNEL"
|
|
$options += "-DHTTP_ONLY=$env:HTTP_ONLY"
|
|
$options += "-DBUILD_SHARED_LIBS=$env:SHARED"
|
|
$options += "-DBUILD_TESTING=$env:TESTING"
|
|
$options += "-DENABLE_WEBSOCKETS=$env:WEBSOCKETS"
|
|
$options += "-DCMAKE_UNITY_BUILD=$env:UNITY"
|
|
$options += "-DENABLE_DEBUG=$env:DEBUG"
|
|
$options += "-DENABLE_UNICODE=$env:ENABLE_UNICODE"
|
|
$options += '-DCMAKE_INSTALL_PREFIX=C:/CURL'
|
|
$options += "-DCMAKE_BUILD_TYPE=$env:PRJ_CFG"
|
|
if($env:PRJ_CFG -eq 'Debug') {
|
|
$options += '-DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG='
|
|
}
|
|
elseif ($env:PRJ_CFG -eq 'Release') {
|
|
$options += '-DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE='
|
|
}
|
|
if($env:PRJ_GEN.Contains('Visual Studio')) {
|
|
$options += '-DCMAKE_VS_GLOBALS=TrackFileAccess=false'
|
|
}
|
|
|
|
Write-Host 'CMake options:' $options
|
|
cmake . $options
|
|
cmake --build . --config $env:PRJ_CFG --parallel 2 --clean-first -- $env:BUILD_OPT
|
|
if($env:SHARED -eq 'ON') {
|
|
Copy-Item -Path 'C:\Projects\curl\lib\*.dll' -Destination 'C:\projects\curl\src'
|
|
Copy-Item -Path 'C:\Projects\curl\lib\*.dll' -Destination 'C:\projects\curl\tests\libtest'
|
|
}
|
|
if($env:OPENSSL -eq 'ON') {
|
|
Copy-Item -Path "$openssl_root\*.dll" -Destination 'C:\projects\curl\src'
|
|
}
|
|
$curl = '.\src\curl.exe'
|
|
}
|
|
elseif($env:BUILD_SYSTEM -eq 'VisualStudioSolution') {
|
|
cd projects
|
|
.\generate.bat $env:VC_VERSION
|
|
msbuild.exe -maxcpucount "-property:Configuration=$env:PRJ_CFG" "Windows\$env:VC_VERSION\curl-all.sln"
|
|
$curl = "..\build\Win32\$env:VC_VERSION\$env:PRJ_CFG\curld.exe"
|
|
}
|
|
elseif($env:BUILD_SYSTEM -eq 'winbuild_vs2015') {
|
|
.\buildconf.bat
|
|
cd winbuild
|
|
Pull-BatchFile-Env 'C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd' /x64
|
|
Pull-BatchFile-Env 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat' x86_amd64
|
|
nmake /nologo /f Makefile.vc mode=dll VC=14 "SSL_PATH=$openssl_root" WITH_SSL=dll MACHINE=x64 DEBUG=$env:DEBUG ENABLE_UNICODE=$env:ENABLE_UNICODE
|
|
$curl = "..\builds\libcurl-vc14-x64-$env:PATHPART-dll-ssl-dll-ipv6-sspi\bin\curl.exe"
|
|
}
|
|
elseif($env:BUILD_SYSTEM -eq 'winbuild_vs2017') {
|
|
.\buildconf.bat
|
|
cd winbuild
|
|
Pull-BatchFile-Env 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat'
|
|
nmake /nologo /f Makefile.vc mode=dll VC=14.10 "SSL_PATH=$openssl_root" WITH_SSL=dll MACHINE=x64 DEBUG=$env:DEBUG ENABLE_UNICODE=$env:ENABLE_UNICODE
|
|
$curl = "..\builds\libcurl-vc14.10-x64-$env:PATHPART-dll-ssl-dll-ipv6-sspi\bin\curl.exe"
|
|
}
|
|
elseif($env:BUILD_SYSTEM -eq 'autotools') {
|
|
& bash -e -c "cd $env:POSIX_PATH_PREFIX/c/projects/curl && autoreconf -fi 2>&1 && ./configure $env:CONFIG_ARGS 2>&1 && make V=1 && make V=1 examples && cd tests && make V=1"
|
|
$curl = '.\src\curl.exe'
|
|
}
|
|
|
|
Get-ChildItem -Path C:\projects\curl -Include ('*.exe', '*.dll') -Recurse -Name
|
|
if($env:SKIP_RUN -eq $null) {
|
|
cmd.exe /c "`"$curl`" -V 2>&1"
|
|
if(-not $?) {
|
|
Write-Host "Error running curl: '$curl':" ("0x" + $LastExitCode.ToString("X"))
|
|
exit 1
|
|
}
|
|
}
|
|
else {
|
|
Write-Host "Skip running curl.exe. Reason: $env:SKIP_RUN"
|
|
}
|
|
|
|
if($false) {
|
|
if(Test-Path CMakeFiles/CMakeConfigureLog.yaml) { cat CMakeFiles/CMakeConfigureLog.yaml }
|
|
if(Test-Path CMakeFiles/CMakeOutput.log) { cat CMakeFiles/CMakeOutput.log }
|
|
if(Test-Path CMakeFiles/CMakeError.log) { cat CMakeFiles/CMakeError.log }
|
|
if(Test-Path config.log) { cat config.log }
|
|
}
|
|
|
|
if($env:TESTING -eq 'ON' -and $env:BUILD_SYSTEM -eq 'CMake') {
|
|
cmake --build . --config $env:PRJ_CFG --parallel 2 --target testdeps
|
|
}
|
|
|
|
test_script:
|
|
- ps: |
|
|
if(Test-Path 'C:/msys64/usr/bin/curl.exe') {
|
|
$acurl="-ac $env:POSIX_PATH_PREFIX/c/msys64/usr/bin/curl.exe"
|
|
}
|
|
if(Test-Path 'C:/Windows/System32/curl.exe') {
|
|
$acurl="-ac $env:POSIX_PATH_PREFIX/c/Windows/System32/curl.exe"
|
|
}
|
|
if($env:TESTING -eq 'ON') {
|
|
if($env:BUILD_SYSTEM -eq 'CMake') {
|
|
$env:TFLAGS="$acurl $env:DISABLED_TESTS"
|
|
cmake --build . --config $env:PRJ_CFG --target test-ci
|
|
}
|
|
elseif($env:BUILD_SYSTEM -eq 'autotools') {
|
|
& bash -e -c "cd $env:POSIX_PATH_PREFIX/c/projects/curl && make V=1 TFLAGS='$acurl $env:DISABLED_TESTS' test-ci"
|
|
}
|
|
else {
|
|
& bash -e -c "cd $env:POSIX_PATH_PREFIX/c/projects/curl/tests && ./runtests.pl -a -p !flaky -r -rm $acurl $env:DISABLED_TESTS"
|
|
}
|
|
}
|
|
|
|
clone_depth: 10
|
|
|
|
# select branches to avoid testing feature branches twice (as branch and as pull request)
|
|
branches:
|
|
only:
|
|
- master
|
|
- /\/ci$/
|
|
|
|
skip_commits:
|
|
files:
|
|
- '.azure-pipelines.yml'
|
|
- '.circleci/**/*'
|
|
- '.cirrus.yml'
|
|
- '.github/**/*'
|
|
- 'packages/**/*'
|
|
- 'plan9/**/*'
|
|
|
|
artifacts:
|
|
- path: '**/curl.exe'
|
|
name: curl
|
|
- path: '**/*curl*.dll'
|
|
name: libcurl dll
|