version: '{build}' image: Visual Studio 2019 environment: QTDIR: C:\Qt\5.14\msvc2017_64 LLVMLIBS: https://github.com/RPCS3/llvm-mirror/releases/download/custom-build-win/llvmlibs_mt.7z GLSLANG: https://github.com/RPCS3/glslang/releases/download/custom-build-win/glslanglibs_mt.7z COMPATDB: https://rpcs3.net/compatibility?api=v1&export VULKAN_SDK: "C:\\VulkanSDK\\1.1.126.0" VULKAN_SDK_URL: https://sdk.lunarg.com/sdk/download/1.1.126.0/windows/VulkanSDK-1.1.126.0-Installer.exe VULKAN_SDK_SHA: ee86f25580b550390ce46508415e744d62e87e9c0de6cd299998058253a2a4ba CACERT_PEM: https://curl.haxx.se/ca/cacert.pem cache: - compat_database.dat - vulkan-sdk.exe -> appveyor.yml install: - ps: | # set env vars for versioning $env:COMM_TAG = $(Get-Content ./rpcs3/rpcs3_version.cpp | findstr 'version{.*}' | %{ $ver = $_ -split "[{,]"; "{0}.{1}.{2}" -f [int]$ver[1],[int]$ver[2],[int]$ver[3]; }) $env:COMM_COUNT = $(git rev-list --count HEAD) $env:COMM_HASH = $(git rev-parse --short=8 HEAD) if ($env:APPVEYOR_PULL_REQUEST_NUMBER) { $env:BUILD = "rpcs3-v{0}-{1}_win64.7z" -f $env:COMM_TAG, $env:COMM_HASH $env:AVVER = "{0}-{1}" -f $env:COMM_TAG.TrimStart("v"), $env:COMM_HASH } else { $env:BUILD = "rpcs3-v{0}-{1}-{2}_win64.7z" -f $env:COMM_TAG, $env:COMM_COUNT, $env:COMM_HASH $env:AVVER = "{0}-{1}" -f $env:COMM_TAG.TrimStart("v"), $env:COMM_COUNT } - ps: | # used for experimental build warnings for pr builds $env:BRANCH = "{0}/{1}/#{2}" -f $env:APPVEYOR_REPO_NAME, ` $env:APPVEYOR_REPO_BRANCH, $env:APPVEYOR_PULL_REQUEST_NUMBER $env:BRANCH = $env:BRANCH -replace "/#$" - ps: | # misc global settings $env:PATH += $env:QTDIR [net.servicepointmanager]::securityprotocol = "tls12, tls11, tls" - ps: | # update and init submodules git submodule -q update --init ` 3rdparty/cereal ` 3rdparty/ffmpeg ` 3rdparty/span ` 3rdparty/hidapi ` 3rdparty/libpng ` 3rdparty/libusb ` 3rdparty/pugixml ` 3rdparty/xxHash ` 3rdparty/yaml-cpp ` 3rdparty/zlib ` 3rdparty/FAudio ` 3rdparty/curl ` 3rdparty/wolfssl ` asmjit ` Vulkan/glslang platform: x64 configuration: Release - LLVM build: parallel: true project: rpcs3.sln verbosity: normal before_build: - ps: | # initialize mirror arrays and fetch precompiled build dependencies $VULKAN_SDK_URLS = @( $env:VULKAN_SDK_URL; "$($env:VULKAN_SDK_URL)?Human=true"; ) if (!(test-path llvmlibs.7z)) { irm $env:LLVMLIBS -outfile llvmlibs.7z } if (!(test-path glslang.7z)) { irm $env:GLSLANG -outfile glslang.7z } 7z x llvmlibs.7z -aos -o"." | out-null 7z x glslang.7z -aos -o".\lib\$env:CONFIGURATION-$env:PLATFORM" | out-null if (!(test-path vulkan-sdk.exe)) { foreach ($url in $VULKAN_SDK_URLS) { irm $url -outfile vulkan-sdk.exe if ($env:VULKAN_SDK_SHA -eq $(Get-FileHash .\vulkan-sdk.exe).Hash) { echo "Successfully downloaded and verified vulkan-sdk.exe!" break } else { echo "Invalid file hash, Vulkan SDK Setup was possibly tampered with, retrying with a different mirror..." } } } .\vulkan-sdk.exe /S after_build: - ps: | # remove unnecessary files rm .\bin\rpcs3.exp, .\bin\rpcs3.lib, .\bin\rpcs3.pdb - ps: | # prepare compatibility database for packaging $db = irm $env:COMPATDB -erroraction silentlycontinue if ($db -and $db.return_code -eq 0) { $db | convertto-json -compress | out-file compat_database.dat -encoding utf8 } copy-item compat_database.dat .\bin\GuiConfigs\compat_database.dat - ps: | # Download cacert.pem for SSL certificate validation irm $env:CACERT_PEM -outfile .\bin\cacert.pem - ps: | # package artifacts 7z a -m0=LZMA2 -mx9 $env:BUILD .\bin\* $env:FILESIZE = (Get-Item $env:BUILD).length - ps: | # generate sha256 hashes (get-filehash $env:BUILD -algorithm SHA256).Hash | out-file ("{0}.sha256" -f $env:BUILD) -encoding ascii $env:SHA256SUM = (get-filehash $env:BUILD -algorithm SHA256).Hash test: off artifacts: - path: $(BUILD) name: rpcs3 - path: $(BUILD).sha256 name: rpcs3 sha256 hash deploy: provider: GitHub # Description is a semi-colon seperated list for easy parsing description: "$(SHA256SUM);$(FILESIZE)B" tag: build-$(APPVEYOR_REPO_COMMIT) release: $(AVVER) artifact: $(BUILD) repository: RPCS3/rpcs3-binaries-win draft: false prerelease: false force_update: true auth_token: secure: gTZqN6J9QNQTv9vu2qtExWk1x4o9dSfyTH/y86Yhe3qu+2w6Mly1MaDFMaXgrN1e on: branch: master appveyor_repo_name: RPCS3/rpcs3 on_success: - ps: | # update appveyor build version, done last to prevent webhook breakage update-appveyorbuild -version $env:AVVER