MPS issue job004108

TitleMPS does not build with Xcode 10.0
Statusclosed
Priorityessential
Assigned userGareth Rees
OrganizationRavenbrook
DescriptionAfter 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')
Analysis1. 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 foundmanual_test
EvidenceNone
Created byGareth Rees
Created on2018-09-18 14:11:20
Last modified byGareth Rees
Last modified on2018-09-18 18:52:08
History2018-09-18 GDR Created.

Fixes

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.