Title | MPS does not build with Xcode 10.0 |
Status | closed |
Priority | essential |
Assigned user | Gareth Rees |
Organization | Ravenbrook |
Description | After installing Xcode 10.0 (release 2018-09-18), the MPS no longer builds on macOS via Xcode (or via "./configure && make" at top-level), failing with the following warnings (that get converted to errors because we set GCC_TREAT_WARNINGS_AS_ERRORS = yes): $ ./configure && make ... warning: The macOS deployment target is set to 10.4, but the range of supported deployment target versions for this platform is 10.6 to 10.14. (in target 'mps') warning: ONLY_ACTIVE_ARCH=YES requested with multiple ARCHS and no run destination to provide an active architecture (in target 'mps') warning: Traditional headermap style is no longer supported; please migrate to using separate headermaps and set 'ALWAYS_SEARCH_USER_PATHS' to NO. (in target 'airtest') |
Analysis | 1. We can just remove the MACOSX_DEPLOYMENT_TARGET setting from the project file. The MPS doesn't use any macOS features so it doesn't need to specify this. 2. We have to discontinue support for building for platform xci3ll using Xcode. 3. Setting ALWAYS_SEARCH_USER_PATHS = NO as requested causes the example Scheme interpreter to fail to build, because we are now getting the system version of getopt.h (not the one in code) and this includes unistd.h, which defines the function read, and we are not allowed to redefine this with a different type. I couldn't figure out how to get the preferred version of getopt.h, so I changed read to read_ in the Scheme sources to avoid the conflict. |
How found | manual_test |
Evidence | None |
Created by | Gareth Rees |
Created on | 2018-09-18 14:11:20 |
Last modified by | Gareth Rees |
Last modified on | 2018-09-18 18:52:08 |
History | 2018-09-18 GDR Created. |
Change | Effect | Date | User | Description |
---|---|---|---|---|
195108 | closed | 2018-09-18 18:18:50 | Gareth Rees | Don't specify MACOSX_DEPLOYMENT_TARGET in the Xcode project -- this avoids complaints from Xcode 10.0 without preventing compilation on old versions of macOS. |
195090 | open | 2018-09-18 15:00:45 | Gareth Rees | Update Xcode project for Xcode 10.0. Xcode 10.0 no longer supports building for IA-32, so the MPS can no longer support building for xci3ll using Xcode. Revise example Scheme interpreter so that it can be compiled even if getopt.h includes unistd.h (as it does on macOS). |
195087 | open | 2018-09-18 14:18:52 | Gareth Rees | Remove support for macOS 10.4 and 10.5, because Xcode 10.0 does not support these versions. |