Some checks failed
Build / Build openSUSE (leap:15.6) (push) Has been cancelled
Build / Build openSUSE (leap:16.0) (push) Has been cancelled
Build / Build openSUSE (tumbleweed) (push) Has been cancelled
Build / Build Fedora (42) (push) Has been cancelled
Build / Build Fedora (43) (push) Has been cancelled
Build / Build Fedora (44) (push) Has been cancelled
Build / Build OpenMandriva (cooker) (push) Has been cancelled
Build / Build Mageia (9) (push) Has been cancelled
Build / Build Debian (bookworm) (push) Has been cancelled
Build / Build Debian (forky) (push) Has been cancelled
Build / Build Debian (trixie) (push) Has been cancelled
Build / Build Ubuntu (noble) (push) Has been cancelled
Build / Build Ubuntu (questing) (push) Has been cancelled
Build / Build Ubuntu (resolute) (push) Has been cancelled
Build / Upload Ubuntu PPA (noble) (push) Has been cancelled
Build / Upload Ubuntu PPA (questing) (push) Has been cancelled
Build / Upload Ubuntu PPA (resolute) (push) Has been cancelled
Build / Build FreeBSD (push) Has been cancelled
Build / Build OpenBSD (push) Has been cancelled
Build / Build macOS Public (release, macos-15) (push) Has been cancelled
Build / Build macOS Public (release, macos-15-intel) (push) Has been cancelled
Build / Build macOS Private (release, macos-arm64) (push) Has been cancelled
Build / Build Windows MinGW (i686, debug) (push) Has been cancelled
Build / Build Windows MinGW (i686, release) (push) Has been cancelled
Build / Build Windows MinGW (x86_64, debug) (push) Has been cancelled
Build / Build Windows MinGW (x86_64, release) (push) Has been cancelled
Build / Build Windows MSVC (arm64, debug, arm64 debug, windows-11-arm) (push) Has been cancelled
Build / Build Windows MSVC (arm64, release, arm64 release, windows-11-arm) (push) Has been cancelled
Build / Build Windows MSVC (x86, debug, x86 debug, windows-2022) (push) Has been cancelled
Build / Build Windows MSVC (x86, release, x86 release, windows-2022) (push) Has been cancelled
Build / Build Windows MSVC (x86_64, debug, x86_64 debug, windows-2022) (push) Has been cancelled
Build / Build Windows MSVC (x86_64, release, x86_64 release, windows-2022) (push) Has been cancelled
Build / Upload (push) Has been cancelled
Build / Attach to release (push) Has been cancelled
This commit introduces the ability to build and notarize DMG files as part of the macOS deployment process. The build_sign_notarize.sh script is updated to include a new --dmg option, allowing users to create a DMG after app notarization. Additionally, the Dmg.cmake script is modified to accept a codesign identity from an environment variable, improving flexibility for developers. The README.md is also updated to reflect these changes and provide guidance on the new DMG build process.
105 lines
4.6 KiB
CMake
105 lines
4.6 KiB
CMake
# NOTE: Packaging helpers should not be REQUIRED at configure time.
|
|
# Missing tools should simply disable the related custom targets.
|
|
find_program(MACDEPLOYQT_EXECUTABLE NAMES macdeployqt PATHS /usr/bin /usr/local/bin /opt/local/bin /usr/local/opt/qt6/bin)
|
|
if(MACDEPLOYQT_EXECUTABLE)
|
|
message(STATUS "Found macdeployqt: ${MACDEPLOYQT_EXECUTABLE}")
|
|
else()
|
|
message(WARNING "Missing macdeployqt executable.")
|
|
endif()
|
|
|
|
find_program(MACDEPLOYCHECK_EXECUTABLE NAMES macdeploycheck PATHS /usr/bin /usr/local/bin /opt/local/bin /usr/local/opt/qt6/bin)
|
|
if(MACDEPLOYCHECK_EXECUTABLE)
|
|
message(STATUS "Found macdeploycheck: ${MACDEPLOYCHECK_EXECUTABLE}")
|
|
else()
|
|
message(STATUS "macdeploycheck not found (optional): 'deploycheck' target will be unavailable.")
|
|
endif()
|
|
|
|
find_program(CREATEDMG_EXECUTABLE NAMES create-dmg)
|
|
if(CREATEDMG_EXECUTABLE)
|
|
message(STATUS "Found create-dmg: ${CREATEDMG_EXECUTABLE}")
|
|
else()
|
|
message(WARNING "Missing create-dmg executable.")
|
|
endif()
|
|
|
|
set(_SPARKLE_FRAMEWORK_DIR "")
|
|
set(_SPARKLE_ORIGINAL_BIN_LINK "")
|
|
set(_SPARKLE_ORIGINAL_BIN_REAL "")
|
|
if(SPARKLE)
|
|
# SPARKLE may be either the framework directory or the framework binary path.
|
|
get_filename_component(_sparkle_link "${SPARKLE}" ABSOLUTE)
|
|
get_filename_component(_sparkle_real "${SPARKLE}" REALPATH)
|
|
if(_sparkle_link MATCHES "Sparkle\\.framework$")
|
|
set(_SPARKLE_FRAMEWORK_DIR "${_sparkle_real}")
|
|
set(_SPARKLE_ORIGINAL_BIN_LINK "${_sparkle_link}/Versions/B/Sparkle")
|
|
set(_SPARKLE_ORIGINAL_BIN_REAL "${_sparkle_real}/Versions/B/Sparkle")
|
|
else()
|
|
# Assume it's the framework binary path:
|
|
# .../Sparkle.framework/Versions/B/Sparkle
|
|
set(_SPARKLE_ORIGINAL_BIN_LINK "${_sparkle_link}")
|
|
set(_SPARKLE_ORIGINAL_BIN_REAL "${_sparkle_real}")
|
|
get_filename_component(_sparkle_b_dir "${_SPARKLE_ORIGINAL_BIN_REAL}" DIRECTORY) # .../Versions/B
|
|
get_filename_component(_sparkle_versions_dir "${_sparkle_b_dir}" DIRECTORY) # .../Versions
|
|
get_filename_component(_SPARKLE_FRAMEWORK_DIR "${_sparkle_versions_dir}" DIRECTORY) # .../Sparkle.framework
|
|
endif()
|
|
|
|
if(NOT EXISTS "${_SPARKLE_FRAMEWORK_DIR}" OR NOT EXISTS "${_SPARKLE_ORIGINAL_BIN_REAL}")
|
|
set(_SPARKLE_FRAMEWORK_DIR "")
|
|
set(_SPARKLE_ORIGINAL_BIN_LINK "")
|
|
set(_SPARKLE_ORIGINAL_BIN_REAL "")
|
|
else()
|
|
message(STATUS "Sparkle.framework found: ${_SPARKLE_FRAMEWORK_DIR}")
|
|
endif()
|
|
endif()
|
|
|
|
if(MACDEPLOYQT_EXECUTABLE)
|
|
|
|
# Allow build scripts to provide a codesign identity via environment variable.
|
|
# This is used to optionally pass -codesign=... to macdeployqt and --codesign to create-dmg.
|
|
if(NOT APPLE_DEVELOPER_ID AND DEFINED ENV{APPLE_DEVELOPER_ID})
|
|
set(APPLE_DEVELOPER_ID "$ENV{APPLE_DEVELOPER_ID}")
|
|
endif()
|
|
|
|
if(APPLE_DEVELOPER_ID)
|
|
set(MACDEPLOYQT_CODESIGN -codesign=${APPLE_DEVELOPER_ID})
|
|
set(CREATEDMG_CODESIGN --codesign ${APPLE_DEVELOPER_ID})
|
|
endif()
|
|
if(CREATEDMG_SKIP_JENKINS)
|
|
set(CREATEDMG_SKIP_JENKINS_ARG "--skip-jenkins")
|
|
endif()
|
|
|
|
set(_deploy_commands
|
|
COMMAND mkdir -p ${CMAKE_BINARY_DIR}/strawberry.app/Contents/Frameworks
|
|
COMMAND mkdir -p ${CMAKE_BINARY_DIR}/strawberry.app/Contents/Resources
|
|
COMMAND cp -v ${CMAKE_BINARY_DIR}/dist/macos/Info.plist ${CMAKE_BINARY_DIR}/strawberry.app/Contents/
|
|
COMMAND cp -v ${CMAKE_SOURCE_DIR}/dist/macos/strawberry.icns ${CMAKE_BINARY_DIR}/strawberry.app/Contents/Resources/
|
|
)
|
|
|
|
if(_SPARKLE_FRAMEWORK_DIR)
|
|
list(APPEND _deploy_commands
|
|
COMMAND ${CMAKE_SOURCE_DIR}/dist/macos/bundle_sparkle.sh ${CMAKE_BINARY_DIR}/strawberry.app ${_SPARKLE_FRAMEWORK_DIR} ${_SPARKLE_ORIGINAL_BIN_LINK} ${_SPARKLE_ORIGINAL_BIN_REAL}
|
|
)
|
|
endif()
|
|
|
|
list(APPEND _deploy_commands
|
|
COMMAND ${CMAKE_SOURCE_DIR}/dist/macos/macgstcopy.sh ${CMAKE_BINARY_DIR}/strawberry.app
|
|
COMMAND ${MACDEPLOYQT_EXECUTABLE} strawberry.app -verbose=3 -executable=${CMAKE_BINARY_DIR}/strawberry.app/Contents/PlugIns/gst-plugin-scanner ${MACDEPLOYQT_CODESIGN}
|
|
)
|
|
|
|
add_custom_target(deploy
|
|
${_deploy_commands}
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
DEPENDS strawberry
|
|
)
|
|
if(MACDEPLOYCHECK_EXECUTABLE)
|
|
add_custom_target(deploycheck
|
|
COMMAND ${MACDEPLOYCHECK_EXECUTABLE} strawberry.app
|
|
)
|
|
endif()
|
|
if(CREATEDMG_EXECUTABLE)
|
|
add_custom_target(dmg
|
|
COMMAND ${CREATEDMG_EXECUTABLE} --volname strawberry --background "${CMAKE_SOURCE_DIR}/dist/macos/dmg_background.png" --app-drop-link 450 218 --icon strawberry.app 150 218 --window-size 600 450 ${CREATEDMG_CODESIGN} ${CREATEDMG_SKIP_JENKINS_ARG} strawberry-${STRAWBERRY_VERSION_PACKAGE}-${CMAKE_HOST_SYSTEM_PROCESSOR}.dmg strawberry.app
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
)
|
|
endif()
|
|
endif()
|