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