X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b4eecb7e2f52c0df1067c005eaf6f4c47cc6bca9..97c153e44634a9b2b17614f85035205a0d9eaa46:/acinclude.m4 diff --git a/acinclude.m4 b/acinclude.m4 index e49126ddcb..65ad9e93d8 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -8,6 +8,20 @@ dnl dnl Version: $Id$ dnl --------------------------------------------------------------------------- + +dnl =========================================================================== +dnl Objective-C(++) related macros +dnl =========================================================================== +m4_define([AC_WX_LANG_OBJECTIVEC], +[AC_LANG(C) +ac_ext=m +]) + +m4_define([AC_WX_LANG_OBJECTIVECPLUSPLUS], +[AC_LANG(C++) +ac_ext=mm +]) + dnl =========================================================================== dnl macros to find the a file in the list of include/lib paths dnl =========================================================================== @@ -88,14 +102,11 @@ dnl WX_CPP_NEW_HEADERS checks whether the compiler has "new" header dnl or only the old one - it may be generally assumed that if dnl exists, the other "new" headers (without .h) exist too. dnl -dnl call WX_CPP_NEW_HEADERS(actiof-if-true, action-if-false-or-cross-compiling) +dnl call WX_CPP_NEW_HEADERS(actiof-if-true, action-if-false) dnl --------------------------------------------------------------------------- AC_DEFUN([WX_CPP_NEW_HEADERS], [ - if test "$cross_compiling" = "yes"; then - ifelse([$2], , :, [$2]) - else AC_LANG_SAVE AC_LANG_CPLUSPLUS @@ -108,7 +119,6 @@ AC_DEFUN([WX_CPP_NEW_HEADERS], fi AC_LANG_RESTORE - fi ]) dnl --------------------------------------------------------------------------- @@ -580,3 +590,80 @@ if test "$enable_largefile" != no; then AC_MSG_RESULT($wx_largefile) fi ]) + + +dnl Available from the GNU Autoconf Macro Archive at: +dnl http://www.gnu.org/software/ac-archive/htmldoc/ac_cxx_const_cast.html +dnl +AC_DEFUN([AC_CXX_CONST_CAST], +[AC_CACHE_CHECK(whether the compiler supports const_cast<>, +ac_cv_cxx_const_cast, +[AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE(,[int x = 0;const int& y = x;int& z = const_cast(y);return z;], + ac_cv_cxx_const_cast=yes, ac_cv_cxx_const_cast=no) + AC_LANG_RESTORE +]) +if test "$ac_cv_cxx_const_cast" = yes; then + AC_DEFINE(HAVE_CONST_CAST,,[define if the compiler supports const_cast<>]) +fi +]) + +dnl http://www.gnu.org/software/ac-archive/htmldoc/ac_cxx_reinterpret_cast.html +AC_DEFUN([AC_CXX_REINTERPRET_CAST], +[AC_CACHE_CHECK(whether the compiler supports reinterpret_cast<>, +ac_cv_cxx_reinterpret_cast, +[AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([#include +class Base { public : Base () {} virtual void f () = 0;}; +class Derived : public Base { public : Derived () {} virtual void f () {} }; +class Unrelated { public : Unrelated () {} }; +int g (Unrelated&) { return 0; }],[ +Derived d;Base& b=d;Unrelated& e=reinterpret_cast(b);return g(e);], + ac_cv_cxx_reinterpret_cast=yes, ac_cv_cxx_reinterpret_cast=no) + AC_LANG_RESTORE +]) +if test "$ac_cv_cxx_reinterpret_cast" = yes; then + AC_DEFINE(HAVE_REINTERPRET_CAST,, + [define if the compiler supports reinterpret_cast<>]) +fi +]) + +dnl and http://www.gnu.org/software/ac-archive/htmldoc/ac_cxx_static_cast.html +AC_DEFUN([AC_CXX_STATIC_CAST], +[AC_CACHE_CHECK(whether the compiler supports static_cast<>, +ac_cv_cxx_static_cast, +[AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([#include +class Base { public : Base () {} virtual void f () = 0; }; +class Derived : public Base { public : Derived () {} virtual void f () {} }; +int g (Derived&) { return 0; }],[ +Derived d; Base& b = d; Derived& s = static_cast (b); return g (s);], + ac_cv_cxx_static_cast=yes, ac_cv_cxx_static_cast=no) + AC_LANG_RESTORE +]) +if test "$ac_cv_cxx_static_cast" = yes; then + AC_DEFINE(HAVE_STATIC_CAST,, [define if the compiler supports static_cast<>]) +fi +]) + +dnl http://autoconf-archive.cryp.to/ac_cxx_dynamic_cast.html +AC_DEFUN([AC_CXX_DYNAMIC_CAST], +[AC_CACHE_CHECK(whether the compiler supports dynamic_cast<>, +ac_cv_cxx_dynamic_cast, +[AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([#include +class Base { public : Base () {} virtual void f () = 0;}; +class Derived : public Base { public : Derived () {} virtual void f () {} };],[ +Derived d; Base& b=d; return dynamic_cast(&b) ? 0 : 1;], + ac_cv_cxx_dynamic_cast=yes, ac_cv_cxx_dynamic_cast=no) + AC_LANG_RESTORE +]) +if test "$ac_cv_cxx_dynamic_cast" = yes; then + AC_DEFINE(HAVE_DYNAMIC_CAST,,[define if the compiler supports dynamic_cast<>]) +fi +]) +