Dependencies
Get all the libraries and tools that Allegro5 needs from Macport. This saves a lot of time. Very nice system. You can check what you have installed using:port installedYou will need the following:
sudo port install zlib freetype jpeg libogg libvorbis libpng physfs +universalIf you have libraries installed that aren't 32 bit, and you get the "different system not i386" link error, they need to be recompiled with "+universal" (i.e. i386 and x86_64) . i386 is needed by the iPhone simulator. OSX desktop apps will use x86_64. You can force MacPorts to recompile any libraries using the following (and replace LIBNAME!):
sudo port upgrade --enforce-variants LIBNAME +universalcmake should have been installed by MacPorts, but if not:
sudo port install cmakeNote: you will need at least version 2.8.8 of cmake if you are using Xcode 4.3 or newer.
Build
make
Easiest way to build and install Allegro for OSX is use make. Get the Allegro source and in that directory:- mkdir build
- cd build
- cmake ..
- make
- sudo make install
Add "-D WANT_FRAMEWORKS=1" to cmake if you want frameworks.
Add "-D CMAKE_OSX_ARCHITECTURES=i386" if you want 32 bit libs. - I had to do this initially, I think because some of the ports wouldn't compile 64 bit. No longer necessary.
I don't use frameworks. Default install directory is "/usr/local".
Xcode
You can generate Xcode project files for Allegro and build using Xcode. I do two builds of Allegro. One for OSX and for iOS.- mkdir build_osx
- cd build_osx
- cmake -D SHARED=0 -G Xcode ..
- xcodebuild -project ALLEGRO.xcodeproj -target ALL_BUILD -arch x86_64 -sdk macosx10.7 -configuration Release
- cmake -D CMAKE_INSTALL_PREFIX=/my/install/path -P cmake_install.cmake
Using
I create a Cocoa application and removed what I didn't want. If you followed make build instructions:
- Add "/usr/local/include" to header search paths.
- Drag in the Allegro libraries that you want to link to in "/usr/local/lib".
- Go into Interface Builder and delete the default Application and Window. Allegro supplies these.
Linking
The frameworks you need to for OSX are:
- AudioToolbox
- IOKit
- OpenAL
- OpenGL
- Cocoa
The frameworks you need to for iOS are:
- CoreGraphics
- Foundation
- OpenAL
- OpenGLES
- QuartzCore
- UIKit
The following error means you have the wrong "main" declaration:
dyld: Symbol not found: __al_mangled_main
Referenced from: /usr/local/lib/liballegro_main.5.1.dylib
Expected in: flat namespace
in /usr/local/lib/liballegro_main.5.1.dylib
It should be:
int main(int argc, char **argv)
Other Info
There are other notes on the Allegro wiki on how to build Allegro from Git.[16-Jul-11] Note about Xcode 4.0.
[27-Oct-11] Xcode 4.1 is fine. It doesn't crash and is faster than Xcode 3.2.
[Mar-12] Xcode 4.3. Compile 64-bit.
[29-Mar-12] Added +universal to "port install" so we get i386 and x86_64 libraries. I also updated the notes on the Allegro wiki.
[8-Jul-12] Added frameworks to link for Allegro 5.1.
[19-Dec-12] Notes on Xcode building.