Thread Like Summary
Chris Nielsen, estefan3112, R. Belmont
Total Likes: 4
Original Post (Thread Starter)
by MAMEBase
Once again, I've revised the build instructions for SDLMAME on Mac OS X.

As always, if you spot any glaring errors/omissions/outright lies, please let me know.

Also, if anyone would be interested in reposting this on their site. please let me know that as well... smile


Building SDLMAME for Mac OS X - A Guide

Welcome to the world of SDLMAME. If you've built SDLMAME for Mac OS X in the past, you'll notice that since version 0.136u1, the build procedures have changed.

If you're new to building (compiling) SDLMAME on Mac OS X, with any luck, you'll find it's not as difficult as you might think.

Either way, Don't Panic! This guide will (hopefully) get you up and running in fairly short order.

Let's get started...

Step 0 - Preliminary Steps - (These need be done only once, with the occasional periodic updates) -

0a) Run Software Update
Your Operating System, and supporting files should be updated prior to compiling SDLMAME (and should be kept up to date regardless) The minimum supported OS for SDLMAME under Mac OS X is 10.7.x (Snow Leopard).

0b) Install/Update Xcode
Xcode is a free developer environment from Apple, and although it will be used to compile SDLMAME, you will not be required to learn how to run it.
It will need to be installed prior to compiling SDLMAME. As of this writing (November 2014) the current version of Xcode is 6.1 (for Mac OS X 10.10 (Yosemite)).
Xcode is free from Apple, in the Mac App Store.

Once you have downloaded Xcode, you'll need to run it. It will download and install a few more pieces at this time. Once it's done, you need to install the command line tools.

On Xcode 6.0 and later, open a Terminal window temporarily and type xcode-select --install and follow the prompts to install the command line tools. (This is a much easier version of this step that I recently found out about).

0c) Install/Update SDL
Simple DirectMedia Layer (SDL) is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer. It is used by MPEG playback software, emulators, and hundreds of Steam games for the Mac and Linux.
Go to , and click the "SDL 2.0" download link in the sidebar, then scroll down to "Mac OS X" under "Runtime Libraries". Download the "SDL-2.0.4.dmg" disk image and open it.
Click 'Macintosh HD' (or whatever your Mac's hard disk is named) in the left pane of a Finder window, then open the Library folder and drag the SDL2.framework folder from the SDL disk image into the 'Frameworks' folder.

Step 0 Recap -
- Run Software Update
- Install/Update Xcode
- Install/Update SDL2


Step 1 - Gather files

1a) Create folder for build files
While not an absolute necessity, keeping various SDLMAME project files in a separate folder will help to avoid confusion while building. For purposes of this exercise, the folder will be called 'MAME Parts'

1b) Get 'Endings' script
Go to and download the 'Endings' file ( Place this file in the 'MAME Parts' folder.

1c) Get Baseline MAME source
Go to and download the MAME source file (in zip format). Place this file in the 'MAME Parts' folder.

1d) Get update patch files
Go to and download any of the diff files you do not already have. Place these files in the 'MAME Parts' folder

1e) Unzip, and place files
Go to the 'MAME Parts' folder. Unzip all the files you downloaded. Do not throw away the original zip files, as you may need them again in the future during the development cycle.
Place the endings file, and all patch files into the MAME Source folder.

Step 1 Recap -
- Create folder for build files
- Get 'Endings' script
- Get Baseline MAME source
- Get update patch files
- Unzip, and place files


Step 2 - Prepare for building

2a) Launch Terminal, and set path
Open the Terminal (Applications->Utilities->Terminal). Type 'cd ' (that's cd, and a space), and drag the MAME Source folder to the Terminal window. Hit 'Return'. This sets the path for the subsequent commands.

2b) Run 'Endings'
Type the following line into the Terminal window (or copy and paste, if you prefer) -


Hit return. Wait for the prompt (This may take a while, and it may appear that nothing is happening... Be patient).

2c) Patch files
This is the variable part of the process, as each 'u' update patch needs to be applied in order to the source.

Type the following into the Terminal window -

patch -p0 <xxxxxxxx (that's [patch], [space], -p[zero], [space], <[diff file name])

Where 'xxxxxxxx' equals the name of the diff file you wish to apply. Hit Return, and wait for the prompt.

Repeat for each diff file in order (u1, u2, u3, etc.)

2d) Check the SDLMAME forums for last minute changes
Before proceeding to the next step, check for any last minute changes/fixex/modifications at the SDLMAME forum at

Step 2 Recap -
- Launch Terminal, and set path
- Run 'Endings'
- Patch files
- Check the SDLMAME forums for last minute changes


Step 3 - Build

3a) Build
Type the following into the Terminal window -



make -j3 (for dual core processors)


make -j5 (for quad core processors)

Hit Return. SDLMAME will auto detect your system type (32 bit or 64 bit), and build accordingly.

3b) Build Tools
As an option, you can build the optional tools that accompany SDLMAME (chdman, and the like) by typing the following into the Terminal window -

make tools

Hit return.

3c) Enjoy!
Congratulations! You've successfully built SDLMAME on Mac OS X!
You may want to rename the Source folder to reflect the version of SDLMAME you just built.
Attach your favorite front end application, and have fun!

Step 3 Recap -
- Build
- Build Tools
- Enjoy!


Future Builds

Provided no modifications were made to the source prior to building, the next patch may simply be applied to the previous build, and the application built again (you can skip step 2b).

If, however, modifications were made to the source prior to building, it is advisable to start with fresh copies of the source, and all the diff files in order (the latest diff file will usually contain fixes for the previous versions).
If you kept the files from steps 1b, c, and,d, just proceed from step 1d.


Troubleshooting FAQ

- I'm told I need to edit a file in Xcode. How do I do this?
Locate the file to be modified, and double click it. Xcode will open the file.
Chances are good that you were told what line of the code to modify. Under the 'Edit' menu, select 'Go to Line...'. Enter the line number, and click the 'Select' button. Make your modification(s), Save the change(s), and quit Xcode.

- I got an error while building. What do I do?
Check the SDLMAME forums at to see if this is a known problem, and if there is a fix available. If not, post a question, and someone will try to help you.
You may also want to try starting over at step 1, especially if you were patching an existing build.

- I got an error while patching the source. What do I do?
Start over from step 1, especially if you're patching an existing build. if you continue to have problems, you may be able to get help at the SDLMAME forums at

- I had to make a modification of some sort prior to building. Will I have to make this modification again in the next version?
No. However, you may need to start over again with the original source, and latest diff files.

- Is there an easier way to do all this?
If you prefer not to build yourself, prebuilt versions of SDLMAME for Mac OS X are available for download at

- I've successfully built SDLMAME in Mac OS X... Now what?
That's a whole 'nother document... wink
Liked Replies
by Chris Nielsen
Chris Nielsen
Folks, after a lot of hard work over the past two months, I'm pleased to announce that MacPorts now provides up-to-date binary builds of Mame! Those are available across a very wide range of macOS versions, from 10.6 through Big Sur. We even provide an M1-native binary for the latter.

The latest Mame release - 0.227 - is supported for macOS 10.14+. While earlier macOS versions are just one release behind, at 0.226.

We provide a full build for the core Mame application, and also include the command-line tools.

If you're interested in taking it for a spin, it's easy: Install MacPorts if necessary, and then run the following from Terminal:
sudo port install mame

Once the installation is completed, some brief usage notes will be displayed:
mame has the following notes:
  Mame is launched via command 'mame'.
  If a blank screen is encountered, press ESC to exit, and then re-launch with an
  alternative video option.
      mame -video accel
      mame -video opengl
  If you're new to Mame, our tutorial will quickly walk you through the process of
  setting up a new game:
  Mame tools are installed. Each has a prefix of 'mame-', to avoid conflicts with
  system tools.

The 'mame' command is backed by a simple launcher script, which sets a few critical paths for proper operation. (Including languages, plugins, bgfx, and several others.) Those can be overridden by specifying them yourself, if desired.

Otherwise, Mame operates just as you'd expect.

Give it a try, and please feel free to provide feedback... positive or negative.

Cheers and Thanks,
-Chris Nielsen
MacPorts Mame Maintainer
2 members like this
by Vas Crabb
Vas Crabb
You might want to announce it on reddit at r/mame and r/emulation
1 member likes this
by Chris Nielsen
Chris Nielsen
Folks, Mame 0.230 is now available via MacPorts. As a reminder, the latest release requires MacOS 10.14+. For earlier MacOS releases, 0.226 will be installed.

If you already have an older version of Mame installed via MacPorts, you can upgrade it via the following command:

$ sudo port upgrade mame

For first-time users, please refer to this post for an overview of installation/use:

As always, comments/feedback is welcome.

Cheers and Thanks,
-Chris Nielsen
MacPorts Mame Maintainer
1 member likes this
Who's Online Now
0 members (), 19 guests, and 2 robots.
Key: Admin, Global Mod, Mod
Comment Guidelines: Do post respectful and insightful comments. Don't flame, hate, spam.
Forum Statistics
Most Online890
Jan 17th, 2020
Forum Host
These forums are hosted by
Forum hosted by