blob: b6dcead4e305d32d97594eef76f7ec73d3c600e0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
#
# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
cmake_minimum_required(VERSION 3.20)
#
# Ensure our own CMake modules can be loaded.
#
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/Modules")
include(ArmConfigOption)
include(TFAMetadata)
#
# Set up the configuration types for both single and multi-configuration
# generators.
#
set(config-types "Debug" "RelWithDebInfo" "MinSizeRel" "Release")
set(default-config "MinSizeRel")
get_property(multi-config GLOBAL PROPERTY "GENERATOR_IS_MULTI_CONFIG")
if(multi-config)
arm_config_option(
NAME CMAKE_CONFIGURATION_TYPES HIDDEN
HELP "Multi-generator configuration types."
DEFAULT ${config-types})
arm_config_option(
NAME CMAKE_DEFAULT_BUILD_TYPE HIDDEN
HELP "Default multi-generator configuration type."
DEFAULT "${default-config}")
else()
arm_config_option(
NAME CMAKE_BUILD_TYPE
HELP "Build type."
STRINGS ${config-types}
DEFAULT ${default-config}
FORCE NOT CMAKE_BUILD_TYPE)
endif()
#
# Retrieve the list of platforms from the global metadata file and present them
# to the user.
#
tfa_platforms(platforms)
arm_assert(
CONDITION platforms
MESSAGE "No platforms defined!")
arm_config_option(
NAME TFA_PLATFORM
HELP "Platform to build."
STRINGS ${platforms})
tfa_platform_path(TFA_PLATFORM_SOURCE_DIR
PLATFORM "${TFA_PLATFORM}")
arm_assert(
CONDITION EXISTS "${TFA_PLATFORM_SOURCE_DIR}"
MESSAGE "The source directory for the current platform does not exist:\n"
"${TFA_PLATFORM_SOURCE_DIR}")
#
# Because the platform's source directory might have come from outside, CMake
# may be unable to derive the platform's binary directory automatically. As an
# alternative, we'll use the platform's target name as its binary directory.
#
tfa_platform_target(target
PLATFORM "${TFA_PLATFORM}")
arm_config_option(
NAME TFA_PLATFORM_BINARY_DIR HIDDEN
HELP "Platform binary directory."
DEFAULT "${CMAKE_CURRENT_BINARY_DIR}/${target}"
TYPE PATH)
#
# We're done with very early setup, so we can now create the project. This will
# do some of the automatic compiler detection, which we need for setting up
# further configuration options.
#
# Note that this creates the following version variables:
#
# - `TFA_VERSION`
# - `TFA_VERSION_MAJOR`
# - `TFA_VERSION_MINOR`
# - `TFA_VERSION_PATCH`
# - `TFA_VERSION_TWEAK`
#
# Also, these directory variables:
#
# - `TFA_SOURCE_DIR`
# - `TFA_BINARY_DIR`
#
# Don't swap `C` and `ASM`. Per the CMake documentation:
#
# > If enabling `ASM`, list it last so that CMake can check whether compilers
# > for other languages like `C` work for assembly too.
#
project(TFA VERSION 2.5 LANGUAGES C ASM)
|