1,513
edits
(** Obtaining the required libraries ** - Adding glew) |
(→Manual compilation: added libvpx and libmikmod links) |
||
(17 intermediate revisions by 3 users not shown) | |||
Line 7: | Line 7: | ||
== Things needed == | == Things needed == | ||
=== Xcode === | === 1. Xcode === | ||
This can be installed from the [https://itunes.apple.com/us/app/xcode/id497799835?mt=12 Mac App Store]. | This can be installed from the [https://itunes.apple.com/us/app/xcode/id497799835?mt=12 Mac App Store]. | ||
=== Xcode command line tools === | === 2. Xcode command line tools === | ||
After installing Xcode, open a terminal and type: | After installing Xcode, open a terminal and type: | ||
Line 17: | Line 17: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Package manager === | === 3. Package manager === | ||
Getting the required libraries is easier with a package manager. The three most well-known ones are [http://brew.sh/ Homebrew], [https://www.macports.org/ MacPorts], and [http://www.finkproject.org/ Fink]. | Getting the required libraries is easier with a package manager. The three most well-known ones are [http://brew.sh/ Homebrew], [https://www.macports.org/ MacPorts], and [http://www.finkproject.org/ Fink]. | ||
==== | ==== Homebrew (recommended) ==== | ||
Install Homebrew by pasting the following into a terminal: | Install Homebrew by pasting the following into a terminal: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==== | ==== MacPorts ==== | ||
Install MacPorts by downloading and running the installer from the [https://www.macports.org/install.php MacPorts installation page]. | Install MacPorts by downloading and running the installer from the [https://www.macports.org/install.php MacPorts installation page]. | ||
== Obtaining the required libraries == | == Obtaining the required libraries == | ||
If you only want to build scummvm for your own use and are fine executing it from the command line, you can use a package manager ([[#Homebrew|method 1]] and [[#MacPorts_2|2 below]]) to get the required libraries. However those methods to not provide the static libraries needed to build a ScummVM.app bundle. If your goal is to build such a bundle you will need to download our libs package ([[#Download our libs package|method 3]]) or compile the libraries manually ([[#Manual compilation|method 4]]). | |||
=== | === Homebrew === | ||
After downloading the Xcode command line tools and installing Homebrew, enter the following command to install all the required libraries: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
brew install a52dec | brew install a52dec faad2 flac fluid-synth freetype fribidi mad libmpeg2 libogg libpng libvorbis sdl2 sdl2_net theora giflib zlib jpeg-turbo curl pkg-config pandoc libvpx libmikmod | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== | === MacPorts === | ||
After downloading the Xcode command line tools and installing MacPorts, enter the following command to install all the required libraries: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
sudo port install libsdl2 libsdl2_net libjpeg-turbo libmpeg2 libogg libvorbis flac libmad libpng libtheora faad2 a52dec freetype zlib fluidsynth fribidi pandoc | sudo port install libsdl2 libsdl2_net libjpeg-turbo libmpeg2 libogg libvorbis flac libmad libpng libtheora faad2 a52dec freetype zlib fluidsynth fribidi pandoc | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== | === Download our libs package === | ||
* For Intel 32 bits (targets Mac OS X 10.6 or above): [https://downloads.scummvm.org/frs/build/scummvm-macosx-libs-i386.zip scummvm-macosx-libs-i386.zip] | |||
* For Intel 64 bits (targets Mac OS X 10.9 or above): [https://downloads.scummvm.org/frs/build/scummvm-macosx-libs-x86_64.zip scummvm-macosx-libs-x86_64.zip] | |||
* For Apple Silicon (targets macOS 11.0 or above): [https://downloads.scummvm.org/frs/build/scummvm-macosx-libs-arm64.zip scummvm-macosx-libs-arm64.zip] | |||
Those packages are configured to be placed in /usr/local/. So you should for example have the following structure: | |||
<pre> | |||
/usr/local/bin | |||
/usr/local/include | |||
/usr/local/lib | |||
/usr/local/share | |||
</pre> | |||
They also contain a relocate.sh script, which you can use if you place the package content in any other location. | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
./relocate.sh --from /usr/local --to /Users/FooBar/Documents/scummvm-libs | |||
</syntaxhighlight> | </syntaxhighlight> | ||
The script should be able to automatically determine the ''from'' and ''to'' paths, so they can be omitted in most cases. | |||
=== | If you place the content of the packages to a place other than /usr/local, you will need to specify the path to the libraries when you call '''configure''': | ||
<syntaxhighlight lang="bash"> | |||
./configure --with-staticlib-prefix=/path/to/libs | |||
</syntaxhighlight> | |||
=== Manual compilation === | |||
Get the source code from the libraries. With this method you will not only need to get the libraries ScummVM uses directly, but also those they depend on. | Get the source code from the libraries. With this method you will not only need to get the libraries ScummVM uses directly, but also those they depend on. | ||
* Required: | * Required: | ||
Line 59: | Line 77: | ||
** [http://www.ijg.org/ jpeg] | ** [http://www.ijg.org/ jpeg] | ||
** [http://www.libpng.org/pub/png/libpng.html libpng] | ** [http://www.libpng.org/pub/png/libpng.html libpng] | ||
** [http://giflib.sourceforge.net giflib] Use giflib 5.1.4 as versions 5.1.5 to 5.2.1 (the latest as of this note) do not compile on macOS. Alternatively see the patch in https://sourceforge.net/p/giflib/bugs/133/). | |||
** [http://www.xiph.org/vorbis/ libogg and libvorbis] | ** [http://www.xiph.org/vorbis/ libogg and libvorbis] | ||
** [http://www.xiph.org/flac FLAC] | ** [http://www.xiph.org/flac FLAC] | ||
** [http://www.underbit.com/products/mad/ libmad] | ** [http://www.underbit.com/products/mad/ libmad] | ||
** [http://libmpeg2.sourceforge.net mpeg2] | ** [http://libmpeg2.sourceforge.net mpeg2] | ||
** [ | ** [https://github.com/knik0/faad2 FAAD2] | ||
** [http://liba52.sourceforge.net liba52] | ** [http://liba52.sourceforge.net liba52] | ||
** [https://theora.org Theora] | ** [https://theora.org Theora] | ||
** [https://github.com/webmproject/libvpx libvpx] | |||
** [https://mikmod.sourceforge.net/ libmikmod] | |||
** For cloud support: | ** For cloud support: | ||
*** [https://www.libsdl.org/projects/SDL_net/ SDL_net 2] or [https://www.libsdl.org/projects/SDL_net/release-1.2.html 1.2] (use same version as SDL) | *** [https://www.libsdl.org/projects/SDL_net/ SDL_net 2] or [https://www.libsdl.org/projects/SDL_net/release-1.2.html 1.2] (use same version as SDL) | ||
Line 83: | Line 104: | ||
*** [https://www.gnu.org/software/libtool/ Libtool] | *** [https://www.gnu.org/software/libtool/ Libtool] | ||
*** [https://github.com/fribidi/fribidi FriBiDi] | *** [https://github.com/fribidi/fribidi FriBiDi] | ||
All the libraries are compiled and installed in the same way: | All the libraries are compiled and installed in the same way: | ||
Line 151: | Line 171: | ||
Here is a list of some options you may want to use: | Here is a list of some options you may want to use: | ||
* '''--enable-all-engines''' or '''--enable-engine=foo,bar''' to enable unsupported engines (not compiled by default) | * '''--enable-all-engines''' or '''--enable-engine=foo,bar''' to enable unsupported engines (not compiled by default) | ||
* '''--with-staticlib=/path/to/install/dir''' if your libraries are not in a standard place (e.g. you compiled the libraries manually with a custom installation directory). This is only used when building the application bundle. | * '''--with-staticlib-prefix=/path/to/install/dir''' if your libraries are not in a standard place (e.g. you compiled the libraries manually with a custom installation directory). This is only used when building the application bundle. | ||
* '''--enable-updates --with-sparkle-prefix=/path/to/sparkle''' to enable Sparkle (disabled by default). The path should be the path to the directory that contains the Sparkle.framework and not the path to the Sparkle.framework itself. | * '''--enable-updates --with-sparkle-prefix=/path/to/sparkle''' to enable Sparkle (disabled by default). The path should be the path to the directory that contains the Sparkle.framework and not the path to the Sparkle.framework itself. | ||
Line 157: | Line 177: | ||
=== Compiling ScummVM === | === Compiling ScummVM === | ||
Just run make (with -j to compile several files in parallel). For example: | Just run make (with -j to compile several files in parallel, usually number of your virtual CPUs+2). For example, for a 2 core CPU: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
make -j4 | make -j4 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
or -j18 for a 16-core CPU (including hyperthreaded cores). | |||
To recompile everything and not just the modified files: | To recompile everything and not just the modified files: | ||
Line 200: | Line 222: | ||
=== Creating an Xcode project === | === Creating an Xcode project === | ||
* Compile '''create_project''' | * Compile '''create_project''': | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
cd devtools/create_project/xcode | cd devtools/create_project/xcode | ||
xcodebuild | |||
</syntaxhighlight> | </syntaxhighlight> | ||
* Run create_project '''from the root ScummVM directory''': | * Run create_project '''from the root ScummVM directory''': | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
./devtools/create_project/create_project . --xcode | cd ../../.. | ||
./devtools/create_project/xcode/build/Release/create_project . --xcode | |||
</syntaxhighlight> | </syntaxhighlight> | ||