2017-10-14 09:59:12 +02:00
|
|
|
|
2018-02-02 03:20:03 +01:00
|
|
|
version: '{build}'
|
2017-01-30 23:16:47 +01:00
|
|
|
|
2019-08-22 14:13:59 +02:00
|
|
|
image: Visual Studio 2019
|
2017-10-14 09:59:12 +02:00
|
|
|
|
|
|
|
environment:
|
2019-08-10 09:45:59 +02:00
|
|
|
QTDIR: C:\Qt\5.13\msvc2017_64
|
2019-08-22 14:13:59 +02:00
|
|
|
QT_URL: https://cdn.discordapp.com/attachments/442667232489897997/614126952953020416/msvc2017_64.7z
|
2018-06-27 20:19:02 +02:00
|
|
|
LLVMLIBS: https://github.com/RPCS3/llvm/releases/download/continuous-master/llvmlibs.7z
|
2019-05-28 15:37:32 +02:00
|
|
|
GLSLANG: https://dl.dropboxusercontent.com/s/ku2qgwmtfptzbvx/glslang.7z
|
2018-02-02 03:28:32 +01:00
|
|
|
COMPATDB: https://rpcs3.net/compatibility?api=v1&export
|
2019-06-02 09:44:05 +02:00
|
|
|
VULKAN_SDK: "C:\\VulkanSDK\\1.1.106.0"
|
|
|
|
VULKAN_SDK_URL: https://sdk.lunarg.com/sdk/download/1.1.106.0/windows/VulkanSDK-1.1.106.0-Installer.exe
|
|
|
|
VULKAN_SDK_SHA: 24b5c9d415912c0fb07f973f10f671a488b0e33ca991409bcabf1d4bebf0b804
|
2017-10-14 09:59:12 +02:00
|
|
|
|
|
|
|
cache:
|
2018-04-29 13:33:15 +02:00
|
|
|
- glslang.7z -> appveyor.yml
|
2018-02-02 03:28:32 +01:00
|
|
|
- compat_database.dat
|
2018-04-29 13:33:15 +02:00
|
|
|
- vulkan-sdk.exe -> appveyor.yml
|
2019-08-22 14:13:59 +02:00
|
|
|
- msvc2017_64.7z -> appveyor.yml
|
2017-10-14 09:59:12 +02:00
|
|
|
|
|
|
|
install:
|
2018-02-03 02:00:45 +01:00
|
|
|
- ps: | # set env vars for versioning
|
2019-09-17 22:17:20 +02:00
|
|
|
$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]; })
|
2018-02-24 20:54:58 +01:00
|
|
|
$env:COMM_COUNT = $(git rev-list --count HEAD)
|
2018-08-27 20:53:45 +02:00
|
|
|
$env:COMM_HASH = $(git rev-parse --short=8 HEAD)
|
2018-05-01 12:20:36 +02:00
|
|
|
|
2018-02-23 20:41:05 +01:00
|
|
|
if ($env:APPVEYOR_PULL_REQUEST_NUMBER) {
|
2019-09-17 22:17:20 +02:00
|
|
|
$env:BUILD = "rpcs3-v{0}-{1}_win64.7z" -f $env:COMM_TAG, $env:COMM_HASH
|
2018-02-24 20:54:58 +01:00
|
|
|
$env:AVVER = "{0}-{1}" -f $env:COMM_TAG.TrimStart("v"), $env:COMM_HASH
|
2018-02-23 20:41:05 +01:00
|
|
|
}
|
|
|
|
else {
|
2019-09-17 22:17:20 +02:00
|
|
|
$env:BUILD = "rpcs3-v{0}-{1}-{2}_win64.7z" -f $env:COMM_TAG, $env:COMM_COUNT, $env:COMM_HASH
|
2018-02-24 20:54:58 +01:00
|
|
|
$env:AVVER = "{0}-{1}" -f $env:COMM_TAG.TrimStart("v"), $env:COMM_COUNT
|
2018-02-23 20:41:05 +01:00
|
|
|
}
|
2018-02-02 03:20:03 +01:00
|
|
|
|
2018-02-02 03:05:36 +01:00
|
|
|
- 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 "/#$"
|
|
|
|
|
2018-02-02 23:38:56 +01:00
|
|
|
- ps: | # misc global settings
|
|
|
|
$env:PATH += $env:QTDIR
|
|
|
|
[net.servicepointmanager]::securityprotocol = "tls12, tls11, tls"
|
2018-02-02 03:05:36 +01:00
|
|
|
|
|
|
|
- ps: | # update and init submodules
|
|
|
|
git submodule -q update --init `
|
|
|
|
3rdparty/cereal `
|
|
|
|
3rdparty/ffmpeg `
|
2019-11-09 16:43:10 +01:00
|
|
|
3rdparty/span `
|
2018-02-02 03:05:36 +01:00
|
|
|
3rdparty/hidapi `
|
|
|
|
3rdparty/libpng `
|
2019-02-02 14:48:21 +01:00
|
|
|
3rdparty/libusb `
|
2018-02-02 03:05:36 +01:00
|
|
|
3rdparty/pugixml `
|
2018-05-13 11:18:05 +02:00
|
|
|
3rdparty/xxHash `
|
2018-03-24 22:16:05 +01:00
|
|
|
3rdparty/yaml-cpp `
|
2018-02-02 03:05:36 +01:00
|
|
|
3rdparty/zlib `
|
2019-10-24 21:26:29 +02:00
|
|
|
3rdparty/FAudio `
|
2018-02-02 03:05:36 +01:00
|
|
|
asmjit `
|
2018-04-29 13:33:15 +02:00
|
|
|
Vulkan/glslang
|
2017-10-14 09:59:12 +02:00
|
|
|
|
2015-08-03 21:07:12 +02:00
|
|
|
platform: x64
|
2015-08-04 18:57:41 +02:00
|
|
|
|
2017-10-14 09:59:12 +02:00
|
|
|
configuration: Release - LLVM
|
2017-01-30 23:16:47 +01:00
|
|
|
|
2017-10-14 09:59:12 +02:00
|
|
|
build:
|
2018-02-02 02:54:11 +01:00
|
|
|
parallel: true
|
|
|
|
project: rpcs3.sln
|
2017-10-14 09:59:12 +02:00
|
|
|
verbosity: normal
|
|
|
|
|
2015-08-03 21:07:12 +02:00
|
|
|
before_build:
|
2018-05-23 21:36:47 +02:00
|
|
|
- ps: | # initialize mirror arrays and fetch precompiled build dependencies
|
|
|
|
$VULKAN_SDK_URLS = @(
|
|
|
|
$env:VULKAN_SDK_URL;
|
|
|
|
"$($env:VULKAN_SDK_URL)?Human=true";
|
|
|
|
)
|
2018-02-02 05:17:13 +01:00
|
|
|
if (!(test-path llvmlibs.7z)) { irm $env:LLVMLIBS -outfile llvmlibs.7z }
|
2018-04-29 13:33:15 +02:00
|
|
|
if (!(test-path glslang.7z)) { irm $env:GLSLANG -outfile glslang.7z }
|
2019-08-22 14:13:59 +02:00
|
|
|
if (!(test-path msvc2017_64.7z)) { irm $env:QT_URL -outfile msvc2017_64.7z }
|
2018-02-02 05:17:13 +01:00
|
|
|
7z x llvmlibs.7z -aos -o"." | out-null
|
2018-04-29 13:33:15 +02:00
|
|
|
7z x glslang.7z -aos -o".\lib\$env:CONFIGURATION-$env:PLATFORM" | out-null
|
2019-08-22 14:13:59 +02:00
|
|
|
7z x msvc2017_64.7z -aos -o"C:\Qt\5.13" | out-null
|
2018-03-24 22:16:05 +01:00
|
|
|
if (!(test-path vulkan-sdk.exe))
|
2018-05-23 21:36:47 +02:00
|
|
|
{
|
|
|
|
foreach ($url in $VULKAN_SDK_URLS) {
|
2018-03-24 22:16:05 +01:00
|
|
|
irm $url -outfile vulkan-sdk.exe
|
|
|
|
if ($env:VULKAN_SDK_SHA -eq $(Get-FileHash .\vulkan-sdk.exe).Hash)
|
2018-05-23 20:38:44 +02:00
|
|
|
{
|
2018-05-23 21:36:47 +02:00
|
|
|
echo "Successfully downloaded and verified vulkan-sdk.exe!"
|
|
|
|
break
|
2018-05-23 20:38:44 +02:00
|
|
|
}
|
2018-03-24 22:16:05 +01:00
|
|
|
else
|
2018-05-23 20:38:44 +02:00
|
|
|
{
|
2018-05-23 21:36:47 +02:00
|
|
|
echo "Invalid file hash, Vulkan SDK Setup was possibly tampered with, retrying with a different mirror..."
|
2018-05-23 20:38:44 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2018-04-29 13:33:15 +02:00
|
|
|
.\vulkan-sdk.exe /S
|
2015-08-04 18:23:35 +02:00
|
|
|
|
2018-02-02 03:20:03 +01:00
|
|
|
after_build:
|
2018-02-02 03:22:16 +01:00
|
|
|
- ps: | # remove unnecessary files
|
|
|
|
rm .\bin\rpcs3.exp, .\bin\rpcs3.lib, .\bin\rpcs3.pdb
|
|
|
|
|
2018-02-02 03:28:32 +01:00
|
|
|
- ps: | # prepare compatibility database for packaging
|
2018-02-02 23:38:56 +01:00
|
|
|
$db = irm $env:COMPATDB -erroraction silentlycontinue
|
2018-02-02 03:28:32 +01:00
|
|
|
if ($db -and $db.return_code -eq 0) {
|
2018-02-02 23:38:56 +01:00
|
|
|
$db | convertto-json -compress | out-file compat_database.dat -encoding utf8
|
2018-02-02 03:28:32 +01:00
|
|
|
}
|
|
|
|
copy-item compat_database.dat .\bin\GuiConfigs\compat_database.dat
|
|
|
|
|
2018-02-02 03:20:03 +01:00
|
|
|
- ps: | # package artifacts
|
2018-02-24 20:54:58 +01:00
|
|
|
7z a -m0=LZMA2 -mx9 $env:BUILD .\bin\*
|
2019-08-26 01:59:10 +02:00
|
|
|
7z a -m0=LZMA2 -mx9 openssl_win64.7z C:\OpenSSL-v111-Win64\bin\libcrypto-1_1-x64.dll `
|
|
|
|
C:\OpenSSL-v111-Win64\bin\libssl-1_1-x64.dll
|
2019-09-16 03:24:06 +02:00
|
|
|
$env:FILESIZE = (Get-Item $env:BUILD).length
|
2018-02-02 03:20:03 +01:00
|
|
|
|
2018-02-04 22:29:56 +01:00
|
|
|
- ps: | # generate sha256 hashes
|
2018-02-24 20:54:58 +01:00
|
|
|
(get-filehash $env:BUILD -algorithm SHA256).Hash | out-file ("{0}.sha256" -f $env:BUILD) -encoding ascii
|
2018-06-01 01:59:44 +02:00
|
|
|
$env:SHA256SUM = (get-filehash $env:BUILD -algorithm SHA256).Hash
|
2018-02-24 20:54:58 +01:00
|
|
|
(get-filehash openssl_win64.7z -algorithm SHA256).Hash | out-file "openssl_win64.7z.sha256" -encoding ascii
|
2018-02-04 22:29:56 +01:00
|
|
|
|
2017-10-14 09:59:12 +02:00
|
|
|
test: off
|
|
|
|
|
2015-08-09 21:05:16 +02:00
|
|
|
artifacts:
|
2018-02-24 20:54:58 +01:00
|
|
|
- path: $(BUILD)
|
2018-02-02 03:20:03 +01:00
|
|
|
name: rpcs3
|
2018-02-24 20:54:58 +01:00
|
|
|
- path: $(BUILD).sha256
|
2018-02-04 22:29:56 +01:00
|
|
|
name: rpcs3 sha256 hash
|
2018-02-02 03:23:53 +01:00
|
|
|
- path: openssl_win64.7z
|
2018-02-03 02:00:45 +01:00
|
|
|
name: openssl
|
2018-02-04 22:29:56 +01:00
|
|
|
- path: openssl_win64.7z.sha256
|
|
|
|
name: openssl sha256 hash
|
2018-06-27 20:19:02 +02:00
|
|
|
|
2018-06-01 01:59:44 +02:00
|
|
|
deploy:
|
|
|
|
provider: GitHub
|
|
|
|
# Description is a semi-colon seperated list for easy parsing
|
2019-09-16 03:24:06 +02:00
|
|
|
description: "$(SHA256SUM);$(FILESIZE)B"
|
2018-06-01 01:59:44 +02:00
|
|
|
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
|
2018-02-03 02:00:45 +01:00
|
|
|
|
2018-06-01 19:36:34 +02:00
|
|
|
on_success:
|
2018-02-03 02:00:45 +01:00
|
|
|
- ps: | # update appveyor build version, done last to prevent webhook breakage
|
|
|
|
update-appveyorbuild -version $env:AVVER
|