diff options
author | Masahiro Yamada <yamada.masahiro@socionext.com> | 2018-05-28 05:22:02 -0400 |
---|---|---|
committer | Masahiro Yamada <yamada.masahiro@socionext.com> | 2018-06-08 05:56:01 -0400 |
commit | 469cb7376c067bc6203de4ceed253c10fe712542 (patch) | |
tree | 947d8e29568376f46db9065d044f4ef90f553cf7 | |
parent | a4353898980cc46b28c03fc401d4d916d82c6f4f (diff) |
kconfig: add CC_IS_CLANG and CLANG_VERSION
This will be useful to describe the clang version dependency.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
-rw-r--r-- | init/Kconfig | 7 | ||||
-rwxr-xr-x | scripts/clang-version.sh | 18 |
2 files changed, 11 insertions, 14 deletions
diff --git a/init/Kconfig b/init/Kconfig index 66c8fd1f1d8e..efc43c60de45 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
@@ -16,6 +16,13 @@ config GCC_VERSION | |||
16 | default $(shell,$(srctree)/scripts/gcc-version.sh -p $(CC) | sed 's/^0*//') if CC_IS_GCC | 16 | default $(shell,$(srctree)/scripts/gcc-version.sh -p $(CC) | sed 's/^0*//') if CC_IS_GCC |
17 | default 0 | 17 | default 0 |
18 | 18 | ||
19 | config CC_IS_CLANG | ||
20 | def_bool $(success,$(CC) --version | head -n 1 | grep -q clang) | ||
21 | |||
22 | config CLANG_VERSION | ||
23 | int | ||
24 | default $(shell,$(srctree)/scripts/clang-version.sh $(CC)) | ||
25 | |||
19 | config CONSTRUCTORS | 26 | config CONSTRUCTORS |
20 | bool | 27 | bool |
21 | depends on !UML | 28 | depends on !UML |
diff --git a/scripts/clang-version.sh b/scripts/clang-version.sh index 9780efa56980..dbf0a31eb111 100755 --- a/scripts/clang-version.sh +++ b/scripts/clang-version.sh | |||
@@ -10,24 +10,14 @@ | |||
10 | # clang-5.0.1 etc. | 10 | # clang-5.0.1 etc. |
11 | # | 11 | # |
12 | 12 | ||
13 | if [ "$1" = "-p" ] ; then | ||
14 | with_patchlevel=1; | ||
15 | shift; | ||
16 | fi | ||
17 | |||
18 | compiler="$*" | 13 | compiler="$*" |
19 | 14 | ||
20 | if [ ${#compiler} -eq 0 ]; then | 15 | if !( $compiler --version | grep -q clang) ; then |
21 | echo "Error: No compiler specified." | 16 | echo 0 |
22 | printf "Usage:\n\t$0 <clang-command>\n" | ||
23 | exit 1 | 17 | exit 1 |
24 | fi | 18 | fi |
25 | 19 | ||
26 | MAJOR=$(echo __clang_major__ | $compiler -E -x c - | tail -n 1) | 20 | MAJOR=$(echo __clang_major__ | $compiler -E -x c - | tail -n 1) |
27 | MINOR=$(echo __clang_minor__ | $compiler -E -x c - | tail -n 1) | 21 | MINOR=$(echo __clang_minor__ | $compiler -E -x c - | tail -n 1) |
28 | if [ "x$with_patchlevel" != "x" ] ; then | 22 | PATCHLEVEL=$(echo __clang_patchlevel__ | $compiler -E -x c - | tail -n 1) |
29 | PATCHLEVEL=$(echo __clang_patchlevel__ | $compiler -E -x c - | tail -n 1) | 23 | printf "%d%02d%02d\\n" $MAJOR $MINOR $PATCHLEVEL |
30 | printf "%02d%02d%02d\\n" $MAJOR $MINOR $PATCHLEVEL | ||
31 | else | ||
32 | printf "%02d%02d\\n" $MAJOR $MINOR | ||
33 | fi | ||