cmake_minimum_required(VERSION 3.13) find_program(CMAKE_ASM_COMPILER clang) find_program(CMAKE_C_COMPILER clang) find_program(CMAKE_CXX_COMPILER clang++) find_program(CMAKE_LINKER lld) find_program(CMAKE_AR llvm-ar) find_program(CMAKE_RANLIB llvm-ranlib) find_program(CMAKE_STRIP llvm-strip) # Get host triplet, in case the target isn't set we'll use it as a default execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpmachine OUTPUT_VARIABLE HOST_TRIPLET) message(STATUS "Host target triplet: ${HOST_TRIPLET}") if(NOT TARGET_TRIPLET) message(WARNING "TARGET_TRIPLET not set, defaulting to host system (${HOST_TRIPLET})") set(TARGET_TRIPLET ${HOST_TRIPLET}) endif() string(REGEX MATCH "^[^-]*" TARGET_PROCESSOR ${TARGET_TRIPLET}) if(NOT CMAKE_SYSTEM_NAME) # Cmake uses Generic as system name for embedded systems, use that here if # working on embedded systems message(WARNING "CMAKE_SYSTEM_NAME name not set, defaulting to host system name (${CMAKE_HOST_SYSTEM_NAME})") set(CMAKE_SYSTEM_NAME ${CMAKE_HOST_SYSTEM_NAME}) endif() if(NOT CMAKE_SYSTEM_VERSION) set(CMAKE_SYSTEM_VERSION ${CMAKE_HOST_SYSTEM_VERSION}) endif() if(NOT CMAKE_SYSTEM_PROCESSOR) # Getting processor from target triplet, should not be setting CMAKE_SYSTEM_PROCESSOR set(CMAKE_SYSTEM_PROCESSOR ${TARGET_PROCESSOR}) endif() message(STATUS "Target: ${TARGET_TRIPLET}") message(STATUS "Target system name: ${CMAKE_SYSTEM_NAME}")