#!/bin/sh setglobal srctree = $[dirname $0] setglobal SHOW_ERROR = '' if test $1 = "--show-error" { setglobal SHOW_ERROR = '1' shift || true } setglobal gccplugins_dir = $[$3 -print-file-name=plugin] setglobal plugincc = $[$1 -E -x c++ - -o /dev/null -I"$(srctree)"/gcc-plugins -I"$(gccplugins_dir)"/include !2 > !1 << """ #include "gcc-common.h" #if BUILDING_GCC_VERSION >= 4008 || defined(ENABLE_BUILD_WITH_CXX) #warning $2 CXX #else #warning $1 CC #endif """ ] if test $Status -ne 0 { if test -n $SHOW_ERROR { echo $(plugincc) > !2 } exit 1 } match $plugincc { with *"$1 CC"* echo $1 exit 0 with *"$2 CXX"* # the c++ compiler needs another test, see below with * exit 1 } # we need a c++ compiler that supports the designated initializer GNU extension setglobal plugincc = $[$2 -c -x c++ -std=gnu++98 - -fsyntax-only -I"$(srctree)"/gcc-plugins -I"$(gccplugins_dir)"/include !2 > !1 << """ #include "gcc-common.h" class test { public: int test; } test = { .test = 1 }; """ ] if test $Status -eq 0 { echo $2 exit 0 } if test -n $SHOW_ERROR { echo $(plugincc) > !2 } exit 1