# Copyright 2021 The Cobalt Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

version: '2.4'

volumes:
  container-sccache:

x-common-definitions: &common-definitions
  stdin_open: true
  environment:
    - SCCACHE_DIR=c:/root/sccache
    - SCCACHE_CACHE_SIZE="30G"
  tty: true
  volumes:
    - ${COBALT_SRC:-.}:c:/code/
    - ${SCCACHE_DIR:-container-sccache}:c:/root/sccache/
  cpus: ${DOCKER_CPUS:-12}
  mem_limit: ${DOCKER_MEMLIMIT:-100000M}

x-shared-build-env: &shared-build-env
  IS_CI: ${IS_CI:-0}
  IS_DOCKER: 1
  PYTHONPATH: c:/code/
  CONFIG: ${CONFIG:-devel}
  TARGET: ${TARGET:-cobalt_install}
  NINJA_FLAGS: ${NINJA_FLAGS}

services:

  # ----------------------------------------
  # Base images for Visual Studio dependency
  # ----------------------------------------

  visual-studio-base:
    build:
      context: ./docker/windows/base/visualstudio2017
      dockerfile: ./Dockerfile
      args:
        - FROM_IMAGE=mcr.microsoft.com/windows/servercore:ltsc2019
    image: visual-studio-base
    scale: 0

  visual-studio-win32-base:
    build:
      context: ./docker/windows/base/visualstudio2017
      dockerfile: ./Dockerfile
      args:
        - FROM_IMAGE=mcr.microsoft.com/windows:1809
    image: visual-studio-win32-base
    scale: 0

  visual-studio-2022-win32-base:
    build:
      context: ./docker/windows/base/visualstudio2022
      dockerfile: ./Dockerfile
      args:
        - FROM_IMAGE=mcr.microsoft.com/windows:1809
    image: visual-studio-2022-win32-base
    scale: 0

  # -----------------------------------------------
  # Cobalt-Build images for windows-based platforms
  # -----------------------------------------------

  cobalt-build-win-base:
    build:
      context: ./docker/windows/base/build
      dockerfile: ./Dockerfile
      args:
        - FROM_IMAGE=visual-studio-base
    image: cobalt-build-win-base
    scale: 0
    depends_on:
      - visual-studio-base

  cobalt-build-win32-base:
    build:
      context: ./docker/windows/base/build
      dockerfile: ./Dockerfile
      args:
        - FROM_IMAGE=visual-studio-win32-base
    image: cobalt-build-win32-base
    scale: 0
    depends_on:
      - visual-studio-win32-base

  cobalt-build-vs2022-win32-base:
    build:
      context: ./docker/windows/base/build
      dockerfile: ./Dockerfile
      args:
        - FROM_IMAGE=visual-studio-2022-win32-base
    depends_on:
      - visual-studio-2022-win32-base
    image: cobalt-build-vs2022-win32-base
    scale: 0

  build-win-win32:
    <<: *common-definitions
    build:
      context: ./docker/windows/win32
      dockerfile: ./Dockerfile
    depends_on:
      - cobalt-build-win32-base
    image: cobalt-build-win-win32

  # -----------------------------------------
  # Win32 Platform Images for Building Cobalt
  # -----------------------------------------

  win-win32:
    <<: *common-definitions
    build:
      context: ./docker/windows/win32
      dockerfile: ./Dockerfile
      args:
        - FROM_IMAGE=cobalt-build-win32-base
    depends_on:
      - cobalt-build-win32-base
    environment:
      <<: *shared-build-env
      PLATFORM: win-win32
    image: cobalt-build-win32

  win-win32-vs2022:
    <<: *common-definitions
    build:
      context: ./docker/windows/win32
      dockerfile: ./Dockerfile
      args:
        - FROM_IMAGE=cobalt-build-vs2022-win32-base
    depends_on:
      - cobalt-build-vs2022-win32-base
    environment:
      <<: *shared-build-env
      PLATFORM: win-win32
    image: cobalt-build-win32-vs2022

  runner-win-win32:
    <<: *common-definitions
    build:
      context: ./docker/windows/runner
      dockerfile: ./Dockerfile
      args:
        - RUNNER_VERSION=2.294.0
    depends_on:
      - cobalt-build-win32-base
    image: cobalt-runner-win-win32
