Skip to content

Latest commit

 

History

History
95 lines (70 loc) · 3.24 KB

README.macOS.md

File metadata and controls

95 lines (70 loc) · 3.24 KB

Mercury on macOS

This file documents the port of Mercury to macOS / OS X / Mac OS X (i.e. the *-apple-darwin* configuration).

Versions of macOS prior to 10.9 are not supported.

Contents

  • Mercury on Intel Macs
  • Note for users of Xcode 11
  • Deployment Target Settings
  • Deep profiling on macOS

Mercury on Intel Macs

Mercury should build and install "out-of-the-box" on Intel Macs using macOS 10.9 onwards.

The asm_fast* and reg* grades are only available on 64-bit Intel systems and only when using GCC version 4.3 or later as the C compiler.

If clang is being used as the C compiler then the only low-level C grades available are the none* grades. The high-level C, Java and C# grades all work. The C# grades require the Mono .NET implementation. (See README.CSharp.md for further details.)

If the asm_fast.gc grade is not available, and unless otherwise directed, then the hlc.gc grade will be used as the default grade for compiling applications.

On x86-64 machines, the default is to install 64-bit versions of the executables and libraries in the Mercury system. On machines running versions of macOS up to and including 10.14, users can choose to install 32-bit versions instead by invoking Mercury's configure script either with the option

    --with-cc="clang -m32"

or

    --with-cc="gcc -m32"

depending on their preferred compiler. In either case, every invocation of the selected C compiler on Mercury-generated C files will specify the -m32 option. The reason for the limitation to 10.14 is that 32-bit executables are not supported at all from macOS 10.15 onwards.

If, after installing Mercury, you encounter errors about missing .mih files, and you have fink installed, then try removing the fink components from your PATH (these usually start with /sw) and reinstalling.

Note for users of Xcode 11

Versions of Xcode 11 prior to 11.4 ship with a broken version of clang that cannot be used to compile Mercury. The configure script will print a warning if it detects that you are using the broken version.

A discussion of this issue can be found at this thread in the Apple Developer forum. This post describes a way that has been found to fix the problem.

Deployment Target Settings

By default, the Mercury compiler is configured so that the macOS deployment target for code generated by the Mercury compiler is set to the value of the MACOSX_DEPLOYMENT_TARGET environment variable (if set), or else to the macOS version of the host system.

You can specify a different deployment target at configuration time using the configure script's --with-macosx-deployment-target option.

(See the "SDK Compatibility Guide" in the Apple developer documentation for further information about the deployment target setting.)

Deep profiling on macOS

The Mercury deep profiler requires a local web server. To use the deep profiler:

  • Select and install a web server, and
  • Install and enable the mdprof_cgi script according to the rules of that web server.