diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 705737e..0782eed 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -3,6 +3,7 @@ variables: jobs: - job: Windows + timeoutInMinutes: 0 pool: vmImage: win1803 variables: diff --git a/windows/Dockerfile b/windows/Dockerfile index f6a0327..2c7fbc3 100644 --- a/windows/Dockerfile +++ b/windows/Dockerfile @@ -15,18 +15,42 @@ RUN C:\TEMP\vs_buildtools.exe --quiet --wait --norestart --nocache ` --includeRecommended ` || IF "%ERRORLEVEL%"=="3010" EXIT 0 -SHELL ["powershell", "-Command"] +SHELL ["powershell", "-ExecutionPolicy", "Bypass", "-Command"] + +# Install chocolatey +RUN iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) + +# Install packages +# +# We need to get the new value of `$PATH` after `choco install`, but +# chocolatey's `refreshenv` won't be available until we restart the shell. +# Make `refreshenv` available right away, by importing the Chocolatey profile +# module. See https://stackoverflow.com/a/46760714. +COPY choco-packages.txt C:\ +RUN $ErrorActionPreference = 'Stop'; ` + choco install -y @(Get-Content C:\choco-packages.txt); ` + Import-Module "C:\ProgramData\chocolatey\helpers\chocolateyProfile.psm1"; ` + refreshenv # Install vcpkg ADD https://github.com/Microsoft/vcpkg/archive/master.zip C:\TEMP\vcpkg-master.zip RUN $ErrorActionPreference = 'Stop'; ` Expand-Archive -Path C:\TEMP\vcpkg-master.zip -DestinationPath .; ` + rm C:\TEMP\vcpkg-master.zip; ` cd .\vcpkg-master; ` .\bootstrap-vcpkg.bat; ` .\vcpkg integrate install -# Install packages +# Install C libraries +# +# The `vcpkg` crate searches for libraries matching the target architecture +# exactly. It won't use x86 libraries on a 64-bit system. Setting the default +# triplet tells `vcpkg` to install 64-bit versions. +ENV VCPKG_DEFAULT_TRIPLET=x64-windows COPY vc-packages.txt C:\ RUN .\vcpkg-master\vcpkg install @(Get-Content C:\vc-packages.txt) +# Tell the `vcpkg` crate to generate dynamically linked executables +ENV VCPKGRS_DYNAMIC=1 + CMD ["powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"] diff --git a/windows/choco-packages.txt b/windows/choco-packages.txt new file mode 100644 index 0000000..efe2658 --- /dev/null +++ b/windows/choco-packages.txt @@ -0,0 +1,7 @@ +cmake +--installargs='ADD_CMAKE_TO_PATH=System' +git +llvm +mingw +netfx-4.6.1-devpack +ninja diff --git a/windows/vc-packages.txt b/windows/vc-packages.txt index f22003e..d99c4a2 100644 --- a/windows/vc-packages.txt +++ b/windows/vc-packages.txt @@ -1 +1,10 @@ +curl +libpq +libsodium +libssh2 +openal-soft +openssl +portmidi +sdl2 +sqlite3 zlib