Skip to content

[Superseded by #41] Add portable static IEC 61850 server adapter #109

[Superseded by #41] Add portable static IEC 61850 server adapter

[Superseded by #41] Add portable static IEC 61850 server adapter #109

name: Embedded Hard Profile CI
on:
push:
branches:
- main
pull_request:
permissions:
contents: read
jobs:
hard-embedded-profile:
name: Hard Embedded / ${{ matrix.compiler }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
compiler: [gcc, clang]
steps:
- uses: actions/checkout@v4
- name: Select compiler
shell: bash
run: |
if [ "${{ matrix.compiler }}" = "clang" ]; then
echo "CC=clang" >> "$GITHUB_ENV"
echo "CXX=clang++" >> "$GITHUB_ENV"
else
echo "CC=gcc" >> "$GITHUB_ENV"
echo "CXX=g++" >> "$GITHUB_ENV"
fi
- name: Configure hard profile
run: cmake -S embedded/hard_profile -B build-hard-embedded
- name: Build hard profile
run: cmake --build build-hard-embedded --parallel
- name: Run hard-profile smokes
run: >-
ctest --test-dir build-hard-embedded
--output-on-failure
--output-junit hard-embedded-ctest.xml
- name: Prove exception runtime is absent
shell: bash
run: |
set -euo pipefail
for binary in \
build-hard-embedded/ariec61850_hard_sv_smoke \
build-hard-embedded/ariec61850_hard_goose_smoke \
build-hard-embedded/ariec61850_hard_osi_transport_smoke \
build-hard-embedded/ariec61850_hard_session_presentation_smoke \
build-hard-embedded/ariec61850_hard_association_smoke \
build-hard-embedded/ariec61850_hard_mms_pdu_smoke \
build-hard-embedded/ariec61850_hard_mms_get_name_list_smoke \
build-hard-embedded/ariec61850_hard_mms_static_model_smoke \
build-hard-embedded/ariec61850_hard_mms_write_smoke \
build-hard-embedded/ariec61850_hard_mms_dispatcher_smoke \
build-hard-embedded/ariec61850_hard_mms_connection_runtime_smoke \
build-hard-embedded/ariec61850_hard_mms_data_set_smoke \
build-hard-embedded/ariec61850_hard_mms_information_report_smoke \
build-hard-embedded/ariec61850_hard_mms_urcb_runtime_smoke \
build-hard-embedded/ariec61850_hard_mms_urcb_objects_smoke \
build-hard-embedded/ariec61850_hard_mms_report_connection_smoke; do
if nm -C "$binary" | grep -E '__cxa_throw|__cxa_begin_catch|__cxa_end_catch|__gxx_personality_v0'; then
echo "exception runtime symbol found in $binary" >&2
exit 1
fi
done
echo 'NO_EXCEPTION_RUNTIME=PASS'
- name: Report hard-profile footprint
shell: bash
run: |
set -euo pipefail
{
echo "compiler=${{ matrix.compiler }}"
size \
build-hard-embedded/ariec61850_hard_sv_smoke \
build-hard-embedded/ariec61850_hard_goose_smoke \
build-hard-embedded/ariec61850_hard_osi_transport_smoke \
build-hard-embedded/ariec61850_hard_session_presentation_smoke \
build-hard-embedded/ariec61850_hard_association_smoke \
build-hard-embedded/ariec61850_hard_mms_pdu_smoke \
build-hard-embedded/ariec61850_hard_mms_get_name_list_smoke \
build-hard-embedded/ariec61850_hard_mms_static_model_smoke \
build-hard-embedded/ariec61850_hard_mms_write_smoke \
build-hard-embedded/ariec61850_hard_mms_dispatcher_smoke \
build-hard-embedded/ariec61850_hard_mms_connection_runtime_smoke \
build-hard-embedded/ariec61850_hard_mms_data_set_smoke \
build-hard-embedded/ariec61850_hard_mms_information_report_smoke \
build-hard-embedded/ariec61850_hard_mms_urcb_runtime_smoke \
build-hard-embedded/ariec61850_hard_mms_urcb_objects_smoke \
build-hard-embedded/ariec61850_hard_mms_report_connection_smoke
} | tee build-hard-embedded/hard-embedded-footprint.txt
- name: Upload hard-profile evidence
uses: actions/upload-artifact@v4
with:
name: embedded-hard-profile-${{ matrix.compiler }}-${{ github.event.pull_request.head.sha || github.sha }}
if-no-files-found: error
retention-days: 14
path: |
build-hard-embedded/hard-embedded-ctest.xml
build-hard-embedded/hard-embedded-footprint.txt