# Use Ninja instead of Unix Makefiles by default. # https://stackoverflow.com/questions/11269833/cmake-selecting-a-generator-within-cmakelists-txt # # Reason: it has better startup time than make and it parallelizes jobs more uniformly. # (when comparing to make with Makefiles that was generated by CMake) # # How to install Ninja on Ubuntu: # sudo apt-get install ninja-build # CLion does not support Ninja # You can add your vote on CLion task tracker: # https://youtrack.jetbrains.com/issue/CPP-2659 # https://youtrack.jetbrains.com/issue/CPP-870 if (NOT DEFINED ENV{CLION_IDE} AND NOT DEFINED ENV{XCODE_IDE}) find_program(NINJA_PATH ninja) if (NINJA_PATH) set(CMAKE_GENERATOR "Ninja" CACHE INTERNAL "" FORCE) endif () endif() # Default toolchain - this is needed to avoid dependency on OS files. execute_process(COMMAND uname -s OUTPUT_VARIABLE OS) execute_process(COMMAND uname -m OUTPUT_VARIABLE ARCH) if (OS MATCHES "Linux" AND NOT DEFINED CMAKE_TOOLCHAIN_FILE AND NOT DISABLE_HERMETIC_BUILD AND ($ENV{CC} MATCHES ".*clang.*" OR CMAKE_C_COMPILER MATCHES ".*clang.*")) if (ARCH MATCHES "amd64|x86_64") set (CMAKE_TOOLCHAIN_FILE "cmake/linux/toolchain-x86_64.cmake" CACHE INTERNAL "" FORCE) elseif (ARCH MATCHES "^(aarch64.*|AARCH64.*|arm64.*|ARM64.*)") set (CMAKE_TOOLCHAIN_FILE "cmake/linux/toolchain-aarch64.cmake" CACHE INTERNAL "" FORCE) elseif (ARCH MATCHES "^(ppc64le.*|PPC64LE.*)") set (CMAKE_TOOLCHAIN_FILE "cmake/linux/toolchain-ppc64le.cmake" CACHE INTERNAL "" FORCE) else () message (FATAL_ERROR "Unsupported architecture: ${ARCH}") endif () endif()