version: 'openfusion-{branch}-{build}'

build_cloud: GCE us-east1-b n2-standard-8
skip_branch_with_pr: true

image:
  - GCP-Windows-VS2019
  - GCP-Linux-Ubuntu2004

platform:
  - x64

configuration:
  - Release
  
for:
-
  matrix:
    only:
      - image: GCP-Linux-Ubuntu2004
  build_script:
    - ps: |
        $versions = "104", "728", "1013"

        foreach ($version in $versions) {
            Write-Output "Cleaning old output"
            Invoke-Expression "make clean"
            if ($LASTEXITCODE -ne "0") {
                Write-Error "make clean failed for version $version" -ErrorAction Stop
            }
            Write-Output "Building version $version"
            Invoke-Expression "make -j8 PROTOCOL_VERSION=$version"
            if ($LASTEXITCODE -ne "0") {
                Write-Error "make failed for version $version" -ErrorAction Stop
            }
            Rename-Item -Path "bin/fusion" -newName "$version-fusion"
            Write-Output "Built version $version"
        }
        Copy-Item -Path "sql" -Destination "bin/sql" -Recurse
        Copy-Item -Path "config.ini" -Destination "bin"
  artifacts:
    - path: bin
      name: ubuntu20_04-bin-x64
      type: zip
-
  matrix:
    only:
      - image: GCP-Windows-VS2019
  install:
    - cmd: vcpkg install sqlite3:x64-windows
    - cmd: vcpkg integrate install
  build_script:
    - ps: |
        $versions = "104", "728", "1013"
        $configurations = "Release"
        # "Debug" builds are disabled, since we don't really need them

        # AppVeyor uses VS2019 Community
        $vsPath = "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community"

        Import-Module "$vsPath\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
        Enter-VsDevShell -VsInstallPath $vsPath -SkipAutomaticLocation

        foreach ($version in $versions) {
            if (Test-Path -LiteralPath "build") {
                Remove-Item "build" -Recurse
                Write-Output "Deleted existing build folder"
            }
            Invoke-Expression "cmake -B build -DPROTOCOL_VERSION=$version"
            if ($LASTEXITCODE -ne "0") {
                Write-Error "cmake generation failed for version $version" -ErrorAction Stop
            }
            Write-Output "Generated build files for version $version"

            foreach ($configuration in $configurations) {
                Write-Output "Building version $version $configuration"
                Invoke-Expression "msbuild build\OpenFusion.sln /maxcpucount:8 /p:BuildInParallel=true /p:CL_MPCount=8 /p:UseMultiToolTask=true /p:Configuration=$configuration"
                if ($LASTEXITCODE -ne "0") {
                    Write-Error "msbuild build failed for version $version" -ErrorAction Stop
                }
                Rename-Item -Path "bin/$configuration" -newName "$version-$configuration"
                Write-Output "Built version $version $configuration"
                Copy-Item -Path "sql" -Destination "bin/$version-$configuration/sql" -Recurse
                Copy-Item -Path "config.ini" -Destination "bin/$version-$configuration"
            }
        }
  artifacts:
    - path: bin
      name: windows-vs2019-bin-x64
      type: zip
