From eacc0a9f1c732ada496030b0f706fd7b2ff4996c Mon Sep 17 00:00:00 2001 From: snider Date: Mon, 6 Oct 2025 17:34:55 +0100 Subject: [PATCH] Fix quoting issues in CMake scripts and enhance OS/architecture detection logic --- cmake/CleanBuild.cmake | 2 +- cmake/GetConan.cmake | 19 +++++++++++++------ cmake/conan_provider.cmake | 4 ++-- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/cmake/CleanBuild.cmake b/cmake/CleanBuild.cmake index 2c6616b1..0a1146db 100644 --- a/cmake/CleanBuild.cmake +++ b/cmake/CleanBuild.cmake @@ -36,7 +36,7 @@ function(selective_clean_build_dir) string(FIND "${item}" "${CMAKE_SOURCE_DIR}/build" is_prefixed) if(is_prefixed EQUAL 0) message(STATUS "Removing: ${item}") - if(IS_DIRECTORY ${item}) + if(IS_DIRECTORY "${item}") file(REMOVE_RECURSE "${item}") else() file(REMOVE "${item}") diff --git a/cmake/GetConan.cmake b/cmake/GetConan.cmake index b219baec..37bf7d1d 100644 --- a/cmake/GetConan.cmake +++ b/cmake/GetConan.cmake @@ -18,11 +18,11 @@ if(NOT CMAKE_BINARY_DIR) set(CMAKE_BINARY_DIR "${CONAN_INSTALL_DIR}") endif() if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") - set(CONAN_EXECUTABLE "${CONAN_INSTALL_DIR}/bin/conan.exe") set(CONAN_INSTALL_DIR "${CMAKE_SOURCE_DIR}/build/bin") + set(CONAN_EXECUTABLE "${CONAN_INSTALL_DIR}/bin/conan.exe") else () - set(CONAN_EXECUTABLE "${CONAN_INSTALL_DIR}/bin/conan") set(CONAN_INSTALL_DIR "${CMAKE_SOURCE_DIR}/build") + set(CONAN_EXECUTABLE "${CONAN_INSTALL_DIR}/bin/conan") endif () # Check if Conan is already installed if(NOT EXISTS "${CONAN_EXECUTABLE}") @@ -30,10 +30,17 @@ if(NOT EXISTS "${CONAN_EXECUTABLE}") file(MAKE_DIRECTORY "${CONAN_INSTALL_DIR}") + # Determine the processor architecture, with a fallback + if(CMAKE_HOST_SYSTEM_PROCESSOR) + set(HOST_PROCESSOR ${CMAKE_HOST_SYSTEM_PROCESSOR}) + else() + set(HOST_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR}) + endif() + # Detect the operating system and architecture - message(STATUS "Detecting OS and architecture: ${CMAKE_HOST_SYSTEM_PROCESSOR} on ${CMAKE_HOST_SYSTEM_NAME}") + message(STATUS "Detecting OS and architecture: ${HOST_PROCESSOR} on ${CMAKE_HOST_SYSTEM_NAME}") if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") - if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "arm64") + if(HOST_PROCESSOR MATCHES "arm64") set(CONAN_URL ${CONAN_URL_MACOS_ARM}) set(CONAN_ARCHIVE_TYPE "tgz") else() @@ -41,7 +48,7 @@ if(NOT EXISTS "${CONAN_EXECUTABLE}") set(CONAN_ARCHIVE_TYPE "tgz") endif() elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") - if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "ARM64") + if(HOST_PROCESSOR MATCHES "ARM64") set(CONAN_URL ${CONAN_URL_WINDOWS_ARM64}) set(CONAN_ARCHIVE_TYPE "zip") else() @@ -49,7 +56,7 @@ if(NOT EXISTS "${CONAN_EXECUTABLE}") set(CONAN_ARCHIVE_TYPE "zip") endif() elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") - if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64|arm64|ARM64") + if(HOST_PROCESSOR MATCHES "aarch64|arm64|ARM64") set(CONAN_URL ${CONAN_URL_LINUX_AARCH64}) set(CONAN_ARCHIVE_TYPE "tgz") else() diff --git a/cmake/conan_provider.cmake b/cmake/conan_provider.cmake index c5904c5d..1a6d9ec6 100644 --- a/cmake/conan_provider.cmake +++ b/cmake/conan_provider.cmake @@ -572,9 +572,9 @@ macro(conan_provide_dependency method package_name) endif () if(NOT EXISTS ${CONAN_COMMAND}) message(STATUS "CMake-Conan: Local conan not found, attempting to download it.") - execute_process(COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_LIST_DIR}/GetConan.cmake + execute_process(COMMAND "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_LIST_DIR}/GetConan.cmake" RESULT_VARIABLE result - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}") if(NOT result EQUAL 0) message(FATAL_ERROR "Failed to download conan.") endif()