# Copyright (c) 2023 Project CHIP Authors
#
# 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.

name: Minimal Build (Linux / configure)

on:
    push:
        branches:
            - master
            - 'v*-branch'
    pull_request:
    merge_group:

concurrency:
    group: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }}
    cancel-in-progress: true

jobs:
    minimal-all-clusters:
        name: Linux / configure build of all-clusters-app

        if: github.actor != 'restyled-io[bot]'
        runs-on: ubuntu-latest

        container:
            image: ghcr.io/project-chip/chip-build-minimal:90

        steps:
            - name: Checkout
              uses: actions/checkout@v4

            - name: Checkout submodules # but don't bootstrap!
              uses: ./.github/actions/checkout-submodules
              with:
                  platform: linux

            - name: Configure and build All Clusters App
              run: |
                  CC=gcc CXX=g++ scripts/configure --project=examples/all-clusters-app/linux --enable-recommended=no && ./ninja-build

    minimal-network-manager:
        name: Linux / configure build of network-manager-app

        if: github.actor != 'restyled-io[bot]'
        runs-on: ubuntu-latest

        container:
            image: ghcr.io/project-chip/chip-build-minimal:90

        steps:
            - name: Checkout
              uses: actions/checkout@v4

            - name: Checkout submodules # but don't bootstrap!
              uses: ./.github/actions/checkout-submodules
              with:
                  platform: linux

            - name: Configure and build Network Manager App
              run: |
                  CC=gcc CXX=g++ scripts/configure --project=examples/network-manager-app/linux --enable-recommended=no && ./ninja-build
