     ______   ___    ___
    /\  _  \ /\_ \  /\_ \
    \ \ \L\ \\//\ \ \//\ \      __     __   _ __   ___ 
     \ \  __ \ \ \ \  \ \ \   /'__`\ /'_ `\/\`'__\/ __`\
      \ \ \/\ \ \_\ \_ \_\ \_/\  __//\ \L\ \ \ \//\ \L\ \
       \ \_\ \_\/\____\/\____\ \____\ \____ \ \_\\ \____/
	\/_/\/_/\/____/\/____/\/____/\/___L\ \/_/ \/___/
				       /\____/
				       \_/__/


		MacOS X-specific information.

	 See readme.txt for a more general overview.



====================================
========== MacOS X notes ===========
====================================

   This is a full featured native MacOS X port. The whole codebase is young,
   so it may hold some bugs; feedback is welcome!



===========================================
============ Required software ============
===========================================

   To build Allegro under MacOS X, you need:

   - MacOS X 10.1.x or newer
   - Apple Developer Tools (April 2002 or newer edition)

   If you don't have the Developer Tools installed, you can grab them at:

   http://developer.apple.com/tools/download

   On the same page you will also find instructions on how to install them.



============================================
============ Installing Allegro ============
============================================

   Allegro ships in source code form; this means you need to compile it
   before you can use it. You do this easily from a terminal window.
   Due to the multiplatform nature of the library, the first step is to
   fix it so it can be built under MacOS X, by running:

      chmod +x fix.sh
      ./fix.sh macosx

   Now Allegro is ready to be compiled. Start building it:

      make

   And finally you install it (you need the root password for this step):

      sudo make install

   Allegro has now been installed in your system as a standalone shared
   library, in /usr/local/lib.
   You may also wish to install the man pages:

      sudo make install-man

   You may also wish to install the library as a standard MacOS X framework:

      sudo make install-framework

   The "Allegro" framework will be created into /Library/Frameworks. Note
   that the framework is standalone: it contains its own copy of the
   dynamic library. This is to ensure you can embed the framework into
   your application bundles safely, so they'll work on machines where
   Allegro is not installed.
   Finally, if you plan on using Project Builder to code your apps, you
   may find useful installing an Allegro application PB project template:

      sudo make install-template

   The dynamically linked version of the library gets built by default, but
   if you want to build a statically linked one, write the following on the
   command line:

      export STATICLINK=1

   In the same manner we can also enter one of the following lines to
   build either the debug or the profiling version of the library:

      export DEBUGMODE=1
      export PROFILEMODE=1

   Then restart the build process by issuing:

      make

      sudo make install

   The static library will be installed in /usr/local/lib as the shared one,
   but you will not be able to install the framework nor the Project Builder
   template, which require a dynamically linked Allegro version.



===================================================
======= Using Allegro from the command line =======
===================================================

   The options for linking with Allegro are quite long, expecially for
   static versions of the library as you need to pull in several different
   frameworks (Cocoa, QuickTime, etc.) other than Allegro itself. When
   linking against the shared library version, things are also different.
   To avoid you having to work out the right linker commands for yourself,
   the installation creates a script, allegro-config, that will print out a
   suitable commandline. You can use this inside a backtick command
   substitution, for example:

      gcc myfile.c -o myprogram `allegro-config --libs`

   Or if you want to build a debug version of your program, assuming that 
   you have installed the debug version of Allegro:

      gcc myfile.c -o myprogram `allegro-config --libs debug`

   Unix newbies, take note that these are ` backticks, not normal ' quotes!

   There are also switches for printing out the Allegro version number, 
   overriding the install paths, and selecting between shared and static 
   libraries, in case you installed both. Run allegro-config without any 
   arguments for a full list of options.



==================================================
======= Using Allegro from Project Builder =======
==================================================

   To use Allegro from inside Apple's Project Builder, be sure you first
   installed the library as a framework and that you also installed the PB
   application template (see section "Installing Allegro" for details).

   Once you're ready, start up Project Builder and choose "New Project"
   from the "File" menu. On the very first dialog, you'll be prompted
   with a list of project templates with which to create your program.
   Select "Allegro Application" under the "Application" category and enter
   the project name and location in the next dialog. Once the setup is
   complete, you will find yourself with an opened Allegro application
   project, holding an unique source file (main.c) and some linked
   frameworks. The project can already be compiled to a working application;
   try it!

   The main.c source file contains a very simple skeleton of an Allegro
   program that will open up a white window with the text "Hello, world!"
   in the center. This file is just a start: you can (and should) completely
   replace its contents to suit your needs.



==============================================
====== Allegro and application bundles  ======
==============================================

   When you build applications from the command line, you're actually just
   creating the executable, so you can run it from the command line only,
   and not also from the finder like a common MacOS X application. In other
   words, compiling from the command line does not create application
   bundles.

   Allegro ships with a little tool, named fixbundle, which allows to build
   an application bundle out of an executable.
   The utility works from the command line and it accepts a variety of
   options to customize your bundle; the easiest way to use it is:

      fixbundle executable_name

   This will create an application bundle named "executable_name.app" that
   contains your program executable and will appear in the finder with the
   default application icon. A more complex usage example follows:

      fixbundle executable_name -m -o bundle_name -v "1.2" icon.bmp

   This creates a bundle named "bundle_name.app". The executable will be
   moved instead of copied into the bundle; the application will be marked
   as version "1.2" and icon.bmp will be converted to an icon for the
   bundle. You can specify more options and up to 4 differently sized
   icons (16x16, 32x32, 48x48 and 128x128) to be read from any Allegro
   supported image files or from datafile objects. Run fixbundle without
   arguments for a list of known options.
   Bundles created by fixbundle have this default layout:

      bundle.app --- Contents --+--- MacOS --- executable
                                |
                                +--- Resources --+--- (bundle.icns)
                                |                |
                                |                +--- (executable/...)
                                |
                                +--- Info.plist
                                |
                                +--- PkgInfo

   If you are using Project Builder to compile your programs, there is no
   need to use fixbundle, as the IDE will do the work of generating an
   application bundle for you.

   When an Allegro program starts, it automatically detects if the
   executable lives inside a bundle or not. The working directory is
   always set up to be the directory where the standalone executable
   or application bundle is located, but there is an exception: if the
   application is a bundle and Allegro finds a directory under the bundle
   Contents/Resources path with the same name of the executable (note that
   here we mean the real executable name, not the bundle name), that
   directory is set to be the working one. This allows to easily package
   all the application data inside the bundle, and still have a working
   program without the need to tell your code about the changed location
   of your files.



==========================================
============ Notes on drivers ============
==========================================

   This section contains MacOS X-specific notes on the drivers available.

   * System:
        When the system driver is about to be initialized, we already
        have a working NSApplication object connected to the Window Server.
        At driver startup, the working directory is changed if inside a
        bundle with a proper data directory under the Contents/Resources
        path (see above).
        
        Display switching is possible, but only the SWITCH_BACKGROUND
        mode is supported, so your application will have to deal with it.

   * Graphics:
        The MacOS X windowed graphics mode uses a Cocoa window with a
        Quartz QuickDraw view as its content view. All combinations of
        window/desktop color depths are supported; if needed, color
        conversion will automatically be done transparently to the user.

        Fullscreen mode uses the Core Graphics DirectDisplay API; only
        8, 15 and 32 bit color depths are supported.

   * Keyboard:
        MacOS X Allegro uses the current system keyboard mapping table
        to map scancodes to characters: the keyboard user settings in
        allegro.cfg have no effect.

   * Mouse:
        On MacOS X 10.2.x (Jaguar) or newer, Allegro will automatically
        detect the number of buttons of your mouse at driver initialization.
        If the 1-button Apple mouse is found, the library will activate an
        emulation mode that mimics the way MacOS X itself deals with
        1-button mice: depending on which key is pressed when the button is
        clicked, Allegro will report a different mouse button click.
        (Control + button) emulates a right click and (Option + button)
        emulates a middle click.

        On MacOS X 10.1.x, mouse autodetection is not possible, and Allegro
        will assume an 1-button mouse to always be present, activating
        buttons emulation accordingly.



=====================================
============ Final notes ============
=====================================

   As a final note, when coding Allegro programs don't forget that you
   need to use the END_OF_MAIN() macro right after your main() function!

