1*4882a593Smuzhiyun#!/bin/sh 2*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0 3*4882a593Smuzhiyunsrctree=$(dirname "$0") 4*4882a593Smuzhiyun 5*4882a593SmuzhiyunSHOW_ERROR= 6*4882a593Smuzhiyunif [ "$1" = "--show-error" ] ; then 7*4882a593Smuzhiyun SHOW_ERROR=1 8*4882a593Smuzhiyun shift || true 9*4882a593Smuzhiyunfi 10*4882a593Smuzhiyun 11*4882a593Smuzhiyungccplugins_dir=$($3 -print-file-name=plugin) 12*4882a593Smuzhiyunplugincc=$($1 -E -x c++ - -o /dev/null -I"${srctree}"/gcc-plugins -I"${gccplugins_dir}"/include 2>&1 <<EOF 13*4882a593Smuzhiyun#include "gcc-common.h" 14*4882a593Smuzhiyun#if BUILDING_GCC_VERSION >= 4008 || defined(ENABLE_BUILD_WITH_CXX) 15*4882a593Smuzhiyun#warning $2 CXX 16*4882a593Smuzhiyun#else 17*4882a593Smuzhiyun#warning $1 CC 18*4882a593Smuzhiyun#endif 19*4882a593SmuzhiyunEOF 20*4882a593Smuzhiyun) 21*4882a593Smuzhiyun 22*4882a593Smuzhiyunif [ $? -ne 0 ] 23*4882a593Smuzhiyunthen 24*4882a593Smuzhiyun if [ -n "$SHOW_ERROR" ] ; then 25*4882a593Smuzhiyun echo "${plugincc}" >&2 26*4882a593Smuzhiyun fi 27*4882a593Smuzhiyun exit 1 28*4882a593Smuzhiyunfi 29*4882a593Smuzhiyun 30*4882a593Smuzhiyuncase "$plugincc" in 31*4882a593Smuzhiyun *"$1 CC"*) 32*4882a593Smuzhiyun echo "$1" 33*4882a593Smuzhiyun exit 0 34*4882a593Smuzhiyun ;; 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun *"$2 CXX"*) 37*4882a593Smuzhiyun # the c++ compiler needs another test, see below 38*4882a593Smuzhiyun ;; 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun *) 41*4882a593Smuzhiyun exit 1 42*4882a593Smuzhiyun ;; 43*4882a593Smuzhiyunesac 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun# we need a c++ compiler that supports the designated initializer GNU extension 46*4882a593Smuzhiyunplugincc=$($2 -c -x c++ -std=gnu++98 - -fsyntax-only -I"${srctree}"/gcc-plugins -I"${gccplugins_dir}"/include 2>&1 <<EOF 47*4882a593Smuzhiyun#include "gcc-common.h" 48*4882a593Smuzhiyunclass test { 49*4882a593Smuzhiyunpublic: 50*4882a593Smuzhiyun int test; 51*4882a593Smuzhiyun} test = { 52*4882a593Smuzhiyun .test = 1 53*4882a593Smuzhiyun}; 54*4882a593SmuzhiyunEOF 55*4882a593Smuzhiyun) 56*4882a593Smuzhiyun 57*4882a593Smuzhiyunif [ $? -eq 0 ] 58*4882a593Smuzhiyunthen 59*4882a593Smuzhiyun echo "$2" 60*4882a593Smuzhiyun exit 0 61*4882a593Smuzhiyunfi 62*4882a593Smuzhiyun 63*4882a593Smuzhiyunif [ -n "$SHOW_ERROR" ] ; then 64*4882a593Smuzhiyun echo "${plugincc}" >&2 65*4882a593Smuzhiyunfi 66*4882a593Smuzhiyunexit 1 67