Skip to content

Commit a61f6da

Browse files
committed
feat: add Sparkle framework support for app updater on macOS
1 parent 3db38c9 commit a61f6da

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

CMakeLists.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ set(PROJECT_VERSION_SUFFIX "b2")
77
set(PROJECT_VERSION_FULL "${PROJECT_VERSION}${PROJECT_VERSION_SUFFIX}")
88

99
include(cmake/Element.cmake)
10+
if(ELEMENT_ENABLE_UPDATER)
11+
include(cmake/FindSparkle.cmake)
12+
endif()
1013
include(cmake/FindJack.cmake)
1114

1215
add_subdirectory(deps/sol2 EXCLUDE_FROM_ALL)
@@ -79,6 +82,15 @@ target_link_libraries(element_app PRIVATE kv::element)
7982
if(NOT APPLE)
8083
install(TARGETS element_app DESTINATION ${CMAKE_INSTALL_BINDIR})
8184
else()
85+
if(ELEMENT_ENABLE_UPDATER)
86+
target_link_libraries(element_app PRIVATE ${SPARKLE_FRAMEWORK})
87+
add_custom_command(TARGET element_app POST_BUILD
88+
COMMAND ${CMAKE_COMMAND} -E copy_directory
89+
"${SPARKLE_FRAMEWORK}"
90+
"$<TARGET_BUNDLE_CONTENT_DIR:element_app>/Frameworks/Sparkle.framework"
91+
COMMENT "Copying Sparkle.framework into app bundle"
92+
)
93+
endif()
8294
install(TARGETS element_app
8395
BUNDLE DESTINATION "Applications"
8496
COMPONENT "Standalone")

cmake/FindSparkle.cmake

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
if(APPLE)
2+
set(SPARKLE_VERSION "2.8.1" CACHE STRING "Sparkle version to download")
3+
4+
FetchContent_Declare(
5+
sparkle
6+
URL https://github.com/Sparkle-project/Sparkle/releases/download/${SPARKLE_VERSION}/Sparkle-${SPARKLE_VERSION}.tar.xz
7+
DOWNLOAD_EXTRACT_TIMESTAMP TRUE
8+
)
9+
10+
FetchContent_MakeAvailable(sparkle)
11+
message(STATUS "Searching for Sparkle in: ${sparkle_SOURCE_DIR}")
12+
find_library(SPARKLE_FRAMEWORK Sparkle HINTS ${sparkle_SOURCE_DIR})
13+
if(SPARKLE_FRAMEWORK)
14+
message(STATUS "Found Sparkle: ${SPARKLE_FRAMEWORK}")
15+
else()
16+
message(FATAL_ERROR "Sparkle framework not found")
17+
endif()
18+
endif()

0 commit comments

Comments
 (0)