diff options
author | 2025-03-08 22:04:20 +0800 | |
---|---|---|
committer | 2025-03-08 22:04:20 +0800 | |
commit | a07bb8fd1299070229f0e8f3dcb57ffd5ef9870a (patch) | |
tree | 84f21bd0bf7071bc5fc7dd989e77d7ceb5476682 /scripts/dummy-tools/gcc | |
download | ohosKernel-a07bb8fd1299070229f0e8f3dcb57ffd5ef9870a.tar.gz ohosKernel-a07bb8fd1299070229f0e8f3dcb57ffd5ef9870a.zip |
Initial commit: OpenHarmony-v4.0-ReleaseOpenHarmony-v4.0-Release
Diffstat (limited to 'scripts/dummy-tools/gcc')
-rwxr-xr-x | scripts/dummy-tools/gcc | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/scripts/dummy-tools/gcc b/scripts/dummy-tools/gcc new file mode 100755 index 000000000..346757a87 --- /dev/null +++ b/scripts/dummy-tools/gcc | |||
@@ -0,0 +1,88 @@ | |||
1 | #!/bin/sh | ||
2 | # SPDX-License-Identifier: GPL-2.0-only | ||
3 | # | ||
4 | # Staring v4.18, Kconfig evaluates compiler capabilities, and hides CONFIG | ||
5 | # options your compiler does not support. This works well if you configure and | ||
6 | # build the kernel on the same host machine. | ||
7 | # | ||
8 | # It is inconvenient if you prepare the .config that is carried to a different | ||
9 | # build environment (typically this happens when you package the kernel for | ||
10 | # distros) because using a different compiler potentially produces different | ||
11 | # CONFIG options than the real build environment. So, you probably want to make | ||
12 | # as many options visible as possible. In other words, you need to create a | ||
13 | # super-set of CONFIG options that cover any build environment. If some of the | ||
14 | # CONFIG options turned out to be unsupported on the build machine, they are | ||
15 | # automatically disabled by the nature of Kconfig. | ||
16 | # | ||
17 | # However, it is not feasible to get a full-featured compiler for every arch. | ||
18 | # Hence these dummy toolchains to make all compiler tests pass. | ||
19 | # | ||
20 | # Usage: | ||
21 | # | ||
22 | # From the top directory of the source tree, run | ||
23 | # | ||
24 | # $ make CROSS_COMPILE=scripts/dummy-tools/ oldconfig | ||
25 | # | ||
26 | # Most of compiler features are tested by cc-option, which simply checks the | ||
27 | # exit code of $(CC). This script does nothing and just exits with 0 in most | ||
28 | # cases. So, $(cc-option, ...) is evaluated as 'y'. | ||
29 | # | ||
30 | # This scripts caters to more checks; handle --version and pre-process __GNUC__ | ||
31 | # etc. to pretend to be GCC, and also do right things to satisfy some scripts. | ||
32 | |||
33 | # Check if the first parameter appears in the rest. Succeeds if found. | ||
34 | # This helper is useful if a particular option was passed to this script. | ||
35 | # Typically used like this: | ||
36 | # arg_contain <word-you-are-searching-for> "$@" | ||
37 | arg_contain () | ||
38 | { | ||
39 | search="$1" | ||
40 | shift | ||
41 | |||
42 | while [ $# -gt 0 ] | ||
43 | do | ||
44 | if [ "$search" = "$1" ]; then | ||
45 | return 0 | ||
46 | fi | ||
47 | shift | ||
48 | done | ||
49 | |||
50 | return 1 | ||
51 | } | ||
52 | |||
53 | # To set CONFIG_CC_IS_GCC=y | ||
54 | if arg_contain --version "$@"; then | ||
55 | echo "gcc (scripts/dummy-tools/gcc)" | ||
56 | exit 0 | ||
57 | fi | ||
58 | |||
59 | if arg_contain -E "$@"; then | ||
60 | # For scripts/gcc-version.sh; This emulates GCC 20.0.0 | ||
61 | if arg_contain - "$@"; then | ||
62 | sed 's/^__GNUC__$/20/; s/^__GNUC_MINOR__$/0/; s/^__GNUC_PATCHLEVEL__$/0/' | ||
63 | exit 0 | ||
64 | else | ||
65 | echo "no input files" >&2 | ||
66 | exit 1 | ||
67 | fi | ||
68 | fi | ||
69 | |||
70 | if arg_contain -S "$@"; then | ||
71 | # For scripts/gcc-x86-*-has-stack-protector.sh | ||
72 | if arg_contain -fstack-protector "$@"; then | ||
73 | echo "%gs" | ||
74 | exit 0 | ||
75 | fi | ||
76 | fi | ||
77 | |||
78 | # To set GCC_PLUGINS | ||
79 | if arg_contain -print-file-name=plugin "$@"; then | ||
80 | # Use $0 to find the in-tree dummy directory | ||
81 | echo "$(dirname "$(readlink -f "$0")")/dummy-plugin-dir" | ||
82 | exit 0 | ||
83 | fi | ||
84 | |||
85 | # inverted return value | ||
86 | if arg_contain -D__SIZEOF_INT128__=0 "$@"; then | ||
87 | exit 1 | ||
88 | fi | ||