diff --git a/.github/actions/test-tracy/action.yml b/.github/actions/test-tracy/action.yml new file mode 100644 index 00000000..7f73f142 --- /dev/null +++ b/.github/actions/test-tracy/action.yml @@ -0,0 +1,35 @@ +name: 'Test Tracy' +description: 'Build the Tracy test application with various cmake flag combinations' + +inputs: + extra_cmake_flags: + description: 'Additional cmake flags appended to each configure command (e.g. cross-compilation flags)' + required: false + default: '' + +runs: + using: 'composite' + steps: + - name: Test application + shell: bash + run: | + # test compilation with different flags + # we clean the build folder to reset cached variables between runs + cmake -B tests/tracy/build -S tests/tracy -DCMAKE_BUILD_TYPE=Release ${{ inputs.extra_cmake_flags }} + cmake --build tests/tracy/build --parallel + cmake -E rm -rf tests/tracy/build + + # same with TRACY_ON_DEMAND + cmake -B tests/tracy/build -S tests/tracy -DCMAKE_BUILD_TYPE=Release -DTRACY_ON_DEMAND=ON ${{ inputs.extra_cmake_flags }} + cmake --build tests/tracy/build --parallel + cmake -E rm -rf tests/tracy/build + + # same with TRACY_DELAYED_INIT and TRACY_MANUAL_LIFETIME + cmake -B tests/tracy/build -S tests/tracy -DCMAKE_BUILD_TYPE=Release -DTRACY_DELAYED_INIT=ON -DTRACY_MANUAL_LIFETIME=ON ${{ inputs.extra_cmake_flags }} + cmake --build tests/tracy/build --parallel + cmake -E rm -rf tests/tracy/build + + # same with TRACY_DEMANGLE + cmake -B tests/tracy/build -S tests/tracy -DCMAKE_BUILD_TYPE=Release -DTRACY_DEMANGLE=ON ${{ inputs.extra_cmake_flags }} + cmake --build tests/tracy/build --parallel + cmake -E rm -rf tests/tracy/build diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 565e906f..52ceec0a 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -66,27 +66,7 @@ jobs: meson setup -Dprefix=$GITHUB_WORKSPACE/bin/lib -Dtracy_enable=true build-meson meson compile -C build-meson - name: Test application - run: | - # test compilation with different flags - # we clean the build folder to reset cached variables between runs - cmake -B test/build -S test -DCMAKE_BUILD_TYPE=Release - cmake --build test/build --parallel - rm -rf test/build - - # same with TRACY_ON_DEMAND - cmake -B test/build -S test -DCMAKE_BUILD_TYPE=Release -DTRACY_ON_DEMAND=ON . - cmake --build test/build --parallel - rm -rf test/build - - # same with TRACY_DELAYED_INIT TRACY_MANUAL_LIFETIME - cmake -B test/build -S test -DCMAKE_BUILD_TYPE=Release -DTRACY_DELAYED_INIT=ON -DTRACY_MANUAL_LIFETIME=ON . - cmake --build test/build --parallel - rm -rf test/build - - # same with TRACY_DEMANGLE - cmake -B test/build -S test -DCMAKE_BUILD_TYPE=Release -DTRACY_DEMANGLE=ON . - cmake --build test/build --parallel - rm -rf test/build + uses: ./.github/actions/test-tracy - name: Find Artifacts id: find_artifacts run: | diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index ca92092c..d754ae63 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -51,6 +51,8 @@ jobs: cmake --build merge/build --parallel --config Release - name: Build library run: meson setup -Dprefix=$GITHUB_WORKSPACE/bin/lib -Dtracy_enable=true build && meson compile -C build && meson install -C build + - name: Test application + uses: ./.github/actions/test-tracy - name: Package artifacts run: | mkdir -p bin diff --git a/.github/workflows/mingw.yml b/.github/workflows/mingw.yml index 793452f8..c4398a22 100644 --- a/.github/workflows/mingw.yml +++ b/.github/workflows/mingw.yml @@ -53,27 +53,9 @@ jobs: meson setup build-meson --cross-file mingw-cross.txt -Ddefault_library=static -Dtracy_enable=true meson compile -C build-meson - name: Test application - run: | - cmake -B test/build -S test -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_SYSTEM_NAME=Windows \ - -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc \ + uses: ./.github/actions/test-tracy + with: + extra_cmake_flags: >- + -DCMAKE_SYSTEM_NAME=Windows + -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ - cmake --build test/build --parallel - rm -rf test/build - cmake -B test/build -S test -DCMAKE_BUILD_TYPE=Release -DTRACY_ON_DEMAND=ON \ - -DCMAKE_SYSTEM_NAME=Windows \ - -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc \ - -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ - cmake --build test/build --parallel - rm -rf test/build - cmake -B test/build -S test -DCMAKE_BUILD_TYPE=Release -DTRACY_DELAYED_INIT=ON -DTRACY_MANUAL_LIFETIME=ON \ - -DCMAKE_SYSTEM_NAME=Windows \ - -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc \ - -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ - cmake --build test/build --parallel - rm -rf test/build - cmake -B test/build -S test -DCMAKE_BUILD_TYPE=Release -DTRACY_DEMANGLE=ON \ - -DCMAKE_SYSTEM_NAME=Windows \ - -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc \ - -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ - cmake --build test/build --parallel diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index daa80235..c44cc3ca 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -53,6 +53,8 @@ jobs: run: | cmake -B merge/build -S merge -DCMAKE_BUILD_TYPE=Release -DGIT_REV=${{ github.sha }} cmake --build merge/build --parallel --config Release + - name: Test application + uses: ./.github/actions/test-tracy - name: Package artifacts run: | mkdir bin diff --git a/test/CMakeLists.txt b/tests/tracy/CMakeLists.txt similarity index 92% rename from test/CMakeLists.txt rename to tests/tracy/CMakeLists.txt index 9030e031..ec199f87 100644 --- a/test/CMakeLists.txt +++ b/tests/tracy/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16) -include(${CMAKE_CURRENT_LIST_DIR}/../cmake/version.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/../../cmake/version.cmake) # we target C++11 for the client part set(CMAKE_CXX_STANDARD 11) @@ -18,7 +18,7 @@ option(TRACY_ENABLE "Enable profiling" ON) # a bit weird but works: include the client cmake config coming from top-level # cmake needs us to specify the build subfolder -> client/ this way we can # simply link the test executable against TracyClient -add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/.. client/) +add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../.. client/) add_executable(tracy-test test.cpp) if(NOT CMAKE_SYSTEM_NAME STREQUAL "Windows") diff --git a/test/image.jpg b/tests/tracy/image.jpg similarity index 100% rename from test/image.jpg rename to tests/tracy/image.jpg diff --git a/test/stb_image.h b/tests/tracy/stb_image.h similarity index 100% rename from test/stb_image.h rename to tests/tracy/stb_image.h diff --git a/test/test.cpp b/tests/tracy/test.cpp similarity index 99% rename from test/test.cpp rename to tests/tracy/test.cpp index 6668670f..bc9e4619 100644 --- a/test/test.cpp +++ b/tests/tracy/test.cpp @@ -22,6 +22,10 @@ extern "C" #define STBI_ONLY_JPEG #include "stb_image.h" +#ifdef TRACY_DEMANGLE +extern "C" const char* ___tracy_demangle( const char* ) { return nullptr; } +#endif + struct static_init_test_t { static_init_test_t()