Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
84ea94e
feat: Qt-free source/ library with full hardware stack and test coverage
bryantf-qc Sep 17, 2026
bc2f9a4
ci: suppress Semgrep false positives and exclude third-party code
bryantf-qc Sep 24, 2026
e001854
ci: use full rule IDs in nosemgrep suppressions
bryantf-qc Sep 24, 2026
d6d8077
ci: simplify nosemgrep to bare form without rule IDs
bryantf-qc Sep 24, 2026
ae20382
fix: correct TAC_FTDI_13.tcnf to pass schema validation
bryantf-qc Sep 28, 2026
87b4090
ci: exclude third-party files from repolint copyright check
bryantf-qc Sep 30, 2026
acdb800
Merge remote-tracking branch 'upstream/develop' into qt-free-source-l…
bryantf-qc Oct 5, 2026
7af91f9
ci: exclude vendor headers from Semgrep scans
bryantf-qc Oct 5, 2026
39c6474
Merge remote-tracking branch 'upstream/feature/non-qt' into qt-free-s…
bryantf-qc Oct 6, 2026
6edb06b
refactor: remove src/libraries/qt-adapter (moved to source/libraries)
bryantf-qc Oct 6, 2026
28762e6
ci: add build-source-linux/windows/arm64 jobs for source/ subtree
bryantf-qc Oct 6, 2026
ef2e5a6
build: replace vendored Boost with FetchContent downloads
bryantf-qc Oct 6, 2026
8eb6c32
build: switch Boost FetchContent from per-module repos to full tarball
bryantf-qc Oct 6, 2026
def43a3
fix: resolve build-source-linux packaging path and ARM64 link failures
bryantf-qc Oct 6, 2026
a9c2773
fix: output directory scope and ARM64 arch detection for source/ build
bryantf-qc Oct 6, 2026
721b7a2
fix: FTD2XX_STATIC for ARM64 static lib and bundle ICU libs on Linux
bryantf-qc Oct 6, 2026
4eb0ad4
fix: guard ARM64-incompatible stack walk in crash handler
bryantf-qc Oct 6, 2026
e8a3ed9
fix: read installer version from source/library/include/qtac/version.h
bryantf-qc Oct 8, 2026
b17d234
feat: add no-GUI installer variant for source/ subtree builds
bryantf-qc Oct 8, 2026
ccc78d2
fix: windeployqt, correct BinDir, and publish-release for source builds
bryantf-qc Oct 8, 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
449 changes: 449 additions & 0 deletions .github/workflows/build.yml

Large diffs are not rendered by default.

6 changes: 6 additions & 0 deletions .semgrepignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Third-party code — not subject to Semgrep analysis
third-party/

# Vendor headers bundled with the source library
source/library/ftd2xx.h
source/library/WinTypes.h
48 changes: 48 additions & 0 deletions build_app.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
@echo off
setlocal

:: Locate vcvars64 via vswhere (prefers newest VS install)
set "VSWHERE=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe"
if not exist "%VSWHERE%" (
echo vswhere.exe not found. Is Visual Studio 2022 installed?
exit /b 1
)
for /f "usebackq tokens=*" %%i in (`"%VSWHERE%" -latest -products * -requires Microsoft.VisualCpp.Tools.HostX64.TargetX64 -property installationPath`) do set "VS_INSTALLPATH=%%i"
if not defined VS_INSTALLPATH (
echo No VS2022 install with VC++ x64 tools found.
exit /b 1
)
call "%VS_INSTALLPATH%\VC\Auxiliary\Build\vcvars64.bat" >nul 2>&1
echo vcvars loaded

:: Locate Qt — honor QTDIR env var, else use default install location
if defined QTDIR (
set "QTBIN=%QTDIR%\bin"
) else (
:: Search for msvc2022_64 under C:\Qt
for /f "usebackq tokens=*" %%i in (`dir /b /s /ad "C:\Qt\msvc2022_64" 2^>nul`) do (
if exist "%%i\bin\qmake.exe" set "QTROOT=%%i" & goto :qt_found
)
echo Qt not found. Set QTDIR or install Qt to C:\Qt\
exit /b 1
:qt_found
set "QTBIN=%QTROOT%\bin"
)
set "PATH=%QTBIN%;%PATH%"

cmake -S source -B build\Release -DCMAKE_PREFIX_PATH="%QTROOT%" -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=cl > build_out.txt 2>&1
if errorlevel 1 (
echo CMAKE CONFIGURE FAILED
type build_out.txt
exit /b 1
)

cmake --build build\Release --target qtac-app TACDev test_tacdev_api test_hardware_psoc >> build_out.txt 2>&1
if errorlevel 1 (
echo CMAKE BUILD FAILED
type build_out.txt
exit /b 1
)

echo BUILD SUCCESS
type build_out.txt
58 changes: 58 additions & 0 deletions build_app.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
$ErrorActionPreference = 'Continue'
$root = $PSScriptRoot

# Locate VS via vswhere
$vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
if (Test-Path $vswhere) {
$vsInstallPath = & $vswhere -latest -products * -requires Microsoft.VisualCpp.Tools.HostX64.TargetX64 -property installationPath
$vcvars = "$vsInstallPath\VC\Auxiliary\Build\vcvars64.bat"
} else {
$vcvars = @(
"${env:ProgramFiles}\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat",
"${env:ProgramFiles}\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvars64.bat",
"${env:ProgramFiles}\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat",
"${env:ProgramFiles(x86)}\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
) | Where-Object { Test-Path $_ } | Select-Object -First 1
}
if (-not $vcvars -or -not (Test-Path $vcvars)) { Write-Error "vcvars64.bat not found - is VS2022 installed?"; exit 1 }

# Locate Qt — honor QTDIR env var, else search standard install locations
if ($env:QTDIR -and (Test-Path "$env:QTDIR\bin\qmake.exe")) {
$qtRoot = $env:QTDIR
} else {
$qtRoot = Get-ChildItem 'C:\Qt' -Filter 'msvc2022_64' -Recurse -Depth 2 -Directory -ErrorAction SilentlyContinue |
Where-Object { Test-Path "$($_.FullName)\bin\qmake.exe" } |
Sort-Object FullName -Descending |
Select-Object -First 1 -ExpandProperty FullName
}
if (-not $qtRoot) { Write-Error "Qt not found. Set QTDIR or install Qt to C:\Qt\"; exit 1 }
$qtbin = "$qtRoot\bin"

# Import MSVC environment
$envLines = cmd /c "`"$vcvars`" && set" 2>&1
$envLines | Where-Object { $_ -match '^[A-Za-z_][A-Za-z0-9_]+=.' } | ForEach-Object {
$kv = $_ -split '=', 2
if ($kv.Count -eq 2) { [System.Environment]::SetEnvironmentVariable($kv[0], $kv[1]) }
}
$env:PATH = "$qtbin;$env:PATH"
Write-Output "MSVC env loaded from: $vcvars"
Write-Output "Qt root: $qtRoot"
Write-Output "cl.exe: $((Get-Command cl.exe -ErrorAction SilentlyContinue).Source)"

Set-Location $root

# Configure
Write-Output "--- Configuring ---"
& cmake -S "source" -B "build\Release" "-DCMAKE_PREFIX_PATH=$qtRoot" -G Ninja -DCMAKE_BUILD_TYPE=Release
if ($LASTEXITCODE -ne 0) { Write-Error "Configure failed"; exit 1 }

# Build qtac-app and TACDev
Write-Output "--- Building qtac-app ---"
& cmake --build "build\Release" --target qtac-app
if ($LASTEXITCODE -ne 0) { Write-Error "Build failed"; exit 1 }

Write-Output "--- Building TACDev ---"
& cmake --build "build\Release" --target TACDev
if ($LASTEXITCODE -ne 0) { Write-Error "Build failed"; exit 1 }

Write-Output "--- BUILD SUCCESS ---"
15 changes: 15 additions & 0 deletions build_tests.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
$ErrorActionPreference = 'Stop'
. "$PSScriptRoot\env_setup.ps1"

$build = "$PSScriptRoot\build\Release"
$out = "$PSScriptRoot\build_out.txt"

Write-Host "--- Configuring ---"
& cmake -S "$PSScriptRoot\source" -B "$build" "-DCMAKE_PREFIX_PATH=$qtRoot" -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=cl 2>&1 | Tee-Object -FilePath $out
if ($LASTEXITCODE -ne 0) { Write-Error "Configure failed"; exit 1 }

Write-Host "--- Building ---"
& cmake --build "$build" --target qtac-app TACDev test_tacdev_api test_hardware_psoc 2>&1 | Tee-Object -FilePath $out -Append
if ($LASTEXITCODE -ne 0) { Write-Error "Build failed"; exit 1 }

Write-Host "BUILD SUCCESS"
Loading
Loading