@@ -17,13 +17,15 @@ set(target ${PROJECT_NAME})
1717# Always use JUCE modules only (no helper tools)
1818set (JUCE_MODULES_ONLY ON CACHE BOOL "Only build JUCE modules" FORCE)
1919
20+ # Store FetchContent downloads in _deps to persist across cache clears
21+ set (FETCHCONTENT_BASE_DIR "${CMAKE_SOURCE_DIR} /_deps" CACHE PATH "" FORCE)
22+
2023include (FetchContent)
2124FetchContent_Declare(
2225 juce
2326 EXCLUDE_FROM_ALL
2427 GIT_REPOSITORY https://github.com/juce-framework /JUCE.git
25- GIT_TAG master
26- GIT_SHALLOW TRUE
28+ GIT_TAG 230340dbfc580628596243bb63b31aeb4d6b5a6d # develop 2025-11-27
2729)
2830FetchContent_MakeAvailable(juce)
2931# _juce_initialise_target(${target} ${target})
@@ -52,6 +54,8 @@ target_compile_definitions(
5254 JUCE_MODAL_LOOPS_PERMITTED=1 # we use QT event loop, so this is needed
5355 # Disable DBG() output in CI/GitHub Actions RelWithDebInfo builds (keeps debug symbols but no console spam in CI)
5456 $<$<AND :$<CONFIG:RelWithDebInfo>,$<OR :$<BOOL :$ENV{CI} >,$<BOOL :$ENV{GITHUB_ACTIONS} >>>:JUCE_DISABLE_ASSERTIONS>
57+ # SIMULATE_UPDATE_CHECK # Uncomment to test update dialog without network
58+ SIMULATE_UPDATE_CHECK # Testing update dialog
5559)
5660
5761set_target_properties (${PROJECT_NAME} PROPERTIES
@@ -91,42 +95,25 @@ if(NOT WIN32)
9195 )
9296endif ()
9397
94- # ASIO SDK is only needed on Windows
98+ # ASIO SDK (Windows only)
9599if (WIN32 )
96- set (ASIO_SDK_URL "https://www.steinberg.net/asiosdk" )
97- set (ASIO_SDK_TEMPDIR "${CMAKE_CURRENT_BINARY_DIR} /asiosdk_temp" )
98- set (ASIO_SDK_DIR "${CMAKE_CURRENT_BINARY_DIR} /asiosdk" )
99-
100+ set (ASIO_SDK_DIR "${CMAKE_SOURCE_DIR} /_deps/asiosdk" )
100101 if (NOT EXISTS "${ASIO_SDK_DIR} " )
102+ set (_asio_zip "${CMAKE_SOURCE_DIR} /_deps/asiosdk.zip" )
103+ set (_asio_temp "${CMAKE_SOURCE_DIR} /_deps/asiosdk_temp" )
101104 message (STATUS "Downloading ASIO SDK..." )
102- file (DOWNLOAD "${ASIO_SDK_URL} " "${CMAKE_CURRENT_BINARY_DIR} /asiosdk.zip"
103- STATUS download_status
104- SHOW_PROGRESS
105- )
106- if (download_status)
107- message (STATUS "Extracting ASIO SDK..." )
108- file (ARCHIVE_EXTRACT
109- INPUT "${CMAKE_CURRENT_BINARY_DIR} /asiosdk.zip"
110- DESTINATION "${ASIO_SDK_TEMPDIR} "
111- )
112- file (GLOB ASIO_SDK_DIRS "${ASIO_SDK_TEMPDIR} /*" )
113- foreach (dir ${ASIO_SDK_DIRS} )
114- if (IS_DIRECTORY ${dir} AND dir MATCHES ".*asiosdk.*" )
115- message (STATUS "ASIO SDK extracted to ${dir} " )
116- file (RENAME ${dir} ${ASIO_SDK_DIR} )
117- break ()
118- endif ()
119- endforeach ()
105+ file (DOWNLOAD "https://www.steinberg.net/asiosdk" "${_asio_zip} " STATUS _status SHOW_PROGRESS )
106+ list (GET _status 0 _code)
107+ if (_code EQUAL 0)
108+ file (ARCHIVE_EXTRACT INPUT "${_asio_zip} " DESTINATION "${_asio_temp} " )
109+ file (GLOB _dirs "${_asio_temp} /*" )
110+ list (GET _dirs 0 _extracted)
111+ file (RENAME "${_extracted} " "${ASIO_SDK_DIR} " )
112+ file (REMOVE_RECURSE "${_asio_temp} " "${_asio_zip} " )
113+ message (STATUS "ASIO SDK installed to ${ASIO_SDK_DIR} " )
120114 endif ()
121115 endif ()
122-
123- target_include_directories (
124- ${PROJECT_NAME}
125- PRIVATE
126- ${CMAKE_CURRENT_BINARY_DIR} /asiosdk/common
127- )
128-
129- target_include_directories (${PROJECT_NAME} PRIVATE "${ASIO_SDK_DIR} " )
116+ target_include_directories (${PROJECT_NAME} PRIVATE "${ASIO_SDK_DIR} /common" )
130117endif ()
131118
132119if (WIN32 )
@@ -142,4 +129,4 @@ endif()
142129
143130target_compile_definitions (${PROJECT_NAME} PRIVATE JUCE_ASIO=1)
144131
145- file (COPY_FILE ${CMAKE_SOURCE_DIR} /LICENSE ${CMAKE_BINARY_DIR} /INSTALLER-LICENSE)
132+ file (COPY_FILE ${CMAKE_SOURCE_DIR} /LICENSE ${CMAKE_BINARY_DIR} /INSTALLER-LICENSE)
0 commit comments