Merge branch 'locking-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[linux/fpc-iii.git] / scripts / gcc-plugin.sh
blobd3caefe53eab992f39e0a5a15e6118db3521298c
1 #!/bin/sh
2 # SPDX-License-Identifier: GPL-2.0
3 srctree=$(dirname "$0")
5 SHOW_ERROR=
6 if [ "$1" = "--show-error" ] ; then
7 SHOW_ERROR=1
8 shift || true
9 fi
11 gccplugins_dir=$($3 -print-file-name=plugin)
12 plugincc=$($1 -E -x c++ - -o /dev/null -I"${srctree}"/gcc-plugins -I"${gccplugins_dir}"/include 2>&1 <<EOF
13 #include "gcc-common.h"
14 #if BUILDING_GCC_VERSION >= 4008 || defined(ENABLE_BUILD_WITH_CXX)
15 #warning $2 CXX
16 #else
17 #warning $1 CC
18 #endif
19 EOF
22 if [ $? -ne 0 ]
23 then
24 if [ -n "$SHOW_ERROR" ] ; then
25 echo "${plugincc}" >&2
27 exit 1
30 case "$plugincc" in
31 *"$1 CC"*)
32 echo "$1"
33 exit 0
36 *"$2 CXX"*)
37 # the c++ compiler needs another test, see below
41 exit 1
43 esac
45 # we need a c++ compiler that supports the designated initializer GNU extension
46 plugincc=$($2 -c -x c++ -std=gnu++98 - -fsyntax-only -I"${srctree}"/gcc-plugins -I"${gccplugins_dir}"/include 2>&1 <<EOF
47 #include "gcc-common.h"
48 class test {
49 public:
50 int test;
51 } test = {
52 .test = 1
54 EOF
57 if [ $? -eq 0 ]
58 then
59 echo "$2"
60 exit 0
63 if [ -n "$SHOW_ERROR" ] ; then
64 echo "${plugincc}" >&2
66 exit 1