macOS update building procedure

This commit is contained in:
Mark Kim 2020-04-02 00:19:02 -04:00
parent 50a570ef2b
commit 3fa7cefa69
2 changed files with 24 additions and 21 deletions

View file

@ -96,7 +96,7 @@ linux_ARCH_LIBS:=obj/postscript_print.o
ARCH_LIBS:=$($(OS)_ARCH_LIBS) ARCH_LIBS:=$($(OS)_ARCH_LIBS)
windows_ARCH_CFLAGS:= windows_ARCH_CFLAGS:=
osx_ARCH_CFLAGS:=-mmacosx-version-min=10.7 -isystem /opt/local/include -DHAVE_STRCASESTR -w -headerpad_max_install_names osx_ARCH_CFLAGS:=-mmacosx-version-min=10.8 -isystem /opt/local/include -DHAVE_STRCASESTR -w -headerpad_max_install_names
beos_ARCH_CFLAGS:= beos_ARCH_CFLAGS:=
linux_ARCH_CFLAGS:= linux_ARCH_CFLAGS:=
ARCH_CFLAGS:=$($(OS)_ARCH_CFLAGS) ARCH_CFLAGS:=$($(OS)_ARCH_CFLAGS)

View file

@ -37,6 +37,11 @@ As of this writing, the required libraries are:
libsdl_ttf libsdl_ttf
zlib zlib
... and other non-library packages required by the Makefile are:
ImageMagick
pkgconfig
... but you should intall any package that is required by the latest version of ... but you should intall any package that is required by the latest version of
Tux Paint. Tux Paint.
@ -62,28 +67,27 @@ copied to /Applications. It also creates TuxPaint.dmg for distribution.
KNOWN BUGS KNOWN BUGS
---------- ----------
On macOS 10.13 High Sierra: - It is no longer possible to build Tux Paint that is backward compatible with
- The mouse cursor appears with an invert-transparent background due to an older versions of macOS than the one on which it is built using the procedure
issue with SDL1 on macOS 10.13. A patch to SDL has been issued on May 16, described in the below section, "BACKWARD COMPATIBILITY". This limitation
2018 to fix this issue. Until this patch is officially relased and becomes a appears to stem from some libraries required by Tux Paint now being built
part of the MacPorts package, SDL will need to be built from the source code using Rust that is unable to produce libraries that are backward compatible
that includes the patch to display the mouse cursor correctly under macOS 10.13. with older versions of macOS. The steps of the procedure are left intact
Here are more details: below anyway in case the situation changes in the near future, with the
exception that what once-referenced 10.7 now reference 10.8, believed to be
Patch - https://github.com/kanjitalk755/SDL/commit/0296d5e601a5deb5ce2f540a8eafd64dd22dbe69 the oldest version of macOS that Tux Paint could be backward compatible with*
Source + patch - https://github.com/kanjitalk755/SDL/tree/forHighSierra once the Rust issue has been addressed.
Full discussion - https://bugzilla.libsdl.org/show_bug.cgi?id=4076
BACKWARD COMPATIBILITY BACKWARD COMPATIBILITY
---------------------- ----------------------
Broadly speaking, a Mac binary built on macOS 10.12 Sierra (for example) runs Broadly speaking, a Mac binary built on macOS 10.12 Sierra (for example) runs
only on macOS 10.12 and later. To compile a binary that can also execute on an only on macOS 10.12 and later. To compile a binary that can also execute on an
earlier version of macOS (say, 10.7 Lion and later), one of the following must earlier version of macOS (say, 10.8 Mountain Lion and later), one of the
be done: following must be done:
(A) Pass the flag -mmacosx-version-min=10.7 to the compiler. (A) Pass the flag -mmacosx-version-min=10.8 to the compiler.
(B) Or set the environment variable MACOSX_DEPLOYMENT_TARGET to 10.7 (B) Or set the environment variable MACOSX_DEPLOYMENT_TARGET to 10.8
Tux Paint binary itself is built by doing (A) in the Makefile (by passing the Tux Paint binary itself is built by doing (A) in the Makefile (by passing the
parameter to osx_ARCH_CFLAGS). However, the MacPorts libraries used by Tux parameter to osx_ARCH_CFLAGS). However, the MacPorts libraries used by Tux
@ -93,14 +97,14 @@ earlier than the macOS on which it is built.
To build the Tux Paint package that can run on earlier versions of macOS, the To build the Tux Paint package that can run on earlier versions of macOS, the
MacPorts libraries also need to be built with either #1 or #2. This is done by MacPorts libraries also need to be built with either #1 or #2. This is done by
configuring MacPorts to install all packages from their sources and build them configuring MacPorts to install all packages from their sources and build them
to run on macOS 10.7 and later: to run on macOS 10.8 and later:
1. Install the MacPorts base normally. 1. Install the MacPorts base normally.
2. Before installing any MacPorts package, add the following settings to 2. Before installing any MacPorts package, add the following settings to
/opt/local/etc/macports/macports.conf: /opt/local/etc/macports/macports.conf:
buildfromsource always buildfromsource always
macosx_deployment_target 10.7 macosx_deployment_target 10.8
3. Install all packages normally. 3. Install all packages normally.
@ -118,9 +122,8 @@ packages and reinstall them after making system changes:
Even when Tux Paint and MacPorts are built to run on a specific version of Even when Tux Paint and MacPorts are built to run on a specific version of
macOS, it is possible Tux Paint will not compile for or run on that version of macOS, it is possible Tux Paint will not compile for or run on that version of
macOS. As of this writing, 10.7 is the oldest version of macOS that can be macOS. As of this writing, 10.8 is the oldest version of macOS that can be
targetted without errors when compiling the sources of MacPorts libraries targetted without errors when compiling the sources of MacPorts libraries
required by Tux Paint. required by Tux Paint.
21st May 2018 Mark K. Kim <markuskimius@gmail.com>
Mark K. Kim <mkkim214@gmail.com>