Skip to content

Commit b164249

Browse files
committed
simplify approach
1 parent 8651790 commit b164249

3 files changed

Lines changed: 34 additions & 54 deletions

File tree

.github/workflows/config.yml

Lines changed: 24 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,6 @@ jobs:
1818
cmake . -B build -DFMU4CPP_BUILD_TESTS=ON -DFMU4CPP_BUILD_EXAMPLES=ON
1919
cmake --build build
2020
21-
- name: "Read model paths"
22-
run: |
23-
MODEL_PATHS=""
24-
while IFS= read -r line || [ -n "$line" ]; do
25-
line=$(echo "$line" | tr -d '\r' | xargs)
26-
if [ -z "$line" ]; then
27-
continue
28-
fi
29-
if [ -z "$MODEL_PATHS" ]; then
30-
MODEL_PATHS="$line"
31-
else
32-
MODEL_PATHS="$MODEL_PATHS;$line"
33-
fi
34-
done < build/models.txt
35-
printf 'MODEL_PATHS=%s\n' "$MODEL_PATHS" >> $GITHUB_ENV
36-
37-
3821
- name: "Download fmusim"
3922
run: |
4023
version=0.0.39
@@ -48,16 +31,19 @@ jobs:
4831
- name: "Run fmusim"
4932
working-directory: "Reference-FMUs/fmusim-x86_64-linux"
5033
run: |
51-
IFS=';' read -r -a paths <<< "${{ env.MODEL_PATHS }}"
52-
for mp in "${paths[@]}"; do
53-
if [ -z "$mp" ]; then
54-
continue
55-
fi
56-
mb=$(basename "$mp")
57-
58-
echo "Checking model: $mp ($mb)"
59-
./fmusim --logging-on "${{ github.workspace }}/build/$mp/$mb.fmu"
60-
done
34+
set -e
35+
found=0
36+
# find all .fmu files under `build/models` (fmi2 and fmi3)
37+
while IFS= read -r -d '' f; do
38+
found=1
39+
mb=$(basename "$f")
40+
echo "Checking FMU: $f ($mb)"
41+
./fmusim --logging-on "${{ github.workspace }}/$f"
42+
done < <(find build/models -type f -name '*.fmu' -print0 2>/dev/null || true)
43+
44+
if [ "$found" -eq 0 ]; then
45+
echo "No FMUs found under `build/models`, skipping fmusim run"
46+
fi
6147

6248
- name: "Test"
6349
run: |
@@ -79,13 +65,6 @@ jobs:
7965
cmake . -B build -DFMU4CPP_BUILD_TESTS=ON -DFMU4CPP_BUILD_EXAMPLES=ON -A x64
8066
cmake --build build --config Release
8167
82-
- name: "Read model paths"
83-
shell: pwsh
84-
run: |
85-
$paths = Get-Content -Path build/models.txt | ForEach-Object { $_.Trim() } | Where-Object { $_ -ne '' }
86-
$joined = $paths -join ';'
87-
"MODEL_PATHS=$joined" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding UTF8
88-
8968
- name: "Download fmusim"
9069
shell: pwsh
9170
run: |
@@ -100,17 +79,19 @@ jobs:
10079
shell: pwsh
10180
working-directory: "Reference-FMUs/fmusim-x86_64-windows"
10281
run: |
103-
$paths = $env:MODEL_PATHS -split ';'
104-
foreach ($mp in $paths) {
105-
if ([string]::IsNullOrWhiteSpace($mp)) { continue }
106-
$mb = Split-Path $mp -Leaf
107-
Write-Host "Checking model: $mp ($mb)"
108-
& ./fmusim.exe "$env:GITHUB_WORKSPACE\build\$mp\$mb.fmu"
82+
$fmus = Get-ChildItem -Path "$env:GITHUB_WORKSPACE\build\models" -Recurse -Filter '*.fmu' -File -ErrorAction SilentlyContinue
83+
if (-not $fmus -or $fmus.Count -eq 0) {
84+
Write-Host "No FMUs found under `build/models`, skipping fmusim run"
85+
exit 0
86+
}
87+
foreach ($f in $fmus) {
88+
Write-Host "Checking FMU: $($f.FullName) ($($f.Name))"
89+
& ./fmusim.exe $f.FullName
10990
if ($LASTEXITCODE -ne 0) {
110-
Write-Error "FMUChecker failed for $mp with exit code $LASTEXITCODE"
111-
exit $LASTEXITCODE
112-
}
91+
Write-Error "FMUChecker failed for $($f.FullName) with exit code $LASTEXITCODE"
92+
exit $LASTEXITCODE
11393
}
94+
}
11495

11596
- name: "Test"
11697
run: |

CMakeLists.txt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@ cmake_minimum_required(VERSION 3.15)
22
file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/version.txt" projectVersion)
33
project(fmu4cpp-template VERSION ${projectVersion})
44

5+
6+
option(FMU4CPP_BUILD_EXAMPLES "Build example FMUs" OFF)
7+
option(FMU4CPP_BUILD_TESTS "Build internal tests" OFF)
8+
9+
set(CMAKE_CXX_STANDARD 17)
10+
511
if (POLICY CMP0091)
612
cmake_policy(SET CMP0091 NEW)
713
if (WIN32)
@@ -16,17 +22,12 @@ if (POLICY CMP0091)
1622
endif ()
1723
endif ()
1824

19-
option(FMU4CPP_BUILD_EXAMPLES "Build example FMUs" OFF)
20-
option(FMU4CPP_BUILD_TESTS "Build internal tests" OFF)
21-
22-
set(CMAKE_CXX_STANDARD 17)
2325

2426
set(generatedSourcesDir "${CMAKE_BINARY_DIR}/generated")
27+
set(fmuResultDir "${CMAKE_BINARY_DIR}/models")
2528

26-
27-
# this will be populated by a list of all generated models
28-
set(OUTPUT_FILE "${CMAKE_BINARY_DIR}/models.txt")
29-
file(WRITE ${OUTPUT_FILE} "")
29+
file(MAKE_DIRECTORY ${generatedSourcesDir})
30+
file(MAKE_DIRECTORY ${fmuResultDir})
3031

3132
include("cmake/generate_fmu.cmake")
3233

cmake/generate_fmu.cmake

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ function(generateFMU modelIdentifier)
9797
endif ()
9898

9999

100-
set(fmuOutputDir "${CMAKE_BINARY_DIR}/${fmiVersion}")
100+
set(fmuOutputDir "${fmuResultDir}/${fmiVersion}")
101101
set(modelOutputDir "${fmuOutputDir}/${modelIdentifier}")
102102
set(binaryOutputDir "$<1:${modelOutputDir}/binaries/${TARGET_PLATFORM}>")
103103

@@ -168,8 +168,6 @@ function(generateFMU modelIdentifier)
168168
COMMAND ${CMAKE_COMMAND} -E tar c "${modelIdentifier}.fmu" --format=zip ${TAR_INPUTS}
169169
)
170170

171-
file(APPEND ${OUTPUT_FILE} "${fmiVersion}/${modelIdentifier}\n")
172-
173171
endforeach ()
174172

175173
endfunction()

0 commit comments

Comments
 (0)