diff --git a/CMakeLists.txt b/CMakeLists.txt index ef5bf106..b92599d6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.25) list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) include(identity) diff --git a/cmake/utils/arch.cmake b/cmake/utils/arch.cmake index 4915a3f6..7c6d6d13 100644 --- a/cmake/utils/arch.cmake +++ b/cmake/utils/arch.cmake @@ -4,20 +4,17 @@ set(DETECT_ARCH_C ${CMAKE_BINARY_DIR}/detect_arch.c) file(WRITE ${DETECT_ARCH_C} "#include \"${SOURCE_DIR}/qcommon/q_platform.h\" -#include -int main() -{ - puts(ARCH_STRING); - return 0; -} +#pragma message(\"@\" ARCH_STRING \"@\") +int main(void) { return 0; } ") -try_run(RUN_EXITCODE COMPILE_SUCCESS - ${CMAKE_BINARY_DIR} ${DETECT_ARCH_C} - RUN_OUTPUT_VARIABLE ARCH) +try_compile(COMPILE_SUCCESS + SOURCES ${DETECT_ARCH_C} + OUTPUT_VARIABLE COMPILE_OUTPUT) -string(STRIP ${ARCH} ARCH) +string(REGEX MATCH "^[^\@]+@([a-zA-Z0-9_]+)@.*$" HAVE_MATCH ${COMPILE_OUTPUT}) +set(ARCH ${CMAKE_MATCH_1}) -if(NOT COMPILE_SUCCESS OR RUN_EXITCODE OR NOT ARCH) +if(NOT COMPILE_SUCCESS OR RUN_EXITCODE OR NOT HAVE_MATCH OR NOT ARCH) message(FATAL_ERROR "Architecture detection failed") endif()