Skip to content

Commit 8c96763

Browse files
committed
feat: update CMake configuration for Sparkle integration and enhance plist generation
1 parent 304e534 commit 8c96763

File tree

4 files changed

+45
-39
lines changed

4 files changed

+45
-39
lines changed

CMakeLists.txt

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ 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)
10+
if(APPLE AND ELEMENT_ENABLE_UPDATER)
1111
include(cmake/FindSparkle.cmake)
1212
endif()
1313
include(cmake/FindJack.cmake)
@@ -59,25 +59,6 @@ else()
5959
set(ELEMENT_STANDALONE_PRODUCT_NAME "Element")
6060
endif()
6161

62-
set(SPARKLE_FEED_URL "https://kushview.net/element/appcast.xml")
63-
set(SPARKLE_PUBLIC_KEY "xxx")
64-
set(ELEMENT_APP_PLIST_TO_MERGE "")
65-
66-
if(APPLE AND ELEMENT_ENABLE_UPDATER)
67-
message(STATUS "PLIST UPDATED")
68-
string(APPEND ELEMENT_APP_PLIST_TO_MERGE "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
69-
<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
70-
<plist version=\"1.0\">
71-
<dict>")
72-
73-
string(APPEND ELEMENT_APP_PLIST_TO_MERGE "<key>SUFeedURL</key>")
74-
string(APPEND ELEMENT_APP_PLIST_TO_MERGE "<string>${SPARKLE_FEED_URL}</string>")
75-
string(APPEND ELEMENT_APP_PLIST_TO_MERGE "<key>SUPublicEDKey</key>")
76-
string(APPEND ELEMENT_APP_PLIST_TO_MERGE "<string>${SPARKLE_PUBLIC_KEY}</string>")
77-
78-
string(APPEND ELEMENT_APP_PLIST_TO_MERGE "</dict></plist>")
79-
endif()
80-
8162
juce_add_gui_app(element_app
8263
PRODUCT_NAME "${ELEMENT_STANDALONE_PRODUCT_NAME}"
8364
BUILD_VERSION "${ELEMENT_BUILD_NUMBER}"
@@ -104,7 +85,8 @@ if(NOT APPLE)
10485
install(TARGETS element_app DESTINATION ${CMAKE_INSTALL_BINDIR})
10586
else()
10687
if(ELEMENT_ENABLE_UPDATER)
107-
target_link_libraries(element_app PRIVATE ${SPARKLE_FRAMEWORK})
88+
target_compile_options(element_app PRIVATE "-F${sparkle_SOURCE_DIR}")
89+
target_link_options(element_app PRIVATE "-F${sparkle_SOURCE_DIR}" -framework Sparkle)
10890
target_sources(element_app PRIVATE src/sparkle.mm)
10991
add_custom_command(TARGET element_app POST_BUILD
11092
COMMAND ${CMAKE_COMMAND} -E rm -rf

cmake/Element.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ option(ELEMENT_ENABLE_VST2 "Build with VST2 support" OFF)
77
option(ELEMENT_ENABLE_LTO "Build with Link Time Optimization" OFF)
88
option(ELEMENT_ENABLE_UPDATER "Build with updater support" OFF)
99

10+
set(ELEMENT_APP_PLIST_TO_MERGE "")
11+
1012
if(APPLE)
1113
enable_language(OBJC)
1214
enable_language(OBJCXX)

cmake/FindSparkle.cmake

Lines changed: 37 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,38 @@
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()
1+
set(SPARKLE_VERSION "2.8.1" CACHE STRING "Sparkle version to download")
2+
3+
set(SPARKLE_FEED_URL "http://localhost:8000/appcast.xml"
4+
CACHE STRING "The Sparkle feed url to use")
5+
set(SPARKLE_PUBLIC_KEY "+3pPKr274O3KL4lTWaEs/ukVk3Ayvnc7BkdS45zOnE4="
6+
CACHE STRING "The Sparkle eDSA public key to use")
7+
8+
FetchContent_Declare(
9+
sparkle
10+
URL https://github.com/Sparkle-project/Sparkle/releases/download/${SPARKLE_VERSION}/Sparkle-${SPARKLE_VERSION}.tar.xz
11+
DOWNLOAD_EXTRACT_TIMESTAMP TRUE
12+
)
13+
14+
FetchContent_MakeAvailable(sparkle)
15+
message(STATUS "Searching for Sparkle in: ${sparkle_SOURCE_DIR}")
16+
find_library(SPARKLE_FRAMEWORK Sparkle HINTS ${sparkle_SOURCE_DIR})
17+
18+
if(SPARKLE_FRAMEWORK)
19+
message(STATUS "Found Sparkle: ${SPARKLE_FRAMEWORK}")
20+
else()
21+
message(FATAL_ERROR "Sparkle framework not found")
1822
endif()
23+
24+
string(APPEND ELEMENT_APP_PLIST_TO_MERGE
25+
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
26+
<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
27+
<plist version=\"1.0\">
28+
<dict>
29+
")
30+
string(APPEND ELEMENT_APP_PLIST_TO_MERGE "<key>SUFeedURL</key>")
31+
string(APPEND ELEMENT_APP_PLIST_TO_MERGE "<string>${SPARKLE_FEED_URL}</string>")
32+
string(APPEND ELEMENT_APP_PLIST_TO_MERGE "<key>SUPublicEDKey</key>")
33+
string(APPEND ELEMENT_APP_PLIST_TO_MERGE "<string>${SPARKLE_PUBLIC_KEY}</string>")
34+
string(APPEND ELEMENT_APP_PLIST_TO_MERGE "</dict></plist>")
35+
string(APPEND ELEMENT_APP_PLIST_TO_MERGE "<key>SUEnableAutomaticChecks</key>")
36+
string(APPEND ELEMENT_APP_PLIST_TO_MERGE "<false/>")
37+
string(APPEND ELEMENT_APP_PLIST_TO_MERGE "<key>SUScheduledCheckInterval</key>")
38+
string(APPEND ELEMENT_APP_PLIST_TO_MERGE "<integer>0</integer>")

src/sparkle.mm

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
// SPDX-FileCopyrightText: Copyright (C) Kushview, LLC.
22
// SPDX-License-Identifier: GPL-3.0-or-later
33

4+
#import <Foundation/Foundation.h>
45
#import <Sparkle/Sparkle.h>
6+
57
#include <memory>
6-
#include "juce_core/juce_core.h"
78

9+
#include <element/juce/core.hpp>
810
#include <element/ui/updater.hpp>
911

1012
// An updater delegate class that mainly takes care of updating the check for updates menu item's state

0 commit comments

Comments
 (0)