mirror of
https://github.com/citra-mirror/citra.git
synced 2024-08-20 02:13:23 +02:00
The original purpose of freezing CMake is to use a **higher** version than supplied in order to fix a certain issue. Now that a very long time has passed and mingw's CMake has been updated, there's really no reason to still freeze it any more. What's more, trying to use a certain version is unreliable by pacman's design and will probably cause issues for using older versions of dependencies. The current (and previous) mingw errors may come from this...
175 lines
7.3 KiB
YAML
175 lines
7.3 KiB
YAML
# shallow clone
|
|
clone_depth: 10
|
|
|
|
cache:
|
|
- C:\ProgramData\chocolatey\bin -> appveyor.yml
|
|
- C:\ProgramData\chocolatey\lib -> appveyor.yml
|
|
|
|
os: Visual Studio 2017
|
|
|
|
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
|
|
|
|
platform:
|
|
- x64
|
|
|
|
configuration:
|
|
- Release
|
|
|
|
install:
|
|
- git submodule update --init --recursive
|
|
- ps: |
|
|
if ($env:BUILD_TYPE -eq 'mingw') {
|
|
$dependencies = "mingw64/mingw-w64-x86_64-cmake mingw64/mingw-w64-x86_64-qt5 mingw64/mingw-w64-x86_64-ffmpeg"
|
|
# 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
|
|
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
|
|
C:\msys64\usr\bin\bash -lc "pacman --noconfirm -S $dependencies" 2> $null
|
|
}
|
|
|
|
before_build:
|
|
- mkdir %BUILD_TYPE%_build
|
|
- cd %BUILD_TYPE%_build
|
|
- ps: |
|
|
$COMPAT = if ($env:ENABLE_COMPATIBILITY_REPORTING -eq $null) {0} else {$env:ENABLE_COMPATIBILITY_REPORTING}
|
|
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
|
|
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 -DENABLE_MF=ON .. 2>&1 && exit 0'
|
|
} else {
|
|
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 -DENABLE_MF=ON .. 2>&1"
|
|
}
|
|
- cd ..
|
|
|
|
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 {
|
|
C:\msys64\usr\bin\bash.exe -lc 'mingw32-make -j4 -C mingw_build/ 2>&1'
|
|
}
|
|
|
|
after_build:
|
|
- ps: |
|
|
$GITDATE = $(git show -s --date=short --format='%ad') -replace "-",""
|
|
$GITREV = $(git show -s --format='%h')
|
|
|
|
# Find out which kind of release we are producing by tag name
|
|
if ($env:APPVEYOR_REPO_TAG_NAME) {
|
|
$RELEASE_DIST, $RELEASE_VERSION = $env:APPVEYOR_REPO_TAG_NAME.split('-')
|
|
} else {
|
|
# There is no repo tag - make assumptions
|
|
$RELEASE_DIST = "head"
|
|
}
|
|
|
|
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
|
|
|
|
# process PDBs
|
|
. "./.appveyor/ProcessPdb.ps1"
|
|
7z a -tzip $MSVC_BUILD_PDB $RELEASE_DIST\*.pdb
|
|
rm $RELEASE_DIST\*.pdb
|
|
|
|
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 " ", ""
|
|
$MINGW_BUILD_PDB = "citra-windows-mingw-$GITDATE-$GITREV-debugsymbols.zip" -replace " ", ""
|
|
$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
|
|
$env:BUILD_SYMBOLS = $MINGW_BUILD_PDB
|
|
$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
|
|
mkdir $RELEASE_DIST/mediaservice
|
|
mkdir $RELEASE_DIST/styles
|
|
mkdir $RELEASE_DIST/imageformats
|
|
|
|
# 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
|
|
|
|
# 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"
|
|
|
|
# copy the qt mediaservice plugin dll
|
|
Copy-Item -path "C:/msys64/mingw64/share/qt5/plugins/mediaservice/dsengine.dll" -force -destination "$RELEASE_DIST/mediaservice"
|
|
|
|
# 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"
|
|
|
|
# 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"
|
|
|
|
# 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"
|
|
}
|
|
|
|
# process PDBs
|
|
. "./.appveyor/ProcessPdb.ps1"
|
|
7z a -tzip $MINGW_BUILD_PDB $RELEASE_DIST\*.pdb
|
|
rm $RELEASE_DIST\*.pdb
|
|
|
|
7z a -tzip $MINGW_BUILD_ZIP $RELEASE_DIST\*
|
|
7z a $MINGW_SEVENZIP $RELEASE_DIST
|
|
}
|
|
|
|
test_script:
|
|
- 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 ..
|
|
|
|
artifacts:
|
|
- path: $(BUILD_ZIP)
|
|
name: build
|
|
type: zip
|
|
- path: $(BUILD_SYMBOLS)
|
|
name: debugsymbols
|
|
- path: $(BUILD_UPDATE)
|
|
name: update
|
|
|
|
notifications:
|
|
- provider: Webhook
|
|
url: https://api.citra-emu.org/code/appveyor/notify
|