diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dbd274d..a6bf401 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -73,17 +73,81 @@ jobs: cp build/screenshot.png release/ 2>/dev/null || true cd release && 7z a ../win64-reclass-latest.zip * - - name: Update latest release + - name: Update win64 release if: github.event_name == 'push' && github.ref == 'refs/heads/main' uses: softprops/action-gh-release@v2 with: - tag_name: latest - name: Latest Build + tag_name: latest-win64 + name: win64 body: | - Automated build from main branch. + Windows x64 build from main branch. Commit: ${{ github.sha }} prerelease: true files: win64-reclass-latest.zip make_latest: false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + linux: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Install Qt6 + uses: jurplel/install-qt-action@v4 + with: + version: '6.8.1' + cache: true + aqtversion: '==3.1.21' + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y ninja-build libgl1-mesa-dev + + - name: Configure + run: cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release + + - name: Build + run: cmake --build build + + - name: Test + run: xvfb-run ctest --test-dir build --output-on-failure --exclude-regex "test_editor" + env: + QT_QPA_PLATFORM: offscreen + + - name: Upload artifact + uses: actions/upload-artifact@v4 + if: always() + with: + name: Reclass-Linux-x64 + path: | + build/Reclass + build/ReclassMcpBridge + + - name: Package release tarball + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + run: | + mkdir -p release + cp build/Reclass release/ + cp build/ReclassMcpBridge release/ + cp -r build/themes release/ 2>/dev/null || true + tar czf linux64-reclass-latest.tar.gz -C release . + + - name: Update linux64 release + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + uses: softprops/action-gh-release@v2 + with: + tag_name: latest-linux64 + name: linux64 + body: | + Linux x64 build from main branch. + Commit: ${{ github.sha }} + prerelease: true + files: linux64-reclass-latest.tar.gz + make_latest: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/CMakeLists.txt b/CMakeLists.txt index 428cfb6..9665c5a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -97,12 +97,14 @@ endforeach() include(deploy) -add_custom_target(screenshot ALL - COMMAND Reclass --screenshot ${CMAKE_BINARY_DIR}/screenshot.png - DEPENDS Reclass deploy - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - COMMENT "Capturing UI screenshot with class open..." -) +if(TARGET deploy) + add_custom_target(screenshot ALL + COMMAND Reclass --screenshot ${CMAKE_BINARY_DIR}/screenshot.png + DEPENDS Reclass deploy + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + COMMENT "Capturing UI screenshot with class open..." + ) +endif() set(_combine_script "${CMAKE_BINARY_DIR}/combine_sources.cmake") file(WRITE ${_combine_script} " @@ -259,15 +261,14 @@ if(BUILD_TESTING) target_link_libraries(test_theme PRIVATE ${QT}::Widgets ${QT}::Test) add_test(NAME test_theme COMMAND test_theme) - add_executable(test_windbg_provider tests/test_windbg_provider.cpp - plugins/WinDbgMemory/WinDbgMemoryPlugin.cpp) - target_include_directories(test_windbg_provider PRIVATE src plugins/WinDbgMemory) - target_link_libraries(test_windbg_provider PRIVATE - ${QT}::Widgets ${QT}::Concurrent ${QT}::Test) if(WIN32) - target_link_libraries(test_windbg_provider PRIVATE dbgeng ole32) + add_executable(test_windbg_provider tests/test_windbg_provider.cpp + plugins/WinDbgMemory/WinDbgMemoryPlugin.cpp) + target_include_directories(test_windbg_provider PRIVATE src plugins/WinDbgMemory) + target_link_libraries(test_windbg_provider PRIVATE + ${QT}::Widgets ${QT}::Concurrent ${QT}::Test dbgeng ole32) + add_test(NAME test_windbg_provider COMMAND test_windbg_provider) endif() - add_test(NAME test_windbg_provider COMMAND test_windbg_provider) # Standalone test: proves whether CoInitializeSecurity is needed for DebugConnect # Requires a running WinDbg debug server on port 5055 @@ -290,5 +291,7 @@ if(BUILD_TESTING) ) endif() endif() -add_subdirectory(plugins/ProcessMemory) -add_subdirectory(plugins/WinDbgMemory) +if(WIN32) + add_subdirectory(plugins/ProcessMemory) + add_subdirectory(plugins/WinDbgMemory) +endif()