1# 2# Copyright 2020, Data61, CSIRO (ABN 41 687 119 230) 3# 4# SPDX-License-Identifier: GPL-2.0-only 5# 6 7cmake_minimum_required(VERSION 3.7.2) 8 9set(CMAKE_SYSTEM_NAME Generic) 10# For a generic system this is unused, so define it to something that will be 11# obvious if someone accidentally uses it 12set(CMAKE_SYSTEM_PROCESSOR seL4CPU) 13 14set(LLVM_TOOLCHAIN ON) 15 16set(CROSS_COMPILER_PREFIX ${TRIPLE}-) 17 18set(CMAKE_ASM_COMPILER "clang") 19set(CMAKE_ASM_COMPILER_ID Clang) 20set(CMAKE_ASM_COMPILER_TARGET ${TRIPLE}) 21 22string(APPEND asm_common_flags " -Wno-unused-command-line-argument") 23string(APPEND asm_common_flags " -fno-integrated-as") 24 25set(CMAKE_C_COMPILER "clang") 26set(CMAKE_C_COMPILER_ID Clang) 27set(CMAKE_C_COMPILER_TARGET ${TRIPLE}) 28 29set(CMAKE_CXX_COMPILER "clang++") 30set(CMAKE_CXX_COMPILER_ID Clang) 31set(CMAKE_CXX_COMPILER_TARGET ${TRIPLE}) 32 33string(APPEND c_common_flags " -Wno-sizeof-pointer-div") 34string(APPEND c_common_flags " -Qunused-arguments") 35string(APPEND c_common_flags " -Wno-constant-logical-operand") 36if(NOT ("${TRIPLE}" MATCHES "^riscv")) 37 string(APPEND c_common_flags " -fno-integrated-as") 38endif() 39# clang 11 has a regression in GlobalISel (only used at -O0) affecting the syscall 40# stubs in libsel4runtime; see https://reviews.llvm.org/D83384#2189132 41string(APPEND c_common_flags " -fno-experimental-isel") 42 43set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 44set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 45set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 46set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) 47 48set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) 49 50mark_as_advanced(FORCE CMAKE_TOOLCHAIN_FILE) 51 52find_program(CCACHE ccache) 53if(NOT ("${CCACHE}" STREQUAL CCACHE-NOTFOUND)) 54 set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE}) 55 set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${CCACHE}) 56endif() 57mark_as_advanced(CCACHE) 58