forked from lthn/blockchain
Updated CMakePresets.json to add 'testnet' and 'mainnet' workflows, removed unused Windows preset, and improved environment and cache variable handling. Makefile targets for testnet and mainnet workflows were added, and Conan-related targets were renamed for consistency. Added a function to reset ConanPresets.json in CleanBuild.cmake and fixed the path for GetConan.cmake in conan_provider.cmake. Deleted obsolete .idea/cmake.xml.
76 lines
2.5 KiB
CMake
76 lines
2.5 KiB
CMake
# cmake/CleanBuild.cmake
|
|
|
|
# Function to selectively clean the build directory.
|
|
#
|
|
# This function will remove most of the generated build files from the build
|
|
# directory, while preserving specific directories that contain downloaded
|
|
# tools or generated documentation.
|
|
#
|
|
# Golden Rules:
|
|
# - never delete build/
|
|
# - never delete build/bin
|
|
# - never delete build/docs
|
|
# - never delete build/sdk (non cache)
|
|
#
|
|
# It will:
|
|
# - purge build files
|
|
# - clean up conan build files, cached sources can always remain.
|
|
function(selective_clean_build_dir)
|
|
if(EXISTS "${CMAKE_SOURCE_DIR}/build")
|
|
message(STATUS "Selectively cleaning build directory: ${CMAKE_SOURCE_DIR}/build")
|
|
|
|
# List of top-level items in the build directory to keep.
|
|
set(golden_items
|
|
"${CMAKE_SOURCE_DIR}/build/.ccache"
|
|
"${CMAKE_SOURCE_DIR}/build/bin"
|
|
"${CMAKE_SOURCE_DIR}/build/docs"
|
|
"${CMAKE_SOURCE_DIR}/build/sdk"
|
|
)
|
|
|
|
# Get all top-level items in the build directory.
|
|
file(GLOB top_level_items "${CMAKE_SOURCE_DIR}/build/*")
|
|
|
|
foreach(item ${top_level_items})
|
|
list(FIND golden_items "${item}" is_golden)
|
|
if(is_golden STREQUAL "-1")
|
|
string(FIND "${item}" "${CMAKE_SOURCE_DIR}/build" is_prefixed)
|
|
if(is_prefixed EQUAL 0)
|
|
message(STATUS "Removing: ${item}")
|
|
if(IS_DIRECTORY "${item}")
|
|
file(REMOVE_RECURSE "${item}")
|
|
else()
|
|
file(REMOVE "${item}")
|
|
endif()
|
|
else()
|
|
message(WARNING "Safety check failed: Will not remove '${item}' because it is not prefixed with CMAKE_SOURCE_DIR/build.")
|
|
endif()
|
|
else()
|
|
message(STATUS "Keeping golden item: ${item}")
|
|
endif()
|
|
endforeach()
|
|
|
|
message(STATUS "Selective clean complete.")
|
|
else()
|
|
message(STATUS "Build directory not found, skipping clean.")
|
|
endif()
|
|
endfunction()
|
|
|
|
function(reset_conan_presets)
|
|
set(CONAN_PRESETS_FILE "${CMAKE_SOURCE_DIR}/ConanPresets.json")
|
|
|
|
set(NEW_CONTENT [[{
|
|
"version": 4,
|
|
"vendor": {
|
|
"conan": {}
|
|
},
|
|
"include": [
|
|
|
|
]
|
|
}]])
|
|
message(STATUS "Resetting ${CONAN_PRESETS_FILE} to a clean state.")
|
|
file(WRITE "${CONAN_PRESETS_FILE}" "${NEW_CONTENT}")
|
|
message(STATUS "${CONAN_PRESETS_FILE} has been successfully reset.")
|
|
endfunction()
|
|
|
|
selective_clean_build_dir()
|
|
reset_conan_presets()
|