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