# Copyright (c) 2020 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: Build example - EFR32

on:
  push:
  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

env:
  CHIP_NO_LOG_TIMESTAMPS: true

jobs:
  efr32:
    name: EFR32

    env:
      SILABS_BOARD: BRD4161A
      BUILD_TYPE: gn_efr32

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

    container:
      image: ghcr.io/project-chip/chip-build-efr32:1
      volumes:
        - "/tmp/bloat_reports:/tmp/bloat_reports"
    steps:
      - name: Checkout
        uses: actions/checkout@v3        
      - name: Checkout submodules & Bootstrap
        uses: ./.github/actions/checkout-submodules-and-bootstrap
        with:
          platform: silabs_docker

      - name: Set up environment for size reports
        uses: ./.github/actions/setup-size-reports
        if: ${{ !env.ACT }}
        with:
          gh-context: ${{ toJson(github) }}

      - name: Test SLC gen
        timeout-minutes: 30
        run: |
           scripts/examples/gn_silabs_example.sh examples/lighting-app/silabs ./out/light-app BRD4187C --slc_generate --docker
           scripts/examples/gn_silabs_example.sh examples/lighting-app/silabs ./out/light-app BRD4164A --slc_generate --docker
           rm -rf ./out/
      - name: Build some BRD4187C variants
        run: |
          ./scripts/run_in_build_env.sh \
             "./scripts/build/build_examples.py \
                --enable-flashbundle \
                --target efr32-brd4187c-window-covering-additional_data_advertising \
                --target efr32-brd4187c-thermostat-openthread_mtd \
                --target efr32-brd4187c-switch-sed-shell-use_ot_coap_lib \
                --target efr32-brd4187c-unit-test \
                --target efr32-brd4187c-light-use_ot_lib \
                --target efr32-brd4187c-light-rpc \
                --target efr32-brd4187c-pump \
                --target efr32-brd4187c-lock-rpc-shell-enable_heap_monitoring \
                build \
                --copy-artifacts-to out/artifacts \
             "
      - name: Prepare some bloat report from the previous builds
        run: |
          .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
             efr32 BRD4187C lighting-app \
             out/efr32-brd4187c-light-rpc/matter-silabs-lighting-example.out \
             /tmp/bloat_reports/
          .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py  \
             efr32 BRD4187C window-app \
             out/efr32-brd4187c-window-covering-additional_data_advertising/matter-silabs-window-example.out \
             /tmp/bloat_reports/
      - name: Clean out build output
        run: rm -rf ./out
      - name: Build example EFR32+WF200 WiFi Lock app for BRD4161A
        run: |
          scripts/examples/gn_silabs_example.sh examples/lock-app/silabs out/lock_app_wifi_wf200 BRD4161A is_debug=false chip_logging=false --wifi wf200 --docker
          .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py efr32 BRD4161A+wf200 lock-app \
            out/lock_app_wifi_wf200/BRD4161A/matter-silabs-lock-example.out /tmp/bloat_reports/
      - name: Clean out build output
        run: rm -rf ./out
      - name: Build example EFR32+RS9116 WiFi Lighting app for BRD4161A
        run: |
          scripts/examples/gn_silabs_example.sh examples/lighting-app/silabs out/lighting_app_wifi_rs9116 BRD4161A --wifi rs9116 --docker
          .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py efr32 BRD4161A+rs9116 lighting-app \
            out/lighting_app_wifi_rs9116/BRD4161A/matter-silabs-lighting-example.out /tmp/bloat_reports/
      - name: Clean out build output
        run: rm -rf ./out
      - name: Uploading Size Reports
        uses: ./.github/actions/upload-size-reports
        if: ${{ !env.ACT }}
        with:
          platform-name: EFR32
