diff --git a/configure b/configure index 310adf5aa9..35668ba36e 100755 --- a/configure +++ b/configure @@ -22833,10 +22833,8 @@ $as_echo "$as_me: WARNING: --enable-macosx_arch is ignored when --enable-univers if test "x$wxUSE_UNIVERSAL_BINARY" != xyes; then OSX_ARCH_OPTS=$wxUSE_UNIVERSAL_BINARY - else OSX_ARCH_OPTS="i386" - if test "$wxUSE_OSX_COCOA" = 1; then - OSX_ARCH_OPTS="$OSX_ARCH_OPTS,x86_64" - fi + else + OSX_ARCH_OPTS=arm64,x86_64 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for architectures to use in universal binary" >&5 diff --git a/configure.ac b/configure.ac index c608f9f4cf..3f0e97a91b 100644 --- a/configure.ac +++ b/configure.ac @@ -1160,10 +1160,14 @@ if test "x$wxUSE_UNIVERSAL_BINARY" != xno ; then if test "x$wxUSE_UNIVERSAL_BINARY" != xyes; then OSX_ARCH_OPTS=$wxUSE_UNIVERSAL_BINARY - else dnl Use all architectures supported - OSX_ARCH_OPTS="i386" - if test "$wxUSE_OSX_COCOA" = 1; then - OSX_ARCH_OPTS="$OSX_ARCH_OPTS,x86_64" + else + dnl Use default architectures for the universal binaries: x86_64 is + dnl currently supported everywhere... + OSX_ARCH_OPTS=x86_64 + + dnl ... and non-ancient macOS versions also support ARM. + if [ `sw_vers -productVersion | sed 's/\..*//'` -gt 10 ]; then + OSX_ARCH_OPTS=arm64,$OSX_ARCH_OPTS fi fi diff --git a/docs/gtk/install.md b/docs/gtk/install.md index 9fd1d73200..2f87d65bae 100644 --- a/docs/gtk/install.md +++ b/docs/gtk/install.md @@ -18,13 +18,38 @@ the following in wxWidgets directory: $ cd buildgtk $ ../configure --with-gtk $ make + +It is recommended to use `-jN` option with the last command, where `N` is a +number of the processors in your system (which can be checked using `nproc` +command if you are not sure), as this will dramatically speed up the build +on modern systems. So in practice you should use a command like this: + + $ make -j8 + +(but don't use it unless you actually have 8 CPUs and enough memory for that +many parallel compiler invocations). + +You may also prefer to add `-s` option to avoid normal output from make and/or +redirect it you to a log file for further inspection. + +You should build at least the smallest possible wxWidgets sample to verify that +everything is working as intended, by doing + + $ cd samples/minimal + $ make + +and try running it using `./minimal` command from the same directory. + +After confirming that it works, you may want to install wxWidgets by running + $ sudo make install $ sudo ldconfig (if you get "ldconfig: command not found", try using `/sbin/ldconfig`) -If you don't do the `make install` part, you can still use the libraries from -the `buildgtk` directory, but they may not be available to other users. +but note that this part is optional and you can use the libraries from +the `buildgtk` directory by running `.../buildgtk/wx-config` script using its +full path instead of just using `wx-config`. Note that by default, GTK 3 is used. GTK 2 can be specified with `--with-gtk=2` configure option. diff --git a/docs/osx/install.md b/docs/osx/install.md index 2dfb91a3bf..3ffaa899ef 100644 --- a/docs/osx/install.md +++ b/docs/osx/install.md @@ -9,11 +9,11 @@ Most OS X developers should start by downloading and installing Xcode from the App Store. It is a free IDE from Apple that provides all of the tools you need for working with wxWidgets. -After Xcode is installed, download wxWidgets-{version}.tar.bz2 and then +After Xcode is installed, download `wxWidgets-{version}.tar.bz2` and then double-click on it to unpack it to create a wxWidgets directory. Next use Terminal (under Applications, Utilities, Terminal) to access a command -prompt. Use cd to change directories to your wxWidgets directory and execute +prompt. Use `cd` to change directories to your wxWidgets directory and execute the following sets of commands from the wxWidgets directory. mkdir build-cocoa-debug @@ -21,27 +21,54 @@ the following sets of commands from the wxWidgets directory. ../configure --enable-debug make -Build the samples and demos +It is recommended to use `-jN` option with the last command, where `N` is a +number of the processors in your system (which can be checked using `sysctl -n +hw.ncpu` command if you are not sure), as this will dramatically speed up the +build on modern systems. So in practice you should use a command like this: + + make -j8 + +(but don't use it unless you actually have 8 CPUs and enough memory for that +many parallel compiler invocations). + +You may also prefer to add `-s` option to avoid normal output from make and/or +redirect it you to a log file for further inspection. + +You should build at least the smallest possible wxWidgets sample to verify that +everything is working as intended, by doing + + cd samples/minimal + make + +and then running `minimal.app` from this directory from Finder. + +If you'd like to, you can also build all the other samples and demos cd samples; make;cd .. cd demos; make;cd .. -After the compilation completes, use Finder to run the samples and demos -* Go to build-cocoa-debug/samples to experiment with the Cocoa samples. -* Go to build-cocoa-debug/demos to experiment with the Cocoa demos. -* Double-click on the executables which have an icon showing three small squares. -* The source code for the samples is in wxWidgets/samples -* The source code for the demos is in wxWidgets/demos - -More information about building on macOS is available in the wxWiki. -Here are two useful links - * https://wiki.wxwidgets.org/Guides_%26_Tutorials - * https://wiki.wxwidgets.org/Development:_wxMac - Advanced topics {#osx_advanced} =============== +Building library for distribution +--------------------------------- + +When building library for the distribution with your application, you shouldn't +use `--enable-debug` option above but you may want to use `--disable-sys-libs` +option to ensure that it has no dependencies on the other libraries available +on the current system as they might not be present on all systems where the +application is used. + +It is also often desirable to build the final version of the application as +"universal binary", i.e. a combination of binaries for several different +architectures. In this case, you should build wxWidgets as universal binary +too, using `--enable-universal_binary` option. By default, this option enables +building for the usually wanted set of architectures (currently ARM and Intel) +but you may override this by listing the architectures you want to use +explicitly, separating them with commas. + + Installing library {#osx_install} ------------------ diff --git a/src/osx/cocoa/window.mm b/src/osx/cocoa/window.mm index e827553f05..83d876e75f 100644 --- a/src/osx/cocoa/window.mm +++ b/src/osx/cocoa/window.mm @@ -917,7 +917,7 @@ static void SetDrawingEnabledIfFrozenRecursive(wxWidgetCocoaImpl *impl, bool ena [super viewDidMoveToWindow]; } -#if __MAC_OS_X_VERSION_MAX_ALLOWED >= 101200 +#if __MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_12 - (void) viewWillDraw { if ( WX_IS_MACOS_AVAILABLE(11, 0) )