Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
cb15b06
Refactor CMake to make it easier to follow by modularizing concerns
cboulay Jul 7, 2025
21c3f29
Update runner for MinGW static CI and install cmake in msys2 shell.
cboulay Jul 7, 2025
f4adfdb
Revert a small change to cmake installation commands order and one of…
cboulay Jul 7, 2025
c3217cc
mingw - Revert changes; back to windows-2019 which doesn't run; at le…
cboulay Jul 7, 2025
f9bb1dd
Change WINDOWS_EXPORT_ALL_SYMBOLS location to try to fix Windows buil…
cboulay Jul 7, 2025
d81d3e3
Fix examples for modern MSVC
cboulay Jul 7, 2025
f1db79d
Keep original order of cmake invocations as much as possible
cboulay Jul 7, 2025
bf1a36e
Reorder lslobj cmake commands for slightly more logical grouping.
cboulay Jul 8, 2025
18c26dd
Reorder lsl cmake commands for slightly more logical grouping.
cboulay Jul 8, 2025
8f0148a
Update runner for MinGW static CI and install cmake in msys2 shell.
cboulay Jul 7, 2025
3c19256
mingw - Revert changes; back to windows-2019 which doesn't run; at le…
cboulay Jul 7, 2025
977c258
Keep original order of cmake invocations as much as possible
cboulay Jul 7, 2025
9deb4c8
Reorder lslobj cmake commands for slightly more logical grouping.
cboulay Jul 8, 2025
a0beb1f
Cleanup CMake redundancies and use FILE_SET for headers -- only solut…
cboulay Jul 8, 2025
2ace201
Remove examples from primary build because they were relying on in-tr…
cboulay Jul 12, 2025
ee11002
LSL_BUILD_EXAMPLES option removed from ProjectOptions.cmake
cboulay Jul 12, 2025
c99de1c
Fixup handling the .dll file for the examples.
cboulay Jul 12, 2025
5a8b842
Try to fix cppcmake.yml for Win x32
cboulay Jul 13, 2025
7296b07
Trying to get msys2 builds working again.
cboulay Jul 13, 2025
c497090
Re-add lslobj and lslboost to installation targets when static
cboulay Jul 13, 2025
4710304
Do not use SYSTEM when explicitly including BUNDLED bost and pugixml
cboulay Jul 13, 2025
ec8e8de
Delete deprecated travis config and badge
cboulay Jul 13, 2025
11bb51d
Fix broken links
myd7349 Oct 18, 2025
61cab1e
Avoid double free by returning if consumer is not in send buffer.
zeyus Nov 5, 2025
16f8ffa
Cleanup CMake redundancies and use FILE_SET for headers -- only solut…
cboulay Jul 8, 2025
8d3f3eb
Add preliminary support for Xcode and building universal dylib
cboulay Jul 13, 2025
6c851ac
Remove vestigial docker references in CI scripts (docker was only use…
cboulay Jul 14, 2025
ee357fe
First attempt at signing and notarizing framework in GitHub Actions. …
cboulay Jul 14, 2025
c5537b4
Fix some cmake errors that snuck in during rebase.
cboulay Jul 14, 2025
3916439
FILE_SET is incompatible with frameworks. Revert back to target_inclu…
cboulay Jul 15, 2025
3731984
examples - find_package must search in Frameworks subdirectory if APPLE.
cboulay Jul 15, 2025
10f3096
Add codesign step to GHA CI script.
cboulay Jul 15, 2025
a577ec7
macOS packaging - auto version and change destination
cboulay Jul 15, 2025
5b2ed02
Add iOS target to GHA
cboulay Jul 26, 2025
ae49607
Move Apple GHA to its own script
cboulay Jul 26, 2025
07c0781
Apple GHA - refactor to reuse certification setup across build and de…
cboulay Jul 26, 2025
e8b93a8
Apple GHA - don't run tests for iOS target
cboulay Jul 26, 2025
8b24eb7
Fixup iOS builds
cboulay Jul 27, 2025
743ad17
GHA: Fix target directories for framework packager
cboulay Jul 27, 2025
61ad954
Comment out apple tests until we fix the release.
cboulay Jul 27, 2025
5c97e3e
Wrong syntax for env vars.
cboulay Jul 27, 2025
347cf4e
Try signing and packaging before uploading artifact
cboulay Jul 27, 2025
1185fdf
GHA Apple - Restore unit tests
cboulay Jul 27, 2025
b16151c
GHA Apple -- add ios simulator build
cboulay Jul 28, 2025
ae0c74b
Mark lsl_test_internal with LIBLSL_EXPORTS so it can link the headers…
cboulay Aug 4, 2025
97487b9
Small updates to cmake helpers
cboulay Nov 29, 2025
5e7cf2f
Update asio to v1.36.0 (standalone)
zeyus Nov 5, 2025
2131a84
Update pugixml to v1.15
zeyus Nov 5, 2025
0db973d
Update boost (with update script) to version v1.89.0
zeyus Nov 5, 2025
45c14ea
ARM runners, arm packages (rpi, jetson compatible)
zeyus Nov 5, 2025
f2fd915
For the case of the 1 second sleep, the test will fail before the sleep.
zeyus Nov 4, 2025
87d47b7
Intermittent failure on OSX runners in stream resolution, fix part 2
zeyus Nov 5, 2025
29fe820
option -> cmake_dependent_option
cboulay Nov 29, 2025
b8c9468
Replace usage of deprecated LSLCMake.cmake with one-liners
cboulay Jan 10, 2026
996a9b3
Update LSLCMake.cmake
cboulay Jan 10, 2026
038cd9b
Update LSLCMake.cmake again
cboulay Jan 10, 2026
a7e2a35
sets the RPATH before any targets are created
cboulay Jan 10, 2026
cfa2159
Bump version
cboulay Jan 10, 2026
297e527
apple workflow uses scripts
cboulay Jan 10, 2026
4f9587a
Add build-only configs for non-framework dylib on macos, including x8…
cboulay Jan 11, 2026
dd811b6
macos-13 retired. Can we build `x86_64` only on macos-14?
cboulay Jan 11, 2026
d9cb3db
bump GHA runner versions for dylibs (non-framework)
cboulay Jan 11, 2026
aca2b56
maybe
mscheltienne Jan 6, 2026
94852f7
more ai-generated fix
mscheltienne Jan 7, 2026
e8f509f
revert fix to trigger failure on CI
mscheltienne Jan 7, 2026
d1fab80
Revert "revert fix to trigger failure on CI"
mscheltienne Jan 7, 2026
1c0b49a
Disable target install when liblsl is not the top-level project.
cboulay Jan 11, 2026
f32a2e6
Guard non-target install when liblsl is not the top-level project.
cboulay Jan 11, 2026
9c8e7aa
Group liblsl targets in folder; only build lslver and blackhole if th…
cboulay Jan 11, 2026
5324b0f
Simplify upload-to-release GHA step with softprops/action-gh-release.…
cboulay Jan 11, 2026
7540298
handle both absolute and relative CMAKE_INSTALL_FRAMEWORK_DIR paths
cboulay Jan 11, 2026
50ab1f9
bump versions in code
cboulay Jan 11, 2026
1cae1e3
bump version for next tag
cboulay Jan 12, 2026
2ddb4cf
Modify CHANGELOG
cboulay Jan 12, 2026
6c5135f
Allow setting custom config file path, for platforms that do not supp…
zeyus May 19, 2025
3af0947
Correctly initialize config filename.
zeyus May 19, 2025
0c389aa
Added content based config (string).
zeyus May 19, 2025
f264a7f
Cleanup CMake redundancies and use FILE_SET for headers -- only solut…
cboulay Jul 8, 2025
4b421e3
Remove vestigial docker references in CI scripts (docker was only use…
cboulay Jul 14, 2025
25b4d87
First attempt at signing and notarizing framework in GitHub Actions. …
cboulay Jul 14, 2025
aa22cd9
Fix some cmake errors that snuck in during rebase.
cboulay Jul 14, 2025
86319c6
Add codesign step to GHA CI script.
cboulay Jul 15, 2025
dcc5d11
macOS packaging - auto version and change destination
cboulay Jul 15, 2025
cc5c850
Add iOS target to GHA
cboulay Jul 26, 2025
5176549
Move Apple GHA to its own script
cboulay Jul 26, 2025
b53e91f
GHA: Fix target directories for framework packager
cboulay Jul 27, 2025
c35f96a
Try signing and packaging before uploading artifact
cboulay Jul 27, 2025
14ffd08
GHA Apple -- add ios simulator build
cboulay Jul 28, 2025
cfa3572
reset .github to upstream/dev
zeyus Jan 12, 2026
b4ebf5c
remove lsl.xcframework (accidental commit)
zeyus Jan 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 3 additions & 2 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ insert_final_newline = true
charset = utf-8
indent_style = tab

[*.yaml]
[*.{yaml,yml}]
indent_style = space
indent_size = 2

insert_final_newline = true
end_of_line = lf
42 changes: 42 additions & 0 deletions .github/actions/install-apple-certs/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: 'Install Apple Certificates'
description: 'Installs Apple signing and notarization certificates and sets up the keychain'
inputs:
MACOS_CERTIFICATE_APP:
required: true
MACOS_CERTIFICATE_INST:
required: true
MACOS_CERTIFICATE_PWD:
required: true
MACOS_CI_KEYCHAIN_PWD:
required: true
runs:
using: "composite"
steps:
- name: Install certificates and provisioning profiles
shell: bash
run: |
# Create temporary keychain
KEYCHAIN_PATH=$RUNNER_TEMP/build.keychain
security create-keychain -p "${{ inputs.MACOS_CI_KEYCHAIN_PWD }}" $KEYCHAIN_PATH
security default-keychain -s $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p "${{ inputs.MACOS_CI_KEYCHAIN_PWD }}" $KEYCHAIN_PATH

# Import certificates from secrets ...
CERTIFICATE_PATH_APP=$RUNNER_TEMP/build_certificate_app.p12
CERTIFICATE_PATH_INST=$RUNNER_TEMP/build_certificate_inst.p12
echo -n "${{ inputs.MACOS_CERTIFICATE_APP }}" | base64 --decode -o $CERTIFICATE_PATH_APP
echo -n "${{ inputs.MACOS_CERTIFICATE_INST }}" | base64 --decode -o $CERTIFICATE_PATH_INST
# ... to keychain
security import $CERTIFICATE_PATH_APP -P "${{ inputs.MACOS_CERTIFICATE_PWD }}" -k $KEYCHAIN_PATH -A -t cert -f pkcs12
security import $CERTIFICATE_PATH_INST -P "${{ inputs.MACOS_CERTIFICATE_PWD }}" -k $KEYCHAIN_PATH -A -t cert -f pkcs12

# Set trusted partitions (groups of applications) that can access the keychain items
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "${{ inputs.MACOS_CI_KEYCHAIN_PWD }}" $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH

# Get certificate identities into environment variables
CERT_IDENTITY_APP=$(security find-identity -v -p codesigning $KEYCHAIN_PATH | grep "Developer ID Application" | head -1 | awk -F'"' '{print $2}')
echo "APPLE_CODE_SIGN_IDENTITY_APP=$CERT_IDENTITY_APP" >> $GITHUB_ENV
CERT_IDENTITY_INST=$(security find-identity -v -p basic $KEYCHAIN_PATH | grep "Developer ID Installer" | head -1 | awk -F'"' '{print $2}')
echo "APPLE_CODE_SIGN_IDENTITY_INST=$CERT_IDENTITY_INST" >> $GITHUB_ENV
7 changes: 5 additions & 2 deletions .github/workflows/android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@ name: Android
on:
push:
branches: ['androidci']
paths_ignore: ['docs/**', '.travis.yml']
paths:
- '**'
- '!docs/**'
- '!.github/**'
- '.github/workflows/android.yml'
workflow_dispatch:
inputs:
cmakeextra:
Expand Down Expand Up @@ -53,4 +57,3 @@ jobs:
with:
name: build-android-${{ matrix.config.arch }}
path: install

206 changes: 206 additions & 0 deletions .github/workflows/apple.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
name: Apple CI

on:
push:
branches:
- main
- dev
tags: ['*']
paths:
- '**'
- '!docs/**'
- '!.github/**'
- '.github/workflows/apple.yml'
pull_request:
release:
types: ['created']
workflow_dispatch:
inputs:
cmakeextra:
description: 'Extra CMake options'
required: false
default: ''

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

defaults:
run:
shell: bash

jobs:
build:
name: ${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- {name: "macOS-latest", os: "macOS-latest", platform: "macos", cmake_extra: "-DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 -DLSL_UNITTESTS=ON -DLSL_BENCHMARKS=ON -DCMAKE_OSX_ARCHITECTURES=\"x86_64;arm64\"" }
- {name: "iOS", os: "macOS-latest", platform: "ios", cmake_extra: "-DCMAKE_TOOLCHAIN_FILE=cmake/ios.toolchain.cmake -DPLATFORM=OS64" }
- {name: "iOS Simulator", os: "macOS-latest", platform: "ios-simulator", cmake_extra: "-DCMAKE_TOOLCHAIN_FILE=cmake/ios.toolchain.cmake -DPLATFORM=SIMULATOR64COMBINED -G Xcode" }

steps:
- uses: actions/checkout@v4

- name: Install certificates and provisioning profiles
uses: ./.github/actions/install-apple-certs
with:
MACOS_CERTIFICATE_APP: ${{ secrets.PROD_MACOS_CERTIFICATE }}
MACOS_CERTIFICATE_INST: ${{ secrets.PROD_MACOS_CERTIFICATE_INST }}
MACOS_CERTIFICATE_PWD: ${{ secrets.PROD_MACOS_CERTIFICATE_PWD }}
MACOS_CI_KEYCHAIN_PWD: ${{ secrets.PROD_MACOS_CI_KEYCHAIN_PWD }}

- name: Configure CMake
env:
APPLE_DEVELOPMENT_TEAM: ${{ secrets.PROD_MACOS_NOTARIZATION_TEAM_ID }}
run: |
cmake --version
cmake -S . -B build \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=${PWD}/install \
-DCPACK_PACKAGE_DIRECTORY=${PWD}/package \
-DLSL_FRAMEWORK=ON \
-Dlslgitrevision=${{ github.sha }} \
-Dlslgitbranch=${{ github.ref }} \
${{ matrix.config.cmake_extra }} \
${{ github.event.inputs.cmakeextra }}
echo ${PWD}

- name: make
run: cmake --build build --config Release -j

- name: make install
run: cmake --build build --config Release --target install

- name: test install using examples
if: matrix.config.name == 'macOS-latest'
run: |
# Test that the in-tree install was successful by building the examples
cmake -S examples -B examples/build \
-DLSL_INSTALL_ROOT=${PWD}/install \
-DCMAKE_INSTALL_PREFIX=examples/build/install \
-DLSL_COMFY_DEFAULTS=ON \
${{ matrix.config.cmake_extra }} \
${{ github.event.inputs.cmakeextra }}
cmake --build examples/build --target install --config Release -j
./examples/build/install/bin/HandleMetaData

- name: Codesign Framework
run: |
./scripts/apple_codesign.sh install/Frameworks/lsl.framework \
--platform ${{ matrix.config.platform }}

# run internal tests
- name: unit tests
if: matrix.config.name == 'macOS-latest'
run: |
mkdir -p dumps
install/bin/lsl_test_internal --order rand --wait-for-keypress never --durations yes
install/bin/lsl_test_exported --order rand --wait-for-keypress never --durations yes
timeout-minutes: 10

- name: Package and Notarize macOS Installer
if: matrix.config.name == 'macOS-latest'
env:
APPLE_DEVELOPMENT_TEAM: ${{ secrets.PROD_MACOS_NOTARIZATION_TEAM_ID }}
APPLE_NOTARIZE_USERNAME: ${{ secrets.PROD_MACOS_NOTARIZATION_APPLE_ID }}
APPLE_NOTARIZE_PASSWORD: ${{ secrets.PROD_MACOS_NOTARIZATION_PWD }}
run: |
./scripts/apple_package_notarize.sh install/Frameworks/lsl.framework \
--notarize \
--output package

- name: upload dump
if: failure()
uses: actions/upload-artifact@v4
with:
name: dumps-${{ matrix.config.name }}
path: dumps

- name: Zip LSL Framework
run: |
cd install/Frameworks
zip -ry lsl.framework.zip lsl.framework
cd ../..

- name: Upload macOS Package and Framework
if: matrix.config.name == 'macOS-latest'
uses: actions/upload-artifact@v4
with:
name: build-macOS-latest
path: |
package/*.pkg
install/Frameworks/lsl.framework.zip

- name: Upload iOS Framework
if: matrix.config.name == 'iOS'
uses: actions/upload-artifact@v4
with:
name: build-iOS
path: install/Frameworks/lsl.framework.zip

- name: Upload iOS Simulator Framework
if: matrix.config.name == 'iOS Simulator'
uses: actions/upload-artifact@v4
with:
name: build-iOS-Simulator
path: install/Frameworks/lsl.framework.zip

xcframework_and_deploy:
name: XCFramework and Deploy
needs: build
runs-on: macOS-latest
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: build-macOS-latest
path: build-macOS-latest
- uses: actions/download-artifact@v4
with:
name: build-iOS
path: build-iOS
- uses: actions/download-artifact@v4
with:
name: build-iOS-Simulator
path: build-iOS-Simulator

- name: Unzip Frameworks
run: |
unzip build-macOS-latest/install/Frameworks/lsl.framework.zip -d build-macOS-latest/Frameworks
unzip build-iOS/lsl.framework.zip -d build-iOS/Frameworks
unzip build-iOS-Simulator/lsl.framework.zip -d build-iOS-Simulator/Frameworks

- name: Install certificates and provisioning profiles
uses: ./.github/actions/install-apple-certs
with:
MACOS_CERTIFICATE_APP: ${{ secrets.PROD_MACOS_CERTIFICATE }}
MACOS_CERTIFICATE_INST: ${{ secrets.PROD_MACOS_CERTIFICATE_INST }}
MACOS_CERTIFICATE_PWD: ${{ secrets.PROD_MACOS_CERTIFICATE_PWD }}
MACOS_CI_KEYCHAIN_PWD: ${{ secrets.PROD_MACOS_CI_KEYCHAIN_PWD }}

- name: Create and Sign XCFramework
run: |
./scripts/apple_create_xcframework.sh \
--macos build-macOS-latest/Frameworks/lsl.framework \
--ios build-iOS/Frameworks/lsl.framework \
--ios-simulator build-iOS-Simulator/Frameworks/lsl.framework \
--output .

- name: upload artifacts
uses: actions/upload-artifact@v4
with:
name: mac-packages
path: |
lsl.xcframework.*.zip
build-macOS-latest/package/

- name: Upload to release
if: github.event_name == 'release'
uses: softprops/action-gh-release@v2
with:
files: |
lsl.xcframework.*.zip
build-macOS-latest/package/*.*
Loading
Loading