CAUTION #1: I don't have arm64 macintosh hardware so this has been tested only on an x86_64 system.
CAUTION #2: This was developed on MacOS 11.0 beta 3 and Xcode 12.0 beta 2, not final release builds
CAUTION #3: At this time OpenSSL does not yet provide a way to build for MacOS with arm64 architecture, so I implemented a temporary workaround, which may or may not work properly on arm64 Macs.
* Screensavers can't launch setuid / sergid executables like gfx_switcher
* Screensavers can't launch executables downloaded from Internet unless vetted by user vis GateKeeper
* Apple's ScreenSaverEngine doesn't always call stopAnimation before exiting
* Apple's ScreenSaverEngine always passes true for isPreview argument
* OpenGL apps built under Xcode 11 & Catalina use window doubled window dimensions on Retina displays (2 pixels per point)
* The CGWindowList method we have used to display project graphics apps which have not been updated no longer works
* Screensaver output files are put in an obscure sandboxed directory
The general instructions in the mac_build folder in the file HowToBuildBOINC_XCode.pdf should also note that if you want to build using XCode alone, you need to put all the downloaded libraries in the folder directly above the build folder. For EG:
All of these external programs:
wxWidgets-3.1.0 s-3.1.0.tar.bz2
sqlite-3.22.0
curl-7.58.0:
c-ares-1.13.0 (used by curl):
openssl-1.1.0g
freetype-2.9
ftgl-2.1.3~rc5
Need to go into the top GitHub directory on your system and be unpacked there. Otherwise XCode as the project is currently set up, will not find the libraries. They need to be unzipped there of course.
/Users/<your name>/GitHub/
So that when you build in XCode, they can be found in the existing setup, which looks for them in - for example -
USER_HEADER_SEARCH_PATHS = ../../curl-7.58.0/include ../../openssl-1.1.0g/include ../lib/**
This fix causes two libraries to be built without including two external libraries that get found when already installed on the Mac by Homebrew for example.
- use libc++ instead of libstdc++
- eliminate 32-bit builds (Xcode 10 with Mac OS X SDK 10.14 builds only 64-bit binaries)
- buildWxMac.sh was previously updated for Xcode 10 compatibility by commit 282ea8c324
This also enables the Screensaver target to test if it can be built on Travis now.
Note: I tried to refactor the duplicated code into a bash function but string and variable interpretation screwed up the arguments passed to BuildMacBOINC.sh and I couldn't get it to work.