Difference between revisions of "Compiling ScummVM/MinGW-w64"

Jump to navigation Jump to search
m
Text replacement - "<source lang=" to "<syntaxhighlight lang="
m (Text replacement - "<source lang=" to "<syntaxhighlight lang=")
(18 intermediate revisions by 2 users not shown)
Line 12: Line 12:
Our officially supported MinGW build instructions are at [[Compiling_ScummVM/MinGW]].
Our officially supported MinGW build instructions are at [[Compiling_ScummVM/MinGW]].
|}
|}
{| border="0" cellpadding="1" cellspacing="2" style="margin-left:5em; background:#FF9999; width:80%"
|- align="center"
| '''NOTE'''
|- style="margin-left:1em; background:#ffffff;"
|- style="background:#ffffff"
| Please note that current versions of MSYS2/Mingw64 cannot be installed on Windows XP anymore. '''However, builds produced with the MSYS2/Mingw64 toolchain will still work on Windows XP.'''
|}




Line 20: Line 30:
You can find MSYS2 and installation instructions on the [[https://msys2.github.io/ MSYS2 webpage]].
You can find MSYS2 and installation instructions on the [[https://msys2.github.io/ MSYS2 webpage]].


==== Download and install the mingw-w64 compilation toolchain====
==== Download and install the necessary packages ====
The MinGW packages are named mingw-<env>-<package>, where <env> is either x86_64 or i686, depending on your architecture (64-bit and 32-bit, respectively).
The MinGW packages are named mingw-<env>-<package>, where <env> is either x86_64 or i686, depending on your architecture (64-bit and 32-bit, respectively).


To create an i686 build environment, we need to first update the already installed packages. To do that, type the following in the MSYS2 terminal:
To create an i686 or x86_64 build environment, we need to first update the already installed packages and the MSYS2 environment itself.
<source lang="bash">
To do that, type the following in the MSYS2 terminal:
pacman -Syu
<syntaxhighlight lang="bash">
</source>
pacman --noconfirm -Sy
pacman --needed --noconfirm -S bash pacman pacman-mirrors msys2-runtime
</syntaxhighlight>


Now, we need to create the default location for the additional packages:
For i686 (32-bit), type the following in the MSYS2 terminal to automatically install all packages/libraries needed to compile ScummVM:
<source lang="bash">
<syntaxhighlight lang="bash">
mkdir /mingw32
pacman -S --needed --noconfirm base-devel git mingw-w64-i686-{curl,faad2,freetype,flac,fluidsynth,libjpeg-turbo,libogg,libvorbis,libmad,libmpeg2-git,libtheora,libpng,nasm,readline,SDL2,SDL2_net,toolchain,winsparkle,zlib}
</source>
</syntaxhighlight>


Then, type the following in the MSYS2 terminal to install all the needed additional packages (more info on each package can be found in the next section):
For x86_64 (64-bit), type the following in the MSYS2 terminal to automatically install all packages/libraries needed to compile ScummVM:
<source lang="bash">
<syntaxhighlight lang="bash">
pacman -Sy base-devel git mingw-w64-i686-toolchain make mingw-w64-i686-SDL2 mingw-w64-i686-SDL2_net mingw-w64-i686-nasm mingw-w64-i686-flac mingw-w64-i686-libjpeg-turbo mingw-w64-i686-libogg mingw-w64-i686-libvorbis mingw-w64-i686-libmad mingw-w64-i686-libmpeg2 mingw-w64-i686-zlib mingw-w64-i686-libtheora mingw-w64-i686-faad2 mingw-w64-i686-libpng mingw-w64-i686-freetype mingw-w64-i686-fluidsynth mingw-w64-i686-curl mingw-w64-i686-SDL2_net mingw-w64-i686-winsparkle mingw-w64-i686-readline
pacman -S --needed --noconfirm base-devel git mingw-w64-x86_64-{curl,faad2,freetype,flac,fluidsynth,libjpeg-turbo,libogg,libvorbis,libmad,libmpeg2-git,libtheora,libpng,nasm,readline,SDL2,SDL2_net,toolchain,winsparkle,zlib}
</source>
</syntaxhighlight>
 
If you want to have the ability to compile ScummVM as a 64 bit binary with all features enabled, install the necessary packages using this command:
<source lang="bash">
pacman -S --needed git mingw-w64-x86_64-{curl,faad2,freetype,flac,fluidsynth,libjpeg-turbo,libogg,libvorbis,libmad,
libmpeg2-svn,libtheora,libpng,nasm,readline,SDL2,SDL2_net,toolchain,winsparkle,zlib}
</source>


These commands will fetch and install the packages needed for compiling, including (but not limited to) GCC 6.x, GDB, and libwinpthread-git.
These commands will fetch and install the packages needed for compiling, including (but not limited to) GCC 6.x, GDB, and libwinpthread-git.


=== Install the needed libraries ===
=== Install the needed libraries ===
''You only have to install the libraries manually if you prefer not to use the automated way in the section above. For most users, installing all packages automatically will just work fine.''
In order to compile properly, ScummVM needs you to have certain libraries installed. The command in the above section installs all of the needed packages automatically. All the libraries in the list can be installed with similar commands:
In order to compile properly, ScummVM needs you to have certain libraries installed. The command in the above section installs all of the needed packages automatically. All the libraries in the list can be installed with similar commands:
<source lang="bash">
<syntaxhighlight lang="bash">
pacman -S mingw-w64-<env>-<library>
pacman -S mingw-w64-<env>-<library>
</source>
</syntaxhighlight>
where <env> is the environment as previously stated, and <library> is the name of the library, as stated in the list (e.g. pacman -S mingw-w64-x86_64-SDL):
where <env> is the environment as previously stated, and <library> is the name of the library, as stated in the list (e.g. pacman -S mingw-w64-x86_64-SDL):


Line 59: Line 69:
* '''libogg''' and '''libvorbis'''. Optional, for OGG support.
* '''libogg''' and '''libvorbis'''. Optional, for OGG support.
* '''libmad'''. Optional, for MP3 support.
* '''libmad'''. Optional, for MP3 support.
* '''libmpeg2'''. Optional, for MPEG2 cutscene support.
* '''libmpeg2-svn'''. Optional, for MPEG2 cutscene support.
* '''zlib'''. Optional, for compressed saved games.
* '''zlib'''. Optional, for compressed saved games.
* '''libtheora'''. Optional, for Broken Sword 2.5.
* '''libtheora'''. Optional, for Broken Sword 2.5.
Line 73: Line 83:
Finally, we are ready to compile the project!
Finally, we are ready to compile the project!
To do that, just open a '''MinGW-w64''' shell (''not'' the MSYS2 shell), [http://gvsigce.sourceforge.net/wiki/index.php/Getting_started_with_MSYS#Navigating_the_file_system navigate] to the source folder where you have cloned scummvm.git, and type the following commands:
To do that, just open a '''MinGW-w64''' shell (''not'' the MSYS2 shell), [http://gvsigce.sourceforge.net/wiki/index.php/Getting_started_with_MSYS#Navigating_the_file_system navigate] to the source folder where you have cloned scummvm.git, and type the following commands:
<source lang="bash">
<syntaxhighlight lang="bash">
$> ./configure # Executes a bash script that helps you configure.
$> ./configure # Executes a bash script that helps you configure.
$> make # Executes the make program, which triggers the compilation.
$> make # Executes the make program, which triggers the compilation.
</source>
</syntaxhighlight>


If everything went well, you should have a big executable in the compilation folder, named scummvm.exe. The size of the executable comes from the debug symbols embedded in the file, so you can run the following command to shrink it:
If everything went well, you should have a big executable in the compilation folder, named scummvm.exe. The size of the executable comes from the debug symbols embedded in the file, so you can run the following command to shrink it:
<source lang="bash">
<syntaxhighlight lang="bash">
$> strip scummvm.exe
$> strip scummvm.exe
</source>
</syntaxhighlight>


== Ready to go! ==
== Ready to go! ==
TrustedUser
2,147

edits

Navigation menu