Difference between revisions of "Platform Notes (Mac OS X)"

From FreeM Wiki
Jump to navigation Jump to search
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
== Port Status ==
 
== Port Status ==
  
The Mac OS X port is a [[Tier 3 Port]], though it can run with some significant headaches.
+
The Mac OS X port is a [[Tier 2 Port]].
 
+
The main branch will compile on macOS Monterey (12.6.8) on Intel, and it can run if the <code>kern.sysv.shmmax</code> parameter is correct (see below).
The main branch will compile on macOS Monterey (12.6.8) on Intel, and it can run if the <code>kern.sysv.shmmax</code> parameter is correct (see below). Launching new interpreters can be hit-or-miss, as there are shared memory issues on this platform. You may need to try starting a new process 10 times or more before one will launch successfully.
 
  
 
== Verified Releases ==
 
== Verified Releases ==
TBD
+
* [[FreeM Lite]]
 +
* FreeM 0.65.1-rc0
  
 
== Build Notes ==
 
== Build Notes ==
Line 30: Line 30:
  
 
* MacBook Air (Early 2015) running macOS Monterey (12.6.8)
 
* MacBook Air (Early 2015) running macOS Monterey (12.6.8)
 +
* M1 Mac Mini running macOS Sequoia
  
 
== Required Kernel Tuning ==
 
== Required Kernel Tuning ==
  
You will need to set the <code>kern.sysv.shmmax</code> sysctl parameter to at least 6144000 (the value must be a multiple of the system page size; generally 4096).
+
You will need to set the <code>kern.sysv.shmmax</code> sysctl parameter to at least 17002496 (the value must be a multiple of the system page size; generally 4096).
  
 
To determine the current setting, see below:
 
To determine the current setting, see below:
Line 46: Line 47:
 
See your macOS version below for instructions on modifying this value.
 
See your macOS version below for instructions on modifying this value.
  
=== macOS Monterey ===
+
=== All Versions ===
  
 
* Find the file <code>com.startup.sysctl.plist</code> file in the <code>scripts</code> subdirectory of the FreeM distribution
 
* Find the file <code>com.startup.sysctl.plist</code> file in the <code>scripts</code> subdirectory of the FreeM distribution
Line 67: Line 68:
  
 
== Port Challenges ==
 
== Port Challenges ==
Apple makes it extremely difficult to build traditional UNIX software, in the name of "security". Also, Apple silicon (M1 and descendants) cannot likely be supported with the current shared memory architecture.
+
The shared memory architecture of FreeM had to be rewritten to support Apple's System V IPC changes for their Unified Memory Architecture.
  
We will most likely support only PowerPC and Intel Macs.
 
  
 
[[Category:Platform Notes]]
 
[[Category:Platform Notes]]
[[Category:Tier 3 Ports]]
+
[[Category:Tier 2 Ports]]

Latest revision as of 07:02, 16 May 2025

Port Status

The Mac OS X port is a Tier 2 Port. The main branch will compile on macOS Monterey (12.6.8) on Intel, and it can run if the kern.sysv.shmmax parameter is correct (see below).

Verified Releases

Build Notes

In order to build FreeM on macOS, you will need to install the following:

  • Apple XCode command-line tools
  • Homebrew

Then, install the following with the brew package manager:

  • automake
  • autoconf
  • gcc
  • libtool
  • texinfo
  • texi2html
  • git

Testing Details

We build the macOS port on the following hardware:

  • MacBook Air (Early 2015) running macOS Monterey (12.6.8)
  • M1 Mac Mini running macOS Sequoia

Required Kernel Tuning

You will need to set the kern.sysv.shmmax sysctl parameter to at least 17002496 (the value must be a multiple of the system page size; generally 4096).

To determine the current setting, see below:

$ sudo sysctl -a | grep shmmax
kern.sysv.shmmax: 4194304

In the above example, the shmmax value is 4194304, and thus insufficient for proper FreeM operation.

See your macOS version below for instructions on modifying this value.

All Versions

  • Find the file com.startup.sysctl.plist file in the scripts subdirectory of the FreeM distribution
  • Copy it to /Library/LaunchDaemons
  • Change the ownership of /Library/LaunchDaemons/com.startup.sysctl.plist to root:wheel
  • Run sudo launchctl load /Library/LaunchDaemons/com.startup.sysctl.plist
  • Reboot

See the following example:

$ sudo cp scripts/com.startup.sysctl.plist /Library/LaunchDaemons/
$ sudo chown root:wheel /Library/LaunchDaemons/com.startup.sysctl.plist
$ sudo launchctl load /Library/LaunchDaemons/com.startup.sysctl.plist


Starting the FreeM Daemon Automatically

Coming soon.

Port Challenges

The shared memory architecture of FreeM had to be rewritten to support Apple's System V IPC changes for their Unified Memory Architecture.