##=============================================================================
##
##  Copyright (c) Kitware, Inc.
##  All rights reserved.
##  See LICENSE.txt for details.
##
##  This software is distributed WITHOUT ANY WARRANTY; without even
##  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
##  PURPOSE.  See the above copyright notice for more information.
##
##=============================================================================

# Ad-hoc build that runs in macos machines
build:macos_xcode14:
  extends:
    - .macos_xcode14
    - .macos_build_tags
    - .cmake_build_macos
    - .run_automatically

test:macos_xcode14:
  extends:
    - .macos_xcode14
    - .macos_build_tags
    - .cmake_test_macos
    - .run_automatically
  needs:
    - build:macos_xcode14
  dependencies:
    - build:macos_xcode14

.macos_xcode14:
  variables:
    CMAKE_BUILD_TYPE: RelWithDebInfo
    CMAKE_GENERATOR: Ninja

    CC: gcc
    CXX: g++
    DEVELOPER_DIR: "/Applications/Xcode-14.2.app/Contents/Developer"
    GIT_CLONE_PATH: "$CI_BUILDS_DIR/vtk-m-ci"
    VTKM_SETTINGS: "64bit_floats+shared+ccache"

.cmake_build_macos:
  stage: build
  interruptible: true
  variables:
    CCACHE_BASEDIR: "$CI_PROJECT_DIR"
    CCACHE_DIR: "$CI_PROJECT_DIR/ccache"

    # -isystem= is not affected by CCACHE_BASEDIR, thus we must ignore it
    CCACHE_IGNOREOPTIONS: "-isystem=*"
    CCACHE_COMPILERCHECK: "content"
    CCACHE_NOHASHDIR: "true"
    CCACHE_RESHARE: "true"
    CCACHE_INSTALL_DIR: "$CI_PROJECT_DIR/.gitlab"
  before_script:
    - .gitlab/ci/config/cmake.sh
    - export PATH=$PWD/.gitlab/cmake/bin:$PATH
    - "cmake -VV -P .gitlab/ci/config/ccache.cmake"
    - export PATH=$PWD/.gitlab/ccache:$PATH
    - "cmake -VV -P .gitlab/ci/config/ninja.cmake"
    - export PATH=$PWD/.gitlab:$PATH
    - "cmake --version"
    - "ccache --version"
    - "ninja --version"
    - "cmake -V -P .gitlab/ci/config/fetch_vtkm_tags.cmake"
    - "cmake -V -P .gitlab/ci/config/gitlab_ci_setup.cmake"
    - "ctest -VV -S .gitlab/ci/ctest_configure.cmake"
  script:
    - "ctest -VV -S .gitlab/ci/ctest_build.cmake"
    - cmake -P .gitlab/ci/check_warnings.cmake || exit 47
  after_script:
    - ccache -v -s
    - ccache -z
  extends:
    - .cmake_build_artifacts
    - .warning_policy

.cmake_test_macos:
  stage: test
  interruptible: true
  before_script:
    - .gitlab/ci/config/cmake.sh
    - export PATH=.gitlab/cmake/bin:$PATH
    - "cmake -VV -P .gitlab/ci/config/ninja.cmake"
    - export PATH=$PWD/.gitlab:$PATH
    - cmake --version
    - ninja --version
  script:
    - "ctest $CTEST_TIMEOUT -VV -S .gitlab/ci/ctest_test.cmake"
  extends:
    - .cmake_test_artifacts
  variables:
    CTEST_EXCLUSIONS: >-
      smoke_test_make_built_against_test_install
      smoke_test_pkgconfig_make_built_against_test_install

.macos_build_tags:
  tags:
    - vtk-m
    - macos-x86_64
    - xcode-14.2
    - nonconcurrent
