blob: ef4a2aff0ce822cdec78c9ea6ebfcf366d47f687 (
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
|
set(LLVM_LIBC_OPTIONAL_ARGS
ALIAS
PUBLIC
NO_GPU_BUNDLE
NO_RUN_POSTBUILD
C_TEST
NEED_MPFR
NEED_MPC
IS_GPU_BENCHMARK
)
set(LLVM_LIBC_SINGLE_VALUE_ARGS
CXX_STANDARD
SUITE
CREATE_TARGET_FUNCTION
HDR
DEST_HDR
YAML_FILE
GEN_HDR
NAME
)
set(LLVM_LIBC_MULTI_VALUE_ARGS
HDRS
SRCS
COMPILE_OPTIONS
LINK_OPTIONS
LINK_LIBRARIES
ENV
DEPENDS
FLAGS
ARGS
LOADER_ARGS
)
foreach(arg_list LLVM_LIBC_OPTIONAL_ARGS LLVM_LIBC_SINGLE_VALUE_ARGS LLVM_LIBC_MULTI_VALUE_ARGS)
list(TRANSFORM ${arg_list}
PREPEND "OVERLAY_"
OUTPUT_VARIABLE ${arg_list}_OVERLAY
)
list(TRANSFORM ${arg_list}
PREPEND "FULL_BUILD_"
OUTPUT_VARIABLE ${arg_list}_FULL_BUILD
)
set(${arg_list}_COMPLETE ${${arg_list}} ${${arg_list}_OVERLAY} ${${arg_list}_FULL_BUILD})
endforeach()
macro(llvm_libc_parse_arguments name_prefix)
cmake_parse_arguments(
${name_prefix}
"${LLVM_LIBC_OPTIONAL_ARGS_COMPLETE}"
"${LLVM_LIBC_SINGLE_VALUE_ARGS_COMPLETE}"
"${LLVM_LIBC_MULTI_VALUE_ARGS_COMPLETE}"
${ARGN}
)
# Collect overlay and full build args
foreach(argument IN LISTS LLVM_LIBC_OPTIONAL_ARGS LLVM_LIBC_SINGLE_VALUE_ARGS LLVM_LIBC_MULTI_VALUE_ARGS)
if(LLVM_LIBC_FULL_BUILD)
if(${name_prefix}_${argument}_FULL_BUILD)
list(APPEND ${name_prefix}_${argument} ${${name_prefix}_${argument}_FULL_BUILD})
endif()
else()
if(${name_prefix}_${argument}_OVERLAY)
list(APPEND ${name_prefix}_${argument} ${${name_prefix}_${argument}_OVERLAY})
endif()
endif()
endforeach()
endmacro()
# Forward all arguments that can be used for llvm_libc_parse_arguments again.
# Assume that *_OVERLAY and *_FULL_BUILD args have been merged properly.
macro(forward_arguments name_prefix output)
set(${output} "")
foreach(argument ${LLVM_LIBC_OPTIONAL_ARGS})
if(${name_prefix}_${argument})
list(APPEND output ${argument})
endif()
endforeach()
foreach(argument ${LLVM_LIBC_SINGLE_VALUE_ARGS} ${LLVM_LIBC_MULTI_VALUE_ARGS})
if(${name_prefix}_${argument})
list(APPEND output ${argument} "${${name_prefix}_${argument}}")
endif()
endforeach()
endmacro()
|