The Allegro Wiki is migrating to github at https://github.com/liballeg/allegro_wiki/wiki
Building with msys2
The following guide explains how to set up MSYS2 minimal system on Windows and use the already available MinGW compiled dependencies to build Allegro 5 from source from the command line.
MSYS2 archives can be found on sourceforge
- here for the 64 bits version (x86_64)
- here for the 32 bits version (i686)
choose the one matching your Windows system.
Download the most recent msys2-base-XXXXXXXX.tar.xz archive in the location provided in the previous chapter, unpack it and put it somewhere you're comfortable with.
- Note: it is always a good measure to select a PATH with no spaces in it to avoid the most common problems.
Let's say in this example you put it in C:\msys, ending up with it installed in C:\msys\msys64 root directory.
It should look something like this inside:
07/05/2014 13:09 <DIR> . 07/05/2014 13:09 <DIR> .. 28/02/2014 16:49 167 autorebase.bat 09/05/2014 23:32 <DIR> bin 04/04/2014 22:35 <DIR> dev 06/05/2014 21:59 <DIR> etc 04/04/2014 22:35 <DIR> home 06/05/2014 21:59 <DIR> include 06/05/2014 21:59 <DIR> lib 02/02/2014 20:57 1.099 mingw32_shell.bat 02/05/2014 22:57 <DIR> mingw64 02/02/2014 20:57 1.099 mingw64_shell.bat 02/02/2014 20:57 37.758 msys.ico 02/02/2014 20:57 1.096 msys2_shell.bat 06/05/2014 21:59 <DIR> sbin 06/05/2014 21:59 <DIR> share 06/05/2014 21:48 <DIR> ssl 10/05/2014 22:41 <DIR> tmp 04/04/2014 22:29 <DIR> var
Tu run MSYS2 you can use any of the mingwXX_shell.bat you have in the installation folder, use the 64 or 32 version depending on the MinGW compiler you will use.
For the sake of this guide we will assume you're working on a 64-bit system and thus will launch mingw64_shell.bat
- Note: usually the first time you run MSYS2 shell you'll be asked to exit immediately, do so either closing the window or by tiping exit on the MSYS2 prompt.
It could also come handy to create a shortcut to this batch file, and place it on your desktop for easy retrieval.
Getting the tools to do the job
First of all a word of premise, MSYS2 uses a port of Arch Linux's pacman to manage packages for the distribution.
This is indeed a very powerful and convenient way to get all the tools (compiler, make, cmake, dependiecies) you need to get allegro compiled from source.
First of all you need to sync the database with the latest repository, on the command line type:
and the program should update (if need there should be) the local databse to the three online repositories (msys2, mingw64 and mingw32)
- IMPORTANT NOTE: if you intend to use the 32-bit version of MinGW-gcc, you need to susbstitute EACH occurrence of 'x86_64' in the following instructions with 'i686'
Then, we need our compiler, binutils and all the stuff that come with gcc...
pacman -S mingw-w64-x86_64-gcc pacman -S mingw-w64-x86_64-gdb # ability to debug is always useful
...will install a fair number of packages that will give you the 64-bit flavor of the latest stable GCC compiler and tools.
Then we need git source control management to (later) get the Allegro sources, and the latest cmake development version to (later) set up the building stage, and last the ubiquitous make to actually build Allegro.
pacman -S git pacman -S make # this is MSYS2 make, also part of 'base-devel' group # pacman -S mingw-w64-x86_64-cmake # cmake is fine, earlier versions of this guide recommended cmake-git to automatically find Freetype # pacman -S mingw-w64-x86_64-pkg-config # optional, but could be useful with cmake #
This should be all you need to get allegro to compile, next are the dependencies.
Inside the shell, type these commands:
pacman -S mingw-w64-x86_64-freetype # required for truetype font loading pacman -S mingw-w64-x86_64-physfs # also installs zlib and bzip2 - required for Loading files from compressed archives pacman -S mingw-w64-x86_64-libvorbis # also installs libOGG, required for OGG Audio playback pacman -S mingw-w64-x86_64-flac # required for FLAC audio playback pacman -S mingw-w64-x86_64-dumb # required for audio tracker files (e.g. .mod, .it etc) pacman -S mingw-w64-x86_64-libtheora # required for Video Playback - ALLEGRO 5.1 only pacman -S mingw-w64-x86_64-libjpeg-turbo
These are all the dependencies needed to have a full working Allegro 5.1 library built on Windows
Download Allegro Sources from git repository
Type the following command to retrieve the master branch of Allegro Sources
git clone https://github.com/liballeg/allegro5.git
This will create a folder called allegro with the Allegro Source inside.
Allegro build is a two steps procedure:
1. First you need to issue a cmake command to have the build system set up the necessary makefiles; usually cmake is used with out of source build, meaning you create a specific folder to build into.
# outside of the 'allegro' folder # mkdir build_allegro_monolith cd build_allegro_monolith cmake \ -G"MSYS Makefiles" \ -DCMAKE_INSTALL_PREFIX=/mingw64/x86_64-w64-mingw32 \ -DWANT_MONOLITH=on \ ..
The previous cmake command set the build for the monolith version of the library along with all Allegro examples and demos
If you receive errors relating to CMake such as Could NOT find DINPUT (missing: DINPUT_INCLUDE_DIR) it's likely CMake isn't resolving the directx headers and libraries. These are included in msys.
Try passing an altered PATH variable by replacing cmake with PATH=/mingw64/x86_64-w64-mingw32:$PATH cmake or PATH=/mingw32/i686-w64-mingw32:$PATH cmake in the above install line.
2. Then you issue the make command to actually build the sources, and then install them in the default location (should be '/mingw64' in the MSYS2 environment).
# inside the 'build_allegro_monolith' folder # make && make install
Now you should have the headers as well as the monolith library installed within you compiler standard search path.
This means '#include' statements will be automatically resolved by the preprocessor and that you have to pass the '-lallegro_monolith' flag to the linker to build any Allegro application.
You're now ready to use Allegro5, have fun with it and feel free to drop by Allegro.cc forums if you need any help.