summaryrefslogtreecommitdiffstatshomepage
path: root/docs/source/initialsetup/compilingmame.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/source/initialsetup/compilingmame.rst')
-rw-r--r--docs/source/initialsetup/compilingmame.rst50
1 files changed, 35 insertions, 15 deletions
diff --git a/docs/source/initialsetup/compilingmame.rst b/docs/source/initialsetup/compilingmame.rst
index 47d6d9f6da5..49c717372f1 100644
--- a/docs/source/initialsetup/compilingmame.rst
+++ b/docs/source/initialsetup/compilingmame.rst
@@ -8,19 +8,42 @@ Compiling MAME
All Platforms
-------------
-* Whenever you are changing build parameters, (such as switching between a SDL-based build and a native Windows renderer one, or adding tools to the compile list) you need to run a **make REGENIE=1** to allow the settings to be regenerated. Failure to do this will cause you very difficult to troubleshoot problems.
-
-* If you want to add various additional tools to the compile, such as *CHDMAN*, add a **TOOLS=1** to your make statement, like **make REGENIE=1 TOOLS=1**
-
-* You can do driver specific builds by using *SOURCES=<driver>* in your make statement. For instance, building Pac-Man by itself would be **make SOURCES=src/mame/drivers/pacman.cpp REGENIE=1** including the necessary *REGENIE* for rebuilding the settings.
-
-* Speeding up the compilation can be done by using more cores from your CPU. This is done with the **-j** parameter. *Note: the maximum number you should use is the number of cores your CPU has, plus one. No higher than that will speed up the compilation, and may in fact slow it down.* For instance, **make -j5** on a quad-core CPU will provide optimal speed.
-
-* Debugging information can be added to a compile using *SYMBOLS=1* though most users will not want or need to use this.
+* To compile MAME, you need a C++14 compiler and runtime library. We
+ support building with GCC version 7.2 or later and clang version 5 or
+ later. MAME should run with GNU libstdc++ version 5.1 or later.
+
+* Whenever you are changing build parameters, (such as switching between
+ a SDL-based build and a native Windows renderer one, or adding tools
+ to the compile list) you need to run a **make REGENIE=1** to allow the
+ settings to be regenerated. Failure to do this will cause you very
+ difficult to troubleshoot problems.
+
+* If you want to add various additional tools to the compile, such as
+ *CHDMAN*, add a **TOOLS=1** to your make statement, like
+ **make REGENIE=1 TOOLS=1**
+
+* You can do driver specific builds by using *SOURCES=<driver>* in your
+ make statement. For instance, building Pac-Man by itself would be
+ **make SOURCES=src/mame/drivers/pacman.cpp REGENIE=1** including the
+ necessary *REGENIE* for rebuilding the settings.
+
+* Speeding up the compilation can be done by using more cores from your
+ CPU. This is done with the **-j** parameter. *Note: a good number to
+ start with is the total number of CPU cores in your system plus one.
+ An excessive number of concurrent jobs may increase compilation time.
+ The optimal number depends on many factors, including number of CPU
+ cores, available RAM, disk and filesystem performance, and memory
+ bandwidh.* For instance, **make -j5** is a good starting point on a
+ system with a quad-core CPU.
+
+* Debugging information can be added to a compile using *SYMBOLS=1*
+ though most users will not want or need to use this. This increases
+ compile time and disk space used.
Putting all of these together, we get a couple of examples:
-Rebuilding MAME for just the Pac-Man driver, with tools, on a quad-core (e.g. i5 or i7) machine:
+Rebuilding MAME for just the Pac-Man driver, with tools, on a quad-core
+(e.g. i5 or i7) machine:
| **make SOURCES=src/mame/drivers/pacman.cpp TOOLS=1 REGENIE=1 -j5**
|
@@ -421,9 +444,6 @@ Known Issues
Issues with specific compiler versions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-* GCC 5 for Linux reports spurious errors on encountering deprecation warnings.
- Adding **DEPRECATED=0** to your build options works around this by disabling
- deprecation warnings.
* MinGW GCC 7 for Windows i386 produces spurious out-of-bounds access warnings.
Adding **NOWERROR=1** to your build options works around this by not treating
warnings as errors.
@@ -514,9 +534,9 @@ want to build MAME on a Linux distribution that still uses a version of GNU
libstdC++ that predates C++14 support. To use an alternate GCC installation to,
build MAME, set the C and C++ compilers to the full paths to the **gcc** and
**g++** commands, and add the library path to the run-time search path. If you
-installed GCC in /opt/local/gcc63, you might use a command like this:
+installed GCC in /opt/local/gcc72, you might use a command like this:
-**make OVERRIDE_CC=/opt/local/gcc63/bin/gcc OVERRIDE_CXX=/opt/local/gcc63/bin/g++ ARCHOPTS=-Wl,-R,/opt/local/gcc63/lib64**
+**make OVERRIDE_CC=/opt/local/gcc72/bin/gcc OVERRIDE_CXX=/opt/local/gcc72/bin/g++ ARCHOPTS=-Wl,-R,/opt/local/gcc72/lib64**
You can add these options to a prefix makefile if you plan to use this
configuration regularly.