chore(build): cache FetchContent dependencies across build directories (#7221)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Raphael Coeffic
2026-06-22 14:32:30 +10:00
committed by GitHub
co-authored by Claude Opus 4.6
parent d67604f9f5
commit 94f5d50ffc
9 changed files with 42 additions and 21 deletions
+16
View File
@@ -35,6 +35,19 @@ set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION})
option(EdgeTX_SUPERBUILD "Cross-compile EdgeTX for each toolchain" ON)
include(ExternalProject)
# Cache FetchContent downloads in a shared directory so that multiple build
# directories (and rebuilds after a clean) reuse already-fetched dependencies.
# Priority: -D flag > $ENV{FETCHCONTENT_BASE_DIR} > default (.cache/fetchcontent)
if(NOT FETCHCONTENT_BASE_DIR)
if(DEFINED ENV{FETCHCONTENT_BASE_DIR})
set(FETCHCONTENT_BASE_DIR "$ENV{FETCHCONTENT_BASE_DIR}" CACHE PATH
"Shared cache for FetchContent downloads" FORCE)
else()
set(FETCHCONTENT_BASE_DIR "${CMAKE_SOURCE_DIR}/.cache/fetchcontent" CACHE PATH
"Shared cache for FetchContent downloads" FORCE)
endif()
endif()
if(EdgeTX_SUPERBUILD)
include(Macros)
CollectCommandLineArgs(CMAKE_ARGS)
@@ -53,6 +66,7 @@ if(EdgeTX_SUPERBUILD)
-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${CMAKE_SOURCE_DIR}/cmake/toolchain/native.cmake
-DEdgeTX_SUPERBUILD:BOOL=0
-DNATIVE_BUILD:BOOL=1
-DFETCHCONTENT_BASE_DIR:PATH=${FETCHCONTENT_BASE_DIR}
INSTALL_COMMAND ""
EXCLUDE_FROM_ALL TRUE
)
@@ -66,6 +80,7 @@ if(EdgeTX_SUPERBUILD)
-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${CMAKE_SOURCE_DIR}/cmake/toolchain/arm-none-eabi.cmake
-DEdgeTX_SUPERBUILD:BOOL=0
-DNATIVE_BUILD:BOOL=0
-DFETCHCONTENT_BASE_DIR:PATH=${FETCHCONTENT_BASE_DIR}
INSTALL_COMMAND ""
EXCLUDE_FROM_ALL TRUE
)
@@ -92,6 +107,7 @@ if(EdgeTX_SUPERBUILD)
-B ${CMAKE_BINARY_DIR}/wasm
-DEDGETX_SOURCE_DIR=${CMAKE_SOURCE_DIR}
-DEDGETX_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DFETCHCONTENT_BASE_DIR=${FETCHCONTENT_BASE_DIR}
${CMAKE_ARGS}
COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR}/wasm
)
+13 -9
View File
@@ -1,43 +1,47 @@
{
"version": 6,
"configurePresets": [
{
"name": "default",
"hidden": true,
"cacheVariables": {
"FETCHCONTENT_BASE_DIR": "${sourceDir}/.cache/fetchcontent"
},
"warnings": {
"dev": false
}
},
{
"name": "firmware",
"inherits": "default",
"displayName": "Firmware",
"binaryDir": "build/fw",
"toolchainFile": "cmake/toolchain/arm-none-eabi.cmake",
"cacheVariables": {
"EdgeTX_SUPERBUILD": false,
"NATIVE_BUILD": false
},
"warnings": {
"dev": false
}
},
{
"name": "companion",
"inherits": "default",
"displayName": "Companion",
"binaryDir": "build/companion",
"toolchainFile": "cmake/toolchain/native.cmake",
"cacheVariables": {
"EdgeTX_SUPERBUILD": false,
"NATIVE_BUILD": true
},
"warnings": {
"dev": false
}
},
{
"name": "simu",
"inherits": "default",
"displayName": "SDL Simu",
"binaryDir": "build/simu",
"toolchainFile": "cmake/toolchain/native.cmake",
"cacheVariables": {
"EdgeTX_SUPERBUILD": false,
"NATIVE_BUILD": true
},
"warnings": {
"dev": false
}
}
],
+3 -1
View File
@@ -5,7 +5,9 @@ include(FetchContent)
FetchContent_Declare(
googletest
GIT_REPOSITORY https://github.com/google/googletest
GIT_TAG f8d7d77c06936315286eb55f8de22cd23c188571 # v1.14.0
GIT_TAG v1.14.0 # f8d7d77c06936315286eb55f8de22cd23c188571
GIT_SHALLOW TRUE
UPDATE_DISCONNECTED TRUE
)
# For Windows: Prevent overriding the parent project's compiler/linker settings
+2 -4
View File
@@ -4,10 +4,8 @@ include(FetchContent)
FetchContent_Declare(
imgui
GIT_REPOSITORY https://github.com/ocornut/imgui
GIT_TAG dbb5eeaadffb6a3ba6a60de1290312e5802dba5a # v1.91.8
GIT_SHALLOW TRUE
UPDATE_DISCONNECTED TRUE
URL https://github.com/ocornut/imgui/archive/refs/tags/v1.92.6.tar.gz
DOWNLOAD_EXTRACT_TIMESTAMP true
)
FetchContent_MakeAvailable(imgui)
+2 -2
View File
@@ -4,8 +4,8 @@ include(FetchContent)
FetchContent_Declare(
maxLibQt
GIT_REPOSITORY https://github.com/edgetx/maxLibQt
GIT_TAG 7e433da60d3f2e975d46afc91804a88029cd1b78
URL https://github.com/edgetx/maxLibQt/archive/7e433da60d3f2e975d46afc91804a88029cd1b78.tar.gz
DOWNLOAD_EXTRACT_TIMESTAMP true
)
FetchContent_MakeAvailable(maxLibQt)
+2 -2
View File
@@ -4,8 +4,8 @@ include(FetchContent)
FetchContent_Declare(
miniz
GIT_REPOSITORY https://github.com/richgel999/miniz
GIT_TAG 89d7a5f6c3ce8893ea042b0a9d2a2d9975589ac9
URL https://github.com/richgel999/miniz/archive/89d7a5f6c3ce8893ea042b0a9d2a2d9975589ac9.tar.gz
DOWNLOAD_EXTRACT_TIMESTAMP true
)
FetchContent_MakeAvailable(miniz)
+1
View File
@@ -23,6 +23,7 @@ FetchContent_Declare(
GIT_REPOSITORY https://github.com/bytecodealliance/wasm-micro-runtime
GIT_TAG WAMR-2.4.4
GIT_SHALLOW TRUE
UPDATE_DISCONNECTED TRUE
)
# Populate separately so we can patch before building
+2 -2
View File
@@ -4,8 +4,8 @@ include(FetchContent)
FetchContent_Declare(
yaml-cpp
GIT_REPOSITORY https://github.com/jbeder/yaml-cpp
GIT_TAG 28f93bdec6387d42332220afa9558060c8016795
URL https://github.com/jbeder/yaml-cpp/archive/28f93bdec6387d42332220afa9558060c8016795.tar.gz
DOWNLOAD_EXTRACT_TIMESTAMP true
)
FetchContent_MakeAvailable(yaml-cpp)
+1 -1
View File
@@ -81,7 +81,7 @@ file(WRITE "\${CMAKE_CURRENT_BINARY_DIR}/wasi_sdk_path.txt" "\${WASI_SDK_PATH}")
CMAKEOF
if ! cmake -S "$fetch_dir" -B "$fetch_dir/build" \
-DFETCHCONTENT_BASE_DIR="$PWD/_deps" 2>&1; then
-DFETCHCONTENT_BASE_DIR="$SRCDIR/.cache/fetchcontent" 2>&1; then
echo "❌ Failed to fetch WASI SDK"
return 1
fi