]> git.saurik.com Git - wxWidgets.git/commitdiff
Check that std::basic_string<wchar_t> actually works before
authorMattia Barbon <mbarbon@cpan.org>
Sun, 10 Apr 2005 14:54:34 +0000 (14:54 +0000)
committerMattia Barbon <mbarbon@cpan.org>
Sun, 10 Apr 2005 14:54:34 +0000 (14:54 +0000)
trying to use it.
  Fail at configure time when trying to compile wxMotif with Unicode.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33472 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

configure
configure.in

index 57f1eb7d0ad828a0e51c325ea14c78aa9f9eb3a9..d0921ffae70324f974a159c3e37e613811d1c6ac 100755 (executable)
--- a/configure
+++ b/configure
@@ -11295,7 +11295,7 @@ echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
 GCC=`test $ac_compiler_gnu = yes && echo yes`
 ac_test_CFLAGS=${CFLAGS+set}
 ac_save_CFLAGS=$CFLAGS
-CFLAGS="-g"
+CFLAGS="$CFLAGS -g"
 echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
 if test "${ac_cv_prog_cc_g+set}" = set; then
@@ -11685,7 +11685,7 @@ fi
         unset ac_cv_prog_cc_g
         ac_test_CFLAGS=${CFLAGS+set}
 ac_save_CFLAGS=$CFLAGS
-CFLAGS="-g"
+CFLAGS="$CFLAGS -g"
 echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
 if test "${ac_cv_prog_cc_g+set}" = set; then
@@ -12443,9 +12443,9 @@ if test "$ac_test_CXXFLAGS" = set; then
   CXXFLAGS=$ac_save_CXXFLAGS
 elif test $ac_cv_prog_cxx_g = yes; then
   if test "$GXX" = yes; then
-    CXXFLAGS="-g -O2"
+    CXXFLAGS="$CXXFLAGS -g -O2"
   else
-    CXXFLAGS="-g"
+    CXXFLAGS="$CXXFLAGS -g"
   fi
 else
   if test "$GXX" = yes; then
@@ -12683,9 +12683,9 @@ if test "$ac_test_CXXFLAGS" = set; then
   CXXFLAGS=$ac_save_CXXFLAGS
 elif test $ac_cv_prog_cxx_g = yes; then
   if test "$GXX" = yes; then
-    CXXFLAGS="-g -O2"
+    CXXFLAGS="$CXXFLAGS -g -O2"
   else
-    CXXFLAGS="-g"
+    CXXFLAGS="$CXXFLAGS -g"
   fi
 else
   if test "$GXX" = yes; then
@@ -21184,7 +21184,8 @@ _ACEOF
 fi
 
 
-if test "$wxUSE_STL" = "yes"; then
+if test "$wxUSE_UNICODE" = "yes" -a \
+        \( "$wxUSE_STD_STRING" = "yes" -o "$wxUSE_STL" = "yes" \); then
     ac_ext=cc
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -21192,8 +21193,8 @@ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ex
 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 
 
-        echo "$as_me:$LINENO: checking for basic STL functionality" >&5
-echo $ECHO_N "checking for basic STL functionality... $ECHO_C" >&6
+        echo "$as_me:$LINENO: checking for std::wstring in <string>" >&5
+echo $ECHO_N "checking for std::wstring in <string>... $ECHO_C" >&6
     cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -21201,18 +21202,10 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 #include <string>
-                    #include <functional>
-                    #include <algorithm>
-                    #include <vector>
-                    #include <list>
 int
 main ()
 {
-std::vector<int> moo;
-                     std::list<int> foo;
-                     std::vector<int>::iterator it =
-                         std::find_if(moo.begin(), moo.end(),
-                                      std::bind2nd(std::less<int>(), 3));
+std::wstring foo;
   ;
   return 0;
 }
@@ -21240,20 +21233,103 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (exit $ac_status); }; }; then
   echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6
+                    cat >>confdefs.h <<\_ACEOF
+#define HAVE_STD_WSTRING 1
+_ACEOF
+
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 echo "$as_me:$LINENO: result: no" >&5
 echo "${ECHO_T}no" >&6
-                     { { echo "$as_me:$LINENO: error: Basic STL functionality missing" >&5
-echo "$as_me: error: Basic STL functionality missing" >&2;}
+                    echo "$as_me:$LINENO: checking if std::basic_string<wchar_t> works" >&5
+echo $ECHO_N "checking if std::basic_string<wchar_t> works... $ECHO_C" >&6
+                    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+                        #ifdef HAVE_WCHAR_H
+                        #  ifdef __CYGWIN__
+                        #    include <stddef.h>
+                        #  endif
+                        #  include <wchar.h>
+                        #endif
+                        #ifdef HAVE_STDLIB_H
+                        #  include <stdlib.h>
+                        #endif
+                        #include <stdio.h>
+                        #include <string>
+
+int
+main ()
+{
+std::basic_string<wchar_t> foo;
+                         const wchar_t* dummy = foo.c_str();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_cxx_werror_flag"                         || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+                         { { echo "$as_me:$LINENO: error: Can't compile without unicode string class" >&5
+echo "$as_me: error: Can't compile without unicode string class" >&2;}
    { (exit 1); exit 1; }; }
+
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 
-        echo "$as_me:$LINENO: checking for std::wstring in <string>" >&5
-echo $ECHO_N "checking for std::wstring in <string>... $ECHO_C" >&6
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+if test "$wxUSE_STL" = "yes"; then
+    ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+        echo "$as_me:$LINENO: checking for basic STL functionality" >&5
+echo $ECHO_N "checking for basic STL functionality... $ECHO_C" >&6
     cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -21261,10 +21337,18 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 #include <string>
+                    #include <functional>
+                    #include <algorithm>
+                    #include <vector>
+                    #include <list>
 int
 main ()
 {
-std::wstring foo;
+std::vector<int> moo;
+                     std::list<int> foo;
+                     std::vector<int>::iterator it =
+                         std::find_if(moo.begin(), moo.end(),
+                                      std::bind2nd(std::less<int>(), 3));
   ;
   return 0;
 }
@@ -21292,16 +21376,15 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (exit $ac_status); }; }; then
   echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6
-                    cat >>confdefs.h <<\_ACEOF
-#define HAVE_STD_WSTRING 1
-_ACEOF
-
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 echo "$as_me:$LINENO: result: no" >&5
 echo "${ECHO_T}no" >&6
+                     { { echo "$as_me:$LINENO: error: Basic STL functionality missing" >&5
+echo "$as_me: error: Basic STL functionality missing" >&2;}
+   { (exit 1); exit 1; }; }
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 
@@ -27541,6 +27624,12 @@ done
     fi
 
     if test "$wxUSE_MOTIF" = 1; then
+        if test "$wxUSE_UNICODE" = "yes"; then
+            { { echo "$as_me:$LINENO: error: Unicode configuration not supported with Motif" >&5
+echo "$as_me: error: Unicode configuration not supported with Motif" >&2;}
+   { (exit 1); exit 1; }; }
+        fi
+
         echo "$as_me:$LINENO: checking for Motif/Lesstif headers" >&5
 echo $ECHO_N "checking for Motif/Lesstif headers... $ECHO_C" >&6
 
index 3479bd09a7787124acc64862e75963101349d589..2cae8bba077977725602211378f318d81af20f5a 100644 (file)
@@ -1882,6 +1882,42 @@ dnl we don't use HAVE_DYNAMIC_CAST anywhere right now...
 dnl AC_CXX_DYNAMIC_CAST
 
 dnl check various STL features
+if test "$wxUSE_UNICODE" = "yes" -a \
+        \( "$wxUSE_STD_STRING" = "yes" -o "$wxUSE_STL" = "yes" \); then
+    AC_LANG_PUSH(C++)
+
+    dnl check if <string> declares std::wstring
+    AC_MSG_CHECKING([for std::wstring in <string>])
+    AC_TRY_COMPILE([#include <string>],
+                   [std::wstring foo;],
+                   [AC_MSG_RESULT(yes)
+                    AC_DEFINE(HAVE_STD_WSTRING)],
+                   [AC_MSG_RESULT(no)
+                    AC_MSG_CHECKING([if std::basic_string<wchar_t> works])
+                    AC_TRY_COMPILE([
+                        #ifdef HAVE_WCHAR_H
+                        #  ifdef __CYGWIN__
+                        #    include <stddef.h>
+                        #  endif
+                        #  include <wchar.h>
+                        #endif
+                        #ifdef HAVE_STDLIB_H
+                        #  include <stdlib.h>
+                        #endif
+                        #include <stdio.h>
+                        #include <string>
+                        ],
+                        [std::basic_string<wchar_t> foo;
+                         const wchar_t* dummy = foo.c_str();],
+                        [AC_MSG_RESULT(yes)],
+                        [AC_MSG_RESULT([no])
+                         AC_MSG_ERROR([Can't compile without unicode string class])]
+                    )
+                    ])
+
+    AC_LANG_POP
+fi
+
 if test "$wxUSE_STL" = "yes"; then
     AC_LANG_PUSH(C++)
 
@@ -1901,14 +1937,6 @@ if test "$wxUSE_STL" = "yes"; then
                     [AC_MSG_RESULT([no])
                      AC_MSG_ERROR([Basic STL functionality missing])])
 
-    dnl check if <string> declares std::wstring
-    AC_MSG_CHECKING([for std::wstring in <string>])
-    AC_TRY_COMPILE([#include <string>],
-                   [std::wstring foo;],
-                   [AC_MSG_RESULT(yes)
-                    AC_DEFINE(HAVE_STD_WSTRING)],
-                   [AC_MSG_RESULT(no)])
-
     dnl check for compliant std::string::compare
     AC_MSG_CHECKING([for compliant std::string::compare])
     AC_TRY_COMPILE([#include <string>],
@@ -2861,6 +2889,10 @@ equivalent variable and GTK+ is version 1.2.3 or above.
     fi
 
     if test "$wxUSE_MOTIF" = 1; then
+        if test "$wxUSE_UNICODE" = "yes"; then
+            AC_MSG_ERROR([Unicode configuration not supported with Motif])
+        fi
+
         AC_MSG_CHECKING(for Motif/Lesstif headers)
         WX_PATH_FIND_INCLUDES($SEARCH_INCLUDE, Xm/Xm.h)
         if test "$ac_find_includes" != "" ; then