mirror of https://github.com/yuzu-mirror/yuzu
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			174 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			YAML
		
	
			
		
		
	
	
			174 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-curl",
 | 
						|
                          "mingw64/mingw-w64-x86_64-SDL2"
 | 
						|
          # 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 -S $dependencies" 2> $null
 | 
						|
        }        
 | 
						|
 | 
						|
before_build:
 | 
						|
  - mkdir %BUILD_TYPE%_build
 | 
						|
  - cd %BUILD_TYPE%_build
 | 
						|
  - ps: |
 | 
						|
        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 -DCMAKE_USE_OPENSSL=0 .. 2>&1 && exit 0'
 | 
						|
        } else {
 | 
						|
          C:\msys64\usr\bin\bash.exe -lc "cmake -G 'MSYS Makefiles' -DUSE_SYSTEM_CURL=1 -DCITRA_USE_BUNDLED_CURL=1 -DCMAKE_BUILD_TYPE=Release .. 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 -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
 | 
						|
 | 
						|
          7z a -tzip $MSVC_BUILD_PDB .\msvc_build\bin\release\*.pdb
 | 
						|
          rm .\msvc_build\bin\release\*.pdb
 | 
						|
 | 
						|
          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
 | 
						|
          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_SEVENZIP = "citra-windows-mingw-$GITDATE-$GITREV.7z" -replace " ", ""
 | 
						|
          # not going to bother adding separate debug symbols for mingw, so just upload a README for it
 | 
						|
          # if someone wants to add them, change mingw to compile with -g and use objdump and strip to separate the symbols from the binary
 | 
						|
          $MINGW_NO_DEBUG_SYMBOLS = "README_No_Debug_Symbols.txt"
 | 
						|
          Set-Content -Path $MINGW_NO_DEBUG_SYMBOLS -Value "This is a workaround for Appveyor since msvc has debug symbols but mingw doesnt" -Force
 | 
						|
 | 
						|
          # store the build information in env vars so we can use them as artifacts
 | 
						|
          $env:BUILD_ZIP = $MINGW_BUILD_ZIP
 | 
						|
          $env:BUILD_SYMBOLS = $MINGW_NO_DEBUG_SYMBOLS
 | 
						|
          $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
 | 
						|
 | 
						|
          # 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 the libcurl dll
 | 
						|
          Get-ChildItem "$CMAKE_BINARY_DIR" -Recurse -Filter "libcurl.dll" | 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 all the dll dependencies to the release folder
 | 
						|
          # hardcoded list because we don't build static and determining the list of dlls from the binary is a pain.
 | 
						|
          $MingwDLLs = "Qt5Core.dll","Qt5Widgets.dll","Qt5Gui.dll","Qt5OpenGL.dll",
 | 
						|
                       # QT dll dependencies
 | 
						|
                       "libbz2-*.dll","libicudt*.dll","libicuin*.dll","libicuuc*.dll","libffi-*.dll",
 | 
						|
                       "libfreetype-*.dll","libglib-*.dll","libgobject-*.dll","libgraphite2.dll","libiconv-*.dll",
 | 
						|
                       "libharfbuzz-*.dll","libintl-*.dll","libpcre-*.dll","libpcre16-*.dll","libpng16-*.dll",
 | 
						|
                       # Runtime/Other dependencies
 | 
						|
                       "libgcc_s_seh-*.dll","libstdc++-*.dll","libwinpthread-*.dll","SDL2.dll","zlib1.dll"
 | 
						|
          foreach ($file in $MingwDLLs) {
 | 
						|
            Copy-Item -path "C:/msys64/mingw64/bin/$file" -force -destination "$RELEASE_DIST"
 | 
						|
          }
 | 
						|
          # the above list copies a few extra debug dlls that aren't needed (thanks globbing patterns!)
 | 
						|
          # so we can remove them by hardcoding another list of extra dlls to remove
 | 
						|
          $DebugDLLs = "libicudtd*.dll","libicuind*.dll","libicuucd*.dll"
 | 
						|
          foreach ($file in $DebugDLLs) {
 | 
						|
            Remove-Item -path "$RELEASE_DIST/$file"
 | 
						|
          }
 | 
						|
 | 
						|
          # 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"
 | 
						|
 | 
						|
          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
 | 
						|
 | 
						|
deploy:
 | 
						|
  provider: GitHub
 | 
						|
  release: $(appveyor_repo_tag_name)
 | 
						|
  auth_token:
 | 
						|
    secure: "dbpsMC/MgPKWFNJCXpQl4cR8FYhepkPLjgNp/pRMktZ8oLKTqPYErfreaIxb/4P1"
 | 
						|
  artifact: update,build
 | 
						|
  draft: false
 | 
						|
  prerelease: false
 | 
						|
  on:
 | 
						|
    appveyor_repo_tag: true
 |