2015-01-11 19:29:39 +01:00
|
|
|
# shallow clone
|
2016-11-19 21:11:49 +01:00
|
|
|
clone_depth: 10
|
2015-01-11 18:33:44 +01:00
|
|
|
|
2016-08-29 15:19:50 +02:00
|
|
|
cache:
|
|
|
|
- C:\ProgramData\chocolatey\bin -> appveyor.yml
|
|
|
|
- C:\ProgramData\chocolatey\lib -> appveyor.yml
|
|
|
|
|
2017-05-22 00:56:25 +02:00
|
|
|
os: Visual Studio 2017
|
2016-01-04 23:55:53 +01:00
|
|
|
|
2017-08-31 03:39:24 +02:00
|
|
|
environment:
|
|
|
|
# Tell msys2 to add mingw64 to the path
|
|
|
|
MSYSTEM: MINGW64
|
|
|
|
# Tell msys2 to inherit the current directory when starting the shell
|
|
|
|
CHERE_INVOKING: 1
|
|
|
|
matrix:
|
|
|
|
- BUILD_TYPE: mingw
|
|
|
|
- BUILD_TYPE: msvc
|
|
|
|
|
2015-01-15 07:07:18 +01:00
|
|
|
platform:
|
2015-02-08 15:23:33 +01:00
|
|
|
- x64
|
2015-01-15 07:07:18 +01:00
|
|
|
|
|
|
|
configuration:
|
|
|
|
- Release
|
2015-01-11 18:33:44 +01:00
|
|
|
|
|
|
|
install:
|
2015-07-07 21:22:26 +02:00
|
|
|
- git submodule update --init --recursive
|
2017-08-31 03:39:24 +02:00
|
|
|
- ps: |
|
|
|
|
if ($env:BUILD_TYPE -eq 'mingw') {
|
2018-03-24 20:19:35 +01:00
|
|
|
$dependencies = "mingw64/mingw-w64-x86_64-qt5"
|
2017-08-31 03:39:24 +02:00
|
|
|
# redirect err to null to prevent warnings from becoming errors
|
|
|
|
# workaround to prevent pacman from failing due to cyclical dependencies
|
|
|
|
C:\msys64\usr\bin\bash -lc "pacman --noconfirm -S mingw64/mingw-w64-x86_64-freetype mingw64/mingw-w64-x86_64-fontconfig" 2> $null
|
2017-10-24 20:09:41 +02:00
|
|
|
C:\msys64\usr\bin\bash -lc "pacman --noconfirm -U http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-SDL2-2.0.5-2-any.pkg.tar.xz" 2> $null
|
2017-08-31 03:39:24 +02:00
|
|
|
C:\msys64\usr\bin\bash -lc "pacman --noconfirm -S $dependencies" 2> $null
|
2018-06-09 03:11:59 +02:00
|
|
|
# freeze the cmake to a stable version, on version < 3.9.6 cmake may generate a Makefile links against gcc_eh instead of gcc_s_eh
|
|
|
|
C:\msys64\usr\bin\bash -lc "pacman --noconfirm -U http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-cmake-3.11.1-2-any.pkg.tar.xz" 2> $null
|
2017-08-31 03:39:24 +02:00
|
|
|
}
|
2015-01-11 18:33:44 +01:00
|
|
|
|
|
|
|
before_build:
|
2017-08-31 03:39:24 +02:00
|
|
|
- mkdir %BUILD_TYPE%_build
|
|
|
|
- cd %BUILD_TYPE%_build
|
|
|
|
- ps: |
|
2018-01-02 02:25:38 +01:00
|
|
|
$COMPAT = if ($env:ENABLE_COMPATIBILITY_REPORTING -eq $null) {0} else {$env:ENABLE_COMPATIBILITY_REPORTING}
|
2017-08-31 03:39:24 +02:00
|
|
|
if ($env:BUILD_TYPE -eq 'msvc') {
|
|
|
|
# redirect stderr and change the exit code to prevent powershell from cancelling the build if cmake prints a warning
|
2018-08-20 11:20:33 +02:00
|
|
|
cmd /C 'cmake -G "Visual Studio 15 2017 Win64" -DCITRA_USE_BUNDLED_QT=1 -DCITRA_USE_BUNDLED_SDL2=1 -DCITRA_ENABLE_COMPATIBILITY_REPORTING=${COMPAT} -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DUSE_DISCORD_PRESENCE=ON .. 2>&1 && exit 0'
|
2017-08-31 03:39:24 +02:00
|
|
|
} else {
|
2018-08-20 11:20:33 +02:00
|
|
|
C:\msys64\usr\bin\bash.exe -lc "cmake -G 'MSYS Makefiles' -DCMAKE_BUILD_TYPE=Release -DENABLE_QT_TRANSLATION=ON -DCITRA_ENABLE_COMPATIBILITY_REPORTING=${COMPAT} -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DUSE_DISCORD_PRESENCE=ON .. 2>&1"
|
2017-08-31 03:39:24 +02:00
|
|
|
}
|
2015-01-11 18:33:44 +01:00
|
|
|
- cd ..
|
2015-01-24 16:45:06 +01:00
|
|
|
|
2017-08-31 03:39:24 +02:00
|
|
|
build_script:
|
|
|
|
- ps: |
|
|
|
|
if ($env:BUILD_TYPE -eq 'msvc') {
|
|
|
|
# https://www.appveyor.com/docs/build-phase
|
|
|
|
msbuild msvc_build/citra.sln /maxcpucount /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
|
|
|
|
} else {
|
2018-04-01 00:30:02 +02:00
|
|
|
C:\msys64\usr\bin\bash.exe -lc 'mingw32-make -j4 -C mingw_build/ 2>&1'
|
2017-08-31 03:39:24 +02:00
|
|
|
}
|
2016-03-20 15:58:24 +01:00
|
|
|
|
2016-11-19 21:11:49 +01:00
|
|
|
after_build:
|
|
|
|
- ps: |
|
|
|
|
$GITDATE = $(git show -s --date=short --format='%ad') -replace "-",""
|
|
|
|
$GITREV = $(git show -s --format='%h')
|
2017-07-27 06:29:33 +02:00
|
|
|
|
2017-08-10 06:17:27 +02:00
|
|
|
# Find out which kind of release we are producing by tag name
|
|
|
|
if ($env:APPVEYOR_REPO_TAG_NAME) {
|
2017-08-31 03:39:24 +02:00
|
|
|
$RELEASE_DIST, $RELEASE_VERSION = $env:APPVEYOR_REPO_TAG_NAME.split('-')
|
2017-08-10 06:17:27 +02:00
|
|
|
} else {
|
2017-08-31 03:39:24 +02:00
|
|
|
# There is no repo tag - make assumptions
|
|
|
|
$RELEASE_DIST = "head"
|
2017-08-10 06:17:27 +02:00
|
|
|
}
|
2017-07-27 06:29:33 +02:00
|
|
|
|
2017-08-31 03:39:24 +02:00
|
|
|
if ($env:BUILD_TYPE -eq 'msvc') {
|
|
|
|
# Where are these spaces coming from? Regardless, let's remove them
|
|
|
|
$MSVC_BUILD_ZIP = "citra-windows-msvc-$GITDATE-$GITREV.zip" -replace " ", ""
|
|
|
|
$MSVC_BUILD_PDB = "citra-windows-msvc-$GITDATE-$GITREV-debugsymbols.zip" -replace " ", ""
|
|
|
|
$MSVC_SEVENZIP = "citra-windows-msvc-$GITDATE-$GITREV.7z" -replace " ", ""
|
|
|
|
|
|
|
|
# set the build names as env vars so the artifacts can upload them
|
|
|
|
$env:BUILD_ZIP = $MSVC_BUILD_ZIP
|
|
|
|
$env:BUILD_SYMBOLS = $MSVC_BUILD_PDB
|
|
|
|
$env:BUILD_UPDATE = $MSVC_SEVENZIP
|
|
|
|
|
|
|
|
mkdir $RELEASE_DIST
|
|
|
|
Copy-Item .\msvc_build\bin\release\* -Destination $RELEASE_DIST -Recurse
|
|
|
|
Copy-Item .\license.txt -Destination $RELEASE_DIST
|
|
|
|
Copy-Item .\README.md -Destination $RELEASE_DIST
|
2017-12-01 19:59:56 +01:00
|
|
|
|
|
|
|
# process PDBs
|
|
|
|
. "./.appveyor/ProcessPdb.ps1"
|
|
|
|
7z a -tzip $MSVC_BUILD_PDB $RELEASE_DIST\*.pdb
|
|
|
|
rm $RELEASE_DIST\*.pdb
|
|
|
|
|
2017-08-31 03:39:24 +02:00
|
|
|
7z a -tzip $MSVC_BUILD_ZIP $RELEASE_DIST\*
|
|
|
|
7z a $MSVC_SEVENZIP $RELEASE_DIST
|
|
|
|
} else {
|
|
|
|
$MINGW_BUILD_ZIP = "citra-windows-mingw-$GITDATE-$GITREV.zip" -replace " ", ""
|
2017-12-01 19:59:56 +01:00
|
|
|
$MINGW_BUILD_PDB = "citra-windows-mingw-$GITDATE-$GITREV-debugsymbols.zip" -replace " ", ""
|
2017-08-31 03:39:24 +02:00
|
|
|
$MINGW_SEVENZIP = "citra-windows-mingw-$GITDATE-$GITREV.7z" -replace " ", ""
|
|
|
|
|
|
|
|
# store the build information in env vars so we can use them as artifacts
|
|
|
|
$env:BUILD_ZIP = $MINGW_BUILD_ZIP
|
2017-12-01 19:59:56 +01:00
|
|
|
$env:BUILD_SYMBOLS = $MINGW_BUILD_PDB
|
2017-08-31 03:39:24 +02:00
|
|
|
$env:BUILD_UPDATE = $MINGW_SEVENZIP
|
|
|
|
|
|
|
|
$CMAKE_SOURCE_DIR = "$env:APPVEYOR_BUILD_FOLDER"
|
|
|
|
$CMAKE_BINARY_DIR = "$CMAKE_SOURCE_DIR/mingw_build"
|
|
|
|
$RELEASE_DIST = $RELEASE_DIST + "-mingw"
|
|
|
|
|
|
|
|
mkdir $RELEASE_DIST
|
|
|
|
mkdir $RELEASE_DIST/platforms
|
2018-05-11 19:42:23 +02:00
|
|
|
mkdir $RELEASE_DIST/mediaservice
|
2018-05-06 06:39:07 +02:00
|
|
|
mkdir $RELEASE_DIST/styles
|
2018-06-28 16:53:23 +02:00
|
|
|
mkdir $RELEASE_DIST/imageformats
|
2017-08-31 03:39:24 +02:00
|
|
|
|
|
|
|
# copy the compiled binaries and other release files to the release folder
|
|
|
|
Get-ChildItem "$CMAKE_BINARY_DIR" -Recurse -Filter "citra*.exe" | Copy-Item -destination $RELEASE_DIST
|
|
|
|
Copy-Item -path "$CMAKE_SOURCE_DIR/license.txt" -destination $RELEASE_DIST
|
|
|
|
Copy-Item -path "$CMAKE_SOURCE_DIR/README.md" -destination $RELEASE_DIST
|
2017-10-23 23:16:36 +02:00
|
|
|
|
2017-08-31 03:39:24 +02:00
|
|
|
# copy the qt windows plugin dll to platforms
|
|
|
|
Copy-Item -path "C:/msys64/mingw64/share/qt5/plugins/platforms/qwindows.dll" -force -destination "$RELEASE_DIST/platforms"
|
|
|
|
|
2018-05-11 19:42:23 +02:00
|
|
|
# copy the qt mediaservice plugin dll
|
|
|
|
Copy-Item -path "C:/msys64/mingw64/share/qt5/plugins/mediaservice/dsengine.dll" -force -destination "$RELEASE_DIST/mediaservice"
|
|
|
|
|
2018-05-06 06:39:07 +02:00
|
|
|
# copy the qt windows vista style dll to platforms
|
|
|
|
Copy-Item -path "C:/msys64/mingw64/share/qt5/plugins/styles/qwindowsvistastyle.dll" -force -destination "$RELEASE_DIST/styles"
|
|
|
|
|
2018-06-28 16:53:23 +02:00
|
|
|
# copy the qt imageformats plugin dlls to imageformats
|
|
|
|
Get-ChildItem "C:/msys64/mingw64/share/qt5/plugins/imageformats" -Exclude "*d.dll" | Copy-Item -force -destination "$RELEASE_DIST/imageformats"
|
|
|
|
|
2018-11-16 06:53:40 +01:00
|
|
|
# copy all the dll dependencies to the release folder
|
|
|
|
. "./.appveyor/FindDependencies.ps1"
|
|
|
|
$DLLSearchPath = "C:\msys64\mingw64\bin;$env:PATH"
|
|
|
|
$MingwDLLs = RecursivelyGetDeps $DLLSearchPath "$RELEASE_DIST\citra.exe"
|
|
|
|
$MingwDLLs += RecursivelyGetDeps $DLLSearchPath "$RELEASE_DIST\citra-qt.exe"
|
|
|
|
$MingwDLLs += RecursivelyGetDeps $DLLSearchPath "$RELEASE_DIST\imageformats\qjpeg.dll"
|
|
|
|
Write-Host "Detected the following dependencies:"
|
|
|
|
Write-Host $MingwDLLs
|
|
|
|
foreach ($file in $MingwDLLs) {
|
|
|
|
Copy-Item -path "$file" -force -destination "$RELEASE_DIST"
|
|
|
|
}
|
|
|
|
|
2017-12-01 19:59:56 +01:00
|
|
|
# process PDBs
|
|
|
|
. "./.appveyor/ProcessPdb.ps1"
|
|
|
|
7z a -tzip $MINGW_BUILD_PDB $RELEASE_DIST\*.pdb
|
|
|
|
rm $RELEASE_DIST\*.pdb
|
|
|
|
|
2017-08-31 03:39:24 +02:00
|
|
|
7z a -tzip $MINGW_BUILD_ZIP $RELEASE_DIST\*
|
|
|
|
7z a $MINGW_SEVENZIP $RELEASE_DIST
|
|
|
|
}
|
2016-09-01 18:47:31 +02:00
|
|
|
|
2016-11-19 21:11:49 +01:00
|
|
|
test_script:
|
2017-08-31 03:39:24 +02:00
|
|
|
- cd %BUILD_TYPE%_build
|
|
|
|
- ps: |
|
|
|
|
if ($env:BUILD_TYPE -eq 'msvc') {
|
|
|
|
ctest -VV -C Release
|
|
|
|
} else {
|
|
|
|
C:\msys64\usr\bin\bash.exe -lc "ctest -VV -C Release"
|
|
|
|
}
|
|
|
|
- cd ..
|
2015-05-25 20:34:09 +02:00
|
|
|
|
2016-11-19 21:11:49 +01:00
|
|
|
artifacts:
|
2017-08-31 03:39:24 +02:00
|
|
|
- path: $(BUILD_ZIP)
|
|
|
|
name: build
|
2016-11-19 21:11:49 +01:00
|
|
|
type: zip
|
2017-08-31 03:39:24 +02:00
|
|
|
- path: $(BUILD_SYMBOLS)
|
|
|
|
name: debugsymbols
|
|
|
|
- path: $(BUILD_UPDATE)
|
|
|
|
name: update
|
2015-05-25 20:34:09 +02:00
|
|
|
|
2017-11-17 02:43:06 +01:00
|
|
|
notifications:
|
|
|
|
- provider: Webhook
|
|
|
|
url: https://api.citra-emu.org/code/appveyor/notify
|