From c01fb58940926e3489d518da51a281c9ceed33ff Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 19 Jan 2026 05:45:24 +0000 Subject: [PATCH 01/14] Update GitHub Actions workflow with fixes from simplify branch Incorporated multiple fixes to ensure proper build in GitHub Actions: 1. **Add Windows SDK tools to PATH**: Fixes RC.exe not found error by adding Windows SDK bin directory to PATH before vcpkg runs. This ensures the Resource Compiler is available during dependency builds. 2. **Explicit generator specification**: Added `-G "Visual Studio 17 2022"` to cmake commands to ensure MSBuild is used instead of Ninja, preventing linker and resource compiler errors. 3. **vcpkg build caching**: Added `useVcpkgInstallArtifactCaching: true` to speed up builds by caching vcpkg artifacts between runs. 4. **Submodule support**: Added `submodules: recursive` to checkout step to support repositories using git submodules (like Detours). 5. **Split debug/release builds**: Separated into two parallel jobs for better build organization and potential parallelization. 6. **Updated artifact paths**: Changed artifact paths to bin/ directory to match actual build output locations. These changes address build failures related to missing build tools, incorrect generator selection, and missing dependencies. --- .github/workflows/build.yml | 89 ++++++++++++++++++++++++++++++++++--- 1 file changed, 83 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7b85d44..b7afb27 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,23 +9,43 @@ on: - main jobs: - build: + build-debug: + name: Build Debug runs-on: [self-hosted, DESKTOP-N792BI5] - + steps: - name: Checkout repository uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Add Windows SDK tools to PATH + shell: pwsh + run: | + $sdkPaths = @( + "C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64", + "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64", + "C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64" + ) + foreach ($path in $sdkPaths) { + if (Test-Path $path) { + echo "$path" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + Write-Host "Added to PATH: $path" + break + } + } - name: Setup vcpkg uses: lukka/run-vcpkg@v11 with: vcpkgJsonGlob: 'vcpkg.json' + useVcpkgInstallArtifactCaching: true - name: Setup MSBuild uses: microsoft/setup-msbuild@v2 - name: Configure CMake (Debug) - run: cmake --preset debug -G "Visual Studio 17 2022" -DBUILD_DOC=OFF -DBUILD_DRIVER=ON -DBUILD_WIX_INSTALLER=OFF -DBUILD_GRPC=ON + run: cmake --preset debug -DBUILD_DOC=OFF -DBUILD_DRIVER=ON -DBUILD_WIX_INSTALLER=OFF -DBUILD_GRPC=ON -G "Visual Studio 17 2022" env: VCPKG_ROOT: ${{ github.workspace }}/vcpkg @@ -37,7 +57,64 @@ jobs: with: name: panoptes-debug path: | - build/debug/**/*.dll - build/debug/**/*.exe - build/debug/**/*.pdb + bin/Debug/**/*.dll + bin/Debug/**/*.exe + bin/Debug/**/*.pdb + bin/tests/Debug/**/*.exe + bin/tests/Debug/**/*.pdb + if-no-files-found: warn + + build-release: + name: Build Release + runs-on: [self-hosted, DESKTOP-N792BI5] + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Add Windows SDK tools to PATH + shell: pwsh + run: | + $sdkPaths = @( + "C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64", + "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64", + "C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64" + ) + foreach ($path in $sdkPaths) { + if (Test-Path $path) { + echo "$path" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + Write-Host "Added to PATH: $path" + break + } + } + + - name: Setup vcpkg + uses: lukka/run-vcpkg@v11 + with: + vcpkgJsonGlob: 'vcpkg.json' + useVcpkgInstallArtifactCaching: true + + - name: Setup MSBuild + uses: microsoft/setup-msbuild@v2 + + - name: Configure CMake (Release) + run: cmake --preset release -DBUILD_DOC=OFF -DBUILD_DRIVER=ON -DBUILD_WIX_INSTALLER=OFF -DBUILD_GRPC=ON -G "Visual Studio 17 2022" + env: + VCPKG_ROOT: ${{ github.workspace }}/vcpkg + + - name: Build (Release) + run: msbuild build/release/Panoptes.sln /p:Configuration=Release /p:Platform=x64 /m + + - name: Upload Release Artifacts + uses: actions/upload-artifact@v4 + with: + name: panoptes-release + path: | + bin/Release/**/*.dll + bin/Release/**/*.exe + bin/Release/**/*.pdb + bin/tests/Release/**/*.exe + bin/tests/Release/**/*.pdb if-no-files-found: warn From e88fce928aa91788a39d645773d4647655df87a9 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 19 Jan 2026 05:48:17 +0000 Subject: [PATCH 02/14] Remove Windows SDK tools PATH setup step CMakePresets.json now defines x86_BUILD_TOOLS_PATH and x64_BUILD_TOOLS_PATH variables, so the manual PATH modification is no longer needed. --- .github/workflows/build.yml | 32 -------------------------------- 1 file changed, 32 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b7afb27..2b71af7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,22 +19,6 @@ jobs: with: submodules: recursive - - name: Add Windows SDK tools to PATH - shell: pwsh - run: | - $sdkPaths = @( - "C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64", - "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64", - "C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64" - ) - foreach ($path in $sdkPaths) { - if (Test-Path $path) { - echo "$path" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - Write-Host "Added to PATH: $path" - break - } - } - - name: Setup vcpkg uses: lukka/run-vcpkg@v11 with: @@ -74,22 +58,6 @@ jobs: with: submodules: recursive - - name: Add Windows SDK tools to PATH - shell: pwsh - run: | - $sdkPaths = @( - "C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64", - "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64", - "C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64" - ) - foreach ($path in $sdkPaths) { - if (Test-Path $path) { - echo "$path" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - Write-Host "Added to PATH: $path" - break - } - } - - name: Setup vcpkg uses: lukka/run-vcpkg@v11 with: From 0a0990bcb9dfa227b84949c3fce2b789de2e52a4 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 19 Jan 2026 05:50:18 +0000 Subject: [PATCH 03/14] Add Ninja installation step to build workflow Install Ninja build system using Chocolatey in both debug and release build jobs. This ensures Ninja is available for vcpkg and CMake. --- .github/workflows/build.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2b71af7..f454417 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,6 +28,9 @@ jobs: - name: Setup MSBuild uses: microsoft/setup-msbuild@v2 + - name: Install Ninja + run: choco install ninja -y + - name: Configure CMake (Debug) run: cmake --preset debug -DBUILD_DOC=OFF -DBUILD_DRIVER=ON -DBUILD_WIX_INSTALLER=OFF -DBUILD_GRPC=ON -G "Visual Studio 17 2022" env: @@ -67,6 +70,9 @@ jobs: - name: Setup MSBuild uses: microsoft/setup-msbuild@v2 + - name: Install Ninja + run: choco install ninja -y + - name: Configure CMake (Release) run: cmake --preset release -DBUILD_DOC=OFF -DBUILD_DRIVER=ON -DBUILD_WIX_INSTALLER=OFF -DBUILD_GRPC=ON -G "Visual Studio 17 2022" env: From 9d06dd2aa20077f3f6590089796afe6d6c95f00b Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 19 Jan 2026 05:52:15 +0000 Subject: [PATCH 04/14] Add Chocolatey installation step to build workflow Install Chocolatey package manager before installing Ninja, since Chocolatey is not pre-installed on the self-hosted runner. --- .github/workflows/build.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f454417..92cbf4a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,6 +28,13 @@ jobs: - name: Setup MSBuild uses: microsoft/setup-msbuild@v2 + - name: Install Chocolatey + shell: pwsh + run: | + Set-ExecutionPolicy Bypass -Scope Process -Force + [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072 + iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) + - name: Install Ninja run: choco install ninja -y @@ -70,6 +77,13 @@ jobs: - name: Setup MSBuild uses: microsoft/setup-msbuild@v2 + - name: Install Chocolatey + shell: pwsh + run: | + Set-ExecutionPolicy Bypass -Scope Process -Force + [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072 + iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) + - name: Install Ninja run: choco install ninja -y From 88d6c3bffaf6f20df4196748922bd1a0ac44a7af Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 19 Jan 2026 05:54:49 +0000 Subject: [PATCH 05/14] Fix shell type from pwsh to powershell Change shell from pwsh (PowerShell Core) to powershell (Windows PowerShell) for Chocolatey installation since pwsh is not available on the self-hosted runner. --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 92cbf4a..4a0dc37 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -29,7 +29,7 @@ jobs: uses: microsoft/setup-msbuild@v2 - name: Install Chocolatey - shell: pwsh + shell: powershell run: | Set-ExecutionPolicy Bypass -Scope Process -Force [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072 @@ -78,7 +78,7 @@ jobs: uses: microsoft/setup-msbuild@v2 - name: Install Chocolatey - shell: pwsh + shell: powershell run: | Set-ExecutionPolicy Bypass -Scope Process -Force [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072 From e535283e752f0621929f9639588f298cd0c13b72 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 19 Jan 2026 05:57:12 +0000 Subject: [PATCH 06/14] Combine Chocolatey and Ninja installation with admin check - Merge Chocolatey and Ninja installation into a single step - Add administrator privilege check to ensure proper permissions - Refresh environment PATH after Chocolatey installation to make choco available - This ensures the installation runs with elevated privileges on the self-hosted runner --- .github/workflows/build.yml | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4a0dc37..db99ef9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,15 +28,25 @@ jobs: - name: Setup MSBuild uses: microsoft/setup-msbuild@v2 - - name: Install Chocolatey + - name: Install Chocolatey and Ninja shell: powershell run: | + # Ensure running as administrator + if (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { + Write-Error "This script must be run as Administrator!" + exit 1 + } + + # Install Chocolatey Set-ExecutionPolicy Bypass -Scope Process -Force [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072 iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) - - name: Install Ninja - run: choco install ninja -y + # Refresh environment variables to make choco available + $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User") + + # Install Ninja + & choco install ninja -y - name: Configure CMake (Debug) run: cmake --preset debug -DBUILD_DOC=OFF -DBUILD_DRIVER=ON -DBUILD_WIX_INSTALLER=OFF -DBUILD_GRPC=ON -G "Visual Studio 17 2022" @@ -77,15 +87,25 @@ jobs: - name: Setup MSBuild uses: microsoft/setup-msbuild@v2 - - name: Install Chocolatey + - name: Install Chocolatey and Ninja shell: powershell run: | + # Ensure running as administrator + if (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { + Write-Error "This script must be run as Administrator!" + exit 1 + } + + # Install Chocolatey Set-ExecutionPolicy Bypass -Scope Process -Force [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072 iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) - - name: Install Ninja - run: choco install ninja -y + # Refresh environment variables to make choco available + $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User") + + # Install Ninja + & choco install ninja -y - name: Configure CMake (Release) run: cmake --preset release -DBUILD_DOC=OFF -DBUILD_DRIVER=ON -DBUILD_WIX_INSTALLER=OFF -DBUILD_GRPC=ON -G "Visual Studio 17 2022" From 826afc817ff8741d49642d00aecd42e1bd6cd20b Mon Sep 17 00:00:00 2001 From: Ap3x <36021809+Ap3x@users.noreply.github.com> Date: Fri, 6 Mar 2026 16:29:19 -0700 Subject: [PATCH 07/14] CMake version and update protocEXE --- CMakeLists.txt | 14 +++++++------- CMakePresets.json | 4 ++-- src/container/CMakeLists.txt | 4 ++-- src/dll/CMakeLists.txt | 2 +- src/extensibility/PanoptesAMSI/CMakeLists.txt | 4 ++-- src/extensibility/PanoptesAMSI/test/CMakeLists.txt | 4 ++-- src/extensibility/PanoptesPE/CMakeLists.txt | 6 +++--- src/extensibility/PanoptesPE/test/CMakeLists.txt | 2 +- src/extensibility/PanoptesYara/CMakeLists.txt | 4 ++-- src/extensibility/PanoptesYara/test/CMakeLists.txt | 2 +- src/libraries/CMakeLists.txt | 2 +- src/libraries/Configuration/CMakeLists.txt | 2 +- src/libraries/ResourceCore/CMakeLists.txt | 2 +- src/libraries/TrayNotificationsCore/CMakeLists.txt | 2 +- src/linter/test/CMakeLists.txt | 2 +- src/scanner/PanoptesScan/CMakeLists.txt | 6 +++--- src/scanner/PanoptesScanCLI/CMakeLists.txt | 4 ++-- src/service/CMakeLists.txt | 4 ++-- src/testing/KernelTestHost/CMakeLists.txt | 2 +- 19 files changed, 36 insertions(+), 36 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9bdcf59..c1f2903 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,14 +28,14 @@ elseif(DOXYGEN_FOUND AND NOT BUILD_DOC) endif(DOXYGEN_FOUND AND BUILD_DOC) -#add_subdirectory(src/service) -#add_subdirectory(src/libraries) -#add_subdirectory(src/extensibility) -#add_subdirectory(src/container) +add_subdirectory(src/service) +add_subdirectory(src/libraries) +add_subdirectory(src/extensibility) +add_subdirectory(src/container) add_subdirectory(src/dll) -#add_subdirectory(src/linter) -#add_subdirectory(src/scanner) -#add_subdirectory(src/testing) +add_subdirectory(src/linter) +add_subdirectory(src/scanner) +add_subdirectory(src/testing) if(BUILD_DRIVER) add_subdirectory(src/driver) diff --git a/CMakePresets.json b/CMakePresets.json index 9342094..70d215a 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -12,7 +12,7 @@ "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", "VCPKG_TARGET_TRIPLET": "x64-windows-static", "CMAKE_PREFIX_PATH": "vcpkg_installed/x64-windows-static", - "Protobuf_PROTOC_EXECUTABLE": "vcpkg_installed/x64-windows-static/tools/protobuf/protoc.exe", + "Protobuf_PROTOC_EXECUTABLE": "${sourceDir}/build/${presetName}/vcpkg_installed/x64-windows-static/tools/protobuf/protoc.exe", "gRPC_DIR": "vcpkg_installed/x64-windows-static/share/grpc", "nlohmann_json_DIR": "vcpkg_installed/x64-windows-static/share/nlohmann_json", "CMAKE_MSVC_RUNTIME_LIBRARY": "MultiThreadedDebug", @@ -31,7 +31,7 @@ "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", "VCPKG_TARGET_TRIPLET": "x64-windows-static", "CMAKE_PREFIX_PATH": "vcpkg_installed/x64-windows-static", - "Protobuf_PROTOC_EXECUTABLE": "vcpkg_installed/x64-windows-static/tools/protobuf/protoc.exe", + "Protobuf_PROTOC_EXECUTABLE": "${sourceDir}/build/${presetName}/vcpkg_installed/x64-windows-static/tools/protobuf/protoc.exe", "gRPC_DIR": "vcpkg_installed/x64-windows-static/share/grpc", "nlohmann_json_DIR": "vcpkg_installed/x64-windows-static/share/nlohmann_json", "x86_BUILD_TOOLS_PATH": "C:/Program Files (x86)/Windows Kits/10/bin/10.0.26100.0/x86/", diff --git a/src/container/CMakeLists.txt b/src/container/CMakeLists.txt index c0ff8dd..73723e3 100644 --- a/src/container/CMakeLists.txt +++ b/src/container/CMakeLists.txt @@ -54,14 +54,14 @@ if(BUILD_GRPC) protobuf_generate( TARGET ${PROJECT_NAME} IMPORT_DIRS ${PROTO_FILE_DIR} - PROTOC_EXE "${CMAKE_BINARY_DIR}/${Protobuf_PROTOC_EXECUTABLE}" + PROTOC_EXE "${Protobuf_PROTOC_EXECUTABLE}" PROTOC_OUT_DIR "${PROTO_BINARY_DIR}" ) protobuf_generate( TARGET ${PROJECT_NAME} LANGUAGE grpc - PROTOC_EXE "${CMAKE_BINARY_DIR}/${Protobuf_PROTOC_EXECUTABLE}" + PROTOC_EXE "${Protobuf_PROTOC_EXECUTABLE}" GENERATE_EXTENSIONS .grpc.pb.h .grpc.pb.cc PLUGIN "protoc-gen-grpc=\$" IMPORT_DIRS ${PROTO_FILE_DIR} diff --git a/src/dll/CMakeLists.txt b/src/dll/CMakeLists.txt index 7cd0e50..8facb9c 100644 --- a/src/dll/CMakeLists.txt +++ b/src/dll/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 4.0) +cmake_minimum_required(VERSION 3.15) project(PanoptesDLL VERSION 1.0 DESCRIPTION "Panoptes DLL Project" diff --git a/src/extensibility/PanoptesAMSI/CMakeLists.txt b/src/extensibility/PanoptesAMSI/CMakeLists.txt index d36367f..1f63714 100644 --- a/src/extensibility/PanoptesAMSI/CMakeLists.txt +++ b/src/extensibility/PanoptesAMSI/CMakeLists.txt @@ -56,14 +56,14 @@ if(BUILD_GRPC) protobuf_generate( TARGET ${PROJECT_NAME} IMPORT_DIRS ${PROTO_FILE_DIR} - PROTOC_EXE "${CMAKE_BINARY_DIR}/${Protobuf_PROTOC_EXECUTABLE}" + PROTOC_EXE "${Protobuf_PROTOC_EXECUTABLE}" PROTOC_OUT_DIR "${PROTO_BINARY_DIR}" ) protobuf_generate( TARGET ${PROJECT_NAME} LANGUAGE grpc - PROTOC_EXE "${CMAKE_BINARY_DIR}/${Protobuf_PROTOC_EXECUTABLE}" + PROTOC_EXE "${Protobuf_PROTOC_EXECUTABLE}" GENERATE_EXTENSIONS .grpc.pb.h .grpc.pb.cc PLUGIN "protoc-gen-grpc=\$" IMPORT_DIRS ${PROTO_FILE_DIR} diff --git a/src/extensibility/PanoptesAMSI/test/CMakeLists.txt b/src/extensibility/PanoptesAMSI/test/CMakeLists.txt index 87bd82a..e7992c8 100644 --- a/src/extensibility/PanoptesAMSI/test/CMakeLists.txt +++ b/src/extensibility/PanoptesAMSI/test/CMakeLists.txt @@ -58,14 +58,14 @@ if(BUILD_GRPC) protobuf_generate( TARGET ${PROJECT_NAME} IMPORT_DIRS ${PROTO_FILE_DIR} - PROTOC_EXE "${CMAKE_BINARY_DIR}/${Protobuf_PROTOC_EXECUTABLE}" + PROTOC_EXE "${Protobuf_PROTOC_EXECUTABLE}" PROTOC_OUT_DIR "${PROTO_BINARY_DIR}" ) protobuf_generate( TARGET ${PROJECT_NAME} LANGUAGE grpc - PROTOC_EXE "${CMAKE_BINARY_DIR}/${Protobuf_PROTOC_EXECUTABLE}" + PROTOC_EXE "${Protobuf_PROTOC_EXECUTABLE}" GENERATE_EXTENSIONS .grpc.pb.h .grpc.pb.cc PLUGIN "protoc-gen-grpc=\$" IMPORT_DIRS ${PROTO_FILE_DIR} diff --git a/src/extensibility/PanoptesPE/CMakeLists.txt b/src/extensibility/PanoptesPE/CMakeLists.txt index 06b112b..7904b7d 100644 --- a/src/extensibility/PanoptesPE/CMakeLists.txt +++ b/src/extensibility/PanoptesPE/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 4.0) +cmake_minimum_required(VERSION 3.15) project(PanoptesPE) # Set C++ standard @@ -95,14 +95,14 @@ if(BUILD_GRPC) protobuf_generate( TARGET ${PROJECT_NAME} IMPORT_DIRS ${PROTO_FILE_DIR} - PROTOC_EXE "${CMAKE_BINARY_DIR}/${Protobuf_PROTOC_EXECUTABLE}" + PROTOC_EXE "${Protobuf_PROTOC_EXECUTABLE}" PROTOC_OUT_DIR "${PROTO_BINARY_DIR}" ) protobuf_generate( TARGET ${PROJECT_NAME} LANGUAGE grpc - PROTOC_EXE "${CMAKE_BINARY_DIR}/${Protobuf_PROTOC_EXECUTABLE}" + PROTOC_EXE "${Protobuf_PROTOC_EXECUTABLE}" GENERATE_EXTENSIONS .grpc.pb.h .grpc.pb.cc PLUGIN "protoc-gen-grpc=\$" IMPORT_DIRS ${PROTO_FILE_DIR} diff --git a/src/extensibility/PanoptesPE/test/CMakeLists.txt b/src/extensibility/PanoptesPE/test/CMakeLists.txt index 1bbabbd..dd7011b 100644 --- a/src/extensibility/PanoptesPE/test/CMakeLists.txt +++ b/src/extensibility/PanoptesPE/test/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 4.0) +cmake_minimum_required(VERSION 3.15) project(Test_PanoptesPE) # Set C++ standard diff --git a/src/extensibility/PanoptesYara/CMakeLists.txt b/src/extensibility/PanoptesYara/CMakeLists.txt index 6bb9bcf..9ab40de 100644 --- a/src/extensibility/PanoptesYara/CMakeLists.txt +++ b/src/extensibility/PanoptesYara/CMakeLists.txt @@ -67,14 +67,14 @@ if(BUILD_GRPC) protobuf_generate( TARGET ${PROJECT_NAME} IMPORT_DIRS ${PROTO_FILE_DIR} - PROTOC_EXE "${CMAKE_BINARY_DIR}/${Protobuf_PROTOC_EXECUTABLE}" + PROTOC_EXE "${Protobuf_PROTOC_EXECUTABLE}" PROTOC_OUT_DIR "${PROTO_BINARY_DIR}" ) protobuf_generate( TARGET ${PROJECT_NAME} LANGUAGE grpc - PROTOC_EXE "${CMAKE_BINARY_DIR}/${Protobuf_PROTOC_EXECUTABLE}" + PROTOC_EXE "${Protobuf_PROTOC_EXECUTABLE}" GENERATE_EXTENSIONS .grpc.pb.h .grpc.pb.cc PLUGIN "protoc-gen-grpc=\$" IMPORT_DIRS ${PROTO_FILE_DIR} diff --git a/src/extensibility/PanoptesYara/test/CMakeLists.txt b/src/extensibility/PanoptesYara/test/CMakeLists.txt index adae7e9..9ebf1d3 100644 --- a/src/extensibility/PanoptesYara/test/CMakeLists.txt +++ b/src/extensibility/PanoptesYara/test/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 4.0) +cmake_minimum_required(VERSION 3.15) project(Test_PanoptesYara) set(CMAKE_CXX_STANDARD 17) diff --git a/src/libraries/CMakeLists.txt b/src/libraries/CMakeLists.txt index 4d393a5..df1fd92 100644 --- a/src/libraries/CMakeLists.txt +++ b/src/libraries/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 4.0) +cmake_minimum_required(VERSION 3.15) project(PanoptesLibraries CXX) add_subdirectory(ResourceCore) diff --git a/src/libraries/Configuration/CMakeLists.txt b/src/libraries/Configuration/CMakeLists.txt index 68969a5..ad4eea0 100644 --- a/src/libraries/Configuration/CMakeLists.txt +++ b/src/libraries/Configuration/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 4.0) +cmake_minimum_required(VERSION 3.15) project(Configuration CXX) # Set static runtime for MSVC - MUST BE SET BEFORE ANY TARGETS diff --git a/src/libraries/ResourceCore/CMakeLists.txt b/src/libraries/ResourceCore/CMakeLists.txt index 012a46e..9b6665a 100644 --- a/src/libraries/ResourceCore/CMakeLists.txt +++ b/src/libraries/ResourceCore/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 4.0) +cmake_minimum_required(VERSION 3.15) project(Resources CXX) # Source files diff --git a/src/libraries/TrayNotificationsCore/CMakeLists.txt b/src/libraries/TrayNotificationsCore/CMakeLists.txt index 9bac53f..12ff045 100644 --- a/src/libraries/TrayNotificationsCore/CMakeLists.txt +++ b/src/libraries/TrayNotificationsCore/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 4.0) +cmake_minimum_required(VERSION 3.15) project(TrayNotificationsCore CXX) set(SOURCES diff --git a/src/linter/test/CMakeLists.txt b/src/linter/test/CMakeLists.txt index 2c54435..1516da0 100644 --- a/src/linter/test/CMakeLists.txt +++ b/src/linter/test/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 4.0) +cmake_minimum_required(VERSION 3.15) project(Test_Linter) set(CMAKE_CXX_STANDARD 17) diff --git a/src/scanner/PanoptesScan/CMakeLists.txt b/src/scanner/PanoptesScan/CMakeLists.txt index 8286ab6..6e11a02 100644 --- a/src/scanner/PanoptesScan/CMakeLists.txt +++ b/src/scanner/PanoptesScan/CMakeLists.txt @@ -4,8 +4,6 @@ project(PanoptesScan VERSION 1.0.0 LANGUAGES CXX) # Set C++ standard set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_PREFIX_PATH "B:/vcpkg_installed/x64-windows-static") -set(Protobuf_PROTOC_EXECUTABLE "B:/vcpkg_installed/x64-windows-static/tools/protobuf/protoc.exe") find_package(gRPC CONFIG REQUIRED) set(PROTO_FILE "${CMAKE_SOURCE_DIR}/proto/src/panoptes.proto") @@ -54,12 +52,14 @@ if(BUILD_GRPC) protobuf_generate( TARGET ${PROJECT_NAME} IMPORT_DIRS ${PROTO_FILE_DIR} + PROTOC_EXE "${Protobuf_PROTOC_EXECUTABLE}" PROTOC_OUT_DIR "${PROTO_BINARY_DIR}") - + protobuf_generate( TARGET ${PROJECT_NAME} LANGUAGE grpc GENERATE_EXTENSIONS .grpc.pb.h .grpc.pb.cc + PROTOC_EXE "${Protobuf_PROTOC_EXECUTABLE}" PLUGIN "protoc-gen-grpc=\$" IMPORT_DIRS ${PROTO_FILE_DIR} PROTOC_OUT_DIR "${PROTO_BINARY_DIR}") diff --git a/src/scanner/PanoptesScanCLI/CMakeLists.txt b/src/scanner/PanoptesScanCLI/CMakeLists.txt index e4c6894..84844a3 100644 --- a/src/scanner/PanoptesScanCLI/CMakeLists.txt +++ b/src/scanner/PanoptesScanCLI/CMakeLists.txt @@ -52,14 +52,14 @@ if(BUILD_GRPC) protobuf_generate( TARGET ${PROJECT_NAME} IMPORT_DIRS ${PROTO_FILE_DIR} - PROTOC_EXE "${CMAKE_BINARY_DIR}/${Protobuf_PROTOC_EXECUTABLE}" + PROTOC_EXE "${Protobuf_PROTOC_EXECUTABLE}" PROTOC_OUT_DIR "${PROTO_BINARY_DIR}" ) protobuf_generate( TARGET ${PROJECT_NAME} LANGUAGE grpc - PROTOC_EXE "${CMAKE_BINARY_DIR}/${Protobuf_PROTOC_EXECUTABLE}" + PROTOC_EXE "${Protobuf_PROTOC_EXECUTABLE}" GENERATE_EXTENSIONS .grpc.pb.h .grpc.pb.cc PLUGIN "protoc-gen-grpc=\$" IMPORT_DIRS ${PROTO_FILE_DIR} diff --git a/src/service/CMakeLists.txt b/src/service/CMakeLists.txt index c6a4f17..d9de3d3 100644 --- a/src/service/CMakeLists.txt +++ b/src/service/CMakeLists.txt @@ -76,14 +76,14 @@ if(BUILD_GRPC) protobuf_generate( TARGET ${PROJECT_NAME} IMPORT_DIRS ${PROTO_FILE_DIR} - PROTOC_EXE "${CMAKE_BINARY_DIR}/${Protobuf_PROTOC_EXECUTABLE}" + PROTOC_EXE "${Protobuf_PROTOC_EXECUTABLE}" PROTOC_OUT_DIR "${PROTO_BINARY_DIR}" ) protobuf_generate( TARGET ${PROJECT_NAME} LANGUAGE grpc - PROTOC_EXE "${CMAKE_BINARY_DIR}/${Protobuf_PROTOC_EXECUTABLE}" + PROTOC_EXE "${Protobuf_PROTOC_EXECUTABLE}" GENERATE_EXTENSIONS .grpc.pb.h .grpc.pb.cc PLUGIN "protoc-gen-grpc=\$" IMPORT_DIRS ${PROTO_FILE_DIR} diff --git a/src/testing/KernelTestHost/CMakeLists.txt b/src/testing/KernelTestHost/CMakeLists.txt index 41e9ba9..8b3e212 100644 --- a/src/testing/KernelTestHost/CMakeLists.txt +++ b/src/testing/KernelTestHost/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 4.0) +cmake_minimum_required(VERSION 3.15) # Project name and language project(KernelTestHost From 6f1fed8b82e7e2d7d258554fb4b91afe3c9d262d Mon Sep 17 00:00:00 2001 From: Ap3x <36021809+Ap3x@users.noreply.github.com> Date: Fri, 6 Mar 2026 17:03:56 -0700 Subject: [PATCH 08/14] read me and github actions update --- .github/workflows/build.yml | 108 ++++++------------------------------ README.md | 76 +++++++++++++++++++------ 2 files changed, 75 insertions(+), 109 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index db99ef9..255eae1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,9 +9,12 @@ on: - main jobs: - build-debug: - name: Build Debug + build: + name: Build ${{ matrix.config }} runs-on: [self-hosted, DESKTOP-N792BI5] + strategy: + matrix: + config: [Debug, Release] steps: - name: Checkout repository @@ -28,101 +31,22 @@ jobs: - name: Setup MSBuild uses: microsoft/setup-msbuild@v2 - - name: Install Chocolatey and Ninja - shell: powershell - run: | - # Ensure running as administrator - if (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { - Write-Error "This script must be run as Administrator!" - exit 1 - } - - # Install Chocolatey - Set-ExecutionPolicy Bypass -Scope Process -Force - [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072 - iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) - - # Refresh environment variables to make choco available - $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User") - - # Install Ninja - & choco install ninja -y - - - name: Configure CMake (Debug) - run: cmake --preset debug -DBUILD_DOC=OFF -DBUILD_DRIVER=ON -DBUILD_WIX_INSTALLER=OFF -DBUILD_GRPC=ON -G "Visual Studio 17 2022" - env: - VCPKG_ROOT: ${{ github.workspace }}/vcpkg - - - name: Build (Debug) - run: msbuild build/debug/Panoptes.sln /p:Configuration=Debug /p:Platform=x64 /m - - - name: Upload Debug Artifacts - uses: actions/upload-artifact@v4 - with: - name: panoptes-debug - path: | - bin/Debug/**/*.dll - bin/Debug/**/*.exe - bin/Debug/**/*.pdb - bin/tests/Debug/**/*.exe - bin/tests/Debug/**/*.pdb - if-no-files-found: warn - - build-release: - name: Build Release - runs-on: [self-hosted, DESKTOP-N792BI5] - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Setup vcpkg - uses: lukka/run-vcpkg@v11 - with: - vcpkgJsonGlob: 'vcpkg.json' - useVcpkgInstallArtifactCaching: true - - - name: Setup MSBuild - uses: microsoft/setup-msbuild@v2 - - - name: Install Chocolatey and Ninja - shell: powershell - run: | - # Ensure running as administrator - if (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { - Write-Error "This script must be run as Administrator!" - exit 1 - } - - # Install Chocolatey - Set-ExecutionPolicy Bypass -Scope Process -Force - [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072 - iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) - - # Refresh environment variables to make choco available - $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User") - - # Install Ninja - & choco install ninja -y - - - name: Configure CMake (Release) - run: cmake --preset release -DBUILD_DOC=OFF -DBUILD_DRIVER=ON -DBUILD_WIX_INSTALLER=OFF -DBUILD_GRPC=ON -G "Visual Studio 17 2022" + - name: Configure CMake + run: cmake --preset default -DBUILD_DRIVER=ON -DBUILD_GRPC=ON env: VCPKG_ROOT: ${{ github.workspace }}/vcpkg - - name: Build (Release) - run: msbuild build/release/Panoptes.sln /p:Configuration=Release /p:Platform=x64 /m + - name: Build + run: cmake --build build/default --config ${{ matrix.config }} - - name: Upload Release Artifacts + - name: Upload Artifacts uses: actions/upload-artifact@v4 with: - name: panoptes-release + name: panoptes-${{ matrix.config }} path: | - bin/Release/**/*.dll - bin/Release/**/*.exe - bin/Release/**/*.pdb - bin/tests/Release/**/*.exe - bin/tests/Release/**/*.pdb + bin/${{ matrix.config }}/**/*.dll + bin/${{ matrix.config }}/**/*.exe + bin/${{ matrix.config }}/**/*.pdb + bin/tests/${{ matrix.config }}/**/*.exe + bin/tests/${{ matrix.config }}/**/*.pdb if-no-files-found: warn diff --git a/README.md b/README.md index 9e36655..1c6d161 100644 --- a/README.md +++ b/README.md @@ -134,33 +134,75 @@ yr.exe compile -o rules.pkg ## Development Setup -Required tools: -- [Vcpkg](https://vcpkg.io/en/) -- [LIEF Project](https://github.com/lief-project/LIEF) -- Visual Studio with Windows Driver Kit -- Test signing enabled -- Virtual Machine configured for Windows Kernel Debugging using Windbg +### Prerequisites + +- [Visual Studio 2022](https://visualstudio.microsoft.com/) with C++ desktop development workload +- [vcpkg](https://vcpkg.io/en/) (included with Visual Studio or standalone) +- [Windows Driver Kit (WDK)](https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk) (for kernel driver builds) +- Test signing enabled (for driver development) +- Virtual Machine configured for Windows Kernel Debugging using WinDbg + +Set the `VCPKG_ROOT` environment variable to your vcpkg installation: +```powershell +# If installed with Visual Studio +$env:VCPKG_ROOT = "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\vcpkg" + +# Or set it permanently +[System.Environment]::SetEnvironmentVariable("VCPKG_ROOT", "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\vcpkg", "User") +``` For kernel development environment setup, see: - [Ap3x/Windows-Kernel-Development-Infrastructure](https://github.com/Ap3x/Windows-Kernel-Development-Infrastructure) - [Microsoft WDK Installation Guide](https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk) +### Building with CMake + +The project uses a single CMake preset with the Visual Studio multi-config generator. You configure once and choose Debug/Release at build time. + +#### Configure +```powershell +cmake --preset default +``` + +#### Build +```powershell +# Debug build (with debug symbols for your code) +cmake --build build/default --config Debug + +# Release build (optimized) +cmake --build build/default --config Release +``` + +#### Build the Kernel Driver +```powershell +cmake --preset default -DBUILD_DRIVER=ON +cmake --build build/default --config Debug --target PanoptesDriver +``` + +#### Run Tests +```powershell +cd bin/tests/Debug +./PanoptesAMSITest.exe +./PanoptesPETest.exe +./PanoptesYaraTest.exe +./PanoptesLinterTest.exe +``` + ### CMake Build Options -The following CMake options are available during configuration: +The following options can be passed during configuration with `-D`: -- `BUILD_DOC` (OFF by default): Build Doxygen documentation -- `BUILD_WIX_INSTALLER` (OFF by default): Build the Wix MSI installer package -- `BUILD_DRIVER` (OFF by default): Build the kernel driver package -- `BUILD_GRPC` (OFF by default): Generate gRPC code from protobuf definitions +| Option | Default | Description | +|--------|---------|-------------| +| `BUILD_DRIVER` | OFF | Build the kernel driver package (requires WDK) | +| `BUILD_GRPC` | ON | Generate gRPC code from protobuf definitions | +| `BUILD_DOC` | OFF | Build Doxygen documentation | +| `BUILD_WIX_INSTALLER` | OFF | Build the Wix MSI installer package | -Example CMake configuration: +Example with multiple options: ```powershell -mkdir build -cd build -cmake --preset debug -DBUILD_DOC=ON -DBUILD_DRIVER=ON -DBUILD_WIX_INSTALLER=ON .. -cd debug -msbuild /p:Configuration=Debug Panoptes.sln +cmake --preset default -DBUILD_DRIVER=ON -DBUILD_DOC=ON +cmake --build build/default --config Release ``` ## Screenshots of Panoptes Features From 700247b913de2f00d0d5d46778b9d7b0b1959be4 Mon Sep 17 00:00:00 2001 From: Ap3x <36021809+Ap3x@users.noreply.github.com> Date: Fri, 6 Mar 2026 17:22:25 -0700 Subject: [PATCH 09/14] clean up cmake presets --- CMakePresets.json | 28 ++++------------------------ 1 file changed, 4 insertions(+), 24 deletions(-) diff --git a/CMakePresets.json b/CMakePresets.json index 70d215a..2c7cc77 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -2,32 +2,12 @@ "version": 3, "configurePresets": [ { - "name": "debug", - "displayName": "Debug", - "description": "Debug build using vcpkg", + "name": "default", + "displayName": "Default", + "description": "Default build using vcpkg (use --config Debug/Release at build time)", "generator": "Visual Studio 17 2022", "binaryDir": "${sourceDir}/build/${presetName}", "cacheVariables": { - "CMAKE_BUILD_TYPE": "Debug", - "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", - "VCPKG_TARGET_TRIPLET": "x64-windows-static", - "CMAKE_PREFIX_PATH": "vcpkg_installed/x64-windows-static", - "Protobuf_PROTOC_EXECUTABLE": "${sourceDir}/build/${presetName}/vcpkg_installed/x64-windows-static/tools/protobuf/protoc.exe", - "gRPC_DIR": "vcpkg_installed/x64-windows-static/share/grpc", - "nlohmann_json_DIR": "vcpkg_installed/x64-windows-static/share/nlohmann_json", - "CMAKE_MSVC_RUNTIME_LIBRARY": "MultiThreadedDebug", - "x86_BUILD_TOOLS_PATH": "C:/Program Files (x86)/Windows Kits/10/bin/10.0.26100.0/x86/", - "x64_BUILD_TOOLS_PATH": "C:/Program Files (x86)/Windows Kits/10/bin/10.0.26100.0/x64" - } - }, - { - "name": "release", - "displayName": "Release", - "description": "Release build using vcpkg", - "generator": "Visual Studio 17 2022", - "binaryDir": "${sourceDir}/build/${presetName}", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release", "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", "VCPKG_TARGET_TRIPLET": "x64-windows-static", "CMAKE_PREFIX_PATH": "vcpkg_installed/x64-windows-static", @@ -39,4 +19,4 @@ } } ] -} \ No newline at end of file +} From b953b1487aefbadcf0aff19c0fa444027766113b Mon Sep 17 00:00:00 2001 From: Ap3x <36021809+Ap3x@users.noreply.github.com> Date: Fri, 6 Mar 2026 17:24:16 -0700 Subject: [PATCH 10/14] update github actions --- .github/workflows/build.yml | 2 +- .gitignore | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 255eae1..44fd18a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,7 +11,7 @@ on: jobs: build: name: Build ${{ matrix.config }} - runs-on: [self-hosted, DESKTOP-N792BI5] + runs-on: windows-latest strategy: matrix: config: [Debug, Release] diff --git a/.gitignore b/.gitignore index 0218f98..07d0583 100644 --- a/.gitignore +++ b/.gitignore @@ -27,4 +27,6 @@ CMakePresets.json !CMakeLists.txt !external/* external/LIEF* -output.yarc \ No newline at end of file +output.yarc +speech_* +.claude/* From 1a4103ecdd7842e48ba799b2992ec34a392ce574 Mon Sep 17 00:00:00 2001 From: Ap3x <36021809+Ap3x@users.noreply.github.com> Date: Fri, 6 Mar 2026 17:36:00 -0700 Subject: [PATCH 11/14] build release only and cache vcpkg --- .github/workflows/build.yml | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 44fd18a..e3fc1b9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,25 +8,35 @@ on: branches: - main +env: + VCPKG_DEFAULT_BINARY_CACHE: ${{ github.workspace }}/vcpkg-cache + jobs: build: - name: Build ${{ matrix.config }} + name: Build Release runs-on: windows-latest - strategy: - matrix: - config: [Debug, Release] - steps: - name: Checkout repository uses: actions/checkout@v4 with: submodules: recursive + - name: Create vcpkg binary cache directory + run: mkdir -p "${{ github.workspace }}/vcpkg-cache" + shell: bash + + - name: Restore vcpkg binary cache + uses: actions/cache@v4 + with: + path: ${{ github.workspace }}/vcpkg-cache + key: vcpkg-${{ runner.os }}-${{ hashFiles('vcpkg.json') }} + restore-keys: | + vcpkg-${{ runner.os }}- + - name: Setup vcpkg uses: lukka/run-vcpkg@v11 with: vcpkgJsonGlob: 'vcpkg.json' - useVcpkgInstallArtifactCaching: true - name: Setup MSBuild uses: microsoft/setup-msbuild@v2 @@ -37,16 +47,16 @@ jobs: VCPKG_ROOT: ${{ github.workspace }}/vcpkg - name: Build - run: cmake --build build/default --config ${{ matrix.config }} + run: cmake --build build/default --config Release - name: Upload Artifacts uses: actions/upload-artifact@v4 with: - name: panoptes-${{ matrix.config }} + name: panoptes-Release path: | - bin/${{ matrix.config }}/**/*.dll - bin/${{ matrix.config }}/**/*.exe - bin/${{ matrix.config }}/**/*.pdb - bin/tests/${{ matrix.config }}/**/*.exe - bin/tests/${{ matrix.config }}/**/*.pdb + bin/Release/**/*.dll + bin/Release/**/*.exe + bin/Release/**/*.pdb + bin/tests/Release/**/*.exe + bin/tests/Release/**/*.pdb if-no-files-found: warn From ca68c5cd922a7a94083f86d2027fd6a987ef6250 Mon Sep 17 00:00:00 2001 From: Ap3x <36021809+Ap3x@users.noreply.github.com> Date: Fri, 6 Mar 2026 17:41:47 -0700 Subject: [PATCH 12/14] Remove github actions --- .github/workflows/build.yml | 62 ------------------------------------- 1 file changed, 62 deletions(-) delete mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index e3fc1b9..0000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,62 +0,0 @@ -name: Build Panoptes - -on: - push: - branches: - - main - pull_request: - branches: - - main - -env: - VCPKG_DEFAULT_BINARY_CACHE: ${{ github.workspace }}/vcpkg-cache - -jobs: - build: - name: Build Release - runs-on: windows-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Create vcpkg binary cache directory - run: mkdir -p "${{ github.workspace }}/vcpkg-cache" - shell: bash - - - name: Restore vcpkg binary cache - uses: actions/cache@v4 - with: - path: ${{ github.workspace }}/vcpkg-cache - key: vcpkg-${{ runner.os }}-${{ hashFiles('vcpkg.json') }} - restore-keys: | - vcpkg-${{ runner.os }}- - - - name: Setup vcpkg - uses: lukka/run-vcpkg@v11 - with: - vcpkgJsonGlob: 'vcpkg.json' - - - name: Setup MSBuild - uses: microsoft/setup-msbuild@v2 - - - name: Configure CMake - run: cmake --preset default -DBUILD_DRIVER=ON -DBUILD_GRPC=ON - env: - VCPKG_ROOT: ${{ github.workspace }}/vcpkg - - - name: Build - run: cmake --build build/default --config Release - - - name: Upload Artifacts - uses: actions/upload-artifact@v4 - with: - name: panoptes-Release - path: | - bin/Release/**/*.dll - bin/Release/**/*.exe - bin/Release/**/*.pdb - bin/tests/Release/**/*.exe - bin/tests/Release/**/*.pdb - if-no-files-found: warn From c77e0b387ac275eef5be42122697aa0db8bf9074 Mon Sep 17 00:00:00 2001 From: Ap3x <36021809+Ap3x@users.noreply.github.com> Date: Fri, 6 Mar 2026 17:44:27 -0700 Subject: [PATCH 13/14] add doxygen gh actions --- .github/workflows/docs.yml | 57 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 .github/workflows/docs.yml diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000..a7466d4 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,57 @@ +name: Build Doxygen Docs + +on: + push: + branches: [main] + paths: + - 'src/**' + - 'docs/**' + pull_request: + branches: [main] + paths: + - 'src/**' + - 'docs/**' + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install Doxygen + run: sudo apt-get update && sudo apt-get install -y doxygen graphviz + + - name: Build docs + working-directory: docs + run: doxygen Doxyfile + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: Documentation + + deploy: + if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request' + needs: build + runs-on: ubuntu-latest + + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 From d76bd422ce6e1131279a760e7042296bee762a26 Mon Sep 17 00:00:00 2001 From: Ap3x <36021809+Ap3x@users.noreply.github.com> Date: Fri, 6 Mar 2026 17:46:17 -0700 Subject: [PATCH 14/14] fix artifact path --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index a7466d4..0cb4944 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -40,7 +40,7 @@ jobs: - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: - path: Documentation + path: docs/Documentation deploy: if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request'