Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
3ab21cc
Build in ./build/ directory
cbrnr Mar 20, 2026
30a1732
Add Russian translations
cbrnr Mar 20, 2026
e9ba4bf
Switch to CMake
cbrnr Mar 20, 2026
fd3588c
Fix warnings
cbrnr Mar 20, 2026
1b7ca8d
Move download_deps to root
cbrnr Mar 20, 2026
f1740b9
Move download_deps.cmake to external
cbrnr Mar 21, 2026
948e2b3
Build deps and add GHA
cbrnr Mar 23, 2026
a739465
Update macOS
cbrnr Mar 23, 2026
e01a135
Fix trigger
cbrnr Mar 23, 2026
d640faf
Fix deps
cbrnr Mar 23, 2026
dee669f
Build on Qt < 6.5
cbrnr Mar 23, 2026
ac01b9a
Remove non-existing package
cbrnr Mar 23, 2026
fd1cb38
Revert to macOS-15 (rate limits)
cbrnr Mar 23, 2026
eb6807e
Fail fast
cbrnr Mar 23, 2026
9c0b6ba
Update actions
cbrnr Mar 23, 2026
f5ef75b
Remove brew upgrade
cbrnr Mar 23, 2026
5515427
Cache Homebrew
cbrnr Mar 23, 2026
6d3314e
Disable parallel build
cbrnr Mar 23, 2026
009f12f
Update cache action
cbrnr Mar 23, 2026
bca7d3a
Upload entire app bundle
cbrnr Mar 23, 2026
4eced22
Use ditto
cbrnr Mar 23, 2026
3dde3b4
Run macdeployqt
cbrnr Mar 23, 2026
43bc873
Sign .app bundle
cbrnr Mar 23, 2026
372f95d
Add notarization
cbrnr Mar 23, 2026
b50012a
Push to trigger actions
cbrnr Mar 23, 2026
e5fff72
Fix syntax
cbrnr Mar 23, 2026
c7671e7
Add Windows
cbrnr Mar 24, 2026
59fab98
Try Windows fix
cbrnr Mar 24, 2026
a167dc3
Add MSYS2 caching
cbrnr Mar 24, 2026
bc1dd23
Enable GNU_SOURCE
cbrnr Mar 24, 2026
f352f04
Pass _GNU_SOURCE directly to make
cbrnr Mar 24, 2026
64549de
Patch win32/getline.c
cbrnr Mar 24, 2026
96ebdb5
Try again
cbrnr Mar 24, 2026
993b5e5
Again
cbrnr Mar 24, 2026
6a23fda
Another fix
cbrnr Mar 24, 2026
67a6be1
Fix linker errors
cbrnr Mar 24, 2026
98f2d32
Move deps
cbrnr Mar 24, 2026
0f15726
Copy libs into final Windows build
cbrnr Mar 24, 2026
11e8a8c
Fix Windows?
cbrnr Mar 24, 2026
aca4cba
Fix more
cbrnr Mar 24, 2026
d571c22
Tweak macOS naming
cbrnr Mar 24, 2026
ecd4fd7
Update README.md
cbrnr Mar 24, 2026
07f9f1e
Remove unneeded files
cbrnr Mar 24, 2026
476baf6
Minor wording
cbrnr Mar 24, 2026
d6ff000
Fix macOS bundle order
cbrnr Mar 24, 2026
45980db
Split into platform workflows
cbrnr Mar 24, 2026
65427d6
Names
cbrnr Mar 24, 2026
770547f
Update translation process
cbrnr Mar 24, 2026
ce3a8c8
Fix size mismatch
cbrnr Mar 24, 2026
fdb3827
Add changelog entry
cbrnr Mar 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
name: Linux

on:
push:
branches: [main]
pull_request:

jobs:
build:
name: ${{ matrix.name }}
runs-on: ${{ matrix.runner }}

strategy:
fail-fast: true
matrix:
include:
- name: x86-64
runner: ubuntu-24.04
platform_id: linux-x86_64

- name: ARM64
runner: ubuntu-24.04-arm
platform_id: linux-aarch64

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

- name: Install dependencies
run: |
sudo apt update -qq
sudo apt install -y \
cmake \
build-essential \
qt6-base-dev \
qt6-tools-dev

- name: Build dependencies
run: cmake -P external/build_deps.cmake

- name: Configure
run: cmake -B build -DCMAKE_BUILD_TYPE=Release

- name: Build
run: cmake --build build

- name: Upload libxdf artifact
uses: actions/upload-artifact@v7
with:
name: libxdf-${{ matrix.platform_id }}
path: |
external/lib/libxdf.a
external/include/xdf.h

- name: Upload libbiosig artifact
uses: actions/upload-artifact@v7
with:
name: libbiosig-${{ matrix.platform_id }}
path: |
external/lib/libbiosig.a
external/include/biosig.h
external/include/biosig-dev.h
external/include/biosig-network.h
external/include/biosig2.h
external/include/gdftime.h
external/include/mdc_ecg_codes.h
external/include/physicalunits.h

- name: Upload SigViewer artifact
uses: actions/upload-artifact@v7
with:
name: sigviewer-${{ matrix.platform_id }}
path: build/sigviewer
106 changes: 106 additions & 0 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
name: macOS

on:
push:
branches: [main]
pull_request:

jobs:
build:
name: ARM64
runs-on: macos-15

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

- name: Cache Homebrew downloads
uses: actions/cache@v5
with:
path: ~/Library/Caches/Homebrew
key: brew-qt-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.github/workflows/macos.yml') }}
restore-keys: brew-qt-${{ runner.os }}-${{ runner.arch }}-

- name: Install dependencies
env:
HOMEBREW_NO_AUTO_UPDATE: "1"
HOMEBREW_NO_INSTALL_CLEANUP: "1"
run: brew install qt cmake

- name: Build dependencies
run: cmake -P external/build_deps.cmake

- name: Configure
run: cmake -B build -DCMAKE_BUILD_TYPE=Release

- name: Build
run: cmake --build build

- name: Upload libxdf artifact
uses: actions/upload-artifact@v7
with:
name: libxdf-macos-arm64
path: |
external/lib/libxdf.a
external/include/xdf.h

- name: Upload libbiosig artifact
uses: actions/upload-artifact@v7
with:
name: libbiosig-macos-arm64
path: |
external/lib/libbiosig.a
external/include/biosig.h
external/include/biosig-dev.h
external/include/biosig-network.h
external/include/biosig2.h
external/include/gdftime.h
external/include/mdc_ecg_codes.h
external/include/physicalunits.h

- name: Extract version
run: |
VERSION=$(sed -n 's/.*VERSION \([0-9][0-9.]*\).*/\1/p' CMakeLists.txt | head -1)
echo "APP_VERSION=$VERSION" >> "$GITHUB_ENV"

- name: Deploy Qt frameworks
run: $(brew --prefix qt)/bin/macdeployqt build/SigViewer.app

- name: Import Developer ID certificate
env:
MACOS_CERT_P12_BASE64: ${{ secrets.MACOS_CERT_P12_BASE64 }}
MACOS_CERT_PASSWORD: ${{ secrets.MACOS_CERT_PASSWORD }}
run: |
echo "$MACOS_CERT_P12_BASE64" | base64 --decode > certificate.p12
security create-keychain -p "" build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p "" build.keychain
security import certificate.p12 -k build.keychain -P "$MACOS_CERT_PASSWORD" -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple: -s -k "" build.keychain

- name: Sign .app bundle
run: 'codesign --deep --force --options runtime --sign "Developer ID Application: CLEMENS BRUNNER (9UC2D22DW3)" build/SigViewer.app'

- name: Notarize .app bundle
env:
AC_USERNAME: ${{ secrets.AC_USERNAME }}
AC_PASSWORD: ${{ secrets.AC_PASSWORD }}
run: |
ditto -c -k --sequesterRsrc --keepParent build/SigViewer.app build/SigViewer.zip
xcrun notarytool submit build/SigViewer.zip \
--apple-id "$AC_USERNAME" \
--password "$AC_PASSWORD" \
--team-id 9UC2D22DW3 \
--wait

- name: Staple .app bundle
run: xcrun stapler staple build/SigViewer.app

- name: Create DMG
run: hdiutil create -volname "SigViewer" -srcfolder build/SigViewer.app -ov -format UDZO build/SigViewer-${{ env.APP_VERSION }}.dmg

- name: Upload SigViewer artifact
uses: actions/upload-artifact@v7
with:
name: sigviewer-macos-arm64
path: build/SigViewer-${{ env.APP_VERSION }}.dmg
95 changes: 95 additions & 0 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
name: Windows

on:
push:
branches: [main]
pull_request:

jobs:
build:
name: x86-64
runs-on: windows-2025

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

- name: Set up MSYS2
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: true
cache: true
install: >-
mingw-w64-x86_64-gcc
mingw-w64-x86_64-cmake
mingw-w64-x86_64-ninja
mingw-w64-x86_64-qt6-base
mingw-w64-x86_64-qt6-tools
mingw-w64-x86_64-libiconv
autoconf
automake
make

- name: Build dependencies
shell: msys2 {0}
run: cmake -P external/build_deps.cmake

- name: Configure
shell: msys2 {0}
run: cmake -B build -DCMAKE_BUILD_TYPE=Release -G Ninja

- name: Build
shell: msys2 {0}
run: cmake --build build

- name: Upload libxdf artifact
uses: actions/upload-artifact@v7
with:
name: libxdf-windows-x86_64
path: |
external/lib/libxdf.a
external/include/xdf.h

- name: Upload libbiosig artifact
uses: actions/upload-artifact@v7
with:
name: libbiosig-windows-x86_64
path: |
external/lib/libbiosig.a
external/include/biosig.h
external/include/biosig-dev.h
external/include/biosig-network.h
external/include/biosig2.h
external/include/gdftime.h
external/include/mdc_ecg_codes.h
external/include/physicalunits.h

- name: Deploy Qt DLLs
shell: msys2 {0}
run: |
mkdir -p build/sigviewer-windows
cp build/sigviewer.exe build/sigviewer-windows/
cp src/images/sigviewer.ico build/sigviewer-windows/
windeployqt6 --release build/sigviewer-windows/sigviewer.exe
# Copy all MinGW DLL dependencies (including those of Qt plugin DLLs in subdirectories)
find build/sigviewer-windows \( -name '*.exe' -o -name '*.dll' \) | xargs ldd 2>/dev/null \
| awk '$3 ~ /\/mingw64\//' \
| awk '{print $3}' \
| sort -u \
| while IFS= read -r dep; do
dest="build/sigviewer-windows/$(basename "$dep")"
[ -f "$dest" ] || cp "$dep" "$dest"
done

- name: Create installer
shell: pwsh
run: |
$version = (Get-Content CMakeLists.txt | Select-String '^\s+VERSION\s+([\d.]+)').Matches[0].Groups[1].Value
& 'C:\Program Files (x86)\Inno Setup 6\ISCC.exe' /Dversion=$version deploy\windows\sigviewer-windows.iss

- name: Upload SigViewer artifact
uses: actions/upload-artifact@v7
with:
name: sigviewer-windows-x86_64
path: build/SigViewer-*.exe
19 changes: 8 additions & 11 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
.directory
.DS_Store
*~
external/
sigviewer.pro.user
*.a
*.o
tmp/
bin/
.qmake.stash
build/
CMakeFiles/
external/include/
external/lib/
external/versions.cmake
CMakeCache.txt
cmake_install.cmake
CTestTestfile.cmake
Makefile
src/Makefile
Loading
Loading