## @file
# Azure Pipeline build file for building a platform.
#
# Platform: EMULATORPKG
# OS: Windows
# Toolchain: VS2019
#
# Copyright (c) Microsoft Corporation.
# Copyright (c) 2020, Intel Corporation. All rights reserved.
# SPDX-License-Identifier: BSD-2-Clause-Patent
##
trigger:
  - master
  - stable/*
pr:
  - master
  - stable/*

jobs:
  - job: Platform_CI
    variables:
      package: 'EmulatorPkg'
      vm_image: 'windows-2019'
      should_run: true
      run_flags: "MAKE_STARTUP_NSH=TRUE"

    #Use matrix to speed up the build process
    strategy:
        matrix:
          EmulatorPkg_X64_DEBUG:
            Build.File: "$(package)/PlatformCI/PlatformBuild.py"
            Build.Arch: "X64"
            Build.Flags: ""
            Build.Target: "DEBUG"
            Run.Flags: $(run_flags)
            Run: $(should_run)
          EmulatorPkg_X64_RELEASE:
            Build.File: "$(package)/PlatformCI/PlatformBuild.py"
            Build.Arch: "X64"
            Build.Flags: ""
            Build.Target: "RELEASE"
            Run.Flags: $(run_flags)
            Run: $(should_run)
          EmulatorPkg_X64_NOOPT:
            Build.File: "$(package)/PlatformCI/PlatformBuild.py"
            Build.Arch: "X64"
            Build.Flags: ""
            Build.Target: "NOOPT"
            Run.Flags: $(run_flags)
            Run: $(should_run)
          EmulatorPkg_IA32_DEBUG:
            Build.File: "$(package)/PlatformCI/PlatformBuild.py"
            Build.Arch: "IA32 "
            Build.Flags: ""
            Build.Target: "DEBUG"
            Run.Flags: $(run_flags)
            Run: $(should_run)
          EmulatorPkg_IA32_RELEASE:
            Build.File: "$(package)/PlatformCI/PlatformBuild.py"
            Build.Arch: "IA32 "
            Build.Flags: ""
            Build.Target: "RELEASE"
            Run.Flags: $(run_flags)
            Run: $(should_run)
          EmulatorPkg_IA32_NOOPT:
            Build.File: "$(package)/PlatformCI/PlatformBuild.py"
            Build.Arch: "IA32 "
            Build.Flags: ""
            Build.Target: "NOOPT"
            Run.Flags: $(run_flags)
            Run: $(should_run)
          EmulatorPkg_X64_FULL_DEBUG:
            Build.File: "$(package)/PlatformCI/PlatformBuild.py"
            Build.Arch: "X64"
            Build.Flags: "BLD_*_SECURE_BOOT_ENABLE=TRUE"
            Build.Target: "DEBUG"
            Run.Flags: $(run_flags)
            Run: $(should_run)
          EmulatorPkg_X64_FULL_RELEASE:
            Build.File: "$(package)/PlatformCI/PlatformBuild.py"
            Build.Arch: "X64"
            Build.Flags: "BLD_*_SECURE_BOOT_ENABLE=TRUE"
            Build.Target: "RELEASE"
            Run.Flags: $(run_flags)
            Run: $(should_run)
          EmulatorPkg_X64_FULL_NOOPT:
            Build.File: "$(package)/PlatformCI/PlatformBuild.py"
            Build.Arch: "X64"
            Build.Flags: "BLD_*_SECURE_BOOT_ENABLE=TRUE"
            Build.Target: "NOOPT"
            Run.Flags: $(run_flags)
            Run: $(should_run)
          EmulatorPkg_IA32_FULL_DEBUG:
            Build.File: "$(package)/PlatformCI/PlatformBuild.py"
            Build.Arch: "IA32"
            Build.Flags: "BLD_*_SECURE_BOOT_ENABLE=TRUE"
            Build.Target: "DEBUG"
            Run.Flags: $(run_flags)
            Run: $(should_run)
          EmulatorPkg_IA32_FULL_RELEASE:
            Build.File: "$(package)/PlatformCI/PlatformBuild.py"
            Build.Arch: "IA32"
            Build.Flags: "BLD_*_SECURE_BOOT_ENABLE=TRUE"
            Build.Target: "RELEASE"
            Run.Flags: $(run_flags)
            Run: $(should_run)
          EmulatorPkg_IA32_FULL_NOOPT:
            Build.File: "$(package)/PlatformCI/PlatformBuild.py"
            Build.Arch: "IA32"
            Build.Flags: "BLD_*_SECURE_BOOT_ENABLE=TRUE"
            Build.Target: "NOOPT"
            Run.Flags: $(run_flags)
            Run: $(should_run)

    workspace:
      clean: all

    pool:
      vmImage: $(vm_image)

    steps:
    - template: ../../../.azurepipelines/templates/platform-build-run-steps.yml
      parameters:
        tool_chain_tag: VS2019
        build_pkg: $(package)
        build_target: $(Build.Target)
        build_arch: $(Build.Arch)
        build_file: $(Build.File)
        build_flags: $(Build.Flags)
        run_flags: $(Run.Flags)