diff --git a/.appveyor.yml b/.appveyor.yml index 3d0b49f1b..b3ae1fa99 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -46,6 +46,8 @@ environment: - TOOLCHAIN: 14.0 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 TOOLCHAIN: 2017 + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 + TOOLCHAIN: 2019 - TOOLCHAIN: cygwin - TOOLCHAIN: mingw APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 @@ -83,6 +85,20 @@ build_script: test_script: - cmd: .ci/appveyor-make.bat runtests + +#---------------------------------# +# debugging # +#---------------------------------# + +## if you want to connect by remote desktop to a failed build, uncomment these lines +## note that you will need to connect within the usual build timeout limit (60 minutes) +## so you may want to adjust the build matrix above to just build the one of interest + +#on_failure: +# - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) +# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) + + #---------------------------------# # notifications # #---------------------------------# diff --git a/.ci/appveyor-make.bat b/.ci/appveyor-make.bat index 9cd8fe684..d74c8758d 100644 --- a/.ci/appveyor-make.bat +++ b/.ci/appveyor-make.bat @@ -1,6 +1,6 @@ :: Universal build script for AppVeyor (https://ci.appveyor.com/) :: Environment: -:: TOOLCHAIN - toolchain version [10.0/11.0/12.0/14.0/2017/cygwin/mingw] +:: TOOLCHAIN - toolchain version [10.0/11.0/12.0/14.0/2017/2019/cygwin/mingw] :: CONFIGURATION - determines EPICS build [dynamic/static] :: PLATFORM - architecture [x86/x64] :: @@ -8,8 +8,16 @@ Setlocal EnableDelayedExpansion +:: we do not currently have a combined static and debug EPICS_HOST_ARCH target +:: So a combined debug and static target will appear to be just static +:: but debug will have been specified in CONFIG_SITE by appveyor-prepare.bat set "ST=" -if /i "%CONFIGURATION%"=="static" set ST=-static +echo.%CONFIGURATION% | findstr /C:"debug">nul && ( + set "ST=-debug" +) +echo.%CONFIGURATION% | findstr /C:"static">nul && ( + set "ST=-static" +) set OS=64BIT if "%PLATFORM%"=="x86" set OS=32BIT @@ -56,6 +64,11 @@ if "%TOOLCHAIN%"=="mingw" ( goto Finish ) +if "%TOOLCHAIN%"=="2019" ( + echo [INFO] Setting strawberry perl path + set "PATH=c:\strawberry\perl\site\bin;C:\strawberry\perl\bin;%PATH%" +) + set "VSINSTALL=C:\Program Files (x86)\Microsoft Visual Studio %TOOLCHAIN%" if not exist "%VSINSTALL%\" set "VSINSTALL=C:\Program Files (x86)\Microsoft Visual Studio\%TOOLCHAIN%\Community" if not exist "%VSINSTALL%\" goto MSMissing @@ -66,7 +79,7 @@ echo [INFO] APPVEYOR_BUILD_WORKER_IMAGE=%APPVEYOR_BUILD_WORKER_IMAGE% if "%OS%"=="64BIT" ( set EPICS_HOST_ARCH=windows-x64%ST% - :: VS 2017 + :: VS 2017/2019 if exist "%VSINSTALL%\VC\Auxiliary\Build\vcvars64.bat" ( call "%VSINSTALL%\VC\Auxiliary\Build\vcvars64.bat" where cl @@ -91,7 +104,7 @@ if "%OS%"=="64BIT" ( ) ) else ( set EPICS_HOST_ARCH=win32-x86%ST% - :: VS 2017 + :: VS 2017/2019 if exist "%VSINSTALL%\VC\Auxiliary\Build\vcvars32.bat" ( call "%VSINSTALL%\VC\Auxiliary\Build\vcvars32.bat" where cl diff --git a/.ci/appveyor-prepare.bat b/.ci/appveyor-prepare.bat index 9f105ee96..95a6a07c8 100644 --- a/.ci/appveyor-prepare.bat +++ b/.ci/appveyor-prepare.bat @@ -16,20 +16,26 @@ if "%PLATFORM%"=="x86" set OS=32BIT echo [INFO] Platform: %OS% +:: with MSVC either static or debug can be handled as part +:: of EPICS_HOST_ARCH but not both. So we set the appropriate +:: options in CONFIG_SITE. For mingw and cygwin they are missing +:: some static and debug targets so set things here too +echo.%CONFIGURATION% | findstr /C:"static">nul && ( + echo SHARED_LIBRARIES=NO>> configure\CONFIG_SITE + echo STATIC_BUILD=YES>> configure\CONFIG_SITE + echo [INFO] EPICS set up for static build +) || ( + echo [INFO] EPICS set up for dynamic build +) + +echo.%CONFIGURATION% | findstr /C:"debug">nul && ( + echo HOST_OPT=NO>> configure\CONFIG_SITE + echo [INFO] EPICS set up for debug build +) || ( + echo [INFO] EPICS set up for optimized build +) + if "%TOOLCHAIN%"=="cygwin" ( - echo.%CONFIGURATION% | findstr /C:"static">nul && ( - echo SHARED_LIBRARIES=NO>> configure\CONFIG_SITE - echo STATIC_BUILD=YES>> configure\CONFIG_SITE - echo [INFO] EPICS set up for static build - ) || ( - echo [INFO] EPICS set up for dynamic build - ) - echo.%CONFIGURATION% | findstr /C:"debug">nul && ( - echo HOST_OPT=NO>> configure\CONFIG_SITE - echo [INFO] EPICS set up for debug build - ) || ( - echo [INFO] EPICS set up for optimized build - ) if "%OS%"=="64BIT" ( echo [INFO] Installing Cygwin 64bit and dependencies @powershell -Command "(new-object net.webclient).DownloadFile('http://www.cygwin.com/setup-x86_64.exe', 'C:\cygwin64\setup-x86_64.exe')" @@ -41,23 +47,18 @@ if "%TOOLCHAIN%"=="cygwin" ( ) ) -if "%TOOLCHAIN%"=="mingw" ( - echo.%CONFIGURATION% | findstr /C:"static">nul && ( - echo SHARED_LIBRARIES=NO>> configure\CONFIG_SITE - echo STATIC_BUILD=YES>> configure\CONFIG_SITE - echo [INFO] EPICS set up for static build - ) || ( - echo [INFO] EPICS set up for dynamic build - ) - echo.%CONFIGURATION% | findstr /C:"debug">nul && ( - echo HOST_OPT=NO>> configure\CONFIG_SITE - echo [INFO] EPICS set up for debug build - ) || ( - echo [INFO] EPICS set up for optimized build - ) -) - echo [INFO] Installing Make 4.2.1 from ANL web site curl -fsS --retry 3 -o C:\tools\make-4.2.1.zip https://epics.anl.gov/download/tools/make-4.2.1-win64.zip cd \tools "C:\Program Files\7-Zip\7z" e make-4.2.1.zip + +if "%TOOLCHAIN%"=="2019" ( + set "PERLVER=5.30.0.1" + echo [INFO] Installing Strawberry Perl %PERLVER% + curl -fsS --retry 3 -o C:\tools\perl-%PERLVER%.zip http://strawberryperl.com/download/%PERLVER%/strawberry-perl-%PERLVER%-64bit.zip + cd \tools + "C:\Program Files\7-Zip\7z" x perl-%PERLVER%.zip -oC:\strawberry + cd \strawberry + :: we set PATH in appveyor-build.bat + call relocation.pl.bat +)