From b32d454bcd1d4efbe5ab1aaebd73083a02642316 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Tue, 21 Jul 2026 16:42:33 +0200 Subject: [PATCH] Try making a macos bundle. --- .github/workflows/macos.yml | 4 ++-- profiler/CMakeLists.txt | 23 +++++++++++++++++++++++ profiler/macos/Info.plist.in | 30 ++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 profiler/macos/Info.plist.in diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 9fded2e3..8cfbfea4 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -31,7 +31,7 @@ jobs: uses: ./.github/actions/test-tracy - name: Build profiler run: | - cmake -B profiler/build -S profiler -DCMAKE_BUILD_TYPE=Release -DGIT_REV=${{ github.sha }} + cmake -B profiler/build -S profiler -DCMAKE_BUILD_TYPE=Release -DBUNDLE=ON -DGIT_REV=${{ github.sha }} cmake --build profiler/build --parallel 2 --config Release - name: Build update run: | @@ -56,7 +56,7 @@ jobs: - name: Package artifacts run: | mkdir -p bin - cp profiler/build/tracy-profiler bin + ditto -c -k --keepParent profiler/build/tracy-profiler.app bin/tracy-profiler.app.zip cp update/build/tracy-update bin cp capture/build/tracy-capture bin cp csvexport/build/tracy-csvexport bin diff --git a/profiler/CMakeLists.txt b/profiler/CMakeLists.txt index daee5b64..06a0b99b 100644 --- a/profiler/CMakeLists.txt +++ b/profiler/CMakeLists.txt @@ -8,6 +8,10 @@ set_option(LEGACY "Instead of Wayland, use the legacy X11 backend on Linux" OFF) set_option(SELF_PROFILE "Enable self-profiling" OFF) set_option_value(SANITIZE "Sanitizer parameters" "") +if(APPLE) + set_option(BUNDLE "Build a macOS application bundle" OFF) +endif() + set(NO_STATISTICS OFF) include(${CMAKE_CURRENT_LIST_DIR}/../cmake/version.cmake) @@ -261,6 +265,25 @@ if(WIN32) ) add_executable(${PROJECT_NAME} WIN32 ${PROFILER_FILES} ${COMMON_FILES} ${SERVER_FILES}) set_property(DIRECTORY ${CMAKE_CURRENT_LIST_DIR} PROPERTY VS_STARTUP_PROJECT ${PROJECT_NAME}) +elseif(APPLE AND BUNDLE) + set(ICON_SRC ${CMAKE_CURRENT_LIST_DIR}/../icon/icon.png) + set(ICON_ICNS ${CMAKE_CURRENT_BINARY_DIR}/icon.icns) + add_custom_command( + OUTPUT ${ICON_ICNS} + COMMAND sips -s format icns ${ICON_SRC} --out ${ICON_ICNS} + DEPENDS ${ICON_SRC} + ) + set_source_files_properties(${ICON_ICNS} PROPERTIES MACOSX_PACKAGE_LOCATION Resources) + add_executable(${PROJECT_NAME} MACOSX_BUNDLE ${PROFILER_FILES} ${COMMON_FILES} ${SERVER_FILES} ${ICON_ICNS}) + set_target_properties(${PROJECT_NAME} PROPERTIES + MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_LIST_DIR}/macos/Info.plist.in + MACOSX_BUNDLE_BUNDLE_NAME "Tracy Profiler" + MACOSX_BUNDLE_GUI_IDENTIFIER "pl.nereid.tracy" + MACOSX_BUNDLE_BUNDLE_VERSION ${TRACY_VERSION_STRING} + MACOSX_BUNDLE_SHORT_VERSION_STRING ${TRACY_VERSION_STRING} + MACOSX_BUNDLE_ICON_FILE icon.icns + MACOSX_BUNDLE_COPYRIGHT "Bartosz Taudul" + ) else() add_executable(${PROJECT_NAME} ${PROFILER_FILES} ${COMMON_FILES} ${SERVER_FILES}) endif() diff --git a/profiler/macos/Info.plist.in b/profiler/macos/Info.plist.in new file mode 100644 index 00000000..9ce10d37 --- /dev/null +++ b/profiler/macos/Info.plist.in @@ -0,0 +1,30 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + ${MACOSX_BUNDLE_EXECUTABLE_NAME} + CFBundleName + ${MACOSX_BUNDLE_BUNDLE_NAME} + CFBundleIdentifier + ${MACOSX_BUNDLE_GUI_IDENTIFIER} + CFBundleIconFile + ${MACOSX_BUNDLE_ICON_FILE} + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + CFBundleShortVersionString + ${MACOSX_BUNDLE_SHORT_VERSION_STRING} + CFBundleVersion + ${MACOSX_BUNDLE_BUNDLE_VERSION} + NSHumanReadableCopyright + ${MACOSX_BUNDLE_COPYRIGHT} + NSPrincipalClass + NSApplication + NSHighResolutionCapable + + +