1#!/bin/sh 2# SPDX-License-Identifier: GPL-2.0 3srctree=$(dirname "$0") 4 5SHOW_ERROR= 6if [ "$1" = "--show-error" ] ; then 7 SHOW_ERROR=1 8 shift || true 9fi 10 11gccplugins_dir=$($3 -print-file-name=plugin) 12plugincc=$($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 19EOF 20) 21 22if [ $? -ne 0 ] 23then 24 if [ -n "$SHOW_ERROR" ] ; then 25 echo "${plugincc}" >&2 26 fi 27 exit 1 28fi 29 30case "$plugincc" in 31 *"$1 CC"*) 32 echo "$1" 33 exit 0 34 ;; 35 36 *"$2 CXX"*) 37 # the c++ compiler needs another test, see below 38 ;; 39 40 *) 41 exit 1 42 ;; 43esac 44 45# we need a c++ compiler that supports the designated initializer GNU extension 46plugincc=$($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" 48class test { 49public: 50 int test; 51} test = { 52 .test = 1 53}; 54EOF 55) 56 57if [ $? -eq 0 ] 58then 59 echo "$2" 60 exit 0 61fi 62 63if [ -n "$SHOW_ERROR" ] ; then 64 echo "${plugincc}" >&2 65fi 66exit 1 67