X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2f46438b3650f89edda65ca499538f8588ed560c..fd78ef4715d4afe60a2ddb4bc4080af24ce7946d:/utils/ifacecheck/rungccxml.sh.in diff --git a/utils/ifacecheck/rungccxml.sh.in b/utils/ifacecheck/rungccxml.sh.in index a5a34265f2..c933d4dffc 100755 --- a/utils/ifacecheck/rungccxml.sh.in +++ b/utils/ifacecheck/rungccxml.sh.in @@ -11,8 +11,9 @@ ############ -gccxmloutput="wxapi.xml" # where do we put the gccXML output: -allheaders="/tmp/wx-all.h" # headers which includes all wx public headers +gccxmloutput="wxapi.xml" # the file where we store the gccXML output +preprocoutput="wxapi-preproc.txt" # the file where we store the preprocessor's #define values +allheaders="/tmp/wx-all.h" # the header which includes all wx public headers (autogenerated) # the list of all wxWidgets public headers listcmd="ls wx/*.h wx/aui/*.h wx/html/*.h wx/protocol/*.h wx/richtext/*.h wx/stc/*.h wx/xml/*.h wx/xrc/*.h" @@ -30,8 +31,7 @@ if [[ ! -z "$1" ]]; then fi me=$(basename $0) -path=${0%%/$me} -current=$(pwd) # current path +current=$(pwd)/${0%%/$me} # current path gccxmloutput="$current/$gccxmloutput" @@ -43,23 +43,42 @@ headerlist=`$listcmd | grep -v wxshl | grep -v wx_cw | grep -v setup | grep -v x cd $current # return to the original path # create the header file to pass to gccxml +echo "Creating the $allheaders dummy file which #includes all wxWidgets interface header files..." if [[ -f $allheaders ]]; then rm $allheaders; fi for f in $headerlist; do echo "#include <$f>" >> $allheaders done # filter the configure flags to pass to gccxml -flags="@CXXFLAGS@" +wx_top_builddir="@wx_top_builddir@" +top_srcdir="@top_srcdir@" +flags="@CPPFLAGS@ @CXXFLAGS@" # NOTE: it's important to define __WXDEBUG__ because some functions of wx -# are declared (and thus parsed by gcc) only if that symbol is defined; -# so we remove __WXDEBUG__ symbol from $flags, in case it's defined: +# are declared (and thus parsed by gcc) only if that symbol is defined. +# So we remove it from $flags (in case it's defined) and then readd it. flags=`echo "$flags" | sed -e 's/-pthread//g' | sed -e 's/__WXDEBUG__//g'` +# append some other flags: +flags="-I . -I @top_srcdir@/include $flags -D__WXDEBUG__ -D__WX@TOOLKIT@__ -DWXBUILDING $allheaders" + # run gccxml with the same flag used for the real compilation of wx sources: -echo "Running gccxml on the $allheaders file..." +echo "Running gccxml on the $allheaders file... results in $gccxmloutput" if [[ -f "$gccxmloutput" ]]; then rm $gccxmloutput; fi -gccxml -I . -I @top_srcdir@/include $flags -D__WX@TOOLKIT@__ -DWXBUILDING $allheaders -fxml=$gccxmloutput +gccxml $flags -fxml=$gccxmloutput +if [[ $? != 0 ]]; then + echo "Errors running gccxml... aborting." + exit +fi + +# now get the list of the #defined values for wx headers, so that the result +# can be passed to ifacecheck to aid the comparison +echo "Running gccxml's preprocessor on the $allheaders file... results in $preprocoutput" +gccxml -E -dM $flags >$preprocoutput +if [[ $? != 0 ]]; then + echo "Errors running gccxml preprocessor... aborting." + exit +fi # cleanup rm $allheaders