Skip to content

Commit 1de718e

Browse files
committed
Merge remote-tracking branch 'origin/master' into documentation
2 parents a57dd6b + 1dd15f4 commit 1de718e

108 files changed

Lines changed: 10796 additions & 1559 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/actions/setup/action.yml

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,25 @@ runs:
1010
using: "composite"
1111

1212
steps:
13+
- name: Remove unused Homebrew taps
14+
shell: bash
15+
if: ${{ startsWith(inputs.os, 'macos-') }}
16+
run: |
17+
brew uninstall --formula azure/bicep/bicep || true
18+
brew untap aws/tap azure/bicep || true
19+
1320
- name: 🩹 Enable Long Paths
1421
shell: bash
1522
if: ${{ inputs.os == 'windows-latest' }}
1623
run: git config --system core.longpaths true
1724

1825
- name: 🖥️ Enable MSVC Dev Console
19-
uses: ilammy/msvc-dev-cmd@v1
26+
if: ${{ inputs.os == 'windows-latest' }}
27+
uses: microsoft/setup-msbuild@v3
2028

2129
- name: 📋 Install OpenMP
2230
shell: bash
23-
if: ${{ inputs.os == 'macos-latest' }}
31+
if: ${{ startsWith(inputs.os, 'macos-') }}
2432
run: |
2533
brew install libomp
2634
echo "OpenMP_ROOT=$(brew --prefix)/opt/libomp" >> $GITHUB_ENV
@@ -36,7 +44,7 @@ runs:
3644
echo "CMAKE_GIT_COMMAND=$(which git)" >> "$GITHUB_ENV"
3745
3846
- name: Install Git LFS and configure (macOS)
39-
if: ${{ inputs.os == 'macos-latest' }}
47+
if: ${{ startsWith(inputs.os, 'macos-') }}
4048
shell: bash
4149
run: |
4250
brew install git-lfs || true
@@ -47,7 +55,6 @@ runs:
4755
4856
- name: 💻 Setup Deployment Target
4957
shell: bash
50-
if: ${{ inputs.os == 'macos-latest' }}
58+
if: ${{ startsWith(inputs.os, 'macos-') }}
5159
run: |
5260
echo "MACOSX_DEPLOYMENT_TARGET=15.0" >> $GITHUB_ENV
53-

.github/workflows/build.yml

Lines changed: 67 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ on:
55
branches:
66
- master
77
pull_request:
8-
branches:
9-
- master
108
workflow_dispatch:
119

1210
jobs:
@@ -20,8 +18,8 @@ jobs:
2018
- Debug
2119

2220
os:
21+
- macos-15-intel
2322
- macos-latest
24-
- windows-latest
2523

2624
include:
2725
- os: ubuntu-latest
@@ -30,12 +28,14 @@ jobs:
3028
- os: ubuntu-latest
3129
config: Debug
3230
container: ghcr.io/viennatools/vienna-builder:suite
31+
- os: windows-latest
32+
config: Release+Debug
3333

3434
runs-on: ${{ matrix.os }}
3535
container: ${{ matrix.container }}
3636

3737
env:
38-
VCPKG_COMMIT: c3867e714dd3a51c272826eea77267876517ed99
38+
VCPKG_COMMIT: 72d876b20f06129a1b1e0db80c7075fe3e419d7c
3939
VCPKG_DEFAULT_BINARY_CACHE: ${{ github.workspace }}/.vcpkg-bincache
4040

4141
name: "🧪 Test on ${{ matrix.os }} (⚙️: ${{ matrix.config }}, 💿: ${{ matrix.container || matrix.os }})"
@@ -49,6 +49,31 @@ jobs:
4949
with:
5050
os: ${{ matrix.os }}
5151

52+
- name: 🔗 Prepare ViennaLS source
53+
if: ${{ matrix.os != 'windows-latest' }}
54+
run: |
55+
VIENNALS_TAG=$(awk '/NAME ViennaLS/{f=1} f && /GIT_TAG/{print $2; exit}' CMakeLists.txt)
56+
if ! git ls-remote --tags --exit-code https://github.com/ViennaTools/ViennaLS.git "$VIENNALS_TAG" > /dev/null 2>&1; then
57+
echo "[CI] Tag $VIENNALS_TAG not found; cloning master as fallback"
58+
rm -rf _viennals
59+
git clone --depth 1 --branch master https://github.com/ViennaTools/ViennaLS.git _viennals
60+
echo "CPM_ViennaLS_SOURCE=$(pwd)/_viennals" >> "$GITHUB_ENV"
61+
fi
62+
63+
- name: 🔗 Prepare ViennaLS source (Windows)
64+
if: ${{ matrix.os == 'windows-latest' }}
65+
shell: pwsh
66+
run: |
67+
$content = Get-Content CMakeLists.txt -Raw
68+
$viennalsTag = [regex]::Match($content, 'NAME\s+ViennaLS.*?GIT_TAG\s+(\S+)', [System.Text.RegularExpressions.RegexOptions]::Singleline).Groups[1].Value
69+
git ls-remote --tags --exit-code https://github.com/ViennaTools/ViennaLS.git $viennalsTag | Out-Null
70+
if ($LASTEXITCODE -ne 0) {
71+
Write-Host "[CI] Tag $viennalsTag not found; cloning master as fallback"
72+
Remove-Item -Recurse -Force _viennals -ErrorAction SilentlyContinue
73+
git clone --depth 1 --branch master https://github.com/ViennaTools/ViennaLS.git _viennals
74+
if ($LASTEXITCODE -ne 0) { exit 1 }
75+
"CPM_ViennaLS_SOURCE=$((Get-Location).Path)/_viennals" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
76+
}
5277
- name: 🖥️ Setup vcpkg (Windows)
5378
shell: pwsh
5479
if: ${{ matrix.os == 'windows-latest' }}
@@ -64,34 +89,64 @@ jobs:
6489
New-Item -ItemType Directory -Force -Path "${{ env.VCPKG_DEFAULT_BINARY_CACHE }}"
6590
6691
- name: 📋 Install MacOS Dependencies
67-
if: ${{ matrix.os == 'macos-latest' }}
92+
if: ${{ startsWith(matrix.os, 'macos-') }}
6893
run: brew install vtk embree tbb
6994

70-
- name: 🦥 Cache vcpkg binary (Windows)
95+
- name: 🔑 Prepare vcpkg cache key (Windows)
96+
if: ${{ matrix.os == 'windows-latest' }}
97+
shell: pwsh
98+
run: |
99+
$manifest = Get-Content vcpkg.json -Raw | ConvertFrom-Json
100+
$cacheKey = [ordered]@{
101+
dependencies = $manifest.dependencies
102+
features = $manifest.features
103+
defaultFeatures = $manifest.'default-features'
104+
overrides = $manifest.overrides
105+
builtinBaseline = $manifest.'builtin-baseline'
106+
}
107+
$cacheKey | ConvertTo-Json -Depth 20 | Out-File -FilePath vcpkg-cache-key.json -Encoding utf8
108+
Get-Content vcpkg-cache-key.json
109+
110+
- name: 🦥 Cache vcpkg installed (Windows)
71111
if: ${{ matrix.os == 'windows-latest' }}
112+
id: vcpkg-installed-cache
72113
uses: actions/cache@v5
73114
with:
74-
path: ${{ env.VCPKG_DEFAULT_BINARY_CACHE }}
75-
key: vcpkg-${{ matrix.os }}-${{ matrix.config }}-${{ env.VCPKG_COMMIT }}
115+
path: ${{ github.workspace }}/vcpkg_installed
116+
key: vcpkg-installed-${{ matrix.os }}-${{ env.VCPKG_COMMIT }}-${{ hashFiles('vcpkg-cache-key.json') }}
117+
restore-keys: |
118+
vcpkg-installed-${{ matrix.os }}-${{ env.VCPKG_COMMIT }}-
76119
77120
- name: 🛠️ Build Dependencies (Windows)
78-
if: ${{ matrix.os == 'windows-latest' }}
121+
if: ${{ matrix.os == 'windows-latest' && steps.vcpkg-installed-cache.outputs.cache-hit != 'true' }}
79122
shell: pwsh
80123
run: |
81124
./vcpkg/vcpkg install --triplet x64-windows
82125
83126
- name: 🏗️ Compile (Windows)
84127
if: ${{ matrix.os == 'windows-latest' }}
128+
shell: pwsh
85129
run: |
86-
cmake -DVIENNAPS_BUILD_TESTS=ON -DCMAKE_TOOLCHAIN_FILE=${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows -B build
87-
cmake --build build --config ${{ matrix.config }}
130+
$cpmArgs = @()
131+
if ($env:CPM_ViennaLS_SOURCE) { $cpmArgs += "-DCPM_ViennaLS_SOURCE=$env:CPM_ViennaLS_SOURCE" }
132+
cmake -DVIENNAPS_BUILD_TESTS=ON -DCMAKE_TOOLCHAIN_FILE=${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows -DVCPKG_INSTALLED_DIR=${{ github.workspace }}/vcpkg_installed -DVCPKG_MANIFEST_INSTALL=OFF @cpmArgs -B build
133+
cmake --build build --config Release --parallel
134+
cmake --build build --config Debug --parallel
88135
89136
- name: 🏗️ Compile (other)
90137
if: ${{ matrix.os != 'windows-latest' }}
91138
run: |
92-
cmake -DVIENNAPS_BUILD_TESTS=ON -DVIENNAPS_ENABLE_SANITIZER=ON -B build
139+
cmake -DVIENNAPS_BUILD_TESTS=ON -DVIENNAPS_ENABLE_SANITIZER=ON ${CPM_ViennaLS_SOURCE:+-DCPM_ViennaLS_SOURCE="$CPM_ViennaLS_SOURCE"} -B build
93140
cmake --build build --config ${{ matrix.config }}
94141
95142
- name: 🧪 Test
143+
if: ${{ matrix.os != 'windows-latest' }}
96144
run: |
97145
ctest --output-on-failure -E "Benchmark|Performance" -C ${{ matrix.config }} --test-dir build
146+
147+
- name: 🧪 Test (Windows)
148+
if: ${{ matrix.os == 'windows-latest' }}
149+
shell: pwsh
150+
run: |
151+
ctest --output-on-failure -E "Benchmark|Performance" -C Release --test-dir build
152+
ctest --output-on-failure -E "Benchmark|Performance" -C Debug --test-dir build

.github/workflows/format.yml

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ on:
55
branches:
66
- master
77
pull_request:
8-
branches:
9-
- master
108
workflow_dispatch:
119
inputs:
1210
debug:
@@ -24,6 +22,16 @@ jobs:
2422
with:
2523
set-safe-directory: true
2624

25+
- name: 🔗 Prepare ViennaLS source
26+
run: |
27+
VIENNALS_TAG=$(awk '/NAME ViennaLS/{f=1} f && /GIT_TAG/{print $2; exit}' CMakeLists.txt)
28+
if ! git ls-remote --tags --exit-code https://github.com/ViennaTools/ViennaLS.git "$VIENNALS_TAG" > /dev/null 2>&1; then
29+
echo "[CI] Tag $VIENNALS_TAG not found; cloning master as fallback"
30+
rm -rf _viennals
31+
git clone --depth 1 --branch master https://github.com/ViennaTools/ViennaLS.git _viennals
32+
echo "CPM_ViennaLS_SOURCE=$(pwd)/_viennals" >> "$GITHUB_ENV"
33+
fi
34+
2735
- name: 📋 Install additional dependencies
2836
if: ${{ github.event.inputs.debug == 'true' }}
2937
run: apk add tmate
@@ -38,5 +46,5 @@ jobs:
3846
- name: 🔍 Check Format
3947
run: |
4048
git config --global --add safe.directory $(pwd) # "set-safe-directory" seems bugged in actions/checkout@v4
41-
cmake -B build
49+
cmake -B build ${CPM_ViennaLS_SOURCE:+-DCPM_ViennaLS_SOURCE="$CPM_ViennaLS_SOURCE"}
4250
cmake --build build --target format-check

0 commit comments

Comments
 (0)