Merge branch 'osx.11'

Minor fixes and improvements for building under OS X 10.11 (El Capitan).
This commit is contained in:
Vadim Zeitlin
2016-03-21 01:08:54 +01:00
8 changed files with 1034 additions and 2544 deletions

View File

@@ -87,17 +87,6 @@ AC_DEFUN([_AC_BAKEFILE_LANG_COMPILER_LATER_THAN],
AC_LANG_POP($2) AC_LANG_POP($2)
]) ])
dnl CodeWarrior Metrowerks compiler defines __MWERKS__ for both C and C++
AC_DEFUN([AC_BAKEFILE_PROG_MWCC],
[
_AC_BAKEFILE_LANG_COMPILER(Metrowerks, C, __MWERKS__, MWCC=yes)
])
AC_DEFUN([AC_BAKEFILE_PROG_MWCXX],
[
_AC_BAKEFILE_LANG_COMPILER(Metrowerks, C++, __MWERKS__, MWCXX=yes)
])
dnl IBM xlC compiler defines __xlC__ for both C and C++ dnl IBM xlC compiler defines __xlC__ for both C and C++
AC_DEFUN([AC_BAKEFILE_PROG_XLCC], AC_DEFUN([AC_BAKEFILE_PROG_XLCC],
[ [
@@ -190,46 +179,6 @@ AC_DEFUN([AC_BAKEFILE_PROG_COMPAQCXX],
_AC_BAKEFILE_LANG_COMPILER(Compaq, C++, __DECCXX, COMPAQCXX=yes) _AC_BAKEFILE_LANG_COMPILER(Compaq, C++, __DECCXX, COMPAQCXX=yes)
]) ])
dnl ===========================================================================
dnl macros to detect specialty compiler options
dnl ===========================================================================
dnl Figure out if we need to pass -ext o to compiler (MetroWerks)
AC_DEFUN([AC_BAKEFILE_METROWERKS_EXTO],
[AC_CACHE_CHECK([if the _AC_LANG compiler requires -ext o], bakefile_cv_[]_AC_LANG_ABBREV[]_exto,
dnl First create an empty conf test
[AC_LANG_CONFTEST([AC_LANG_PROGRAM()])
dnl Now remove .o and .c.o or .cc.o
rm -f conftest.$ac_objext conftest.$ac_ext.o
dnl Now compile the test
AS_IF([AC_TRY_EVAL(ac_compile)],
dnl If the test succeeded look for conftest.c.o or conftest.cc.o
[for ac_file in `(ls conftest.* 2>/dev/null)`; do
case $ac_file in
conftest.$ac_ext.o)
bakefile_cv_[]_AC_LANG_ABBREV[]_exto="-ext o"
;;
*)
;;
esac
done],
[AC_MSG_FAILURE([cannot figure out if compiler needs -ext o: cannot compile])
]) dnl AS_IF
rm -f conftest.$ac_ext.o conftest.$ac_objext conftest.$ac_ext
]) dnl AC_CACHE_CHECK
if test "x$bakefile_cv_[]_AC_LANG_ABBREV[]_exto" '!=' "x"; then
if test "[]_AC_LANG_ABBREV[]" = "c"; then
CFLAGS="$bakefile_cv_[]_AC_LANG_ABBREV[]_exto $CFLAGS"
fi
if test "[]_AC_LANG_ABBREV[]" = "cxx"; then
CXXFLAGS="$bakefile_cv_[]_AC_LANG_ABBREV[]_exto $CXXFLAGS"
fi
fi
]) dnl AC_DEFUN
dnl =========================================================================== dnl ===========================================================================
dnl Macros to do all of the compiler detections as one macro dnl Macros to do all of the compiler detections as one macro
dnl =========================================================================== dnl ===========================================================================
@@ -253,14 +202,6 @@ AC_DEFUN([_AC_BAKEFILE_PROG_COMPILER],
dnl if we're using gcc, we can't be using any of incompatible compilers dnl if we're using gcc, we can't be using any of incompatible compilers
if test "x$G$1" != "xyes"; then if test "x$G$1" != "xyes"; then
if test "x$1" = "xC"; then
AC_BAKEFILE_METROWERKS_EXTO
if test "x$bakefile_cv_c_exto" '!=' "x"; then
unset ac_cv_prog_cc_g
_AC_PROG_CC_G
fi
fi
dnl most of these compilers are only used under well-defined OS so dnl most of these compilers are only used under well-defined OS so
dnl don't waste time checking for them on other ones dnl don't waste time checking for them on other ones
case `uname -s` in case `uname -s` in
@@ -269,10 +210,7 @@ AC_DEFUN([_AC_BAKEFILE_PROG_COMPILER],
;; ;;
Darwin) Darwin)
AC_BAKEFILE_PROG_MW$1
if test "$MW$1" != "yes"; then
AC_BAKEFILE_PROG_XL$1 AC_BAKEFILE_PROG_XL$1
fi
;; ;;
IRIX*) IRIX*)

View File

@@ -501,10 +501,6 @@ AC_DEFUN([AC_BAKEFILE_DEPS],
DEPSMODE=gcc DEPSMODE=gcc
DEPSFLAG="-MMD" DEPSFLAG="-MMD"
AC_MSG_RESULT([gcc]) AC_MSG_RESULT([gcc])
elif test "x$MWCC" = "xyes"; then
DEPSMODE=mwcc
DEPSFLAG="-MM"
AC_MSG_RESULT([mwcc])
elif test "x$SUNCC" = "xyes"; then elif test "x$SUNCC" = "xyes"; then
DEPSMODE=unixcc DEPSMODE=unixcc
DEPSFLAG="-xM1" DEPSFLAG="-xM1"
@@ -843,34 +839,6 @@ if test ${D}DEPSMODE = gcc ; then
fi fi
exit 0 exit 0
elif test ${D}DEPSMODE = mwcc ; then
${D}* || exit ${D}?
# Run mwcc again with -MM and redirect into the dep file we want
# NOTE: We can't use shift here because we need ${D}* to be valid
prevarg=
for arg in ${D}* ; do
if test "${D}prevarg" = "-o"; then
objfile=${D}arg
else
case "${D}arg" in
-* )
;;
* )
srcfile=${D}arg
;;
esac
fi
prevarg="${D}arg"
done
objfilebase=\`basename ${D}objfile\`
builddir=\`dirname ${D}objfile\`
depsdir=${D}builddir/${D}DEPSDIRBASE
mkdir -p ${D}depsdir
${D}* ${D}DEPSFLAG >${D}{depsdir}/${D}{objfilebase}.d
exit 0
elif test ${D}DEPSMODE = unixcc; then elif test ${D}DEPSMODE = unixcc; then
${D}* || exit ${D}? ${D}* || exit ${D}?
# Run compiler again with deps flag and redirect into the dep file. # Run compiler again with deps flag and redirect into the dep file.

1411
configure vendored

File diff suppressed because it is too large Load Diff

View File

@@ -1065,12 +1065,12 @@ if test -n "$wxWITH_CXX"; then
dnl autoconf, not run, time. dnl autoconf, not run, time.
case "$wxWITH_CXX" in case "$wxWITH_CXX" in
11) 11)
if test -n "$wxWITH_CXX_IS_OPTIONAL"; then
AX_CXX_COMPILE_STDCXX(11,,optional) AX_CXX_COMPILE_STDCXX(11,,optional)
else if test -n "$wxWITH_CXX_IS_OPTIONAL"; then
AX_CXX_COMPILE_STDCXX(11) if test "$HAVE_CXX11" != 1; then
AC_MSG_FAILURE([C++11 support was requested but is not available])
fi
fi fi
have_cxxN=$HAVE_CXX11
;; ;;
14) 14)
@@ -1078,6 +1078,10 @@ if test -n "$wxWITH_CXX"; then
dnl and not --enable-cxx14 option. dnl and not --enable-cxx14 option.
AX_CXX_COMPILE_STDCXX(14) AX_CXX_COMPILE_STDCXX(14)
dnl Notice that because it's not optional, the macro doesn't define
dnl HAVE_CXX14. We don't use it anyhow so far, so it doesn't
dnl matter, but we could need to do it ourselves here in the future.
dnl If we have C++14, we necessarily have C++11 too. dnl If we have C++14, we necessarily have C++11 too.
HAVE_CXX11=1 HAVE_CXX11=1
;; ;;
@@ -7576,6 +7580,10 @@ elif test "$GXX" = yes ; then
dnl other ones dnl other ones
if test "$WXGTK3" = 1 -o "$wxUSE_MAC" = 1 ; then if test "$WXGTK3" = 1 -o "$wxUSE_MAC" = 1 ; then
CXXWARNINGS="$CXXWARNINGS -Wno-deprecated-declarations" CXXWARNINGS="$CXXWARNINGS -Wno-deprecated-declarations"
dnl CXXWARNINGS is not used for Objective-C++ code compilation, but we
dnl want to avoid these warnings in it too when building wxOSX.
OBJCXXFLAGS="$OBJCXXFLAGS -Wno-deprecated-declarations"
fi fi
fi fi
@@ -7606,22 +7614,6 @@ dnl only stuff to it
WXCONFIG_CPPFLAGS=`echo $WXCONFIG_CPPFLAGS $WXCONFIG_ONLY_CPPFLAGS` WXCONFIG_CPPFLAGS=`echo $WXCONFIG_CPPFLAGS $WXCONFIG_ONLY_CPPFLAGS`
if test "x$MWCC" = "xyes"; then
dnl Correct MW 8.3 to be more similar to GCC. In particular we
dnl must use <regex.h> from system not our local copy on OS X,
dnl but must use local not system on OS 9.
dnl The following should make all -I paths usable for <> includes
dnl while first checking in real system paths. With 8.3 using
dnl -gccincludes it will actually check local paths before system
dnl even for <> which is totally wrong.
dnl Note that because this absolutely needs to be before any -I
dnl that we have to tack it on to the end of the compiler commandline.
CC="$CC -cwd source -I-"
CXX="$CXX -cwd source -I-"
fi
LIBS=`echo $LIBS` LIBS=`echo $LIBS`
EXTRALIBS="$LDFLAGS $LDFLAGS_VERSIONING $LIBS $DMALLOC_LIBS" EXTRALIBS="$LDFLAGS $LDFLAGS_VERSIONING $LIBS $DMALLOC_LIBS"
EXTRALIBS_XML="$EXPAT_LINK" EXTRALIBS_XML="$EXPAT_LINK"

View File

@@ -2,20 +2,13 @@
. `dirname $0`/makeunixtags.sh . `dirname $0`/makeunixtags.sh
create_tags osx create_tags osx
osx_port=${1-cocoa}
if [[ $osx_port = carbon ]]; then
ext=cpp
else
ext=mm
fi
ctags --totals --c++-kinds=+px --language-force=c++ \ ctags --totals --c++-kinds=+px --language-force=c++ \
-f osx_$osx_port.tags \ -a \
-I @misc/scripts/ctags.ignore \ -I @misc/scripts/ctags.ignore \
include/wx/osx/core/*.h \ include/wx/osx/core/*.h \
include/wx/osx/core/private/*.h \ include/wx/osx/core/private/*.h \
include/wx/osx/private/*.h \ include/wx/osx/private/*.h \
include/wx/osx/$osx_port/*.h \ include/wx/osx/cocoa/*.h \
include/wx/osx/$osx_port/private/*.h \ include/wx/osx/cocoa/private/*.h \
src/osx/core/*.cpp \ src/osx/core/*.cpp \
src/osx/$osx_port/*.$ext src/osx/cocoa/*.mm

View File

@@ -182,7 +182,7 @@ int wxRendererMac::DrawHeaderButton( wxWindow *win,
HIRect headerRect = CGRectMake( x, y, w, h ); HIRect headerRect = CGRectMake( x, y, w, h );
if ( !wxHasCGContext(win, dc) ) if ( !wxHasCGContext(win, dc) )
{ {
win->Refresh( &rect ); win->RefreshRect(rect);
} }
else else
{ {
@@ -271,7 +271,7 @@ void wxRendererMac::DrawTreeItemButton( wxWindow *win,
HIRect headerRect = CGRectMake( x, y, w, h ); HIRect headerRect = CGRectMake( x, y, w, h );
if ( !wxHasCGContext(win, dc) ) if ( !wxHasCGContext(win, dc) )
{ {
win->Refresh( &rect ); win->RefreshRect(rect);
} }
else else
{ {
@@ -423,7 +423,7 @@ wxRendererMac::DrawMacThemeButton(wxWindow *win,
HIRect headerRect = CGRectMake( x, y, w, h ); HIRect headerRect = CGRectMake( x, y, w, h );
if ( !wxHasCGContext(win, dc) ) if ( !wxHasCGContext(win, dc) )
{ {
win->Refresh( &rect ); win->RefreshRect(rect);
} }
else else
{ {
@@ -668,7 +668,7 @@ void wxRendererMac::DrawTextCtrl(wxWindow* win, wxDC& dc,
HIRect hiRect = CGRectMake( x, y, w, h ); HIRect hiRect = CGRectMake( x, y, w, h );
if ( !wxHasCGContext(win, dc) ) if ( !wxHasCGContext(win, dc) )
{ {
win->Refresh( &rect ); win->RefreshRect(rect);
} }
else else
{ {

View File

@@ -126,7 +126,7 @@ public:
#endif #endif
} }
virtual bool AddAction(wxWindowID actionid, const wxString &label) virtual bool AddAction(wxWindowID actionid, const wxString &label) wxOVERRIDE
{ {
if (m_actions.size() >= 1) // Currently only 1 actions are supported if (m_actions.size() >= 1) // Currently only 1 actions are supported
return false; return false;

View File

@@ -2109,19 +2109,12 @@ bool wxWidgetCocoaImpl::ShowWithEffect(bool show,
return ShowViewOrWindowWithEffect(m_wxPeer, show, effect, timeout); return ShowViewOrWindowWithEffect(m_wxPeer, show, effect, timeout);
} }
/* note that the drawing order between siblings is not defined under 10.4 */ // To avoid warnings about incompatible pointer types with Xcode 7, we need to
/* only starting from 10.5 the subview order is respected */ // constrain the comparison function arguments instead of just using "id".
#if __has_feature(objc_kindof)
/* NSComparisonResult is typedef'd as an enum pre-Leopard but typedef'd as typedef __kindof NSView* KindOfView;
* NSInteger post-Leopard. Pre-Leopard the Cocoa toolkit expects a function
* returning int and not NSComparisonResult. Post-Leopard the Cocoa toolkit
* expects a function returning the new non-enum NSComparsionResult.
* Hence we create a typedef named CocoaWindowCompareFunctionResult.
*/
#if defined(NSINTEGER_DEFINED)
typedef NSComparisonResult CocoaWindowCompareFunctionResult;
#else #else
typedef int CocoaWindowCompareFunctionResult; typedef id KindOfView;
#endif #endif
class CocoaWindowCompareContext class CocoaWindowCompareContext
@@ -2147,7 +2140,8 @@ public:
{ return m_subviews; } { return m_subviews; }
/* Helper function that returns the comparison based off of the original ordering */ /* Helper function that returns the comparison based off of the original ordering */
CocoaWindowCompareFunctionResult CompareUsingOriginalOrdering(id first, id second) NSComparisonResult CompareUsingOriginalOrdering(KindOfView first,
KindOfView second)
{ {
NSUInteger firstI = [m_subviews indexOfObjectIdenticalTo:first]; NSUInteger firstI = [m_subviews indexOfObjectIdenticalTo:first];
NSUInteger secondI = [m_subviews indexOfObjectIdenticalTo:second]; NSUInteger secondI = [m_subviews indexOfObjectIdenticalTo:second];
@@ -2178,7 +2172,7 @@ private:
* the target view is always higher than every other view. When comparing two views neither of * the target view is always higher than every other view. When comparing two views neither of
* which is the target, it returns the correct response based on the original ordering * which is the target, it returns the correct response based on the original ordering
*/ */
static CocoaWindowCompareFunctionResult CocoaRaiseWindowCompareFunction(id first, id second, void *ctx) static NSComparisonResult CocoaRaiseWindowCompareFunction(KindOfView first, KindOfView second, void *ctx)
{ {
CocoaWindowCompareContext *compareContext = (CocoaWindowCompareContext*)ctx; CocoaWindowCompareContext *compareContext = (CocoaWindowCompareContext*)ctx;
// first should be ordered higher // first should be ordered higher
@@ -2197,8 +2191,7 @@ void wxWidgetCocoaImpl::Raise()
NSView *superview = [nsview superview]; NSView *superview = [nsview superview];
CocoaWindowCompareContext compareContext(nsview, [superview subviews]); CocoaWindowCompareContext compareContext(nsview, [superview subviews]);
[superview sortSubviewsUsingFunction: [superview sortSubviewsUsingFunction: CocoaRaiseWindowCompareFunction
CocoaRaiseWindowCompareFunction
context: &compareContext]; context: &compareContext];
} }
@@ -2207,7 +2200,7 @@ void wxWidgetCocoaImpl::Raise()
* the target view is always lower than every other view. When comparing two views neither of * the target view is always lower than every other view. When comparing two views neither of
* which is the target, it returns the correct response based on the original ordering * which is the target, it returns the correct response based on the original ordering
*/ */
static CocoaWindowCompareFunctionResult CocoaLowerWindowCompareFunction(id first, id second, void *ctx) static NSComparisonResult CocoaLowerWindowCompareFunction(KindOfView first, KindOfView second, void *ctx)
{ {
CocoaWindowCompareContext *compareContext = (CocoaWindowCompareContext*)ctx; CocoaWindowCompareContext *compareContext = (CocoaWindowCompareContext*)ctx;
// first should be ordered lower // first should be ordered lower
@@ -2226,8 +2219,7 @@ void wxWidgetCocoaImpl::Lower()
NSView *superview = [nsview superview]; NSView *superview = [nsview superview];
CocoaWindowCompareContext compareContext(nsview, [superview subviews]); CocoaWindowCompareContext compareContext(nsview, [superview subviews]);
[superview sortSubviewsUsingFunction: [superview sortSubviewsUsingFunction: CocoaLowerWindowCompareFunction
CocoaLowerWindowCompareFunction
context: &compareContext]; context: &compareContext];
} }