]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/ifacecheck/rungccxml.sh.in
Fix unit tests compilation in STL build.
[wxWidgets.git] / utils / ifacecheck / rungccxml.sh.in
index a5a34265f25ce20606a7404822b81c7431ed4559..c933d4dffc360646106652243a906a6e9bc87c97 100755 (executable)
@@ -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